-- Core/GroupCooldownSpellDatabase.lua -- Group cooldown database. HMGT_SpellData = HMGT_SpellData or {} local Spell = HMGT_SpellData.Spell local Relation = HMGT_SpellData.Relation if not Spell then return end HMGT_SpellData.GroupCooldowns = { -- WARRIOR -- Arms Spec Spell(118038, "Die by the Sword", { classes = {"WARRIOR"}, specs = {1}, category = "defensive", state = { kind = "cooldown", cooldown = 120 }, }), Spell(167105, "Colossus Smash", { classes = {"WARRIOR"}, specs = {1}, category = "offensive", state = { kind = "cooldown", cooldown = 45 }, }), -- Fury Spec Spell(184364, "Enraged Regeneration", { classes = {"WARRIOR"}, specs = {2}, category = "defensive", state = { kind = "cooldown", cooldown = 120 }, }), Spell(1719, "Recklessness", { classes = {"WARRIOR"}, specs = {2}, category = "offensive", state = { kind = "cooldown", cooldown = 90 }, }), -- Protection Spec Spell(871, "Shield Wall", { classes = {"WARRIOR"}, specs = {3}, category = "tank", state = { kind = "cooldown", cooldown = 108, charges = 1 }, mods = { { talentSpellId = 391271, value = 10, op = "reduceByPercent", target = "cooldown" }, -- Honed Reflexes { talentSpellId = 397103, value = 2, op = "set", target = "charges" }, }, }), Spell(385952, "Shield Charge", { classes = {"WARRIOR"}, specs = {3}, category = "cc", state = { kind = "cooldown", cooldown = 45 }, }), Spell(46968, "Shockwave", { classes = {"WARRIOR"}, specs = {3}, category = "cc", state = { kind = "cooldown", cooldown = 40 }, }), Spell(3411, "Intervene", { classes = {"WARRIOR"}, specs = {3}, category = "defensive", state = { kind = "cooldown", cooldown = 27 }, }), -- All Specs Spell(107574, "Avatar", { classes = {"WARRIOR"}, category = "offensive", state = { kind = "cooldown", cooldown = 90 }, }), Spell(107570, "Storm Bolt", { classes = {"WARRIOR"}, category = "cc", state = { kind = "cooldown", cooldown = 36 }, }), -- PALADIN Spell(498, "Divine Protection", { classes = {"PALADIN"}, specs = {1, 2}, category = "defensive", state = { kind = "cooldown", cooldown = 60 }, }), Spell(642, "Divine Shield", { classes = {"PALADIN"}, category = "defensive", state = { kind = "cooldown", cooldown = 300 }, }), Spell(31884, "Avenging Wrath", { classes = {"PALADIN"}, specs = {1, 3}, category = "offensive", state = { kind = "cooldown", cooldown = 120 }, }), Spell(86659, "Guardian of Ancient Kings", { classes = {"PALADIN"}, specs = {2}, category = "tank", state = { kind = "cooldown", cooldown = 300 }, }), -- HUNTER Spell(264735, "Survival of the Fittest", { classes = {"HUNTER"}, specs = {1}, category = "defensive", state = { kind = "cooldown", cooldown = 180 }, }), Spell(109304, "Exhilaration", { classes = {"HUNTER"}, category = "defensive", state = { kind = "cooldown", cooldown = 120 }, }), -- ROGUE Spell(31224, "Cloak of Shadows", { classes = {"ROGUE"}, category = "defensive", state = { kind = "cooldown", cooldown = 60 }, }), Spell(5277, "Evasion", { classes = {"ROGUE"}, category = "defensive", state = { kind = "cooldown", cooldown = 120 }, }), Spell(2094, "Blind", { classes = {"ROGUE"}, category = "cc", state = { kind = "cooldown", cooldown = 120 }, }), Spell(1856, "Vanish", { classes = {"ROGUE"}, category = "defensive", state = { kind = "cooldown", cooldown = 120 }, }), -- DEATH KNIGHT Spell(55233, "Vampiric Blood", { classes = {"DEATHKNIGHT"}, specs = {1}, category = "tank", state = { kind = "cooldown", cooldown = 180 }, mods = { { talentSpellId = 374200, value = 150, op = "set", target = "cooldown" }, }, }), Spell(49028, "Dancing Rune Weapon", { classes = {"DEATHKNIGHT"}, specs = {1}, category = "tank", state = { kind = "cooldown", cooldown = 120 }, mods = { { talentSpellId = 377584, value = 60, op = "set", target = "cooldown" }, }, }), Spell(48707, "Anti-Magic Shell", { classes = {"DEATHKNIGHT"}, category = "defensive", state = { kind = "cooldown", cooldown = 60 }, }), Spell(48792, "Icebound Fortitude", { classes = {"DEATHKNIGHT"}, category = "defensive", state = { kind = "cooldown", cooldown = 180 }, }), Spell(42650, "Army of the Dead", { classes = {"DEATHKNIGHT"}, category = "offensive", state = { kind = "cooldown", cooldown = 480 }, }), Spell(49206, "Summon Gargoyle", { classes = {"DEATHKNIGHT"}, specs = {3}, category = "offensive", state = { kind = "cooldown", cooldown = 180 }, }), -- SHAMAN Spell(204336, "Grounding Totem", { classes = {"SHAMAN"}, category = "defensive", state = { kind = "cooldown", cooldown = 30 }, }), Spell(51490, "Thunderstorm", { classes = {"SHAMAN"}, specs = {1}, category = "cc", state = { kind = "cooldown", cooldown = 45 }, }), -- MAGE Spell(45438, "Ice Block", { classes = {"MAGE"}, category = "defensive", state = { kind = "cooldown", cooldown = 240 }, }), Spell(110959, "Greater Invisibility", { classes = {"MAGE"}, category = "defensive", state = { kind = "cooldown", cooldown = 120 }, }), Spell(235450, "Prismatic Barrier", { classes = {"MAGE"}, specs = {3}, category = "defensive", state = { kind = "cooldown", cooldown = 25 }, }), -- WARLOCK Spell(104773, "Unending Resolve", { classes = {"WARLOCK"}, category = "defensive", state = { kind = "cooldown", cooldown = 180 }, }), Spell(6229, "Twilight Ward", { classes = {"WARLOCK"}, category = "defensive", state = { kind = "cooldown", cooldown = 0 }, }), Spell(212295, "Nether Ward", { classes = {"WARLOCK"}, specs = {3}, category = "defensive", state = { kind = "cooldown", cooldown = 45 }, }), -- MONK Spell(122783, "Diffuse Magic", { classes = {"MONK"}, category = "defensive", state = { kind = "cooldown", cooldown = 90 }, }), Spell(122278, "Dampen Harm", { classes = {"MONK"}, category = "defensive", state = { kind = "cooldown", cooldown = 120 }, }), Spell(120954, "Fortifying Brew", { classes = {"MONK"}, specs = {1}, category = "tank", state = { kind = "cooldown", cooldown = 420 }, }), Spell(115176, "Zen Meditation", { classes = {"MONK"}, specs = {2}, category = "defensive", state = { kind = "cooldown", cooldown = 300 }, }), Spell(322118, "Invoke Niuzao", { classes = {"MONK"}, specs = {1}, category = "tank", state = { kind = "cooldown", cooldown = 180 }, }), -- DRUID Spell(22812, "Barkskin", { classes = {"DRUID"}, category = "defensive", state = { kind = "cooldown", cooldown = 60 }, }), Spell(61336, "Survival Instincts", { classes = {"DRUID"}, specs = {2, 3}, category = "defensive", state = { kind = "cooldown", cooldown = 180 }, }), -- DEMON HUNTER Spell(187827, "Metamorphosis", { classes = {"DEMONHUNTER"}, specs = {1}, category = "offensive", state = { kind = "cooldown", cooldown = 180 }, }), Spell(162264, "Metamorphosis", { classes = {"DEMONHUNTER"}, specs = {2}, category = "tank", state = { kind = "cooldown", cooldown = 180 }, }), Spell(1217605, "Metamorphosis", { classes = {"DEMONHUNTER"}, specs = {3}, category = "offensive", state = { kind = "availability", required = 50, source = { type = "auraStacks", auraSpellId = 1225789, fallbackSpellCountId = 1217605, }, }, }), Spell(203819, "Demon Spikes", { classes = {"DEMONHUNTER"}, specs = {2}, category = "tank", state = { kind = "cooldown", cooldown = 20 }, }), Spell(212800, "Blur", { classes = {"DEMONHUNTER"}, specs = {1}, category = "defensive", state = { kind = "cooldown", cooldown = 60 }, }), Spell(196555, "Netherwalk", { classes = {"DEMONHUNTER"}, specs = {1}, category = "defensive", state = { kind = "cooldown", cooldown = 180 }, }), -- EVOKER Spell(357214, "Time Stop", { classes = {"EVOKER"}, specs = {2}, category = "cc", state = { kind = "cooldown", cooldown = 120 }, }), Spell(375087, "Tempest", { classes = {"EVOKER"}, specs = {3}, category = "offensive", state = { kind = "cooldown", cooldown = 30 }, }), } HMGT_SpellData.Relations = HMGT_SpellData.Relations or {} local hasShieldSlamShieldWallRelation = false local hasAngerManagementRelation = false for _, relation in ipairs(HMGT_SpellData.Relations) do local firstEffect = relation.effects and relation.effects[1] if tonumber(relation.triggerSpellId) == 23922 and tonumber(firstEffect and firstEffect.targetSpellId) == 871 then hasShieldSlamShieldWallRelation = true end if tostring(relation.when) == "powerSpent" and tonumber(relation.talentRequired) == 152278 and tostring(relation.powerType) == "RAGE" then hasAngerManagementRelation = true end end if not hasShieldSlamShieldWallRelation and Relation then HMGT_SpellData.Relations[#HMGT_SpellData.Relations + 1] = Relation({ triggerSpellId = 23922, -- Shield Slam classes = {"WARRIOR"}, specs = {3}, -- Protection when = "cast", talentRequired = 384072, -- Impenetrable Wall effects = { { type = "reduceCooldown", targetSpellId = 871, -- Shield Wall amount = 6, }, }, }) end if not hasAngerManagementRelation and Relation then HMGT_SpellData.Relations[#HMGT_SpellData.Relations + 1] = Relation({ classes = {"WARRIOR"}, specs = {3}, -- Protection when = "powerSpent", powerType = "RAGE", amountPerTrigger = 20, talentRequired = 152278, -- Anger Management effects = { { type = "reduceCooldown", targetSpellId = 107574, -- Avatar amount = 1, }, { type = "reduceCooldown", targetSpellId = 871, -- Shield Wall amount = 1, }, }, }) end if HMGT_SpellData.RebuildLookups then HMGT_SpellData.RebuildLookups() end