local tbl_sort, select, string_lower = table.sort, select, string.lower local GetSpellInfo = GetSpellInfo local GetItemInfo = GetItemInfo local GetLocale = GetLocale local Gladdy = LibStub("Gladdy") local L = Gladdy.L local AURA_TYPE_DEBUFF, AURA_TYPE_BUFF = AURA_TYPE_DEBUFF, AURA_TYPE_BUFF Gladdy.CLASSES = {"MAGE", "PRIEST", "DRUID", "SHAMAN", "PALADIN", "WARLOCK", "WARRIOR", "HUNTER", "ROGUE"} tbl_sort(Gladdy.CLASSES) Gladdy.RACES = {"Scourge", "BloodElf", "Tauren", "Orc", "Troll", "NightElf", "Draenei", "Human", "Gnome", "Dwarf"} tbl_sort(Gladdy.RACES) local RACE_ICON_TCOORDS = { ["HUMAN_MALE"] = {0, 0.125, 0, 0.25}, ["DWARF_MALE"] = {0.125, 0.25, 0, 0.25}, ["GNOME_MALE"] = {0.25, 0.375, 0, 0.25}, ["NIGHTELF_MALE"] = {0.375, 0.5, 0, 0.25}, ["TAUREN_MALE"] = {0, 0.125, 0.25, 0.5}, ["SCOURGE_MALE"] = {0.125, 0.25, 0.25, 0.5}, ["TROLL_MALE"] = {0.25, 0.375, 0.25, 0.5}, ["ORC_MALE"] = {0.375, 0.5, 0.25, 0.5}, ["HUMAN_FEMALE"] = {0, 0.125, 0.5, 0.75}, ["DWARF_FEMALE"] = {0.125, 0.25, 0.5, 0.75}, ["GNOME_FEMALE"] = {0.25, 0.375, 0.5, 0.75}, ["NIGHTELF_FEMALE"] = {0.375, 0.5, 0.5, 0.75}, ["TAUREN_FEMALE"] = {0, 0.125, 0.75, 1.0}, ["SCOURGE_FEMALE"] = {0.125, 0.25, 0.75, 1.0}, ["TROLL_FEMALE"] = {0.25, 0.375, 0.75, 1.0}, ["ORC_FEMALE"] = {0.375, 0.5, 0.75, 1.0}, ["BLOODELF_MALE"] = {0.5, 0.625, 0.25, 0.5}, ["BLOODELF_FEMALE"] = {0.5, 0.625, 0.75, 1.0}, ["DRAENEI_MALE"] = {0.5, 0.625, 0, 0.25}, ["DRAENEI_FEMALE"] = {0.5, 0.625, 0.5, 0.75}, } local specBuffs = { -- DRUID [GetSpellInfo(45283)] = L["Restoration"], -- Natural Perfection [GetSpellInfo(16880)] = L["Restoration"], -- Nature's Grace; Dreamstate spec in TBC equals Restoration [GetSpellInfo(24858)] = L["Restoration"], -- Moonkin Form; Dreamstate spec in TBC equals Restoration [GetSpellInfo(17007)] = L["Feral"], -- Leader of the Pack [GetSpellInfo(16188)] = L["Restoration"], -- Nature's Swiftness [GetSpellInfo(33891)] = L["Restoration"], -- Tree of Life -- HUNTER [GetSpellInfo(34692)] = L["Beast Mastery"], -- The Beast Within [GetSpellInfo(20895)] = L["Beast Mastery"], -- Spirit Bond [GetSpellInfo(34455)] = L["Beast Mastery"], -- Ferocious Inspiration [GetSpellInfo(27066)] = L["Marksmanship"], -- Trueshot Aura [GetSpellInfo(34501)] = L["Survival"], -- Expose Weakness -- MAGE [GetSpellInfo(33405)] = L["Frost"], -- Ice Barrier [GetSpellInfo(11129)] = L["Fire"], -- Combustion [GetSpellInfo(12042)] = L["Arcane"], -- Arcane Power [GetSpellInfo(12043)] = L["Arcane"], -- Presence of Mind [GetSpellInfo(31589)] = L["Arcane"], -- Slow [GetSpellInfo(12472)] = L["Frost"], -- Icy Veins [GetSpellInfo(46989)] = L["Arcane"], -- Improved Blink -- PALADIN [GetSpellInfo(31836)] = L["Holy"], -- Light's Grace [GetSpellInfo(31842)] = L["Holy"], -- Divine Illumination [GetSpellInfo(20216)] = L["Holy"], -- Divine Favor [GetSpellInfo(20375)] = L["Retribution"], -- Seal of Command [GetSpellInfo(20049)] = L["Retribution"], -- Vengeance [GetSpellInfo(20218)] = L["Retribution"], -- Sanctity Aura [GetSpellInfo(26018)] = L["Retribution"], -- Vindication [GetSpellInfo(27179)] = L["Protection"], -- Holy Shield -- PRIEST [GetSpellInfo(15473)] = L["Shadow"], -- Shadowform [GetSpellInfo(15286)] = L["Shadow"], -- Vampiric Embrace [GetSpellInfo(45234)] = L["Discipline"], -- Focused Will [GetSpellInfo(27811)] = L["Discipline"], -- Blessed Recovery [GetSpellInfo(33142)] = L["Holy"], -- Blessed Resilience [GetSpellInfo(14752)] = L["Discipline"], -- Divine Spirit [GetSpellInfo(27681)] = L["Discipline"], -- Prayer of Spirit [GetSpellInfo(10060)] = L["Discipline"], -- Power Infusion [GetSpellInfo(33206)] = L["Discipline"], -- Pain Suppression [GetSpellInfo(14893)] = L["Discipline"], -- Inspiration -- ROGUE [GetSpellInfo(36554)] = L["Subtlety"], -- Shadowstep [GetSpellInfo(44373)] = L["Subtlety"], -- Shadowstep Speed [GetSpellInfo(36563)] = L["Subtlety"], -- Shadowstep DMG [GetSpellInfo(14278)] = L["Subtlety"], -- Ghostly Strike [GetSpellInfo(31233)] = L["Assassination"], -- Find Weakness [GetSpellInfo(13877)] = L["Combat"], -- Blade Flurry --Shaman [GetSpellInfo(30807)] = L["Enhancement"], -- Unleashed Rage [GetSpellInfo(16280)] = L["Enhancement"], -- Flurry [GetSpellInfo(30823)] = L["Enhancement"], -- Shamanistic Rage [GetSpellInfo(16190)] = L["Restoration"], -- Mana Tide Totem [GetSpellInfo(32594)] = L["Restoration"], -- Earth Shield [GetSpellInfo(29202)] = L["Restoration"], -- Healing Way -- WARLOCK [GetSpellInfo(19028)] = L["Demonology"], -- Soul Link [GetSpellInfo(23759)] = L["Demonology"], -- Master Demonologist [GetSpellInfo(30302)] = L["Destruction"], -- Nether Protection [GetSpellInfo(34935)] = L["Destruction"], -- Backlash -- WARRIOR [GetSpellInfo(29838)] = L["Arms"], -- Second Wind [GetSpellInfo(12292)] = L["Arms"], -- Death Wish } function Gladdy:GetSpecBuffs() return specBuffs end local specSpells = { -- DRUID [GetSpellInfo(33831)] = L["Balance"], -- Force of Nature [GetSpellInfo(33983)] = L["Feral"], -- Mangle (Cat) [GetSpellInfo(33987)] = L["Feral"], -- Mangle (Bear) [GetSpellInfo(18562)] = L["Restoration"], -- Swiftmend [GetSpellInfo(16188)] = L["Restoration"], -- Nature's Swiftness [GetSpellInfo(33891)] = L["Restoration"], -- Tree of Life -- HUNTER [GetSpellInfo(19577)] = L["Beast Mastery"], -- Intimidation [GetSpellInfo(34490)] = L["Marksmanship"], -- Silencing Shot [GetSpellInfo(27068)] = L["Survival"], -- Wyvern Sting [GetSpellInfo(19306)] = L["Survival"], -- Counterattack [GetSpellInfo(27066)] = L["Marksmanship"], -- Trueshot Aura -- MAGE [GetSpellInfo(12042)] = L["Arcane"], -- Arcane Power [GetSpellInfo(33043)] = L["Fire"], -- Dragon's Breath [GetSpellInfo(33933)] = L["Fire"], -- Blast Wave [GetSpellInfo(33405)] = L["Frost"], -- Ice Barrier [GetSpellInfo(31687)] = L["Frost"], -- Summon Water Elemental [GetSpellInfo(12472)] = L["Frost"], -- Icy Veins [GetSpellInfo(11958)] = L["Frost"], -- Cold Snap -- PALADIN [GetSpellInfo(33072)] = L["Holy"], -- Holy Shock [GetSpellInfo(20216)] = L["Holy"], -- Divine Favor [GetSpellInfo(31842)] = L["Holy"], -- Divine Illumination [GetSpellInfo(32700)] = L["Protection"], -- Avenger's Shield [GetSpellInfo(27170)] = L["Retribution"], -- Seal of Command [GetSpellInfo(35395)] = L["Retribution"], -- Crusader Strike [GetSpellInfo(20066)] = L["Retribution"], -- Repentance [GetSpellInfo(20218)] = L["Retribution"], -- Sanctity Aura -- PRIEST [GetSpellInfo(10060)] = L["Discipline"], -- Power Infusion [GetSpellInfo(33206)] = L["Discipline"], -- Pain Suppression [GetSpellInfo(14752)] = L["Discipline"], -- Divine Spirit [GetSpellInfo(33143)] = L["Holy"], -- Blessed Resilience [GetSpellInfo(34861)] = L["Holy"], -- Circle of Healing [GetSpellInfo(15473)] = L["Shadow"], -- Shadowform [GetSpellInfo(34917)] = L["Shadow"], -- Vampiric Touch [GetSpellInfo(15286)] = L["Shadow"], -- Vampiric Embrace -- ROGUE [GetSpellInfo(34413)] = L["Assassination"], -- Mutilate [GetSpellInfo(14177)] = L["Assassination"], -- Cold Blood [GetSpellInfo(13750)] = L["Combat"], -- Adrenaline Rush [GetSpellInfo(13877)] = L["Combat"], -- Blade Flurry [GetSpellInfo(14185)] = L["Subtlety"], -- Preparation [GetSpellInfo(16511)] = L["Subtlety"], -- Hemorrhage [GetSpellInfo(36554)] = L["Subtlety"], -- Shadowstep [GetSpellInfo(14278)] = L["Subtlety"], -- Ghostly Strike [GetSpellInfo(14183)] = L["Subtlety"], -- Premeditation -- SHAMAN [GetSpellInfo(16166)] = L["Elemental"], -- Elemental Mastery [GetSpellInfo(30706)] = L["Elemental"], -- Totem of Wrath [GetSpellInfo(30823)] = L["Enhancement"], -- Shamanistic Rage [GetSpellInfo(17364)] = L["Enhancement"], -- Stormstrike [GetSpellInfo(16190)] = L["Restoration"], -- Mana Tide Totem [GetSpellInfo(32594)] = L["Restoration"], -- Earth Shield --[GetSpellInfo(16188)] = L["Restoration"], -- Nature's Swiftness -- WARLOCK [GetSpellInfo(30405)] = L["Affliction"], -- Unstable Affliction [GetSpellInfo(18220)] = L["Affliction"], -- Dark Pact --[GetSpellInfo(30911)] = L["Affliction"], -- Siphon Life [GetSpellInfo(30414)] = L["Destruction"], -- Shadowfury [GetSpellInfo(30912)] = L["Destruction"], -- Conflagrate -- WARRIOR [GetSpellInfo(30330)] = L["Arms"], -- Mortal Strike [GetSpellInfo(12292)] = L["Arms"], -- Death Wish [GetSpellInfo(30335)] = L["Fury"], -- Bloodthirst [GetSpellInfo(12809)] = L["Protection"], -- Concussion Blow [GetSpellInfo(30022)] = L["Protection"], -- Devastation [GetSpellInfo(30356)] = L["Protection"], -- Shield Slam } function Gladdy:GetSpecSpells() return specSpells end local importantAuras = { -- Cyclone [GetSpellInfo(33786)] = { track = AURA_TYPE_DEBUFF, duration = 6, priority = 40, spellID = 33786, }, -- Hibernate [GetSpellInfo(18658)] = { track = AURA_TYPE_DEBUFF, duration = 10, priority = 40, magic = true, spellID = 18658, }, -- Entangling Roots [GetSpellInfo(26989)] = { track = AURA_TYPE_DEBUFF, duration = 10, priority = 30, onDamage = true, magic = true, root = true, spellID = 26989, }, [select(1, GetSpellInfo(27010)) .. " " .. select(1, GetSpellInfo(16689))] = { track = AURA_TYPE_DEBUFF, duration = 10, priority = 30, spellID = 27010, altName = select(1, GetSpellInfo(27010)) .. " " .. select(1, GetSpellInfo(16689)), }, -- Feral Charge [GetSpellInfo(16979)] = { track = AURA_TYPE_DEBUFF, duration = 4, priority = 30, root = true, spellID = 16979, }, -- Bash [GetSpellInfo(8983)] = { track = AURA_TYPE_DEBUFF, duration = 4, priority = 30, spellID = 8983, }, -- Pounce [GetSpellInfo(9005)] = { track = AURA_TYPE_DEBUFF, duration = 3, priority = 40, spellID = 9005, }, -- Maim [GetSpellInfo(22570)] = { track = AURA_TYPE_DEBUFF, duration = 6, priority = 40, incapacite = true, spellID = 22570, }, -- Innervate [GetSpellInfo(29166)] = { track = AURA_TYPE_BUFF, duration = 20, priority = 10, spellID = 29166, }, -- Imp Starfire Stun [GetSpellInfo(16922)] = { track = AURA_TYPE_DEBUFF, duration = 3, priority = 40, spellSchool = "physical", spellID = 16922, }, -- Freezing Trap Effect [GetSpellInfo(14309)] = { track = AURA_TYPE_DEBUFF, duration = 10, priority = 40, onDamage = true, magic = true, spellID = 14309, }, -- Wyvern Sting [GetSpellInfo(19386)] = { track = AURA_TYPE_DEBUFF, duration = 10, priority = 40, onDamage = true, poison = true, sleep = true, spellID = 19386, }, -- Scatter Shot [GetSpellInfo(19503)] = { track = AURA_TYPE_DEBUFF, duration = 4, priority = 40, onDamage = true, spellID = 19503, }, -- Scare Beast [GetSpellInfo(14327)] = { track = AURA_TYPE_DEBUFF, duration = 8, priority = 40, onDamage = true, fear = true, magic = true, spellID = 14327, }, -- Silencing Shot [GetSpellInfo(34490)] = { track = AURA_TYPE_DEBUFF, duration = 3, priority = 15, magic = true, spellID = 34490, }, -- Intimidation [GetSpellInfo(19577)] = { track = AURA_TYPE_DEBUFF, duration = 2, priority = 40, spellID = 19577, }, -- The Beast Within [GetSpellInfo(34692)] = { track = AURA_TYPE_BUFF, duration = 18, priority = 20, spellID = 34692, }, -- Polymorph [GetSpellInfo(12826)] = { track = AURA_TYPE_DEBUFF, duration = 10, priority = 40, onDamage = true, magic = true, spellID = 12826, }, -- Dragon's Breath [GetSpellInfo(31661)] = { track = AURA_TYPE_DEBUFF, duration = 3, priority = 40, onDamage = true, magic = true, spellID = 31661, }, -- Frost Nova [GetSpellInfo(27088)] = { track = AURA_TYPE_DEBUFF, duration = 8, priority = 30, onDamage = true, magic = true, root = true, spellID = 27088, }, -- Freeze (Water Elemental) [GetSpellInfo(33395)] = { track = AURA_TYPE_DEBUFF, duration = 8, priority = 30, onDamage = true, magic = true, root = true, spellID = 33395, }, -- Counterspell - Silence [GetSpellInfo(18469)] = { track = AURA_TYPE_DEBUFF, duration = 4, priority = 15, magic = true, spellID = 18469, }, -- Ice Block [GetSpellInfo(45438)] = { track = AURA_TYPE_BUFF, duration = 10, priority = 20, spellID = 45438, }, -- Impact [GetSpellInfo(12355)] = { track = AURA_TYPE_DEBUFF, duration = 2, priority = 40, spellID = 12355, }, -- Hammer of Justice [GetSpellInfo(10308)] = { track = AURA_TYPE_DEBUFF, duration = 6, priority = 40, magic = true, spellID = 10308, }, -- Repentance [GetSpellInfo(20066)] = { track = AURA_TYPE_DEBUFF, duration = 6, priority = 40, onDamage = true, magic = true, incapacite = true, spellID = 20066, }, -- Blessing of Protection [GetSpellInfo(10278)] = { track = AURA_TYPE_BUFF, duration = 10, priority = 10, spellID = 10278, }, -- Blessing of Freedom [GetSpellInfo(1044)] = { track = AURA_TYPE_BUFF, duration = 14, priority = 10, spellID = 1044, }, -- Blessing of Sacrifice [GetSpellInfo(6940)] = { track = AURA_TYPE_BUFF, duration = 30, priority = 12, spellID = 6940, }, -- Divine Shield [GetSpellInfo(642)] = { track = AURA_TYPE_BUFF, duration = 12, priority = 20, spellID = 642, }, -- Psychic Scream [GetSpellInfo(8122)] = { track = AURA_TYPE_DEBUFF, duration = 8, priority = 40, onDamage = true, fear = true, magic = true, spellID = 8122, }, -- Chastise [GetSpellInfo(44047)] = { track = AURA_TYPE_DEBUFF, duration = 8, priority = 30, root = true, spellID = 44047, }, -- Mind Control [GetSpellInfo(605)] = { track = AURA_TYPE_DEBUFF, duration = 10, priority = 40, magic = true, spellID = 605, }, --Blackout Stun 15269 [GetSpellInfo(15269)] = { track = AURA_TYPE_DEBUFF, duration = 3, priority = 40, spellSchool = "magic", spellID = 15269, }, -- Silence [GetSpellInfo(15487)] = { track = AURA_TYPE_DEBUFF, duration = 5, priority = 15, magic = true, spellID = 15487, }, -- Pain Suppression [GetSpellInfo(33206)] = { track = AURA_TYPE_BUFF, duration = 8, priority = 10, spellID = 33206, }, -- Fear Ward [GetSpellInfo(6346)] = { track = AURA_TYPE_BUFF, duration = 180, priority = 9, spellID = 6346, }, -- Sap [GetSpellInfo(6770)] = { track = AURA_TYPE_DEBUFF, duration = 10, priority = 40, onDamage = true, incapacite = true, spellID = 6770, }, -- Blind [GetSpellInfo(2094)] = { track = AURA_TYPE_DEBUFF, duration = 10, priority = 40, onDamage = true, spellID = 2094, }, -- Cheap Shot [GetSpellInfo(1833)] = { track = AURA_TYPE_DEBUFF, duration = 4, priority = 40, spellID = 1833, }, -- Kidney Shot [GetSpellInfo(8643)] = { track = AURA_TYPE_DEBUFF, duration = 6, priority = 40, spellID = 8643, }, -- Gouge [GetSpellInfo(1776)] = { track = AURA_TYPE_DEBUFF, duration = 4, priority = 40, onDamage = true, incapacite = true, spellID = 1776, }, -- Kick - Silence [GetSpellInfo(18425)] = { track = AURA_TYPE_DEBUFF, duration = 2, priority = 15, spellID = 18425, }, -- Garrote - Silence [GetSpellInfo(1330)] = { track = AURA_TYPE_DEBUFF, duration = 3, priority = 15, spellID = 1330, }, -- Cloak of Shadows [GetSpellInfo(31224)] = { track = AURA_TYPE_BUFF, duration = 5, priority = 20, spellID = 31224, }, -- Evasion [GetSpellInfo(26669)] = { track = AURA_TYPE_BUFF, duration = 15, priority = 10, spellID = 26669, }, -- Riposte [GetSpellInfo(14251)] = { track = AURA_TYPE_DEBUFF, duration = 6, priority = 20, spellID = 14251, }, -- Fear [GetSpellInfo(5782)] = { track = AURA_TYPE_DEBUFF, duration = 10, priority = 40, onDamage = true, fear = true, magic = true, spellID = 5782, }, -- Death Coil [GetSpellInfo(27223)] = { track = AURA_TYPE_DEBUFF, duration = 3, priority = 40, spellID = 27223, }, --Banish [GetSpellInfo(710)] = { track = AURA_TYPE_DEBUFF, duration = 10, priority = 40, spellID = 710, }, -- Shadowfury [GetSpellInfo(30283)] = { track = AURA_TYPE_DEBUFF, duration = 2, priority = 40, magic = true, spellID = 30283, }, -- Seduction (Succubus) [GetSpellInfo(6358)] = { track = AURA_TYPE_DEBUFF, duration = 10, priority = 40, onDamage = true, fear = true, magic = true, spellID = 6358, }, -- Howl of Terror [GetSpellInfo(5484)] = { track = AURA_TYPE_DEBUFF, duration = 8, priority = 40, onDamage = true, fear = true, magic = true, spellID = 5484, texture = select(3, GetSpellInfo(5484)) }, -- Spell Lock (Felhunter) [GetSpellInfo(24259)] = { track = AURA_TYPE_DEBUFF, duration = 3, priority = 15, magic = true, spellID = 24259, }, -- Unstable Affliction Silence ["Unstable Affliction Silence"] = { -- GetSpellInfo returns "Unstable Affliction" track = AURA_TYPE_DEBUFF, altName = select(1, GetSpellInfo(31117)) .. " Silence", duration = 5, priority = 15, magic = true, spellID = 31117, }, -- Intimidating Shout [GetSpellInfo(5246)] = { track = AURA_TYPE_DEBUFF, duration = 8, priority = 15, onDamage = true, fear = true, spellID = 5246, }, -- Concussion Blow [GetSpellInfo(12809)] = { track = AURA_TYPE_DEBUFF, duration = 5, priority = 40, spellID = 12809, }, -- Intercept Stun [GetSpellInfo(25274)] = { track = AURA_TYPE_DEBUFF, duration = 3, priority = 40, spellID = 25274, texture = select(3, GetSpellInfo(25272)) }, -- Charge Stun [GetSpellInfo(7922)] = { track = AURA_TYPE_DEBUFF, duration = 1, priority = 40, spellID = 7922, texture = select(3, GetSpellInfo(100)) }, -- Spell Reflection [GetSpellInfo(23920)] = { track = AURA_TYPE_BUFF, duration = 5, priority = 50, spellID = 23920, }, -- Shield Bash - Silenced [GetSpellInfo(18498)] = { track = AURA_TYPE_DEBUFF, duration = 3, priority = 15, spellSchool = "magic", spellID = 18498, }, -- Death Wish [GetSpellInfo(12292)] = { track = AURA_TYPE_BUFF, duration = 3, priority = 15, spellSchool = "magic", spellID = 12292, }, --Disarm [GetSpellInfo(676)] = { track = AURA_TYPE_DEBUFF, duration = 10, priority = 20, spellID = 676, }, -- Grounding Totem Effect [GetSpellInfo(8178)] = { track = AURA_TYPE_BUFF, duration = 0, priority = 20, spellID = 8178 }, --Intervene [GetSpellInfo(3411)] = { track = AURA_TYPE_BUFF, duration = 10, priority = 10, spellSchool = "physical", spellID = 3411, }, --Improved Hamstring [GetSpellInfo(23694)] = { track = AURA_TYPE_DEBUFF, duration = 5, priority = 40, spellSchool = "physical", spellID = 23694, }, -- Mace Stun Effect [GetSpellInfo(5530)] = { track = AURA_TYPE_DEBUFF, duration = 3, priority = 40, spellSchool = "physical", texture = select(3, GetSpellInfo(12284)), spellID = 5530, }, -- Storm Herald Stun effect [GetSpellInfo(34510)] = { track = AURA_TYPE_DEBUFF, duration = 4, priority = 40, spellSchool = "physical", spellID = 34510, }, -- War Stomp [GetSpellInfo(20549)] = { track = AURA_TYPE_DEBUFF, duration = 2, priority = 40, spellID = 20549, }, -- Arcane Torrent [GetSpellInfo(28730)] = { track = AURA_TYPE_DEBUFF, duration = 2, priority = 15, magic = true, spellID = 28730, }, -- Shadowsight Buff [GetSpellInfo(34709)] = { track = AURA_TYPE_BUFF, duration = 15, priority = 15, magic = true, spellID = 34709, }, -- Net-o-Matic [GetSpellInfo(13120)] = { track = AURA_TYPE_DEBUFF, duration = 10, priority = 30, spellID = 13120, }, -- Nigh Invulnerability Shield [GetSpellInfo(30458)] = { track = AURA_TYPE_BUFF, duration = 8, priority = 15, spellID = 30458, texture = select(10, GetItemInfo(23825)) }, -- Nigh Invulnerability Belt Backfire [GetSpellInfo(30457)] = { track = AURA_TYPE_DEBUFF, duration = 8, priority = 15, spellID = 30457, }, -- Flee (Skull of impending Doom) -- 5024 [GetSpellInfo(5024)] = { track = AURA_TYPE_BUFF, duration = 8, priority = 15, spellID = 5024, altName = select(1, GetSpellInfo(5024)) .. " - " .. (select(1, GetItemInfo(4984)) or "Skull of Impending Doom"), }, -- Will of the Forsaken [GetSpellInfo(7744)] = { track = AURA_TYPE_BUFF, duration = 5, priority = 15, spellID = 7744, }, } function Gladdy:GetImportantAuras() return importantAuras end local interrupts = { [GetSpellInfo(19675)] = {duration = 4, spellID = 19675, track = AURA_TYPE_DEBUFF, texture = select(3, GetSpellInfo(19675)), priority = 15}, -- Feral Charge Effect (Druid) [GetSpellInfo(2139)] = {duration = 8, spellID = 2139, track = AURA_TYPE_DEBUFF, texture = select(3, GetSpellInfo(2139)), priority = 15}, -- Counterspell (Mage) [GetSpellInfo(1766)] = {duration = 5, spellID = 1766, track = AURA_TYPE_DEBUFF, texture = select(3, GetSpellInfo(1766)), priority = 15}, -- Kick (Rogue) [GetSpellInfo(6552)] = {duration = 4, spellID = 6552, track = AURA_TYPE_DEBUFF, texture = select(3, GetSpellInfo(6552)), priority = 15}, -- Pummel (Warrior) [GetSpellInfo(72)] = {duration = 6, spellID = 72, track = AURA_TYPE_DEBUFF, texture = select(3, GetSpellInfo(72)), priority = 15}, -- Shield Bash (Warrior) [GetSpellInfo(8042)] = {duration = 2, spellID = 8042, track = AURA_TYPE_DEBUFF, texture = select(3, GetSpellInfo(8042)), priority = 15}, -- Earth Shock (Shaman) [GetSpellInfo(19244)] = {duration = 5, spellID = 19244, track = AURA_TYPE_DEBUFF, texture = select(3, GetSpellInfo(19244)), priority = 15}, -- Spell Lock (Warlock [GetSpellInfo(32747)] = {duration = 3, spellID = 32747, track = AURA_TYPE_DEBUFF, texture = select(3, GetSpellInfo(32747)), priority = 15}, -- Deadly Throw Interrupt } function Gladdy:GetInterrupts() return interrupts end local auraTypeColor = {} auraTypeColor["none"] = { r = 0.80, g = 0, b = 0 , a = 1} auraTypeColor["magic"] = { r = 0.20, g = 0.60, b = 1.00, a = 1} auraTypeColor["curse"] = { r = 0.60, g = 0.00, b = 1.00, a = 1 } auraTypeColor["disease"] = { r = 0.60, g = 0.40, b = 0, a = 1 } auraTypeColor["poison"] = { r = 0.00, g = 0.60, b = 0, a = 1 } auraTypeColor["immune"] = { r = 1.00, g = 0.02, b = 0.99, a = 1 } auraTypeColor["form"] = auraTypeColor["none"] auraTypeColor["aura"] = auraTypeColor["none"] auraTypeColor[""] = auraTypeColor["none"] function Gladdy:GetAuraTypeColor() return auraTypeColor end local spellSchoolColors = {} spellSchoolColors[1] = {r = 1, g = 1, b = 0, a = 1, type = "Physical"} --- "physical" 255, 255, 0 spellSchoolColors[2] = {r = 1, g = 0.901, b = 0.501, a = 1, type = "Holy"} ---"holy" -- 255, 230, 128 spellSchoolColors[4] = {r = 1, g = 0.501, b = 0, a = 1, type = "Fire"} ---"fire" -- 255, 128, 0 spellSchoolColors[8] = {r = 0.302, g = 1, b = 0.302, a = 1, type = "Nature"} ---"nature" -- 77, 255, 77 spellSchoolColors[16] = {r = 0.501, g = 1, b = 1, a = 1, type = "Frost"} ---"frost" -- 128, 255, 255 spellSchoolColors[32] = {r = 0.501, g = 0.501, b = 1, a = 1, type = "Shadow"} ---"shadow" --128, 128, 255 spellSchoolColors[64] = {r = 1, g = 0.501, b = 1, a = 1, type = "Arcane"} ---"arcane" -- 255, 128, 255 spellSchoolColors["unknown"] = {r = 0, g = 0, b = 0, a = 1, type = "Unknown"} ---"unknown spell school" function Gladdy:GetSpellSchoolColors() return spellSchoolColors end local cooldownList = { -- Spell Name Cooldown[, Spec] -- Mage ["MAGE"] = { [1953] = 15, -- Blink --[122] = 22, -- Frost Nova [12051] = 480, --Evocation [2139] = 24, -- Counterspell [45438] = { cd = 300, [L["Frost"]] = 240, }, -- Ice Block [12472] = { cd = 180, spec = L["Frost"], }, -- Icy Veins [31687] = { cd = 180, spec = L["Frost"], }, -- Summon Water Elemental [12043] = { cd = 180, spec = L["Arcane"], }, -- Presence of Mind [11129] = { cd = 180, spec = L["Fire"] }, -- Combustion [120] = { cd = 10, sharedCD = { [31661] = true, -- Cone of Cold }, spec = L["Fire"] }, -- Dragon's Breath [31661] = { cd = 20, sharedCD = { [120] = true, -- Cone of Cold }, spec = L["Fire"] }, -- Dragon's Breath [12042] = { cd = 180, spec = L["Arcane"], }, -- Arcane Power [11958] = { cd = 384, spec = L["Frost"], -- Coldsnap resetCD = { [12472] = true, [45438] = true, [31687] = true, }, }, }, -- Priest ["PRIEST"] = { [10890] = { cd = 27, [L["Shadow"]] = 23, }, -- Psychic Scream [15487] = { cd = 45, spec = L["Shadow"], }, -- Silence [10060] = { cd = 180, spec = L["Discipline"], }, -- Power Infusion [33206] = { cd = 120, spec = L["Discipline"], }, -- Pain Suppression [34433] = 300, -- Shadowfiend [32379] = 12, -- Shadow Word: Death [6346] = 180, -- Fear Ward }, -- Druid ["DRUID"] = { [22812] = 60, -- Barkskin [29166] = 360, -- Innervate [8983] = 60, -- Bash [16689] = 60, -- Natures Grasp [18562] = { cd = 15, spec = L["Restoration"], }, -- Swiftmend [17116] = { cd = 180, spec = L["Restoration"], }, -- Natures Swiftness [33831] = { cd = 180, spec = L["Balance"], }, -- Force of Nature }, -- Shaman ["SHAMAN"] = { [8042] = { cd = 6, -- Earth Shock sharedCD = { [8056] = true, -- Frost Shock [8050] = true, -- Flame Shock }, }, [30823] = { cd = 120, spec = L["Enhancement"], }, -- Shamanistic Rage [16166] = { cd = 180, spec = L["Elemental"], }, -- Elemental Mastery [16188] = { cd = 180, spec = L["Restoration"], }, -- Natures Swiftness [16190] = { cd = 300, spec = L["Restoration"], }, -- Mana Tide Totem [8177] = 15, -- Grounding Totem }, -- Paladin ["PALADIN"] = { [10278] = 180, -- Blessing of Protection [1044] = 25, -- Blessing of Freedom [10308] = { cd = 60, [L["Retribution"]] = 40, }, -- Hammer of Justice [642] = { cd = 300, -- Divine Shield sharedCD = { cd = 60, -- no actual shared CD but debuff [31884] = true, }, }, [31884] = { cd = 180, spec = L["Retribution"], -- Avenging Wrath sharedCD = { cd = 60, [642] = true, }, }, [20066] = { cd = 60, spec = L["Retribution"], }, -- Repentance [31842] = { cd = 180, spec = L["Holy"], }, -- Divine Illumination [31935] = { cd = 30, spec = L["Protection"], }, -- Avengers Shield }, -- Warlock ["WARLOCK"] = { [17928] = 40, -- Howl of Terror [27223] = 120, -- Death Coil [19647] = 24, -- Spell Lock [27277] = 8, -- Devour Magic [30414] = { cd = 20, spec = L["Destruction"], }, -- Shadowfury [17877] = { cd = 15, spec = L["Destruction"], }, -- Shadowburn [30912] = { cd = 10, spec = L["Destruction"], }, -- Conflagrate [18708] = { cd = 900, spec = L["Demonology"], }, -- Feldom }, -- Warrior ["WARRIOR"] = { [6552] = { cd = 10, -- Pummel sharedCD = { [72] = true, }, }, --[[72] = { cd = 12, -- Shield Bash sharedCD = { [6552] = true, }, }, ]] --[23920] = 10, -- Spell Reflection [3411] = 30, -- Intervene [676] = 60, -- Disarm [5246] = 180, -- Intimidating Shout [18499] = 30, -- Berserker Rage --[2565] = 60, -- Shield Block [12292] = { cd = 180, spec = L["Arms"], }, -- Death Wish [20252] = { cd = 30, [L["Arms"]] = 20 }, -- Intercept [12975] = { cd = 180, spec = L["Protection"], }, -- Last Stand [12809] = { cd = 30, spec = L["Protection"], }, -- Concussion Blow }, -- Hunter ["HUNTER"] = { [19503] = 30, -- Scatter Shot [14327] = 30, -- Scare Beast [19263] = 300, -- Deterrence; not on BM but can't do 2 specs [13809] = { cd = 30, -- Frost Trap sharedCD = { [14311] = true, -- Freezing Trap [34600] = true, -- Snake Trap }, icon = select(3, GetSpellInfo(14311)), }, [14311] = { cd = 30, -- Freezing Trap sharedCD = { [13809] = true, -- Frost Trap [34600] = true, -- Snake Trap }, icon = select(3, GetSpellInfo(14311)), }, [34600] = { cd = 30, -- Snake Trap sharedCD = { [14311] = true, -- Freezing Trap [13809] = true, -- Frost Trap }, icon = select(3, GetSpellInfo(14311)), }, [34490] = { cd = 20, spec = L["Marksmanship"], }, -- Silencing Shot [19386] = { cd = 60, spec = L["Survival"], }, -- Wyvern Sting [19577] = { cd = 60, spec = L["Beast Mastery"], }, -- Intimidation [38373] = { cd = 120, spec = L["Beast Mastery"], }, -- The Beast Within [5384] = 30, -- Feign Death [3034] = 15, -- Viper Sting [1543] = 20, -- Flare }, -- Rogue ["ROGUE"] = { [1766] = 10, -- Kick [8643] = 20, -- Kidney Shot [31224] = 60, -- Cloak of Shadow [26889] = { cd = 300, [L["Subtlety"]] = 180, }, -- Vanish [2094] = { cd = 180, [L["Subtlety"]] = 90, }, -- Blind [11305] = { cd = 300, [L["Combat"]] = 180, }, -- Sprint [26669] = { cd = 300, [L["Combat"]] = 180, }, -- Evasion [14177] = { cd = 180, spec = L["Assassination"], }, -- Cold Blood [13750] = { cd = 300, spec = L["Combat"], }, -- Adrenaline Rush [13877] = { cd = 120, spec = L["Combat"], }, -- Blade Flurry [36554] = { cd = 30, spec = L["Subtlety"], }, -- Shadowstep [14185] = { cd = 600, spec = L["Subtlety"], -- Preparation resetCD = { [26669] = true, [11305] = true, [26889] = true, [14177] = true, [36554] = true, }, }, }, ["Scourge"] = { }, ["BloodElf"] = { }, ["Tauren"] = { }, ["Orc"] = { }, ["Troll"] = { }, ["NightElf"] = { [2651] = { cd = 180, spec = L["Discipline"], class = "PRIEST"}, -- Elune's Grace [10797] = { cd = 30, spec = L["Discipline"], class = "PRIEST"}, -- Star Shards }, ["Draenei"] = { [32548] = { cd = 300, spec = L["Discipline"], class = "PRIEST"}, -- Hymn of Hope }, ["Human"] = { [13908] = { cd = 600, spec = L["Discipline"], class = "PRIEST"}, -- Desperate Prayer }, ["Gnome"] = { }, ["Dwarf"] = { [13908] = { cd = 600, spec = L["Discipline"], class = "PRIEST"}, -- Desperate Prayer }, } function Gladdy:GetCooldownList() return cooldownList end local racials = { ["Scourge"] = { [7744] = true, -- Will of the Forsaken duration = 120, spellName = select(1, GetSpellInfo(7744)), texture = select(3, GetSpellInfo(7744)) }, ["BloodElf"] = { [28730] = true, -- Arcane Torrent duration = 120, spellName = select(1, GetSpellInfo(28730)), texture = select(3, GetSpellInfo(28730)) }, ["Tauren"] = { [20549] = true, -- War Stomp duration = 120, spellName = select(1, GetSpellInfo(20549)), texture = select(3, GetSpellInfo(20549)) }, ["Orc"] = { [20572] = true, [33697] = true, [33702] = true, duration = 120, spellName = select(1, GetSpellInfo(20572)), texture = select(3, GetSpellInfo(20572)) }, ["Troll"] = { [20554] = true, [26296] = true, [26297] = true, duration = 180, spellName = select(1, GetSpellInfo(20554)), texture = select(3, GetSpellInfo(20554)) }, ["NightElf"] = { [20580] = true, duration = 10, spellName = select(1, GetSpellInfo(20580)), texture = select(3, GetSpellInfo(20580)) }, ["Draenei"] = { [28880] = true, duration = 180, spellName = select(1, GetSpellInfo(28880)), texture = select(3, GetSpellInfo(28880)) }, ["Human"] = { [20600] = true, -- Perception duration = 180, spellName = select(1, GetSpellInfo(20600)), texture = select(3, GetSpellInfo(20600)) }, ["Gnome"] = { [20589] = true, -- Escape Artist duration = 105, spellName = select(1, GetSpellInfo(20589)), texture = select(3, GetSpellInfo(20589)) }, ["Dwarf"] = { [20594] = true, -- Stoneform duration = 180, spellName = select(1, GetSpellInfo(20594)), texture = select(3, GetSpellInfo(20594)) }, } function Gladdy:Racials() return racials end local arenaTimer = { ["default"] = { [61] = "One minute until the Arena battle begins!", [31] = "Thirty seconds until the Arena battle begins!", [16] = "Fifteen seconds until the Arena battle begins!", [0] = "The Arena battle has begun!", }, ["esES"] = { [61] = "¡Un minuto hasta que dé comienzo la batalla en arena!", [31] = "¡Treinta segundos hasta que comience la batalla en arena!", [16] = "¡Quince segundos hasta que comience la batalla en arena!", [0] = "¡La batalla en arena ha comenzado!", }, ["ptBR"] = { [61] = "Um minuto até a batalha na Arena começar!", [31] = "Trinta segundos até a batalha na Arena começar!", [16] = "Quinze segundos até a batalha na Arena começar!", [0] = "A batalha na Arena começou!", }, ["deDE"] = { [61] = "Noch eine Minute bis der Arenakampf beginnt!", [31] = "Noch dreißig Sekunden bis der Arenakampf beginnt!", [16] = "Noch fünfzehn Sekunden bis der Arenakampf beginnt!", [0] = "Der Arenakampf hat begonnen!", }, ["frFR"] = { [61] = "Le combat d'arène commence dans une minute\194\160!", [31] = "Le combat d'arène commence dans trente secondes\194\160!", [16] = "Le combat d'arène commence dans quinze secondes\194\160!", [0] = "Le combat d'arène commence\194\160!", }, ["ruRU"] = { [61] = "Одна минута до начала боя на арене!", [31] = "Тридцать секунд до начала боя на арене!", [16] = "До начала боя на арене осталось 15 секунд.", [0] = "Бой начался!", }, ["itIT"] = { -- TODO -- Beta has no itIT version available? }, ["koKR"] = { [61] = "투기장 전투 시작 1분 전입니다!", [31] = "투기장 전투 시작 30초 전입니다!", [16] = "투기장 전투 시작 15초 전입니다!", [0] = "투기장 전투가 시작되었습니다!", }, ["zhCN"] = { [61] = "竞技场战斗将在一分钟后开始!", [31] = "竞技场战斗将在三十秒后开始!", [16] = "竞技场战斗将在十五秒后开始!", [0] = "竞技场的战斗开始了!", }, ["zhTW"] = { [61] = "1分鐘後競技場戰鬥開始!", [31] = "30秒後競技場戰鬥開始!", [16] = "15秒後競技場戰鬥開始!", [0] = "競技場戰鬥開始了!", }, } arenaTimer["esMX"] = arenaTimer["esES"] arenaTimer["ptPT"] = arenaTimer["ptBR"] function Gladdy:GetArenaTimer() if arenaTimer[GetLocale()] then return arenaTimer[GetLocale()] else return arenaTimer["default"] end end Gladdy.legacy = { castBarPos = "LEFT", buffsCooldownPos = "TOP", buffsBuffsCooldownPos = "BOTTOM", classIconPos = "LEFT", ciAnchor = "healthBar", ciPos = "TOP", cooldownYPos = "TOP", cooldownXPos = "LEFT", drCooldownPos = "RIGHT", racialAnchor = "trinket", racialPos = "RIGHT", trinketPos = "RIGHT", padding = 1, growUp = false, } Gladdy.newDefaults = { ["bottomMargin"] = 94.99996948242188, ["newLayout"] = true, Pets = { ["petYOffset"] = -81.99993896484375, ["petXOffset"] = 181, }, ClassIcon = { ["classIconXOffset"] = -74.90008544921875, }, Racial = { ["racialXOffset"] = 255.9000244140625, }, Trinket = { ["trinketXOffset"] = 182, }, ["Combat Indicator"] = { ["ciXOffset"] = 79.99993896484375, ["ciYOffset"] = -10.99993896484375, }, Cooldowns = { ["cooldownYOffset"] = 31, }, ["Buffs and Debuffs"] = { ["buffsBuffsXOffset"] = 29, ["buffsBuffsYOffset"] = -82.99993896484375, ["buffsXOffset"] = 29, ["buffsYOffset"] = 62.00006103515625, }, Diminishings = { ["drXOffset"] = 329.7999877929688, ["drYOffset"] = -22.5, }, ["Cast Bar"] = { ["castBarXOffset"] = -235.900146484375, ["castBarYOffset"] = -30.5, }, } Gladdy.frameStrata = { BACKGROUND = L["Background"] .. "(0)", LOW = L["Low"] .. "(1)", MEDIUM = L["Medium"] .. "(2)", HIGH = L["High"] .. "(3)", DIALOG = L["Dialog"] .. "(4)", FULLSCREEN = L["Fullscreen"] .. "(5)", FULLSCREEN_DIALOG = L["Fullscreen Dialog"] .. "(6)", TOOLTIP = L["Tooltip"] .. "(7)", } Gladdy.frameStrataSorting = { [1] = "BACKGROUND", [2] = "LOW", [3] = "MEDIUM", [4] = "HIGH", [5] = "DIALOG", [6] = "FULLSCREEN", [7] = "FULLSCREEN_DIALOG", [8] = "TOOLTIP", } --------------------- -- TOTEM STUFF --------------------- local totemData = { -- Fire [string_lower("Searing Totem")] = {id = 3599,texture = select(3, GetSpellInfo(3599)), color = {r = 0, g = 0, b = 0, a = 1}}, [string_lower("Flametongue Totem")] = {id = 8227,texture = select(3, GetSpellInfo(8227)), color = {r = 0, g = 0, b = 0, a = 1}}, [string_lower("Magma Totem")] = {id = 8190,texture = select(3, GetSpellInfo(8190)), color = {r = 0, g = 0, b = 0, a = 1}, pulse = 2}, [string_lower("Fire Nova Totem")] = {id = 1535,texture = select(3, GetSpellInfo(1535)), color = {r = 0, g = 0, b = 0, a = 1}, pulse = { cd = 4, once = true }}, [string_lower("Totem of Wrath")] = {id = 30706,texture = select(3, GetSpellInfo(30706)), color = {r = 0, g = 0, b = 0, a = 1}}, [string_lower("Fire Elemental Totem")] = {id = 32982,texture = select(3, GetSpellInfo(32982)), color = {r = 0, g = 0, b = 0, a = 1}}, [string_lower("Frost Resistance Totem")] = {id = 8181,texture = select(3, GetSpellInfo(8181)), color = {r = 0, g = 0, b = 0, a = 1}}, -- Water [string_lower("Fire Resistance Totem")] = {id = 8184,texture = select(3, GetSpellInfo(8184)), color = {r = 0, g = 0, b = 0, a = 1}}, [string_lower("Poison Cleansing Totem")] = {id = 8166,texture = select(3, GetSpellInfo(8166)), color = {r = 0, g = 0, b = 0, a = 1}, pulse = 4}, [string_lower("Disease Cleansing Totem")] = {id = 8170,texture = select(3, GetSpellInfo(8170)), color = {r = 0, g = 0, b = 0, a = 1}, pulse = 4}, [string_lower("Healing Stream Totem")] = {id = 5394,texture = select(3, GetSpellInfo(5394)), color = {r = 0, g = 0, b = 0, a = 1}, pulse = 2}, [string_lower("Mana Tide Totem")] = {id = 16190,texture = select(3, GetSpellInfo(16190)), color = {r = 0.078, g = 0.9, b = 0.16, a = 1}}, [string_lower("Mana Spring Totem")] = {id = 5675,texture = select(3, GetSpellInfo(5675)), color = {r = 0, g = 0, b = 0, a = 1}, pulse = 2}, -- Earth [string_lower("Earthbind Totem")] = {id = 2484,texture = select(3, GetSpellInfo(2484)), color = {r = 0.5, g = 0.5, b = 0.5, a = 1}, pulse = 3}, [string_lower("Stoneclaw Totem")] = {id = 5730,texture = select(3, GetSpellInfo(5730)), color = {r = 0, g = 0, b = 0, a = 1}, pulse = 2}, [string_lower("Stoneskin Totem")] = {id = 8071,texture = select(3, GetSpellInfo(8071)), color = {r = 0, g = 0, b = 0, a = 1}}, [string_lower("Strength of Earth Totem")] = {id = 8075,texture = select(3, GetSpellInfo(8075)), color = {r = 0, g = 0, b = 0, a = 1}}, [string_lower("Earth Elemental Totem")] = {id = 33663,texture = select(3, GetSpellInfo(33663)), color = {r = 0, g = 0, b = 0, a = 1}}, [string_lower("Tremor Totem")] = {id = 8143,texture = select(3, GetSpellInfo(8143)), color = {r = 1, g = 0.9, b = 0.1, a = 1}, pulse = 3}, -- Air [string_lower("Grounding Totem")] = {id = 8177,texture = select(3, GetSpellInfo(8177)), color = {r = 0, g = 0.53, b = 0.92, a = 1}}, [string_lower("Grace of Air Totem")] = {id = 8835,texture = select(3, GetSpellInfo(8835)), color = {r = 0, g = 0, b = 0, a = 1}}, [string_lower("Nature Resistance Totem")] = {id = 10595,texture = select(3, GetSpellInfo(10595)), color = {r = 0, g = 0, b = 0, a = 1}}, [string_lower("Windfury Totem")] = {id = 8512,texture = select(3, GetSpellInfo(8512)), color = {r = 0.96, g = 0, b = 0.07, a = 1}}, [string_lower("Sentry Totem")] = {id = 6495, texture = select(3, GetSpellInfo(6495)), color = {r = 0, g = 0, b = 0, a = 1}}, [string_lower("Windwall Totem")] = {id = 15107,texture = select(3, GetSpellInfo(15107)), color = {r = 0, g = 0, b = 0, a = 1}}, [string_lower("Wrath of Air Totem")] = {id = 3738,texture = select(3, GetSpellInfo(3738)), color = {r = 0, g = 0, b = 0, a = 1}}, [string_lower("Tranquil Air Totem")] = {id = 25908,texture = select(3, GetSpellInfo(25908)), color = {r = 0, g = 0, b = 0, a = 1}}, } local totemSpellIdToPulse = { [GetSpellInfo(totemData[string_lower("Earthbind Totem")].id)] = totemData[string_lower("Earthbind Totem")].pulse, [2484] = totemData[string_lower("Earthbind Totem")].pulse, [GetSpellInfo(totemData[string_lower("Tremor Totem")].id)] = totemData[string_lower("Tremor Totem")].pulse, [8143] = totemData[string_lower("Tremor Totem")].pulse, [GetSpellInfo(totemData[string_lower("Poison Cleansing Totem")].id)] = totemData[string_lower("Poison Cleansing Totem")].pulse, [8166] = totemData[string_lower("Poison Cleansing Totem")].pulse, [GetSpellInfo(totemData[string_lower("Disease Cleansing Totem")].id)] = totemData[string_lower("Disease Cleansing Totem")].pulse, [8170] = totemData[string_lower("Disease Cleansing Totem")].pulse, [GetSpellInfo(totemData[string_lower("Fire Nova Totem")].id)] = totemData[string_lower("Fire Nova Totem")].pulse, [1535] = totemData[string_lower("Fire Nova Totem")].pulse, -- Rank 1 [8498] = totemData[string_lower("Fire Nova Totem")].pulse, -- Rank 2 [8499] = totemData[string_lower("Fire Nova Totem")].pulse, -- Rank 3 [11314] = totemData[string_lower("Fire Nova Totem")].pulse, -- Rank 4 [11315] = totemData[string_lower("Fire Nova Totem")].pulse, -- Rank 5 [25546] = totemData[string_lower("Fire Nova Totem")].pulse, -- Rank 6 [25547] = totemData[string_lower("Fire Nova Totem")].pulse, -- Rank 7 [GetSpellInfo(totemData[string_lower("Magma Totem")].id)] = totemData[string_lower("Magma Totem")].pulse, [8190] = totemData[string_lower("Magma Totem")].pulse, -- Rank 1 [10585] = totemData[string_lower("Magma Totem")].pulse, -- Rank 2 [10586] = totemData[string_lower("Magma Totem")].pulse, -- Rank 3 [10587] = totemData[string_lower("Magma Totem")].pulse, -- Rank 4 [25552] = totemData[string_lower("Magma Totem")].pulse, -- Rank 5 [GetSpellInfo(totemData[string_lower("Healing Stream Totem")].id)] = totemData[string_lower("Healing Stream Totem")].pulse, [5394] = totemData[string_lower("Healing Stream Totem")].pulse, -- Rank 1 [6375] = totemData[string_lower("Healing Stream Totem")].pulse, -- Rank 2 [6377] = totemData[string_lower("Healing Stream Totem")].pulse, -- Rank 3 [10462] = totemData[string_lower("Healing Stream Totem")].pulse, -- Rank 4 [10463] = totemData[string_lower("Healing Stream Totem")].pulse, -- Rank 5 [25567] = totemData[string_lower("Healing Stream Totem")].pulse, -- Rank 6 [GetSpellInfo(totemData[string_lower("Mana Spring Totem")].id)] = totemData[string_lower("Mana Spring Totem")].pulse, [5675] = totemData[string_lower("Mana Spring Totem")].pulse, -- Rank 1 [10495] = totemData[string_lower("Mana Spring Totem")].pulse, -- Rank 2 [10496] = totemData[string_lower("Mana Spring Totem")].pulse, -- Rank 3 [10497] = totemData[string_lower("Mana Spring Totem")].pulse, -- Rank 4 [25570] = totemData[string_lower("Mana Spring Totem")].pulse, -- Rank 5 [GetSpellInfo(totemData[string_lower("Stoneclaw Totem")].id)] = totemData[string_lower("Stoneclaw Totem")].pulse, [5730] = totemData[string_lower("Stoneclaw Totem")].pulse, -- Rank 1 [6390] = totemData[string_lower("Stoneclaw Totem")].pulse, -- Rank 2 [6391] = totemData[string_lower("Stoneclaw Totem")].pulse, -- Rank 3 [6392] = totemData[string_lower("Stoneclaw Totem")].pulse, -- Rank 4 [10427] = totemData[string_lower("Stoneclaw Totem")].pulse, -- Rank 5 [10428] = totemData[string_lower("Stoneclaw Totem")].pulse, -- Rank 6 [25525] = totemData[string_lower("Stoneclaw Totem")].pulse, -- Rank 7 } local totemNpcIdsToTotemData = { --fire [2523] = totemData[string_lower("Searing Totem")], [3902] = totemData[string_lower("Searing Totem")], [3903] = totemData[string_lower("Searing Totem")], [3904] = totemData[string_lower("Searing Totem")], [7400] = totemData[string_lower("Searing Totem")], [7402] = totemData[string_lower("Searing Totem")], [15480] = totemData[string_lower("Searing Totem")], [31162] = totemData[string_lower("Searing Totem")], [31164] = totemData[string_lower("Searing Totem")], [31165] = totemData[string_lower("Searing Totem")], [21995] = totemData[string_lower("Searing Totem")], [22209] = totemData[string_lower("Searing Totem")], [22895] = totemData[string_lower("Searing Totem")], [22896] = totemData[string_lower("Searing Totem")], [34687] = totemData[string_lower("Searing Totem")], [36532] = totemData[string_lower("Searing Totem")], [43423] = totemData[string_lower("Searing Totem")], [67380] = totemData[string_lower("Searing Totem")], [73477] = totemData[string_lower("Searing Totem")], [79238] = totemData[string_lower("Searing Totem")], [22896] = totemData[string_lower("Searing Totem")], [84519] = totemData[string_lower("Searing Totem")], [110730] = totemData[string_lower("Searing Totem")], [132178] = totemData[string_lower("Searing Totem")], [5950] = totemData[string_lower("Flametongue Totem")], [6012] = totemData[string_lower("Flametongue Totem")], [7423] = totemData[string_lower("Flametongue Totem")], [10557] = totemData[string_lower("Flametongue Totem")], [15485] = totemData[string_lower("Flametongue Totem")], [31132] = totemData[string_lower("Flametongue Totem")], [31133] = totemData[string_lower("Flametongue Totem")], [31158] = totemData[string_lower("Flametongue Totem")], [42605] = totemData[string_lower("Flametongue Totem")], [5929] = totemData[string_lower("Magma Totem")], [7464] = totemData[string_lower("Magma Totem")], [7465] = totemData[string_lower("Magma Totem")], [7466] = totemData[string_lower("Magma Totem")], [15484] = totemData[string_lower("Magma Totem")], [31166] = totemData[string_lower("Magma Totem")], [31167] = totemData[string_lower("Magma Totem")], [32887] = totemData[string_lower("Magma Totem")], [42211] = totemData[string_lower("Magma Totem")], [71335] = totemData[string_lower("Magma Totem")], [71925] = totemData[string_lower("Magma Totem")], [73085] = totemData[string_lower("Magma Totem")], [73093] = totemData[string_lower("Magma Totem")], [73268] = totemData[string_lower("Magma Totem")], [88971] = totemData[string_lower("Magma Totem")], [97369] = totemData[string_lower("Magma Totem")], [98676] = totemData[string_lower("Magma Totem")], [5879] = totemData[string_lower("Fire Nova Totem")], [6110] = totemData[string_lower("Fire Nova Totem")], [6111] = totemData[string_lower("Fire Nova Totem")], [7844] = totemData[string_lower("Fire Nova Totem")], [7845] = totemData[string_lower("Fire Nova Totem")], [14662] = totemData[string_lower("Fire Nova Totem")], [15482] = totemData[string_lower("Fire Nova Totem")], [15483] = totemData[string_lower("Fire Nova Totem")], [24320] = totemData[string_lower("Fire Nova Totem")], [32775] = totemData[string_lower("Fire Nova Totem")], [32776] = totemData[string_lower("Fire Nova Totem")], [17539] = totemData[string_lower("Totem of Wrath")], [22970] = totemData[string_lower("Totem of Wrath")], [22971] = totemData[string_lower("Totem of Wrath")], [30652] = totemData[string_lower("Totem of Wrath")], [30653] = totemData[string_lower("Totem of Wrath")], [30654] = totemData[string_lower("Totem of Wrath")], [15439] = totemData[string_lower("Fire Elemental Totem")], [40830] = totemData[string_lower("Fire Elemental Totem")], [41337] = totemData[string_lower("Fire Elemental Totem")], [41346] = totemData[string_lower("Fire Elemental Totem")], [72301] = totemData[string_lower("Fire Elemental Totem")], [5926] = totemData[string_lower("Frost Resistance Totem")], [7412] = totemData[string_lower("Frost Resistance Totem")], [7413] = totemData[string_lower("Frost Resistance Totem")], [15486] = totemData[string_lower("Frost Resistance Totem")], [31171] = totemData[string_lower("Frost Resistance Totem")], [31172] = totemData[string_lower("Frost Resistance Totem")], -- Water [5927] = totemData[string_lower("Fire Resistance Totem")], [7424] = totemData[string_lower("Fire Resistance Totem")], [7425] = totemData[string_lower("Fire Resistance Totem")], [15487] = totemData[string_lower("Fire Resistance Totem")], [31169] = totemData[string_lower("Fire Resistance Totem")], [31170] = totemData[string_lower("Fire Resistance Totem")], [5923] = totemData[string_lower("Poison Cleansing Totem")], [22487] = totemData[string_lower("Poison Cleansing Totem")], [5924] = totemData[string_lower("Disease Cleansing Totem")], [3527] = totemData[string_lower("Healing Stream Totem")], [3906] = totemData[string_lower("Healing Stream Totem")], [3907] = totemData[string_lower("Healing Stream Totem")], [3908] = totemData[string_lower("Healing Stream Totem")], [3909] = totemData[string_lower("Healing Stream Totem")], [14664] = totemData[string_lower("Healing Stream Totem")], [15488] = totemData[string_lower("Healing Stream Totem")], [18235] = totemData[string_lower("Healing Stream Totem")], [31181] = totemData[string_lower("Healing Stream Totem")], [31182] = totemData[string_lower("Healing Stream Totem")], [31185] = totemData[string_lower("Healing Stream Totem")], [34686] = totemData[string_lower("Healing Stream Totem")], [36542] = totemData[string_lower("Healing Stream Totem")], [37810] = totemData[string_lower("Healing Stream Totem")], [38428] = totemData[string_lower("Healing Stream Totem")], [47077] = totemData[string_lower("Healing Stream Totem")], [72309] = totemData[string_lower("Healing Stream Totem")], [72457] = totemData[string_lower("Healing Stream Totem")], [73890] = totemData[string_lower("Healing Stream Totem")], [74433] = totemData[string_lower("Healing Stream Totem")], [97508] = totemData[string_lower("Healing Stream Totem")], [112567] = totemData[string_lower("Healing Stream Totem")], [120357] = totemData[string_lower("Healing Stream Totem")], [128539] = totemData[string_lower("Healing Stream Totem")], [132049] = totemData[string_lower("Healing Stream Totem")], [10467] = totemData[string_lower("Mana Tide Totem")], [11100] = totemData[string_lower("Mana Tide Totem")], [11101] = totemData[string_lower("Mana Tide Totem")], [17061] = totemData[string_lower("Mana Tide Totem")], [3573] = totemData[string_lower("Mana Spring Totem")], [7414] = totemData[string_lower("Mana Spring Totem")], [7415] = totemData[string_lower("Mana Spring Totem")], [7416] = totemData[string_lower("Mana Spring Totem")], [15304] = totemData[string_lower("Mana Spring Totem")], [15489] = totemData[string_lower("Mana Spring Totem")], [31186] = totemData[string_lower("Mana Spring Totem")], [31189] = totemData[string_lower("Mana Spring Totem")], [31190] = totemData[string_lower("Mana Spring Totem")], -- Earth [2630] = totemData[string_lower("Earthbind Totem")], [22486] = totemData[string_lower("Earthbind Totem")], [40233] = totemData[string_lower("Earthbind Totem")], [74737] = totemData[string_lower("Earthbind Totem")], [79155] = totemData[string_lower("Earthbind Totem")], [3579] = totemData[string_lower("Stoneclaw Totem")], [3911] = totemData[string_lower("Stoneclaw Totem")], [3912] = totemData[string_lower("Stoneclaw Totem")], [3913] = totemData[string_lower("Stoneclaw Totem")], [7398] = totemData[string_lower("Stoneclaw Totem")], [7399] = totemData[string_lower("Stoneclaw Totem")], [14870] = totemData[string_lower("Stoneclaw Totem")], [15478] = totemData[string_lower("Stoneclaw Totem")], [31120] = totemData[string_lower("Stoneclaw Totem")], [31121] = totemData[string_lower("Stoneclaw Totem")], [31122] = totemData[string_lower("Stoneclaw Totem")], [40258] = totemData[string_lower("Stoneclaw Totem")], [102402] = totemData[string_lower("Stoneclaw Totem")], [5873] = totemData[string_lower("Stoneskin Totem")], [5919] = totemData[string_lower("Stoneskin Totem")], [5920] = totemData[string_lower("Stoneskin Totem")], [7366] = totemData[string_lower("Stoneskin Totem")], [7367] = totemData[string_lower("Stoneskin Totem")], [7368] = totemData[string_lower("Stoneskin Totem")], [14663] = totemData[string_lower("Stoneskin Totem")], [15470] = totemData[string_lower("Stoneskin Totem")], [15474] = totemData[string_lower("Stoneskin Totem")], [18177] = totemData[string_lower("Stoneskin Totem")], [21994] = totemData[string_lower("Stoneskin Totem")], [31175] = totemData[string_lower("Stoneskin Totem")], [31176] = totemData[string_lower("Stoneskin Totem")], [36550] = totemData[string_lower("Stoneskin Totem")], [40267] = totemData[string_lower("Stoneskin Totem")], [41967] = totemData[string_lower("Stoneskin Totem")], [5874] = totemData[string_lower("Strength of Earth Totem")], [5921] = totemData[string_lower("Strength of Earth Totem")], [5922] = totemData[string_lower("Strength of Earth Totem")], [7403] = totemData[string_lower("Strength of Earth Totem")], [15464] = totemData[string_lower("Strength of Earth Totem")], [15479] = totemData[string_lower("Strength of Earth Totem")], [21992] = totemData[string_lower("Strength of Earth Totem")], [30647] = totemData[string_lower("Strength of Earth Totem")], [31129] = totemData[string_lower("Strength of Earth Totem")], [40266] = totemData[string_lower("Strength of Earth Totem")], [15430] = totemData[string_lower("Earth Elemental Totem")], [24649] = totemData[string_lower("Earth Elemental Totem")], [39387] = totemData[string_lower("Earth Elemental Totem")], [40247] = totemData[string_lower("Earth Elemental Totem")], [72307] = totemData[string_lower("Earth Elemental Totem")], [5913] = totemData[string_lower("Tremor Totem")], [41938] = totemData[string_lower("Tremor Totem")], [41939] = totemData[string_lower("Tremor Totem")], -- Air [5925] = totemData[string_lower("Grounding Totem")], [128537] = totemData[string_lower("Grounding Totem")], [136251] = totemData[string_lower("Grounding Totem")], [7486] = totemData[string_lower("Grace of Air Totem")], [7487] = totemData[string_lower("Grace of Air Totem")], [15463] = totemData[string_lower("Grace of Air Totem")], [7467] = totemData[string_lower("Nature Resistance Totem")], [7468] = totemData[string_lower("Nature Resistance Totem")], [7469] = totemData[string_lower("Nature Resistance Totem")], [15490] = totemData[string_lower("Nature Resistance Totem")], [31173] = totemData[string_lower("Nature Resistance Totem")], [31174] = totemData[string_lower("Nature Resistance Totem")], [6112] = totemData[string_lower("Windfury Totem")], [7483] = totemData[string_lower("Windfury Totem")], [7484] = totemData[string_lower("Windfury Totem")], [14666] = totemData[string_lower("Windfury Totem")], [15496] = totemData[string_lower("Windfury Totem")], [15497] = totemData[string_lower("Windfury Totem")], [22897] = totemData[string_lower("Windfury Totem")], [41940] = totemData[string_lower("Windfury Totem")], [41941] = totemData[string_lower("Windfury Totem")], [80703] = totemData[string_lower("Windfury Totem")], [105690] = totemData[string_lower("Windfury Totem")], [133684] = totemData[string_lower("Windfury Totem")], [3968] = totemData[string_lower("Sentry Totem")], [28938] = totemData[string_lower("Sentry Totem")], [40187] = totemData[string_lower("Sentry Totem")], [69505] = totemData[string_lower("Sentry Totem")], [70413] = totemData[string_lower("Sentry Totem")], [71145] = totemData[string_lower("Sentry Totem")], [147410] = totemData[string_lower("Sentry Totem")], [9687] = totemData[string_lower("Windwall Totem")], [9688] = totemData[string_lower("Windwall Totem")], [9689] = totemData[string_lower("Windwall Totem")], [15492] = totemData[string_lower("Windwall Totem")], [15447] = totemData[string_lower("Wrath of Air Totem")], [36556] = totemData[string_lower("Wrath of Air Totem")], [15803] = totemData[string_lower("Tranquil Air Totem")], } function Gladdy:GetTotemData() return totemData, totemNpcIdsToTotemData, totemSpellIdToPulse end