local MAJOR, MINOR = 'KuiSpellList-1.0', 5 local KuiSpellList = LibStub:NewLibrary(MAJOR, MINOR) local _ if not KuiSpellList then -- already registered return end local listeners = {} local whitelist = { --[[ Important spells ---------------------------------------------------------- Target auras which the player needs to keep track of. -- LEGEND -- gp = guaranteed passive nd = no damage td = tanking dot ma = modifies another ability when active ]] DRUID = { -- 5.2 COMPLETE [770] = true, -- faerie fire [1079] = true, -- rip [1822] = true, -- rake [8921] = true, -- moonfire [9007] = true, -- pounce bleed [77758] = true, -- bear thrash; td ma [106830] = true, -- cat thrash [93402] = true, -- sunfire [33745] = true, -- lacerate [102546] = true, -- pounce [339] = true, -- entangling roots [2637] = true, -- hibernate [6795] = true, -- growl [16914] = true, -- hurricane [19975] = true, -- nature's grasp roots [22570] = true, -- maim [33786] = true, -- cyclone --[58180] = true, -- infected wounds; gp nd [78675] = true, -- solar beam silence [102795] = true, -- bear hug [1126] = true, -- mark of the wild [29166] = true, -- innervate [110309] = true, -- symbiosis [774] = true, -- rejuvenation [8936] = true, -- regrowth [33763] = true, -- lifebloom [48438] = true, -- wild growth [102342] = true, -- ironbark -- talents --[16979] = true, -- wild charge: bear; gp nd --[49376] = true, -- wild charge: cat; gp nd [102351] = true, -- cenarion ward [102355] = true, -- faerie swarm [102359] = true, -- mass entanglement [61391] = true, -- typhoon daze [99] = true, -- disorienting roar [5211] = true, -- mighty bash [50613] = true, -- arcane torrent [20549] = true, -- war stone [107079] = true, -- quaking palm [146198] = true, -- legendary cloak }, HUNTER = { -- 5.2 COMPLETE [1130] = true, -- hunter's mark [3674] = true, -- black arrow [53301] = true, -- explosive shot [63468] = true, -- piercing shots [118253] = true, -- serpent sting [5116] = true, -- concussive shot [19503] = true, -- scatter shot [20736] = true, -- distracting shot [24394] = true, -- intimidation [35101] = true, -- concussive barrage [64803] = true, -- entrapment [82654] = true, -- widow venom [131894] = true, -- murder by way of crow [3355] = true, -- freezing trap [13812] = true, -- explosive trap [135299] = true, -- ice trap TODO isn't classed as caused by player [34477] = true, -- misdirection -- talents [136634] = true, -- narrow escape [34490] = true, -- silencing shot [19386] = true, -- wyvern sting [117405] = true, -- binding shot [117526] = true, -- binding shot stun [120761] = true, -- glaive toss slow [121414] = true, -- glaive toss slow 2 }, MAGE = { -- 5.2 COMPLETE [116] = true, -- frostbolt debuff [11366] = true, -- pyroblast [12654] = true, -- ignite [31589] = true, -- slow [83853] = true, -- combustion [132210] = true, -- pyromaniac [118] = true, -- polymorph [28271] = true, -- polymorph: turtle [28272] = true, -- polymorph: pig [61305] = true, -- polymorph: cat [61721] = true, -- polymorph: rabbit [61780] = true, -- polymorph: turkey [44572] = true, -- deep freeze [1459] = true, -- arcane brilliance -- talents [111264] = true, -- ice ward [114923] = true, -- nether tempest [44457] = true, -- living bomb [112948] = true, -- frost bomb [50613] = true, -- arcane torrent [20549] = true, -- war stone [107079] = true, -- quaking palm [146198] = true, -- legendary cloak }, DEATHKNIGHT = { -- 5.2 COMPLETE [55095] = true, -- frost fever [55078] = true, -- blood plague [114866] = true, -- soul reaper [43265] = true, -- death and decay [45524] = true, -- chains of ice [49560] = true, -- death grip taunt [50435] = true, -- chillblains [56222] = true, -- dark command [108194] = true, -- asphyxiate stun [3714] = true, -- path of frost [57330] = true, -- horn of winter -- talents [115000] = true, -- remorseless winter slow [115001] = true, -- remorseless winter stun [50613] = true, -- arcane torrent [20549] = true, -- war stone [107079] = true, -- quaking palm }, WARRIOR = { -- 5.2 COMPLETE [86346] = true, -- colossus smash [113746] = true, -- weakened armour [355] = true, -- taunt [676] = true, -- disarm [1160] = true, -- demoralizing shout [1715] = true, -- hamstring [5246] = true, -- intimidating shout [7922] = true, -- charge stun [18498] = true, -- gag order [64382] = true, -- shattering throw [115767] = true, -- deep wounds; td [137637] = true, -- warbringer slow [469] = true, -- commanding shout [3411] = true, -- intervene [6673] = true, -- battle shout -- talents [12323] = true, -- piercing howl [107566] = true, -- staggering shout [132168] = true, -- shockwave debuff [114029] = true, -- safeguard [114030] = true, -- vigilance [113344] = true, -- bloodbath debuff [132169] = true, -- storm bolt debuff [50613] = true, -- arcane torrent [20549] = true, -- war stone [107079] = true, -- quaking palm }, PALADIN = { -- 5.2 COMPLETE [114163] = true, -- eternal flame [53563] = { colour = {1,.5,0} }, -- beacon of light [20925] = { colour = {1,1,.3} }, -- sacred shield [19740] = { colour = {.2,.2,1} }, -- blessing of might [20217] = { colour = {1,.3,.3} }, -- blessing of kings [26573] = true, -- consecration; td [31803] = true, -- censure; td -- hand of... [114039] = true, -- purity [6940] = true, -- sacrifice [1044] = true, -- freedom [1038] = true, -- salvation [1022] = true, -- protection [853] = true, -- hammer of justice [2812] = true, -- denounce [10326] = true, -- turn evil [20066] = true, -- repentance [31935] = true, -- avenger's shield silence [62124] = true, -- reckoning [105593] = true, -- fist of justice [119072] = true, -- holy wrath stun [114165] = true, -- holy prism [114916] = true, -- execution sentence dot [114917] = true, -- stay of execution hot [50613] = true, -- arcane torrent [20549] = true, -- war stone [107079] = true, -- quaking palm }, WARLOCK = { -- 5.2 COMPLETE [5697] = true, -- unending breath [20707] = true, -- soulstone [109773] = true, -- dark intent [172] = true, -- corruption, demo. version [146739] = true, -- corruption [114790] = true, -- Soulburn: Seed of Corruption [348] = true, -- immolate [108686] = true, -- immolate (aoe) [980] = true, -- agony [27243] = true, -- seed of corruption [30108] = true, -- unstable affliction [47960] = true, -- shadowflame [48181] = true, -- haunt [80240] = true, -- havoc [1490] = true, -- curse of the elements [18223] = true, -- curse of exhaustion [109466] = true, -- curse of enfeeblement [710] = true, -- banish [1098] = true, -- enslave demon [5782] = true, -- fear -- metamorphosis: [603] = true, -- doom [124915] = true, -- chaos wave [116202] = true, -- aura of the elements [116198] = true, -- aura of enfeeblement -- talents: [5484] = true, -- howl of terror [111397] = true, -- blood fear [50613] = true, -- arcane torrent [20549] = true, -- war stone [107079] = true, -- quaking palm [146198] = true, -- legendary cloak }, SHAMAN = { -- 5.2 COMPLETE [8050] = true, -- flame shock [8056] = true, -- frost shock slow [63685] = true, -- frost shock root [51490] = true, -- thunderstorm slow [17364] = true, -- stormstrike [61882] = true, -- earthquake [3600] = true, -- earthbind totem passive [64695] = true, -- earthgrap totem root [116947] = true, -- earthgrap totem slow [546] = true, -- water walking [974] = true, -- earth shield [51945] = true, -- earthliving [61295] = true, -- riptide [51514] = true, -- hex [76780] = true, -- bind elemental [50613] = true, -- arcane torrent [20549] = true, -- war stone [107079] = true, -- quaking palm [146198] = true, -- legendary cloak }, PRIEST = { -- 5.2 COMPLETE [139] = true, -- renew [6346] = true, -- fear ward [33206] = true, -- pain suppression [41635] = true, -- prayer of mending buff [47753] = true, -- divine aegis [47788] = true, -- guardian spirit [114908] = true, -- spirit shell shield [17] = true, -- power word: shield [21562] = true, -- power word: fortitude [2096] = true, -- mind vision [8122] = true, -- psychic scream [9484] = true, -- shackle undead [64044] = true, -- psychic horror [111759] = true, -- levitate [589] = true, -- shadow word: pain [2944] = true, -- devouring plague [14914] = true, -- holy fire [34914] = true, -- vampiric touch -- talents: [605] = true, -- dominate mind [114404] = true, -- void tendril root [113792] = true, -- psychic terror [50613] = true, -- arcane torrent [20549] = true, -- war stone [107079] = true, -- quaking palm [146198] = true, -- legendary cloak }, ROGUE = { -- 5.2 COMPLETE [703] = true, -- garrote [1943] = true, -- rupture [79140] = true, -- vendetta [84617] = true, -- revealing strike [89775] = true, -- hemorrhage [113746] = true, -- weakened armour [122233] = true, -- crimson tempest [2818] = true, -- deadly poison [3409] = true, -- crippling poison [115196] = true, -- debilitating poison [5760] = true, -- mind numbing poison [115194] = true, -- mind paralysis [8680] = true, -- wound poison [408] = true, -- kidney shot [1776] = true, -- gouge [1833] = true, -- cheap shot [2094] = true, -- blind [6770] = true, -- sap [26679] = true, -- deadly throw [51722] = true, -- dismantle [88611] = true, -- smoke bomb [57934] = true, -- tricks of the trade -- talents: [112961] = true, -- leeching poison [113952] = true, -- paralytic poison [113953] = true, -- paralysis [115197] = true, -- partial paralysis [137619] = true, -- marked for death [50613] = true, -- arcane torrent [20549] = true, -- war stone [107079] = true, -- quaking palm }, MONK = { -- 5.2 COMPLETE [116189] = true, -- provoke taunt [116330] = true, -- dizzying haze debuff [123727] = true, -- keg smash - dizzying haze debuff [123725] = true, -- breath of fire [120086] = true, -- fists of fury stun [122470] = true, -- touch of karma [128531] = true, -- blackout kick debuff [130320] = true, -- rising sun kick debuff [116781] = true, -- legacy of the white tiger [116844] = true, -- ring of peace [117666] = true, -- legacy of the emperor group [117667] = true, -- legacy of the emperor target (um.) [116849] = true, -- life cocoon [132120] = true, -- enveloping mist [119611] = true, -- renewing mist [117368] = true, -- grapple weapon [116095] = true, -- disable [115078] = true, -- paralysis -- talents: [116841] = true, -- tiger's lust [124081] = true, -- zen sphere [119392] = true, -- charging ox wave [119381] = true, -- leg sweep [50613] = true, -- arcane torrent [20549] = true, -- war stone [107079] = true, -- quaking palm }, -- Important auras regardless of caster (cc, flags...) ------------------------- --[[ Global = { -- PVP -- [34976] = true, -- Netherstorm Flag [23335] = true, -- Alliance Flag [23333] = true, -- Horde Flag }, ]] } KuiSpellList.RegisterChanged = function(table, method) -- register listener for whitelist updates tinsert(listeners, { table, method }) end KuiSpellList.WhitelistChanged = function() -- inform listeners of whitelist update for _,listener in ipairs(listeners) do if (listener[1])[listener[2]] then (listener[1])[listener[2]]() end end end KuiSpellList.GetDefaultSpells = function(class) -- get spell list, ignoring KuiSpellListCustom local list = {} -- return a copy of the list rather than a reference for spellid,_ in pairs(whitelist[class]) do list[spellid] = true end return list end KuiSpellList.GetImportantSpells = function(class) -- get spell list and merge with KuiSpellListCustom if it is set local list = KuiSpellList.GetDefaultSpells(class) if KuiSpellListCustom then if KuiSpellListCustom.Ignore and KuiSpellListCustom.Ignore[class] then -- remove ignored spells for spellid,_ in pairs(KuiSpellListCustom.Ignore[class]) do list[spellid] = nil end end if KuiSpellListCustom.Classes and KuiSpellListCustom.Classes[class] then -- merge custom added spells for spellid,_ in pairs(KuiSpellListCustom.Classes[class]) do list[spellid] = true end end end return list end