From 1b384c5f879ee75ced24910716fd71c53a94a95a Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Fri, 23 Jan 2026 18:25:01 +0100 Subject: [PATCH 1/7] simplify Is* checks --- Modules/Data/Constants.lua | 44 +++++++++++++++++--------------------- Modules/Init.lua | 2 +- 2 files changed, 21 insertions(+), 25 deletions(-) diff --git a/Modules/Data/Constants.lua b/Modules/Data/Constants.lua index a465ef8..ff4f96e 100755 --- a/Modules/Data/Constants.lua +++ b/Modules/Data/Constants.lua @@ -222,15 +222,15 @@ Data.Aura = { [10491] = (ECS.IsWotlk and 5/2 or nil), -- Mana Spring rank 2 [10493] = (ECS.IsWotlk and 5/2 or nil), -- Mana Spring rank 3 [10494] = (ECS.IsWotlk and 5/2 or nil), -- Mana Spring rank 4 - [19742] = ((ECS.IsTBC or ECS.IsWotlk) and 1 or nil), -- Blessing of Wisdom rank 1 - [19850] = ((ECS.IsTBC or ECS.IsWotlk) and 1 or nil), -- Blessing of Wisdom rank 2 - [19852] = ((ECS.IsTBC or ECS.IsWotlk) and 1 or nil), -- Blessing of Wisdom rank 3 - [19853] = ((ECS.IsTBC or ECS.IsWotlk) and 1 or nil), -- Blessing of Wisdom rank 4 - [19854] = ((ECS.IsTBC or ECS.IsWotlk) and 1 or nil), -- Blessing of Wisdom rank 5 - [25290] = ((ECS.IsTBC or ECS.IsWotlk) and 1 or nil), -- Blessing of Wisdom rank 6 + [19742] = (ECS.IsClassic and nil or 1), -- Blessing of Wisdom rank 1 + [19850] = (ECS.IsClassic and nil or 1), -- Blessing of Wisdom rank 2 + [19852] = (ECS.IsClassic and nil or 1), -- Blessing of Wisdom rank 3 + [19853] = (ECS.IsClassic and nil or 1), -- Blessing of Wisdom rank 4 + [19854] = (ECS.IsClassic and nil or 1), -- Blessing of Wisdom rank 5 + [25290] = (ECS.IsClassic and nil or 1), -- Blessing of Wisdom rank 6 [25569] = (ECS.IsWotlk and 5/2 or nil), -- Mana Spring rank 5 - [25894] = ((ECS.IsTBC or ECS.IsWotlk) and 1 or nil), -- Greater Blessing of Wisdom rank 1 - [25918] = ((ECS.IsTBC or ECS.IsWotlk) and 1 or nil), -- Greater Blessing of Wisdom rank 2 + [25894] = (ECS.IsClassic and nil or 1), -- Greater Blessing of Wisdom rank 1 + [25918] = (ECS.IsClassic and nil or 1), -- Greater Blessing of Wisdom rank 2 [27142] = 1, -- Blessing of Wisdom rank 7 [27143] = 1, -- Greater Blessing of Wisdom rank 3 [48935] = 1, -- Blessing of Wisdom rank 8 @@ -243,12 +243,12 @@ Data.Aura = { [58777] = 5/2, -- Mana Spring rank 8 }, PercentageMp5 = { - [12051] = ((ECS.IsTBC or ECS.IsWotlk) and 0.15/2*5 or nil), -- Evocation - [18792] = ((ECS.IsTBC or ECS.IsWotlk) and 0.03/4 or 0.02/4)*5, -- Fel Energy + [12051] = (ECS.IsClassic and nil or 0.15/2*5), -- Evocation + [18792] = (ECS.IsClassic and 0.02/4 or 0.03/4)*5, -- Fel Energy [24355] = 0.02*5, -- Drink [24707] = 0.03*5, -- Food [25990] = 0.05*5, -- Graccu's Mince Meat Fruitcake - [26263] = ((ECS.IsTBC or ECS.IsWotlk) and 0.03 or 0.04)*5, -- Dim Sum + [26263] = (ECS.IsClassic and 0.04 or 0.03)*5, -- Dim Sum [29055] = 0.04*5, -- Refreshing Red Apple [30024] = 0.2*5, -- Drink [30254] = 0.05*5, -- Evocation @@ -321,23 +321,19 @@ Data.Aura = { [462858] = 750, -- Circle of Flame }, PeriodicallyGiveManaTooltip = { - [5677] = (ECS.IsWotlk and nil or 5/2), -- Mana Spring rank 1 - [10491] = (ECS.IsWotlk and nil or 5/2), -- Mana Spring rank 2 - [10493] = (ECS.IsWotlk and nil or 5/2), -- Mana Spring rank 3 - [10494] = (ECS.IsWotlk and nil or 5/2), -- Mana Spring rank 4 - [19742] = ((ECS.IsTBC or ECS.IsWotlk) and nil or 1), -- Blessing of Wisdom rank 1 - [19850] = ((ECS.IsTBC or ECS.IsWotlk) and nil or 1), -- Blessing of Wisdom rank 2 - [19852] = ((ECS.IsTBC or ECS.IsWotlk) and nil or 1), -- Blessing of Wisdom rank 3 - [19853] = ((ECS.IsTBC or ECS.IsWotlk) and nil or 1), -- Blessing of Wisdom rank 4 - [19854] = ((ECS.IsTBC or ECS.IsWotlk) and nil or 1), -- Blessing of Wisdom rank 5 + [19742] = (ECS.IsClassic and 1 or nil), -- Blessing of Wisdom rank 1 + [19850] = (ECS.IsClassic and 1 or nil), -- Blessing of Wisdom rank 2 + [19852] = (ECS.IsClassic and 1 or nil), -- Blessing of Wisdom rank 3 + [19853] = (ECS.IsClassic and 1 or nil), -- Blessing of Wisdom rank 4 + [19854] = (ECS.IsClassic and 1 or nil), -- Blessing of Wisdom rank 5 [24853] = 5/2, -- Mana Spring - [25290] = ((ECS.IsTBC or ECS.IsWotlk) and nil or 1), -- Blessing of Wisdom rank 6 + [25290] = (ECS.IsClassic and 1 or nil), -- Blessing of Wisdom rank 6 [25569] = (ECS.IsWotlk and nil or 5/2), -- Mana Spring rank 5 - [25894] = ((ECS.IsTBC or ECS.IsWotlk) and nil or 1), -- Greater Blessing of Wisdom rank 1 - [25918] = ((ECS.IsTBC or ECS.IsWotlk) and nil or 1), -- Greater Blessing of Wisdom rank 2 + [25894] = (ECS.IsClassic and 1 or nil), -- Greater Blessing of Wisdom rank 1 + [25918] = (ECS.IsClassic and 1 or nil), -- Greater Blessing of Wisdom rank 2 }, SpellCrit = { - [24907] = ((ECS.IsTBC or ECS.IsWotlk) and 5 or nil), -- Moonkin Aura + [24907] = (ECS.IsClassic and nil or 5), -- Moonkin Aura [29177] = 6, -- Elemental Devastation Rank 2 [29178] = 9, -- Elemental Devastation Rank 3 [30165] = 3, -- Elemental Devastation Rank 1 diff --git a/Modules/Init.lua b/Modules/Init.lua index 0b385ba..ddc3794 100644 --- a/Modules/Init.lua +++ b/Modules/Init.lua @@ -98,7 +98,7 @@ function _Init.RegisterEvents(eventFrame) eventFrame:RegisterUnitEvent("UNIT_RANGED_ATTACK_POWER", "player") eventFrame:RegisterUnitEvent("UNIT_RANGEDDAMAGE", "player") eventFrame:RegisterEvent("UPDATE_SHAPESHIFT_FORM") - if ECS.IsTBC or ECS.IsWotlk then + if not ECS.IsClassic then eventFrame:RegisterEvent("SOCKET_INFO_SUCCESS") -- Triggers whenever the player successfully sockets an item GearManagerDialog:HookScript("OnShow", function() From d758410a8eb9ffefd4d5e993bca61bc7f5b98fce Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Sat, 24 Jan 2026 19:56:45 +0100 Subject: [PATCH 2/7] more changes --- Modules/Config/DefenseSection.lua | 8 +-- Modules/Config/MeleeSection.lua | 24 ++----- Modules/Config/RangeSection.lua | 12 +--- Modules/Config/SpellSection.lua | 8 +-- Modules/Data/Data.lua | 88 +++-------------------- Modules/Data/Defense.lua | 2 +- Modules/Data/General.lua | 2 +- Modules/Data/Ranged.lua | 2 +- Modules/Init.lua | 5 +- Modules/Stats.lua | 115 +++++++++++++++++++----------- 10 files changed, 103 insertions(+), 163 deletions(-) diff --git a/Modules/Config/DefenseSection.lua b/Modules/Config/DefenseSection.lua index 2d42f42..191971d 100755 --- a/Modules/Config/DefenseSection.lua +++ b/Modules/Config/DefenseSection.lua @@ -111,9 +111,7 @@ function _Config:LoadDefenseSection() name = function() return i18n("Defense Rating") end, desc = function() return i18n("Shows/Hides the defense rating.") end, width = 1.5, - hidden = function() - return (not ECS.IsWotlk) - end, + hidden = function() return ECS.IsClassic end, disabled = function() return (not ExtendedCharacterStats.profile.defense.display); end, get = function () return ExtendedCharacterStats.profile.defense.defenseRating.display; end, set = function (_, value) @@ -192,9 +190,7 @@ function _Config:LoadDefenseSection() name = function() return i18n("Resilience") end, desc = function() return i18n("Shows/Hides the resilience value.") end, width = 1.5, - hidden = function() - return (not ECS.IsWotlk) - end, + hidden = function() return ECS.IsClassic end, disabled = function() return (not ExtendedCharacterStats.profile.defense.display); end, get = function () return ExtendedCharacterStats.profile.defense.resilience.display; end, set = function (_, value) diff --git a/Modules/Config/MeleeSection.lua b/Modules/Config/MeleeSection.lua index 19c4a90..08665c0 100755 --- a/Modules/Config/MeleeSection.lua +++ b/Modules/Config/MeleeSection.lua @@ -75,9 +75,7 @@ function _Config:LoadMeleeSection() name = function() return i18n("Armor Pen. Rating") end, desc = function() return i18n("Shows/Hides the armor penetration rating value.") end, width = 1.5, - hidden = function() - return (not ECS.IsWotlk) - end, + hidden = function() return ECS.IsClassic end, disabled = function() return (not ExtendedCharacterStats.profile.melee.display); end, get = function () return ExtendedCharacterStats.profile.melee.penetrationRating.display; end, set = function (_, value) @@ -107,9 +105,7 @@ function _Config:LoadMeleeSection() name = function() return i18n("Expertise Rating") end, desc = function() return i18n("Shows/Hides the expertise rating.") end, width = 1.5, - hidden = function() - return (not ECS.IsWotlk) - end, + hidden = function() return ECS.IsClassic end, disabled = function() return (not ExtendedCharacterStats.profile.melee.display); end, get = function () return ExtendedCharacterStats.profile.melee.expertiseRating.display; end, set = function (_, value) @@ -123,9 +119,7 @@ function _Config:LoadMeleeSection() name = function() return i18n("Haste Rating") end, desc = function() return i18n("Shows/Hides the melee haste rating.") end, width = 1.5, - hidden = function() - return (not ECS.IsWotlk) - end, + hidden = function() return ECS.IsClassic end, disabled = function() return (not ExtendedCharacterStats.profile.melee.display); end, get = function () return ExtendedCharacterStats.profile.melee.hasteRating.display; end, set = function (_, value) @@ -174,9 +168,7 @@ function _Config:LoadMeleeSection() name = function() return i18n("Hit Rating") end, desc = function() return i18n("Shows/Hides the melee hit rating.") end, width = 1.5, - hidden = function() - return (not ECS.IsWotlk) - end, + hidden = function() return ECS.IsClassic end, disabled = function() return ((not ExtendedCharacterStats.profile.melee.display) or (not ExtendedCharacterStats.profile.melee.hit.display)) @@ -243,9 +235,7 @@ function _Config:LoadMeleeSection() name = function() return i18n("Glancing Blow") end, desc = function() return i18n("Shows/Hides all glancing blow stats") end, width = 1.5, - hidden = function() - return (not ECS.IsClassic) - end, + hidden = function() return ECS.IsWotlk end, disabled = function() return (not ExtendedCharacterStats.profile.melee.display); end, get = function () return ExtendedCharacterStats.profile.melee.glance.display; end, set = function (_, value) @@ -258,9 +248,7 @@ function _Config:LoadMeleeSection() order = 6, inline = true, name = function() return i18n("Melee Glance Values") end, - hidden = function() - return (not ECS.IsClassic) - end, + hidden = function() return ECS.IsWotlk end, args = { meleeGlance = { type = "toggle", diff --git a/Modules/Config/RangeSection.lua b/Modules/Config/RangeSection.lua index 591e33c..87ed291 100755 --- a/Modules/Config/RangeSection.lua +++ b/Modules/Config/RangeSection.lua @@ -75,9 +75,7 @@ function _Config:LoadRangeSection() name = function() return i18n("Armor Pen. Rating") end, desc = function() return i18n("Shows/Hides the armor penetration rating value.") end, width = 1.5, - hidden = function() - return (not ECS.IsWotlk) - end, + hidden = function() return ECS.IsClassic end, disabled = function() return (not ExtendedCharacterStats.profile.ranged.display); end, get = function () return ExtendedCharacterStats.profile.ranged.penetrationRating.display; end, set = function (_, value) @@ -91,9 +89,7 @@ function _Config:LoadRangeSection() name = function() return i18n("Haste Rating") end, desc = function() return i18n("Shows/Hides the ranged haste rating.") end, width = 1.5, - hidden = function() - return (not ECS.IsWotlk) - end, + hidden = function() return ECS.IsClassic end, disabled = function() return (not ExtendedCharacterStats.profile.ranged.display); end, get = function () return ExtendedCharacterStats.profile.ranged.hasteRating.display; end, set = function (_, value) @@ -155,9 +151,7 @@ function _Config:LoadRangeSection() name = function() return i18n("Hit Rating") end, desc = function() return i18n("Shows/Hides the ranged hit rating.") end, width = 1.5, - hidden = function() - return (not ECS.IsWotlk) - end, + hidden = function() return ECS.IsClassic end, disabled = function() return ((not ExtendedCharacterStats.profile.ranged.display) or (not ExtendedCharacterStats.profile.ranged.hit.display)) diff --git a/Modules/Config/SpellSection.lua b/Modules/Config/SpellSection.lua index d026e2b..c010bfc 100755 --- a/Modules/Config/SpellSection.lua +++ b/Modules/Config/SpellSection.lua @@ -46,9 +46,7 @@ function _Config:LoadSpellSection() name = function() return i18n("Haste Rating") end, desc = function() return i18n("Shows/Hides the spell haste rating value.") end, width = 1.5, - hidden = function() - return (not ECS.IsWotlk) - end, + hidden = function() return ECS.IsClassic end, disabled = function() return (not ExtendedCharacterStats.profile.spell.display); end, get = function () return ExtendedCharacterStats.profile.spell.hasteRating.display; end, set = function (_, value) @@ -97,9 +95,7 @@ function _Config:LoadSpellSection() name = function() return i18n("Hit Rating") end, desc = function() return i18n("Shows/Hides the spell hit rating.") end, width = 1.5, - hidden = function() - return (not ECS.IsWotlk) - end, + hidden = function() return ECS.IsClassic end, disabled = function() return ((not ExtendedCharacterStats.profile.spell.display) or (not ExtendedCharacterStats.profile.spell.hit.display)) diff --git a/Modules/Data/Data.lua b/Modules/Data/Data.lua index 7cfb50b..15c8954 100755 --- a/Modules/Data/Data.lua +++ b/Modules/Data/Data.lua @@ -29,13 +29,7 @@ dataFunctionRefs = { return 0 end end, - ["ExpertiseRating"] = function() - if ECS.IsWotlk then - return Data:GetExpertiseRating() - else - return 0 - end - end, + ["ExpertiseRating"] = function() return ECS.IsClassic and 0 or Data:GetExpertiseRating() end, ["MeleeArmorPenetration"] = function() if ECS.IsWotlk then return Data:GetArmorPenetration() @@ -43,20 +37,8 @@ dataFunctionRefs = { return 0 end end, - ["MeleeArmorPenetrationRating"] = function() - if ECS.IsWotlk then - return Data:GetArmorPenetrationRating() - else - return 0 - end - end, - ["MeleeHitRating"] = function() - if ECS.IsWotlk then - return Data:MeleeHitRating() - else - return 0 - end - end, + ["MeleeArmorPenetrationRating"] = function() return ECS.IsClassic and 0 or Data:GetArmorPenetrationRating() end, + ["MeleeHitRating"] = function() return ECS.IsClassic and 0 or Data:MeleeHitRating() end, ["MeleeHitBonus"] = function() return Data:MeleeHitBonus() end, ["MeleeHitSameLevel"] = function() return Data:MeleeHitMissChanceSameLevel() end, ["MeleeHitBossLevel"] = function() return Data:MeleeHitMissChanceBossLevel() end, @@ -67,13 +49,7 @@ dataFunctionRefs = { ["GlanceDamageSameLevel"] = function() return Data:GlanceDamageSameLevel() end, ["GlanceDamageBossLevel"] = function() return Data:GlanceDamageBossLevel() end, - ["MeleeHasteRating"] = function() - if ECS.IsWotlk then - return Data:GetMeleeHasteRating() - else - return 0 - end - end, + ["MeleeHasteRating"] = function() return ECS.IsClassic and 0 or Data:GetMeleeHasteRating() end, ["MeleeHasteBonus"] = function() if ECS.IsWotlk then return Data:GetMeleeHasteBonus() @@ -86,13 +62,7 @@ dataFunctionRefs = { -- Ranged ["RangeAttackpower"] = function() return Data:GetRangeAttackPower() end, ["RangedCritChance"] = function() return Data:RangedCrit() end, - ["RangedHitRating"] = function() - if ECS.IsWotlk then - return Data:RangeHitRating() - else - return 0 - end - end, + ["RangedHitRating"] = function() return ECS.IsClassic and 0 or Data:RangeHitRating() end, ["RangedHitBonus"] = function() return Data:RangeHitBonus() end, ["RangedHitSameLevel"] = function() return Data:RangeMissChanceSameLevel() end, ["RangedArmorPenetration"] = function() @@ -102,21 +72,9 @@ dataFunctionRefs = { return 0 end end, - ["RangedArmorPenetrationRating"] = function() - if ECS.IsWotlk then - return Data:GetArmorPenetrationRating() - else - return 0 - end - end, + ["RangedArmorPenetrationRating"] = function() return ECS.IsClassic and 0 or Data:GetArmorPenetrationRating() end, ["RangedHitBossLevel"] = function() return Data.RangeMissChanceBossLevel() end, - ["RangedHasteRating"] = function() - if ECS.IsWotlk then - return Data:GetRangedHasteRating() - else - return 0 - end - end, + ["RangedHasteRating"] = function() return ECS.IsClassic and 0 or Data:GetRangedHasteRating() end, ["RangedHasteBonus"] = function() if ECS.IsWotlk then return Data:GetRangedHasteBonus() @@ -132,44 +90,20 @@ dataFunctionRefs = { ["SpellCritReduction"] = function() return Data:GetSpellCritReduction() end, ["Avoidance"] = function() return Data:GetAvoidance(playerLevel) end, ["AvoidanceBoss"] = function() return Data:GetAvoidance(enemyLevel) end, - ["DefenseRating"] = function() - if ECS.IsWotlk then - return Data:GetDefenseRating() - else - return 0 - end - end, + ["DefenseRating"] = function() return ECS.IsClassic and 0 or Data:GetDefenseRating() end, ["DefenseValue"] = function() return Data:GetDefenseValue() end, ["DodgeChance"] = function() return Data:GetDodgeChance() end, ["ParryChance"] = function() return Data:GetParryChance() end, ["BlockChance"] = function() return Data:GetBlockChance() end, ["BlockValue"] = function() return Data:GetBlockValue() end, - ["ResilienceValue"] = function() - if ECS.IsWotlk then - return Data:GetResilienceRating() - else - return 0 - end - end, + ["ResilienceValue"] = function() return ECS.IsClassic and 0 or Data:GetResilienceRating() end, -- Spell - ["SpellHitRating"] = function() - if ECS.IsWotlk then - return Data:SpellHitRating() - else - return 0 - end - end, + ["SpellHitRating"] = function() return ECS.IsClassic and 0 or Data:SpellHitRating() end, ["SpellHitBonus"] = function() return Data.SpellHitBonus(Data.HOLY_SCHOOL) end, ["SpellHitSameLevel"] = function() return Data:SpellMissChanceSameLevel(Data.HOLY_SCHOOL) end, ["SpellHitBossLevel"] = function() return Data:SpellMissChanceBossLevel(Data.HOLY_SCHOOL) end, ["SpellCritChance"] = function() return Data:GetSpellCrit(Data.HOLY_SCHOOL) end, - ["SpellHasteRating"] = function() - if ECS.IsWotlk then - return Data:GetSpellHasteRating() - else - return 0 - end - end, + ["SpellHasteRating"] = function() return ECS.IsClassic and 0 or Data:GetSpellHasteRating() end, ["SpellHasteBonus"] = function() if ECS.IsWotlk then return Data:GetSpellHasteBonus() diff --git a/Modules/Data/Defense.lua b/Modules/Data/Defense.lua index e928681..4197a3f 100755 --- a/Modules/Data/Defense.lua +++ b/Modules/Data/Defense.lua @@ -83,7 +83,7 @@ function _Defense:GetCritReduction() rangedCritReduction = rangedCritReduction + 1 end elseif classId == Data.WARLOCK then - if ECS.IsTBC or ECS.IsWotlk then + if (not ECS.IsClassic) then if IsPlayerSpell(30321) then -- Demonic Resilience 3/3 meleeCritReduction = meleeCritReduction + 3 spellCritReduction = spellCritReduction + 3 diff --git a/Modules/Data/General.lua b/Modules/Data/General.lua index 3239565..d8c8f7e 100644 --- a/Modules/Data/General.lua +++ b/Modules/Data/General.lua @@ -10,7 +10,7 @@ function Data:GetMovementSpeed() local currentSpeed - if ECS.IsWotlk and IsFlying() then + if (not ECS.IsClassic) and IsFlying() then currentSpeed = flightSpeed elseif IsSwimming() then currentSpeed = swimSpeed diff --git a/Modules/Data/Ranged.lua b/Modules/Data/Ranged.lua index 4c5562f..c57bd7f 100755 --- a/Modules/Data/Ranged.lua +++ b/Modules/Data/Ranged.lua @@ -62,7 +62,7 @@ function _Ranged:GetHitBonus() local hitValue = 0 -- Biznick Scope awards Hit rating in TBC and is part of CR_HIT_RANGED - if (not ECS.IsWotlk) then + if ECS.IsClassic then local rangedEnchant = DataUtils:GetEnchantForEquipSlot(Utils.CHAR_EQUIP_SLOTS["Range"]) if rangedEnchant and rangedEnchant == Data.Enchant.Ids.BIZNICK_SCOPE then hitValue = hitValue + 3 diff --git a/Modules/Init.lua b/Modules/Init.lua index ddc3794..0291e4e 100644 --- a/Modules/Init.lua +++ b/Modules/Init.lua @@ -98,9 +98,10 @@ function _Init.RegisterEvents(eventFrame) eventFrame:RegisterUnitEvent("UNIT_RANGED_ATTACK_POWER", "player") eventFrame:RegisterUnitEvent("UNIT_RANGEDDAMAGE", "player") eventFrame:RegisterEvent("UPDATE_SHAPESHIFT_FORM") - if not ECS.IsClassic then + if not ECS.IsClassic then eventFrame:RegisterEvent("SOCKET_INFO_SUCCESS") -- Triggers whenever the player successfully sockets an item - + end + if ECS.IsWotlk then GearManagerDialog:HookScript("OnShow", function() Stats:HideWindow() end) diff --git a/Modules/Stats.lua b/Modules/Stats.lua index e10820a..2153d08 100755 --- a/Modules/Stats.lua +++ b/Modules/Stats.lua @@ -176,7 +176,7 @@ end --- Helper function to iterate all field of a given category and create them if they should be displayed ---@param category Category|SubCategory _CreateStatInfo = function(category, ...) - if (not ECS.IsWotlk) and category.isTbcOnly then + if ECS.IsClassic and category.isTbcOnly then return end @@ -215,17 +215,26 @@ _CreateStatInfos = function() _CreateStatInfo(category, category.movementSpeed) category = profile.melee - if ECS.IsWotlk then - _CreateStatInfo(category, category.attackPower, category.crit, category.penetration, category.penetrationRating, category.expertise, - category.expertiseRating, category.hasteRating, category.hasteBonus) - else + if ECS.IsClassic then _CreateStatInfo(category, category.attackPower, category.crit) + else + _CreateStatInfo( + category, + category.attackPower, + category.crit, + category.penetration, + category.penetrationRating, + category.expertise, + category.expertiseRating, + category.hasteRating, + category.hasteBonus + ) end if category.display then category = category.hit _CreateStatInfo(category, category.rating, category.bonus, category.sameLevel, category.bossLevel) - if(ECS.IsClassic) then + if (not ECS.IsWotlk) then category = profile.melee.glance _CreateStatInfo(category, category.sameLevel, category.damageSameLevel, category.bossLevel, category.damageBossLevel) end @@ -235,11 +244,19 @@ _CreateStatInfos = function() end category = profile.ranged - if ECS.IsWotlk then - _CreateStatInfo(category, category.attackPower, category.crit, category.penetration, category.penetrationRating, - category.hasteRating, category.hasteBonus, category.attackSpeed) - else + if ECS.IsClassic then _CreateStatInfo(category, category.attackPower, category.crit, category.attackSpeed) + else + _CreateStatInfo( + category, + category.attackPower, + category.crit, + category.penetration, + category.penetrationRating, + category.hasteRating, + category.hasteBonus, + category.attackSpeed + ) end if category.display then @@ -248,43 +265,28 @@ _CreateStatInfos = function() end category = profile.defense - _CreateStatInfo(category, category.armor, category.meleeCritReduction, category.rangedCritReduction, category.spellCritReduction, category.avoidance, category.avoidanceBoss, - category.defenseRating, category.defense, category.blockChance, category.blockValue, category.parry, category.dodge, category.resilience) + _CreateStatInfo( + category, + category.armor, + category.meleeCritReduction, + category.rangedCritReduction, + category.spellCritReduction, + category.avoidance, + category.avoidanceBoss, + category.defenseRating, + category.defense, + category.blockChance, + category.blockValue, + category.parry, + category.dodge, + category.resilience + ) category = profile.regen _CreateStatInfo(category, category.mp5Items, category.mp5Spirit, category.mp5Buffs, category.mp5Casting, category.mp5NotCasting) category = profile.spell - if ECS.IsWotlk then - _CreateStatInfo(category, category.hasteRating, category.hasteBonus, category.penetration) - - if category.display then - category = category.hit - _CreateStatInfo(category, category.rating, category.bonus, category.sameLevel, category.bossLevel) - end - - category = profile.spellBonus - local spell = profile.spell - local spellCrit = spell.crit - _CreateStatInfo( - category, - category.bonusHealing, - spell.arcane.display and category.arcaneDmg or nil, - spell.arcane.display and spellCrit.arcane or nil, - spell.fire.display and category.fireDmg or nil, - spell.fire.display and spellCrit.fire or nil, - spell.frost.display and category.frostDmg or nil, - spell.frost.display and spellCrit.frost or nil, - spell.holy.display and category.holyDmg or nil, - spell.holy.display and spellCrit.holy or nil, - spell.nature.display and category.natureDmg or nil, - spell.nature.display and spellCrit.nature or nil, - spell.physical.display and category.physicalDmg or nil, - spell.physical.display and spellCrit.physical or nil, - spell.shadow.display and category.shadowDmg or nil, - spell.shadow.display and spellCrit.shadow or nil - ) - else + if ECS.IsClassic then local spellBonus = profile.spellBonus local spell = profile.spell local spellCrit = spell.crit @@ -329,6 +331,35 @@ _CreateStatInfos = function() spell.shadow.display and spellHit.sameLevel.display and spellHit.shadowMissChance or nil, spell.shadow.display and spellHit.bossLevel.display and spellHit.shadowMissChanceBoss or nil ) + else + _CreateStatInfo(category, category.hasteRating, category.hasteBonus, category.penetration) + + if category.display then + category = category.hit + _CreateStatInfo(category, category.rating, category.bonus, category.sameLevel, category.bossLevel) + end + + category = profile.spellBonus + local spell = profile.spell + local spellCrit = spell.crit + _CreateStatInfo( + category, + category.bonusHealing, + spell.arcane.display and category.arcaneDmg or nil, + spell.arcane.display and spellCrit.arcane or nil, + spell.fire.display and category.fireDmg or nil, + spell.fire.display and spellCrit.fire or nil, + spell.frost.display and category.frostDmg or nil, + spell.frost.display and spellCrit.frost or nil, + spell.holy.display and category.holyDmg or nil, + spell.holy.display and spellCrit.holy or nil, + spell.nature.display and category.natureDmg or nil, + spell.nature.display and spellCrit.nature or nil, + spell.physical.display and category.physicalDmg or nil, + spell.physical.display and spellCrit.physical or nil, + spell.shadow.display and category.shadowDmg or nil, + spell.shadow.display and spellCrit.shadow or nil + ) end end From aea329d8396aee882c4659a822cc2fb7b1a88a26 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Sat, 24 Jan 2026 21:16:07 +0100 Subject: [PATCH 3/7] simplify more things --- Modules/Config/MeleeSection.lua | 14 +-- Modules/Config/RangeSection.lua | 6 +- Modules/Config/SpellSection.lua | 4 +- Modules/Stats.lua | 184 +++++++++++++------------------- 4 files changed, 84 insertions(+), 124 deletions(-) diff --git a/Modules/Config/MeleeSection.lua b/Modules/Config/MeleeSection.lua index 08665c0..169cc35 100755 --- a/Modules/Config/MeleeSection.lua +++ b/Modules/Config/MeleeSection.lua @@ -59,9 +59,7 @@ function _Config:LoadMeleeSection() name = function() return i18n("Armor Pen.") end, desc = function() return i18n("Shows/Hides the armor penetration value.") end, width = 1.5, - hidden = function() - return (not ECS.IsWotlk) - end, + hidden = function() return ECS.IsClassic end, disabled = function() return (not ExtendedCharacterStats.profile.melee.display); end, get = function () return ExtendedCharacterStats.profile.melee.penetration.display; end, set = function (_, value) @@ -75,7 +73,7 @@ function _Config:LoadMeleeSection() name = function() return i18n("Armor Pen. Rating") end, desc = function() return i18n("Shows/Hides the armor penetration rating value.") end, width = 1.5, - hidden = function() return ECS.IsClassic end, + hidden = function() return not ECS.IsWotlk end, disabled = function() return (not ExtendedCharacterStats.profile.melee.display); end, get = function () return ExtendedCharacterStats.profile.melee.penetrationRating.display; end, set = function (_, value) @@ -89,9 +87,7 @@ function _Config:LoadMeleeSection() name = function() return i18n("Expertise") end, desc = function() return i18n("Shows/Hides the expertise value.") end, width = 1.5, - hidden = function() - return (not ECS.IsWotlk) - end, + hidden = function() return ECS.IsClassic end, disabled = function() return (not ExtendedCharacterStats.profile.melee.display); end, get = function () return ExtendedCharacterStats.profile.melee.expertise.display; end, set = function (_, value) @@ -133,9 +129,7 @@ function _Config:LoadMeleeSection() name = function() return i18n("Haste Bonus") end, desc = function() return i18n("Shows/Hides the melee haste bonus value.") end, width = 1.5, - hidden = function() - return (not ECS.IsWotlk) - end, + hidden = function() return ECS.IsClassic end, disabled = function() return (not ExtendedCharacterStats.profile.melee.display); end, get = function () return ExtendedCharacterStats.profile.melee.hasteBonus.display; end, set = function (_, value) diff --git a/Modules/Config/RangeSection.lua b/Modules/Config/RangeSection.lua index 87ed291..7c3ce72 100755 --- a/Modules/Config/RangeSection.lua +++ b/Modules/Config/RangeSection.lua @@ -75,7 +75,7 @@ function _Config:LoadRangeSection() name = function() return i18n("Armor Pen. Rating") end, desc = function() return i18n("Shows/Hides the armor penetration rating value.") end, width = 1.5, - hidden = function() return ECS.IsClassic end, + hidden = function() return not ECS.IsWotlk end, disabled = function() return (not ExtendedCharacterStats.profile.ranged.display); end, get = function () return ExtendedCharacterStats.profile.ranged.penetrationRating.display; end, set = function (_, value) @@ -103,9 +103,7 @@ function _Config:LoadRangeSection() name = function() return i18n("Haste Bonus") end, desc = function() return i18n("Shows/Hides the ranged haste bonus value.") end, width = 1.5, - hidden = function() - return (not ECS.IsWotlk) - end, + hidden = function() return ECS.IsClassic end, disabled = function() return (not ExtendedCharacterStats.profile.ranged.display); end, get = function () return ExtendedCharacterStats.profile.ranged.hasteBonus.display; end, set = function (_, value) diff --git a/Modules/Config/SpellSection.lua b/Modules/Config/SpellSection.lua index c010bfc..02292ad 100755 --- a/Modules/Config/SpellSection.lua +++ b/Modules/Config/SpellSection.lua @@ -60,9 +60,7 @@ function _Config:LoadSpellSection() name = function() return i18n("Haste Bonus") end, desc = function() return i18n("Shows/Hides the spell haste bonus value.") end, width = 1.5, - hidden = function() - return (not ECS.IsWotlk) - end, + hidden = function() return ECS.IsClassic end, disabled = function() return (not ExtendedCharacterStats.profile.spell.display); end, get = function () return ExtendedCharacterStats.profile.spell.hasteBonus.display; end, set = function (_, value) diff --git a/Modules/Stats.lua b/Modules/Stats.lua index 2153d08..33ba067 100755 --- a/Modules/Stats.lua +++ b/Modules/Stats.lua @@ -215,21 +215,17 @@ _CreateStatInfos = function() _CreateStatInfo(category, category.movementSpeed) category = profile.melee - if ECS.IsClassic then - _CreateStatInfo(category, category.attackPower, category.crit) - else - _CreateStatInfo( - category, - category.attackPower, - category.crit, - category.penetration, - category.penetrationRating, - category.expertise, - category.expertiseRating, - category.hasteRating, - category.hasteBonus - ) - end + _CreateStatInfo( + category, + category.attackPower, + category.crit, + ECS.IsWotlk and category.penetrationRating or nil, + ECS.IsClassic and nil or category.penetration, + ECS.IsClassic and nil or category.expertiseRating, + ECS.IsClassic and nil or category.expertise, + ECS.IsClassic and nil or category.hasteRating, + ECS.IsClassic and nil or category.hasteBonus + ) if category.display then category = category.hit _CreateStatInfo(category, category.rating, category.bonus, category.sameLevel, category.bossLevel) @@ -244,26 +240,27 @@ _CreateStatInfos = function() end category = profile.ranged - if ECS.IsClassic then - _CreateStatInfo(category, category.attackPower, category.crit, category.attackSpeed) - else + _CreateStatInfo( + category, + category.attackPower, + category.crit, + ECS.IsClassic and nil or category.penetration, + ECS.IsWotlk and category.penetrationRating or nil, + ECS.IsClassic and nil or category.hasteRating, + ECS.IsClassic and nil or category.hasteBonus, + category.attackSpeed + ) + if category.display then + category = category.hit _CreateStatInfo( category, - category.attackPower, - category.crit, - category.penetration, - category.penetrationRating, - category.hasteRating, - category.hasteBonus, - category.attackSpeed + ECS.IsClassic and nil or category.rating, + category.bonus, + category.sameLevel, + category.bossLevel ) end - if category.display then - category = category.hit - _CreateStatInfo(category, category.rating, category.bonus, category.sameLevel, category.bossLevel) - end - category = profile.defense _CreateStatInfo( category, @@ -273,94 +270,67 @@ _CreateStatInfos = function() category.spellCritReduction, category.avoidance, category.avoidanceBoss, - category.defenseRating, + ECS.IsClassic and nil or category.defenseRating, category.defense, category.blockChance, category.blockValue, category.parry, category.dodge, - category.resilience + ECS.IsClassic and nil or category.resilience ) category = profile.regen _CreateStatInfo(category, category.mp5Items, category.mp5Spirit, category.mp5Buffs, category.mp5Casting, category.mp5NotCasting) category = profile.spell - if ECS.IsClassic then - local spellBonus = profile.spellBonus - local spell = profile.spell - local spellCrit = spell.crit - local spellHit = spell.hit - _CreateStatInfo( - category, - category.penetration, - spellBonus.bonusHealing, - spell.arcane.display and spellBonus.arcaneDmg or nil, - spell.arcane.display and spellCrit.display and spellCrit.arcane or nil, - spell.arcane.display and spellHit.bonus.display and spellHit.arcaneHitBonus or nil, - spell.arcane.display and spellHit.sameLevel.display and spellHit.arcaneMissChance or nil, - spell.arcane.display and spellHit.bossLevel.display and spellHit.arcaneMissChanceBoss or nil, - spell.fire.display and spellBonus.fireDmg or nil, - spell.fire.display and spellCrit.display and spellCrit.fire or nil, - spell.fire.display and spellHit.bonus.display and spellHit.fireHitBonus or nil, - spell.fire.display and spellHit.sameLevel.display and spellHit.fireMissChance or nil, - spell.fire.display and spellHit.bossLevel.display and spellHit.fireMissChanceBoss or nil, - spell.frost.display and spellBonus.frostDmg or nil, - spell.frost.display and spellCrit.display and spellCrit.frost or nil, - spell.frost.display and spellHit.bonus.display and spellHit.frostHitBonus or nil, - spell.frost.display and spellHit.sameLevel.display and spellHit.frostMissChance or nil, - spell.frost.display and spellHit.bossLevel.display and spellHit.frostMissChanceBoss or nil, - spell.holy.display and spellBonus.holyDmg or nil, - spell.holy.display and spellCrit.display and spellCrit.holy or nil, - spell.holy.display and spellHit.bonus.display and spellHit.holyHitBonus or nil, - spell.holy.display and spellHit.sameLevel.display and spellHit.holyMissChance or nil, - spell.holy.display and spellHit.bossLevel.display and spellHit.holyMissChanceBoss or nil, - spell.nature.display and spellBonus.natureDmg or nil, - spell.nature.display and spellCrit.display and spellCrit.nature or nil, - spell.nature.display and spellHit.bonus.display and spellHit.natureHitBonus or nil, - spell.nature.display and spellHit.sameLevel.display and spellHit.natureMissChance or nil, - spell.nature.display and spellHit.bossLevel.display and spellHit.natureMissChanceBoss or nil, - spell.physical.display and spellBonus.physicalDmg or nil, - spell.physical.display and spellCrit.display and spellCrit.physical or nil, - spell.physical.display and spellHit.bonus.display and spellHit.physicalHitBonus or nil, - spell.physical.display and spellHit.sameLevel.display and spellHit.physicalMissChance or nil, - spell.physical.display and spellHit.bossLevel.display and spellHit.physicalMissChanceBoss or nil, - spell.shadow.display and spellBonus.shadowDmg or nil, - spell.shadow.display and spellCrit.display and spellCrit.shadow or nil, - spell.shadow.display and spellHit.bonus.display and spellHit.shadowHitBonus or nil, - spell.shadow.display and spellHit.sameLevel.display and spellHit.shadowMissChance or nil, - spell.shadow.display and spellHit.bossLevel.display and spellHit.shadowMissChanceBoss or nil - ) - else - _CreateStatInfo(category, category.hasteRating, category.hasteBonus, category.penetration) - - if category.display then - category = category.hit - _CreateStatInfo(category, category.rating, category.bonus, category.sameLevel, category.bossLevel) - end - - category = profile.spellBonus - local spell = profile.spell - local spellCrit = spell.crit - _CreateStatInfo( - category, - category.bonusHealing, - spell.arcane.display and category.arcaneDmg or nil, - spell.arcane.display and spellCrit.arcane or nil, - spell.fire.display and category.fireDmg or nil, - spell.fire.display and spellCrit.fire or nil, - spell.frost.display and category.frostDmg or nil, - spell.frost.display and spellCrit.frost or nil, - spell.holy.display and category.holyDmg or nil, - spell.holy.display and spellCrit.holy or nil, - spell.nature.display and category.natureDmg or nil, - spell.nature.display and spellCrit.nature or nil, - spell.physical.display and category.physicalDmg or nil, - spell.physical.display and spellCrit.physical or nil, - spell.shadow.display and category.shadowDmg or nil, - spell.shadow.display and spellCrit.shadow or nil - ) - end + local spellBonus = profile.spellBonus + local spell = profile.spell + local spellCrit = spell.crit + local spellHit = spell.hit + _CreateStatInfo( + category, + ECS.IsClassic and nil or category.hasteRating, + ECS.IsClassic and nil or category.hasteBonus, + ECS.IsClassic and nil or category.penetrationRating, + ECS.IsClassic and nil or category.penetration, + spellBonus.bonusHealing, + ECS.IsClassic and nil or spellHit.rating, + spell.arcane.display and spellBonus.arcaneDmg or nil, + spell.arcane.display and spellCrit.display and spellCrit.arcane or nil, + spell.arcane.display and spellHit.bonus.display and spellHit.arcaneHitBonus or nil, + spell.arcane.display and spellHit.sameLevel.display and spellHit.arcaneMissChance or nil, + spell.arcane.display and spellHit.bossLevel.display and spellHit.arcaneMissChanceBoss or nil, + spell.fire.display and spellBonus.fireDmg or nil, + spell.fire.display and spellCrit.display and spellCrit.fire or nil, + spell.fire.display and spellHit.bonus.display and spellHit.fireHitBonus or nil, + spell.fire.display and spellHit.sameLevel.display and spellHit.fireMissChance or nil, + spell.fire.display and spellHit.bossLevel.display and spellHit.fireMissChanceBoss or nil, + spell.frost.display and spellBonus.frostDmg or nil, + spell.frost.display and spellCrit.display and spellCrit.frost or nil, + spell.frost.display and spellHit.bonus.display and spellHit.frostHitBonus or nil, + spell.frost.display and spellHit.sameLevel.display and spellHit.frostMissChance or nil, + spell.frost.display and spellHit.bossLevel.display and spellHit.frostMissChanceBoss or nil, + spell.holy.display and spellBonus.holyDmg or nil, + spell.holy.display and spellCrit.display and spellCrit.holy or nil, + spell.holy.display and spellHit.bonus.display and spellHit.holyHitBonus or nil, + spell.holy.display and spellHit.sameLevel.display and spellHit.holyMissChance or nil, + spell.holy.display and spellHit.bossLevel.display and spellHit.holyMissChanceBoss or nil, + spell.nature.display and spellBonus.natureDmg or nil, + spell.nature.display and spellCrit.display and spellCrit.nature or nil, + spell.nature.display and spellHit.bonus.display and spellHit.natureHitBonus or nil, + spell.nature.display and spellHit.sameLevel.display and spellHit.natureMissChance or nil, + spell.nature.display and spellHit.bossLevel.display and spellHit.natureMissChanceBoss or nil, + spell.physical.display and spellBonus.physicalDmg or nil, + spell.physical.display and spellCrit.display and spellCrit.physical or nil, + spell.physical.display and spellHit.bonus.display and spellHit.physicalHitBonus or nil, + spell.physical.display and spellHit.sameLevel.display and spellHit.physicalMissChance or nil, + spell.physical.display and spellHit.bossLevel.display and spellHit.physicalMissChanceBoss or nil, + spell.shadow.display and spellBonus.shadowDmg or nil, + spell.shadow.display and spellCrit.display and spellCrit.shadow or nil, + spell.shadow.display and spellHit.bonus.display and spellHit.shadowHitBonus or nil, + spell.shadow.display and spellHit.sameLevel.display and spellHit.shadowMissChance or nil, + spell.shadow.display and spellHit.bossLevel.display and spellHit.shadowMissChanceBoss or nil + ) end --- Creates a new header in the stats UI From 0d1d4eae6e6ce8cb3af68378029ba133a51a33cd Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Mon, 26 Jan 2026 19:27:02 +0100 Subject: [PATCH 4/7] fix --- Modules/Data/Defense.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/Data/Defense.lua b/Modules/Data/Defense.lua index 6ea08fd..12b99a5 100755 --- a/Modules/Data/Defense.lua +++ b/Modules/Data/Defense.lua @@ -84,7 +84,7 @@ function _Defense:GetCritReduction() end elseif classId == Data.WARLOCK then if (not ECS.IsClassic) then - if IsPlayerSpell(30321) then -- Demonic Resilience 3/3 + if C_SpellBook.IsSpellKnown(30321) then -- Demonic Resilience 3/3 meleeCritReduction = meleeCritReduction + 3 spellCritReduction = spellCritReduction + 3 elseif C_SpellBook.IsSpellKnown(30320) then -- Demonic Resilience 2/3 From 533cee4fd25c39c233e00f38e09f5d9afc1808bc Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Mon, 26 Jan 2026 20:25:05 +0100 Subject: [PATCH 5/7] fixes for tbc --- Modules/Data/Data.lua | 4 ++-- Modules/Stats.lua | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Modules/Data/Data.lua b/Modules/Data/Data.lua index 15c8954..cd21bcc 100755 --- a/Modules/Data/Data.lua +++ b/Modules/Data/Data.lua @@ -37,7 +37,7 @@ dataFunctionRefs = { return 0 end end, - ["MeleeArmorPenetrationRating"] = function() return ECS.IsClassic and 0 or Data:GetArmorPenetrationRating() end, + ["MeleeArmorPenetrationRating"] = function() return ECS.IsWotlk and Data:GetArmorPenetrationRating() or 0 end, ["MeleeHitRating"] = function() return ECS.IsClassic and 0 or Data:MeleeHitRating() end, ["MeleeHitBonus"] = function() return Data:MeleeHitBonus() end, ["MeleeHitSameLevel"] = function() return Data:MeleeHitMissChanceSameLevel() end, @@ -72,7 +72,7 @@ dataFunctionRefs = { return 0 end end, - ["RangedArmorPenetrationRating"] = function() return ECS.IsClassic and 0 or Data:GetArmorPenetrationRating() end, + ["RangedArmorPenetrationRating"] = function() return ECS.IsWotlk and Data:GetArmorPenetrationRating() or 0 end, ["RangedHitBossLevel"] = function() return Data.RangeMissChanceBossLevel() end, ["RangedHasteRating"] = function() return ECS.IsClassic and 0 or Data:GetRangedHasteRating() end, ["RangedHasteBonus"] = function() diff --git a/Modules/Stats.lua b/Modules/Stats.lua index 33ba067..b3d0e12 100755 --- a/Modules/Stats.lua +++ b/Modules/Stats.lua @@ -185,7 +185,7 @@ _CreateStatInfo = function(category, ...) local stats = {...} -- Loop through all stats for _, stat in pairs(stats) do - if type(stat) == "table" and stat.display and ((not stat.isTbcOnly) or ECS.IsWotlk) then + if type(stat) == "table" and stat.display then _CreateText(stat.refName, _FormatStatsText(stat), category.isSubGroup) end end From 3af1fab3714f59cddf82b7bf659c67f619fad150 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Mon, 26 Jan 2026 20:28:40 +0100 Subject: [PATCH 6/7] reorder --- Modules/Stats.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/Stats.lua b/Modules/Stats.lua index b3d0e12..58a4398 100755 --- a/Modules/Stats.lua +++ b/Modules/Stats.lua @@ -244,8 +244,8 @@ _CreateStatInfos = function() category, category.attackPower, category.crit, - ECS.IsClassic and nil or category.penetration, ECS.IsWotlk and category.penetrationRating or nil, + ECS.IsClassic and nil or category.penetration, ECS.IsClassic and nil or category.hasteRating, ECS.IsClassic and nil or category.hasteBonus, category.attackSpeed From 91211e6a84650292da292972c9a08f8965a69ced Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Wed, 28 Jan 2026 19:09:09 +0100 Subject: [PATCH 7/7] restore deleted part --- Modules/Data/Constants.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Modules/Data/Constants.lua b/Modules/Data/Constants.lua index ff4f96e..f5e23b5 100755 --- a/Modules/Data/Constants.lua +++ b/Modules/Data/Constants.lua @@ -321,6 +321,10 @@ Data.Aura = { [462858] = 750, -- Circle of Flame }, PeriodicallyGiveManaTooltip = { + [5677] = (ECS.IsWotlk and nil or 5/2), -- Mana Spring rank 1 + [10491] = (ECS.IsWotlk and nil or 5/2), -- Mana Spring rank 2 + [10493] = (ECS.IsWotlk and nil or 5/2), -- Mana Spring rank 3 + [10494] = (ECS.IsWotlk and nil or 5/2), -- Mana Spring rank 4 [19742] = (ECS.IsClassic and 1 or nil), -- Blessing of Wisdom rank 1 [19850] = (ECS.IsClassic and 1 or nil), -- Blessing of Wisdom rank 2 [19852] = (ECS.IsClassic and 1 or nil), -- Blessing of Wisdom rank 3