You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
878 lines
28 KiB
878 lines
28 KiB
---@class DBMCoreNamespace
|
|
local private = select(2, ...)
|
|
DBMExtraGlobal = {}
|
|
|
|
---@alias SpecFlag
|
|
---|"Tank"
|
|
---|"Dps"
|
|
---|"Healer"
|
|
---|"Melee" ANY melee, including tanks or healers that are 100% excempt from healer/ranged mechanics (like mistweaver monks)
|
|
---|"MeleeDps"
|
|
---|"Physical"
|
|
---|"Ranged" ANY ranged, healer and DPS included
|
|
---|"RangedDps" Only ranged DPS
|
|
---|"ManaUser" Affected by things like mana drains, or mana detonation, etc
|
|
---|"SpellCaster" Has channeled casts, can be interrupted/spell locked by roars, etc, include healers. Use CasterDps if dealing with reflect
|
|
---|"CasterDps" Ranged DPS that uses spells, relevant for spell reflect type abilities that only reflect spells but not ranged physical such as hunters
|
|
---|"RaidCooldown"
|
|
---|"RemovePoison" From ally
|
|
---|"RemoveDisease" From ally
|
|
---|"RemoveCurse" From ally
|
|
---|"RemoveMagic" From ally
|
|
---|"RemoveEnrage" Can remove enemy enrage. returned in 8.x+!
|
|
---|"MagicDispeller" From ENEMY, not debuffs on players. use "Healer" or "RemoveMagic" for ally magic dispels. ALL healers can do that on retail, and warlock Imps
|
|
---|"ImmunityDispeller" Priest mass dispel or Warrior Shattering Throw (shadowlands)
|
|
---|"HasInterrupt" Has an interrupt that is 24 seconds or less CD that is BASELINE (not a talent)
|
|
---|"HasImmunity" Has an immunity that can prevent or remove a spell effect (not just one that reduces damage like turtle or dispursion)
|
|
|
|
-- Format: SpecFlag or SpecFlag|SpecFlag|...
|
|
---@alias SpecFlags SpecFlag|string
|
|
|
|
---@type table<string|number, table<SpecFlag, boolean>>
|
|
local specRoleTable
|
|
-- Caution: the keys used below are not validated by LuaLS at the moment due to https://github.com/LuaLS/lua-language-server/issues/2610
|
|
|
|
--Upvalued because it's called frequently each time rebuildSpecTable is called
|
|
local IsSpellKnown = IsSpellKnown
|
|
|
|
function DBMExtraGlobal:rebuildSpecTable()
|
|
-- Retail
|
|
if private.isRetail then
|
|
specRoleTable = {
|
|
[62] = { --Arcane Mage
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["CasterDps"] = true,
|
|
["MagicDispeller"] = true,
|
|
["HasInterrupt"] = true,
|
|
["HasImmunity"] = true,
|
|
["RemoveCurse"] = true,
|
|
},
|
|
[1449] = { --Initial Mage (used in exiles reach tutorial mode). Treated as hybrid. Utility disabled because that'd require checking tutorial progress
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["CasterDps"] = true,
|
|
},
|
|
[65] = { --Holy Paladin
|
|
["Healer"] = true,
|
|
["Ranged"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["RaidCooldown"] = true,--Devotion Aura
|
|
["RemovePoison"] = true,
|
|
["RemoveDisease"] = true,
|
|
["RemoveMagic"] = true,
|
|
["HasImmunity"] = true,
|
|
},
|
|
[66] = { --Protection Paladin
|
|
["Tank"] = true,
|
|
["Melee"] = true,
|
|
["ManaUser"] = true,
|
|
["Physical"] = true,
|
|
["RemovePoison"] = true,
|
|
["RemoveDisease"] = true,
|
|
["HasInterrupt"] = true,
|
|
["HasImmunity"] = true,
|
|
},
|
|
[70] = { --Retribution Paladin
|
|
["Dps"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["ManaUser"] = true,
|
|
["Physical"] = true,
|
|
["RemovePoison"] = true,
|
|
["RemoveDisease"] = true,
|
|
["HasInterrupt"] = true,
|
|
["HasImmunity"] = true,
|
|
},
|
|
[1451] = { --Initial Paladin (used in exiles reach tutorial mode). Treated as hybrid. Utility disabled because that'd require checking tutorial progress
|
|
["Healer"] = true,
|
|
["Tank"] = true,
|
|
["Dps"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["ManaUser"] = true,
|
|
["Physical"] = true,
|
|
["SpellCaster"] = true,
|
|
},
|
|
[71] = { --Arms Warrior
|
|
["Dps"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["RaidCooldown"] = true,--Rallying Cry
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
["ImmunityDispeller"] = IsSpellKnown(64382),
|
|
},
|
|
[73] = { --Protection Warrior
|
|
["Tank"] = true,
|
|
["Melee"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
["RaidCooldown"] = true,--Rallying Cry
|
|
["ImmunityDispeller"] = IsSpellKnown(64382),
|
|
},
|
|
[1446] = { --Initial Warrior (used in exiles reach tutorial mode). Treated as hybrid. Utility disabled because that'd require checking tutorial progress
|
|
["Tank"] = true,
|
|
["Dps"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
},
|
|
[102] = { --Balance Druid
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["CasterDps"] = true,
|
|
["RemoveCurse"] = true,
|
|
["RemovePoison"] = true,
|
|
["RemoveEnrage"] = true,
|
|
},
|
|
[103] = { --Feral Druid
|
|
["Dps"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
["RemoveCurse"] = true,
|
|
["RemovePoison"] = true,
|
|
["HasInterrupt"] = true,
|
|
["RemoveEnrage"] = true,
|
|
},
|
|
[104] = { --Guardian Druid
|
|
["Tank"] = true,
|
|
["Melee"] = true,
|
|
["Physical"] = true,
|
|
["RemoveCurse"] = true,
|
|
["RemovePoison"] = true,
|
|
["HasInterrupt"] = true,
|
|
["RemoveEnrage"] = true,
|
|
},
|
|
[105] = { -- Restoration Druid
|
|
["Healer"] = true,
|
|
["Ranged"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["RaidCooldown"] = true,--Tranquility
|
|
["RemoveCurse"] = true,
|
|
["RemovePoison"] = true,
|
|
["RemoveEnrage"] = true,
|
|
["RemoveMagic"] = true,
|
|
},
|
|
[1447] = { -- Initial Druid (used in exiles reach tutorial mode). Treated as hybrid. Utility disabled because that'd require checking tutorial progress
|
|
["Tank"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
["Healer"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
},
|
|
[250] = { --Blood DK
|
|
["Tank"] = true,
|
|
["Melee"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
},
|
|
[251] = { --Frost DK
|
|
["Dps"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
},
|
|
[1455] = { --Initial DK (used in exiles reach tutorial mode). Treated as hybrid. Utility disabled because that'd require checking tutorial progress
|
|
["Tank"] = true,
|
|
["Dps"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
},
|
|
[253] = { --Beastmaster Hunter
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
["MagicDispeller"] = true,
|
|
["RemoveEnrage"] = true,
|
|
},
|
|
[254] = { --Markmanship Hunter Hunter
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
["MagicDispeller"] = true,
|
|
["RemoveEnrage"] = true,
|
|
},
|
|
[255] = { --Survival Hunter (Legion+)
|
|
["Dps"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
["MagicDispeller"] = true,
|
|
["RemoveEnrage"] = true,
|
|
},
|
|
[1448] = { --Initial Hunter (used in exiles reach tutorial mode). Treated as hybrid. Utility disabled because that'd require checking tutorial progress
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["Physical"] = true,
|
|
},
|
|
[256] = { --Discipline Priest
|
|
["Healer"] = true,
|
|
["Ranged"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["CasterDps"] = true,--Iffy. Technically yes, but this can't be used to determine eligable target for dps only debuffs
|
|
["RaidCooldown"] = true,--Power Word: Barrier(Discipline) / Divine Hymn (Holy)
|
|
["RemoveDisease"] = true,
|
|
["RemoveMagic"] = true,
|
|
["MagicDispeller"] = true,
|
|
["ImmunityDispeller"] = true,
|
|
},
|
|
[258] = { --Shadow Priest
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["CasterDps"] = true,
|
|
["MagicDispeller"] = true,
|
|
["ImmunityDispeller"] = true,
|
|
["HasInterrupt"] = true,
|
|
["RemoveDisease"] = true,
|
|
},
|
|
[1452] = { --Initial Priest (used in exiles reach tutorial mode). Treated as hybrid. Utility disabled because that'd require checking tutorial progress
|
|
["Dps"] = true,
|
|
["Healer"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["CasterDps"] = true,
|
|
},
|
|
[259] = { --Assassination Rogue
|
|
["Dps"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
["HasImmunity"] = true,
|
|
},
|
|
[1453] = { --Initial Rogue (used in exiles reach tutorial mode). Treated as hybrid. Utility disabled because that'd require checking tutorial progress
|
|
["Dps"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
},
|
|
[262] = { --Elemental Shaman
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["CasterDps"] = true,
|
|
["RemoveCurse"] = true,
|
|
["MagicDispeller"] = true,
|
|
["HasInterrupt"] = true,
|
|
},
|
|
[263] = { --Enhancement Shaman
|
|
["Dps"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["Physical"] = true,
|
|
["RemoveCurse"] = true,
|
|
["MagicDispeller"] = true,
|
|
["HasInterrupt"] = true,
|
|
},
|
|
[264] = { --Restoration Shaman
|
|
["Healer"] = true,
|
|
["Ranged"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["RaidCooldown"] = true,--Spirit Link Totem
|
|
["RemoveCurse"] = true,
|
|
["RemoveMagic"] = true,
|
|
["MagicDispeller"] = true,
|
|
["HasInterrupt"] = true,
|
|
},
|
|
[1444] = { --Initial Shaman (used in exiles reach tutorial mode). Treated as hybrid. Utility disabled because that'd require checking tutorial progress
|
|
["Healer"] = true,
|
|
["Dps"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["Physical"] = true,
|
|
},
|
|
[265] = { --Affliction Warlock
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
-- ["RemoveMagic"] = true,--Singe Magic (Imp)
|
|
["CasterDps"] = true,
|
|
},
|
|
[1454] = { --Initial Warlock (used in exiles reach tutorial mode). Treated as hybrid. Utility disabled because that'd require checking tutorial progress
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["CasterDps"] = true,
|
|
},
|
|
[268] = { --Brewmaster Monk
|
|
["Tank"] = true,
|
|
["Melee"] = true,
|
|
["Physical"] = true,
|
|
["RemovePoison"] = true,
|
|
["RemoveDisease"] = true,
|
|
["HasInterrupt"] = IsSpellKnown(116705),
|
|
},
|
|
[269] = { --Windwalker Monk
|
|
["Dps"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
["RemovePoison"] = true,
|
|
["RemoveDisease"] = true,
|
|
["HasInterrupt"] = IsSpellKnown(116705),
|
|
},
|
|
[270] = { --Mistweaver Monk
|
|
["Healer"] = true,
|
|
["Melee"] = true,
|
|
["Ranged"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["RaidCooldown"] = true,--Revival
|
|
["RemovePoison"] = true,
|
|
["RemoveDisease"] = true,
|
|
["RemoveMagic"] = true,
|
|
["HasInterrupt"] = IsSpellKnown(116705),
|
|
},
|
|
[1450] = { --Initial Monk (used in exiles reach tutorial mode). Treated as hybrid. Utility disabled because that'd require checking tutorial progress
|
|
["Tank"] = true,
|
|
["Healer"] = true,
|
|
["Dps"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
["Ranged"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
},
|
|
[577] = { --Havok Demon Hunter
|
|
["Dps"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
["MagicDispeller"] = true,
|
|
},
|
|
[581] = { --Vengeance Demon Hunter
|
|
["Tank"] = true,
|
|
["Melee"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
["MagicDispeller"] = true,
|
|
},
|
|
[1456] = { --Initial Demon Hunter (used in exiles reach tutorial mode). Treated as hybrid. Utility disabled because that'd require checking tutorial progress
|
|
["Tank"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
},
|
|
[1467] = { --Evoker Devastation
|
|
["Dps"] = true,
|
|
["CasterDps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["HasInterrupt"] = IsSpellKnown(351338),--Quell
|
|
["RemovePoison"] = IsSpellKnown(365585),--Expunge. Must be specced
|
|
["RemoveCurse"] = IsSpellKnown(374251),--Cauterizing Flame
|
|
["RemoveDisease"] = IsSpellKnown(374251),--Cauterizing Flame
|
|
["RemoveEnrage"] = IsSpellKnown(374346),--Overawe
|
|
},
|
|
[1468] = { --Evoker Preservation
|
|
["Healer"] = true,
|
|
["Ranged"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["RemoveMagic"] = true,
|
|
["RemovePoison"] = true,--Auto known
|
|
["HasInterrupt"] = IsSpellKnown(351338),--Quell
|
|
["RemoveCurse"] = IsSpellKnown(374251),--Cauterizing Flame
|
|
["RemoveDisease"] = IsSpellKnown(374251),--Cauterizing Flame
|
|
["RemoveEnrage"] = IsSpellKnown(374346),--Overawe
|
|
["RaidCooldown"] = IsSpellKnown(363534),--Rewind
|
|
},
|
|
[1465] = { --Evoker Initial (treated as both healer and dps for basic leveling purposes)
|
|
["Dps"] = true,
|
|
["CasterDps"] = true,
|
|
["Healer"] = true,
|
|
["Ranged"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
},
|
|
}
|
|
specRoleTable[63] = specRoleTable[62]--Frost Mage same as arcane
|
|
specRoleTable[64] = specRoleTable[62]--Fire Mage same as arcane
|
|
specRoleTable[72] = specRoleTable[71]--Fury Warrior same as Arms
|
|
specRoleTable[252] = specRoleTable[251]--Unholy DK same as frost
|
|
specRoleTable[257] = specRoleTable[256]--Holy Priest same as disc
|
|
specRoleTable[260] = specRoleTable[259]--Combat Rogue same as Assassination
|
|
specRoleTable[261] = specRoleTable[259]--Subtlety Rogue same as Assassination
|
|
specRoleTable[266] = specRoleTable[265]--Demonology Warlock same as Affliction
|
|
specRoleTable[267] = specRoleTable[265]--Destruction Warlock same as Affliction
|
|
specRoleTable[1473] = specRoleTable[1467]--Just map augmentation to devastation for now
|
|
elseif private.isCata then--Cata and later needs custom section since it also now supports specIDs which we want to use instead of Era compat code, for libspec compatability
|
|
specRoleTable = {
|
|
[799] = { --Arcane Mage
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["CasterDps"] = true,
|
|
["HasInterrupt"] = true,
|
|
["HasImmunity"] = true,
|
|
["RemoveCurse"] = true,
|
|
["MagicDispeller"] = IsSpellKnown(30449),--Spellsteal in TBC+
|
|
},
|
|
[831] = { --Holy Paladin
|
|
["Healer"] = true,
|
|
["Melee"] = true,--They melee when oom?
|
|
["Ranged"] = true,
|
|
["CasterDps"] = true,--Judgements, exorcism, etc
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["RaidCooldown"] = true,--Devotion Aura
|
|
["RemovePoison"] = true,
|
|
["RemoveDisease"] = true,
|
|
["RemoveMagic"] = true,
|
|
["HasImmunity"] = true,
|
|
},
|
|
[839] = { --Protection Paladin
|
|
["Tank"] = true,
|
|
["Melee"] = true,
|
|
["ManaUser"] = true,
|
|
["Physical"] = true,
|
|
["CasterDps"] = true,--Judgements, exorcism, etc
|
|
["RemovePoison"] = true,
|
|
["RemoveDisease"] = true,
|
|
["RemoveMagic"] = true,
|
|
["HasImmunity"] = true,
|
|
},
|
|
[855] = { --Retribution Paladin
|
|
["Tank"] = private.isClassic and true or false,
|
|
["Dps"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["CasterDps"] = true,--Judgements, exorcism, etc
|
|
["ManaUser"] = true,
|
|
["Physical"] = true,
|
|
["RemovePoison"] = true,
|
|
["RemoveDisease"] = true,
|
|
["RemoveMagic"] = true,
|
|
["HasImmunity"] = true,
|
|
},
|
|
[746] = { --Arms Warrior
|
|
["Dps"] = true,
|
|
["Tank"] = false,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
},
|
|
[845] = { --Protection Warrior
|
|
["Tank"] = true,
|
|
["Melee"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
["MagicDispeller"] = (IsSpellKnown(23922) or IsSpellKnown(23923) or IsSpellKnown(23924) or IsSpellKnown(23925) or IsSpellKnown(25258) or IsSpellKnown(30356)),--Shield Slam
|
|
},
|
|
[752] = { --Balance Druid
|
|
["Healer"] = false,
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["CasterDps"] = true,
|
|
["RemoveCurse"] = true,
|
|
},
|
|
[750] = { --Feral Druid
|
|
["Healer"] = false,
|
|
["Dps"] = true,
|
|
["Tank"] = IsPlayerSpell(23922) and true or false,--Only sets true if Nuturing Instinct is learned for non vanilla
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
["RemoveCurse"] = true,
|
|
},
|
|
[748] = { -- Restoration Druid
|
|
["Healer"] = true,
|
|
["Ranged"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["RaidCooldown"] = true,--Tranquility
|
|
["RemoveCurse"] = true,
|
|
},
|
|
[811] = { --Beastmaster Hunter
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["Physical"] = true,
|
|
["RemoveEnrage"] = true,
|
|
["ManaUser"] = true,
|
|
},
|
|
[807] = { --Markmanship Hunter Hunter
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["Physical"] = true,
|
|
["RemoveEnrage"] = true,
|
|
["ManaUser"] = true,
|
|
},
|
|
[809] = { --Survival Hunter
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["Physical"] = true,
|
|
["RemoveEnrage"] = true,
|
|
["ManaUser"] = true,
|
|
},
|
|
[760] = { --Discipline Priest
|
|
["Healer"] = true,
|
|
["Ranged"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["CasterDps"] = true,--Iffy. Technically yes, but this can't be used to determine eligable target for dps only debuffs
|
|
["RaidCooldown"] = true,--Power Word: Barrier(Discipline) / Divine Hymn (Holy)
|
|
["MagicDispeller"] = true,
|
|
["RemoveMagic"] = true,
|
|
},
|
|
[795] = { --Shadow Priest
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["CasterDps"] = true,
|
|
["MagicDispeller"] = true,
|
|
["RemoveMagic"] = true,
|
|
},
|
|
[182] = { --Assassination Rogue
|
|
["Dps"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
},
|
|
[261] = { --Elemental Shaman
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["CasterDps"] = true,
|
|
["HasInterrupt"] = true,
|
|
["MagicDispeller"] = true,
|
|
},
|
|
[263] = { --Enhancement Shaman
|
|
["Dps"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
--["CasterDps"] = true,??
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
["MagicDispeller"] = true,
|
|
},
|
|
[262] = { --Restoration Shaman
|
|
["Healer"] = true,
|
|
["Ranged"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["HasInterrupt"] = true,
|
|
["MagicDispeller"] = true,
|
|
},
|
|
[871] = { --Affliction Warlock
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["CasterDps"] = true,
|
|
},
|
|
[398] = {--Blood DK
|
|
["Tank"] = true,
|
|
["Melee"] = true,
|
|
["Dps"] = false,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
},
|
|
[399] = {--Frost DK
|
|
["Tank"] = false,
|
|
["Melee"] = true,
|
|
["Dps"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
},
|
|
[400] = {--Unholy DK
|
|
["Tank"] = false,
|
|
["Melee"] = true,
|
|
["Dps"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
},
|
|
}
|
|
specRoleTable[823] = specRoleTable[799]--Frost Mage same as arcane
|
|
specRoleTable[851] = specRoleTable[799]--Fire Mage same as arcane
|
|
specRoleTable[815] = specRoleTable[746]--Fury Warrior same as Arms
|
|
specRoleTable[813] = specRoleTable[760]--Holy Priest same as disc
|
|
specRoleTable[181] = specRoleTable[182]--Combat Rogue same as Assassination
|
|
specRoleTable[183] = specRoleTable[182]--Subtlety Rogue same as Assassination
|
|
specRoleTable[867] = specRoleTable[871]--Demonology Warlock same as Affliction
|
|
specRoleTable[865] = specRoleTable[871]--Destruction Warlock same as Affliction
|
|
else--Vanilla and Wrath
|
|
specRoleTable = {
|
|
["MAGE1"] = { --Arcane Mage
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["CasterDps"] = true,
|
|
["HasInterrupt"] = true,
|
|
["HasImmunity"] = true,
|
|
["RemoveCurse"] = true,
|
|
["MagicDispeller"] = IsSpellKnown(30449),--Spellsteal in TBC+
|
|
},
|
|
["PALADIN1"] = { --Holy Paladin
|
|
["Healer"] = true,
|
|
["Melee"] = true,--They melee when oom?
|
|
["Ranged"] = true,
|
|
["CasterDps"] = true,--Judgements, exorcism, etc
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["RaidCooldown"] = true,--Devotion Aura
|
|
["RemovePoison"] = true,
|
|
["RemoveDisease"] = true,
|
|
["RemoveMagic"] = true,
|
|
["HasImmunity"] = true,
|
|
},
|
|
["PALADIN2"] = { --Protection Paladin
|
|
["Tank"] = true,
|
|
["Melee"] = true,
|
|
["ManaUser"] = true,
|
|
["Physical"] = true,
|
|
["CasterDps"] = true,--Judgements, exorcism, etc
|
|
["RemovePoison"] = true,
|
|
["RemoveDisease"] = true,
|
|
["RemoveMagic"] = true,
|
|
["HasImmunity"] = true,
|
|
},
|
|
["PALADIN3"] = { --Retribution Paladin
|
|
["Tank"] = private.isClassic and true or false,
|
|
["Dps"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["CasterDps"] = true,--Judgements, exorcism, etc
|
|
["ManaUser"] = true,
|
|
["Physical"] = true,
|
|
["RemovePoison"] = true,
|
|
["RemoveDisease"] = true,
|
|
["RemoveMagic"] = true,
|
|
["HasImmunity"] = true,
|
|
},
|
|
["WARRIOR1"] = { --Arms Warrior
|
|
["Dps"] = true,
|
|
["Tank"] = private.isClassic and true or false,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
},
|
|
["WARRIOR3"] = { --Protection Warrior
|
|
["Tank"] = true,
|
|
["Melee"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
["MagicDispeller"] = (IsSpellKnown(23922) or IsSpellKnown(23923) or IsSpellKnown(23924) or IsSpellKnown(23925) or IsSpellKnown(25258) or IsSpellKnown(30356)),--Shield Slam
|
|
},
|
|
["DRUID1"] = { --Balance Druid
|
|
["Healer"] = private.isClassic and true or false,
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["CasterDps"] = true,
|
|
["RemoveCurse"] = true,
|
|
},
|
|
["DRUID2"] = { --Feral Druid
|
|
["Healer"] = private.isClassic and true or false,
|
|
["Dps"] = true,
|
|
["Tank"] = IsPlayerSpell(23922) and true or private.isClassic and true or false,--Only sets true if Nuturing Instinct is learned for non vanilla
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
["RemoveCurse"] = true,
|
|
},
|
|
["DRUID3"] = { -- Restoration Druid
|
|
["Healer"] = true,
|
|
["Ranged"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["RaidCooldown"] = true,--Tranquility
|
|
["RemoveCurse"] = true,
|
|
},
|
|
["HUNTER1"] = { --Beastmaster Hunter
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["Physical"] = true,
|
|
["RemoveEnrage"] = true,
|
|
["ManaUser"] = true,
|
|
},
|
|
["HUNTER2"] = { --Markmanship Hunter Hunter
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["Physical"] = true,
|
|
["RemoveEnrage"] = true,
|
|
["ManaUser"] = true,
|
|
},
|
|
["HUNTER3"] = { --Survival Hunter
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["Physical"] = true,
|
|
["RemoveEnrage"] = true,
|
|
["ManaUser"] = true,
|
|
},
|
|
["PRIEST1"] = { --Discipline Priest
|
|
["Healer"] = true,
|
|
["Ranged"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["CasterDps"] = true,--Iffy. Technically yes, but this can't be used to determine eligable target for dps only debuffs
|
|
["RaidCooldown"] = true,--Power Word: Barrier(Discipline) / Divine Hymn (Holy)
|
|
["MagicDispeller"] = true,
|
|
["RemoveMagic"] = true,
|
|
},
|
|
["PRIEST3"] = { --Shadow Priest
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["CasterDps"] = true,
|
|
["MagicDispeller"] = true,
|
|
["RemoveMagic"] = true,
|
|
},
|
|
["ROGUE1"] = { --Assassination Rogue
|
|
["Dps"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
},
|
|
["SHAMAN1"] = { --Elemental Shaman
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["CasterDps"] = true,
|
|
["HasInterrupt"] = true,
|
|
["MagicDispeller"] = true,
|
|
},
|
|
["SHAMAN2"] = { --Enhancement Shaman
|
|
["Dps"] = true,
|
|
["Melee"] = true,
|
|
["MeleeDps"] = true,
|
|
--["CasterDps"] = true,??
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
["MagicDispeller"] = true,
|
|
},
|
|
["SHAMAN3"] = { --Restoration Shaman
|
|
["Healer"] = true,
|
|
["Ranged"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["HasInterrupt"] = true,
|
|
["MagicDispeller"] = true,
|
|
},
|
|
["WARLOCK1"] = { --Affliction Warlock
|
|
["Dps"] = true,
|
|
["Ranged"] = true,
|
|
["RangedDps"] = true,
|
|
["ManaUser"] = true,
|
|
["SpellCaster"] = true,
|
|
["CasterDps"] = true,
|
|
},
|
|
["DEATHKNIGHT1"] = {--Just treat all DKs as all roles in wrath, they are hybrid as hell in wrath and any spec can be any role
|
|
["Tank"] = true,
|
|
["Melee"] = true,
|
|
["Dps"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
},
|
|
["DEATHKNIGHT2"] = {--Just treat all DKs as all roles in wrath, they are hybrid as hell in wrath and any spec can be any role
|
|
["Tank"] = true,
|
|
["Melee"] = true,
|
|
["Dps"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
},
|
|
["DEATHKNIGHT3"] = {--Just treat all DKs as all roles in wrath, they are hybrid as hell in wrath and any spec can be any role
|
|
["Tank"] = true,
|
|
["Melee"] = true,
|
|
["Dps"] = true,
|
|
["MeleeDps"] = true,
|
|
["Physical"] = true,
|
|
["HasInterrupt"] = true,
|
|
},
|
|
}
|
|
specRoleTable["MAGE3"] = specRoleTable["MAGE1"]--Frost Mage same as arcane
|
|
specRoleTable["MAGE2"] = specRoleTable["MAGE1"]--Fire Mage same as arcane
|
|
specRoleTable["WARRIOR2"] = specRoleTable["WARRIOR1"]--Fury Warrior same as Arms
|
|
specRoleTable["PRIEST2"] = specRoleTable["PRIEST1"]--Holy Priest same as disc
|
|
specRoleTable["ROGUE2"] = specRoleTable["ROGUE1"]--Combat Rogue same as Assassination
|
|
specRoleTable["ROGUE3"] = specRoleTable["ROGUE1"]--Subtlety Rogue same as Assassination
|
|
specRoleTable["WARLOCK2"] = specRoleTable["WARLOCK1"]--Demonology Warlock same as Affliction
|
|
specRoleTable["WARLOCK3"] = specRoleTable["WARLOCK1"]--Destruction Warlock same as Affliction
|
|
end
|
|
private.specRoleTable = specRoleTable
|
|
end
|
|
DBMExtraGlobal:rebuildSpecTable()--Initial build
|
|
|