From 13edb34693b9e1c5ce1cc48865774921104d82d0 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Thu, 5 Mar 2026 01:29:54 +0100 Subject: [PATCH 1/3] move talents data to Constants.lua --- Modules/Data/Constants.lua | 58 ++++++++++++++++++++++++++++++++++++++ Modules/Data/Defense.lua | 25 ++++++++-------- Modules/Data/MP5.lua | 17 ++++++----- Modules/Data/Melee.lua | 43 ++++++++++++++-------------- Modules/Data/Ranged.lua | 5 ++-- Modules/Data/SpellCrit.lua | 52 ++++++++++++++++++---------------- Modules/Data/SpellHit.lua | 44 +++++++++++++++++------------ 7 files changed, 161 insertions(+), 83 deletions(-) diff --git a/Modules/Data/Constants.lua b/Modules/Data/Constants.lua index 7f424a18..49666a71 100755 --- a/Modules/Data/Constants.lua +++ b/Modules/Data/Constants.lua @@ -1,3 +1,5 @@ +local IsWotlk = ECS.IsWotlk + ---@class Data local Data = ECSLoader:ImportModule("Data") @@ -802,3 +804,59 @@ Data.setNames = { VESTMENTS_OF_TRANSCENDENCE = "Vestments of Transcendence", WINDHAWK_ARMOR = "Windhawk Armor", } +Data.Talent = { + [Data.DEATHKNIGHT] = { + BLOOD_GORGED = {61274,61275,61276,61277,61278}, + NERVES_OF_COLD_STEEL = {49226,50137,50138}, + VIRULENCE = {48962,49567,49568}, + }, + [Data.DRUID] = { + BALANCE_OF_POWER = {33592,33596}, + INTENSITY_REFLECTION = {17106,17107,17108}, + NATURAL_PERFECTION = {33881,33882,33883}, + SURVIVAL_OF_THE_FITTEST = {33853,33855,33856}, + }, + [Data.HUNTER] = { + FOCUSED_AIM = {53620,53621,53622}, + }, + [Data.MAGE] = { + ARCANE_FOCUS = (IsWotlk and {11222,12839,12840} or {11222,12839,12840,12841,12842}), + ARCANE_INSTABILITY = {15058,15059,15060}, + ARCANE_MEDITATION = {14521,18463,18464}, + CRITICAL_MASS = {11115,11367,11368}, + ELEMENTAL_PRECISION = {29438,29439,29440}, + PYROMANIAC = {34293,34295,34296}, + }, + [Data.PALADIN] = { + CONVICTION = {20117,20118,20119,20120,20121}, + ENLIGHTENED_JUDGEMENTS = {53556,53557}, + SANCTITY_OF_BATTLE = {32043,35396,35397}, + }, + [Data.PRIEST] = { + HOLY_POWER = {5923,5924,5925,5926,25829}, + HOLY_SPECIALIZATION = {14889,15008,15009,15010,15011}, + MEDITATION = {14521,14776,14777}, + SHADOW_FOCUS = {15260,15327,15328}, + SHADOW_RESILIENCE = {14910,33371}, + }, + [Data.ROGUE] = { + PRECISION = {13705,13832,13843,13844,13845}, + SLEIGHT_OF_HAND = {30892,30893}, + }, + [Data.SHAMAN] = { + DUAL_WIELD_SPECIALIZATION = {30816,30818,30819}, + ELEMENTAL_PRECISION = {30672,30673,30674}, + NATURES_GUIDANCE = {16180,16196,16198}, + THUNDERING_STRIKES = {16255,16302,16303,16304,16305}, + }, + [Data.WARLOCK] = { + BACKLASH = {34935,34938,34939}, + DEMONIC_RESILIENCE = {30319,30320,30321}, + DEMONIC_TACTICS = {30242,30245,30246,30247,30248}, + DEVASTATION = {18130,18131,18132,18133,18134}, + SUPPRESSION = {18174,18175,18176}, + }, + [Data.WARRIOR] = { + PRECISION = {29590,29591,29592}, + }, +} diff --git a/Modules/Data/Defense.lua b/Modules/Data/Defense.lua index f9511d57..92d0df69 100755 --- a/Modules/Data/Defense.lua +++ b/Modules/Data/Defense.lua @@ -8,7 +8,10 @@ local Utils = ECSLoader:ImportModule("Utils") local _Defense = {} local _, _, classId = UnitClass("player") - +local DRUID = Data.DRUID +local PRIEST = Data.PRIEST +local ROGUE = Data.ROGUE +local WARLOCK = Data.WARLOCK local MAX_SKILL = (UnitLevel("player")) * 5 -- Every 25 defense reduce the chance to be critically hit by 1 % local DEFENSE_FOR_CRIT_REDUCTION = 25 @@ -62,27 +65,27 @@ function _Defense:GetCritReduction() end local critReducingFromResilience = GetCombatRatingBonus(15) - if classId == Data.DRUID then + if classId == DRUID then local coeff = ECS.IsWotlk and 2 or 1 - meleeCritReduction = meleeCritReduction + coeff * DataUtils:GetActiveTalentSpell({33853,33855,33856}) -- Survival of the Fittest - elseif classId == Data.PRIEST then + meleeCritReduction = meleeCritReduction + coeff * DataUtils:GetActiveTalentSpell(Data.Talent[DRUID].SURVIVAL_OF_THE_FITTEST) + elseif classId == PRIEST then if ECS.IsTBC then - spellCritReduction = spellCritReduction + 2 * DataUtils:GetActiveTalentSpell({14910,33371}) -- shadow resilience + spellCritReduction = spellCritReduction + 2 * DataUtils:GetActiveTalentSpell(Data.Talent[PRIEST].SHADOW_RESILIENCE) end - elseif classId == Data.ROGUE then - local mod = 1 * DataUtils:GetActiveTalentSpell({30892,30893}) -- Sleight of Hand + elseif classId == ROGUE then + local mod = 1 * DataUtils:GetActiveTalentSpell(Data.Talent[ROGUE].SLEIGHT_OF_HAND) meleeCritReduction = meleeCritReduction + mod rangedCritReduction = rangedCritReduction + mod - elseif classId == Data.WARLOCK then + elseif classId == WARLOCK then if not ECS.IsClassic then - local mod = 1 * DataUtils:GetActiveTalentSpell({30319,30320,30321}) -- Demonic Resilience + local mod = 1 * DataUtils:GetActiveTalentSpell(Data.Talent[WARLOCK].DEMONIC_RESILIENCE) meleeCritReduction = meleeCritReduction + mod rangedCritReduction = rangedCritReduction + mod end end if ECS.IsSoD then - if classId == Data.DRUID or classId == Data.ROGUE then + if classId == DRUID or classId == ROGUE then local chestRune = DataUtils.GetRuneForEquipSlot(Utils.CHAR_EQUIP_SLOTS.Chest) if chestRune and (chestRune == 6710 or chestRune == 6972) then meleeCritReduction = meleeCritReduction + 6 -- survival of the fittest / Just a Flesh Wound @@ -123,7 +126,7 @@ function _Defense:GetEnemyMissChance(enemyLevel) local miss if ECS.IsWotlk then local defense = math.floor(GetCombatRatingBonus(CR_DEFENSE_SKILL)); - local enemyMissCoef = classId == Data.DRUID and 0.972 or 0.956; -- 0.972 for bears + local enemyMissCoef = classId == DRUID and 0.972 or 0.956; -- 0.972 for bears local baseMissChance = 5 - (enemyAttackRating - select(1, UnitDefense("player"))) * 0.04; -- vs lvl 80 if defense > 0 then -- avoid possible division by 0 local enemyMissChance = baseMissChance + 1 / (0.0625 + enemyMissCoef / (defense * 0.04)) diff --git a/Modules/Data/MP5.lua b/Modules/Data/MP5.lua index 5ea8de85..0aa3dcfe 100755 --- a/Modules/Data/MP5.lua +++ b/Modules/Data/MP5.lua @@ -8,6 +8,9 @@ local Utils = ECSLoader:ImportModule("Utils") local _MP5 = {} local _, _, classId = UnitClass("player") +local DRUID = Data.DRUID +local MAGE = Data.MAGE +local PRIEST = Data.PRIEST ---@return number function Data:GetValueFromAuraTooltip(index,type) @@ -178,19 +181,19 @@ end function _MP5:GetTalentModifier() local mod = 0 - if classId == Data.PRIEST then + if classId == PRIEST then local coeff = ECS.IsTBC and 0.1 or (ECS.IsWotlk and 0.5/3 or 0.05) - mod = mod + coeff * DataUtils:GetActiveTalentSpell({14521,14776,14777}) -- meditation - elseif classId == Data.MAGE then + mod = mod + coeff * DataUtils:GetActiveTalentSpell(Data.Talent[PRIEST].MEDITATION) + elseif classId == MAGE then local coeff = ECS.IsTBC and 0.1 or (ECS.IsWotlk and 0.5/3 or 0.05) - mod = mod + coeff * DataUtils:GetActiveTalentSpell({14521,18463,18464}) -- arcane meditation + mod = mod + coeff * DataUtils:GetActiveTalentSpell(Data.Talent[MAGE].ARCANE_MEDITATION) if ECS.IsWotlk then - mod = mod + 0.5/3 * DataUtils:GetActiveTalentSpell({34293,34295,34296}) -- pyromaniac + mod = mod + 0.5/3 * DataUtils:GetActiveTalentSpell(Data.Talent[MAGE].PYROMANIAC) end - elseif classId == Data.DRUID then + elseif classId == DRUID then local coeff = ECS.IsTBC and 0.1 or (ECS.IsWotlk and 0.5/3 or 0.05) - mod = mod + coeff * DataUtils:GetActiveTalentSpell({17106,17107,17108}) -- intensity/reflection + mod = mod + coeff * DataUtils:GetActiveTalentSpell(Data.Talent[DRUID].INTENSITY_REFLECTION) end return mod end diff --git a/Modules/Data/Melee.lua b/Modules/Data/Melee.lua index b10071c5..0e30ce65 100755 --- a/Modules/Data/Melee.lua +++ b/Modules/Data/Melee.lua @@ -6,7 +6,14 @@ local DataUtils = ECSLoader:ImportModule("DataUtils") local Utils = ECSLoader:ImportModule("Utils") local _Melee = {} + local _, _, classId = UnitClass("player") +local DEATHKNIGHT = Data.DEATHKNIGHT +local DRUID = Data.DRUID +local HUNTER = Data.HUNTER +local ROGUE = Data.ROGUE +local SHAMAN = Data.SHAMAN +local WARRIOR = Data.WARRIOR ---@return number function Data:GetMeleeAttackPower() @@ -61,36 +68,30 @@ end function _Melee:GetHitTalentBonus() local mod = 0 - if classId == Data.WARRIOR then + if classId == WARRIOR then if ECS.IsWotlk then - -- precision - mod = 1 * DataUtils:GetActiveTalentSpell({29590,29591,29592}) + mod = 1 * DataUtils:GetActiveTalentSpell(Data.Talent[WARRIOR].PRECISION) end - elseif classId == Data.HUNTER then + elseif classId == HUNTER then if ECS.IsWotlk then - -- focused aim - mod = 1 * DataUtils:GetActiveTalentSpell({53620,53621,53622}) + mod = 1 * DataUtils:GetActiveTalentSpell(Data.Talent[HUNTER].FOCUSED_AIM) end - elseif classId == Data.SHAMAN then + elseif classId == SHAMAN then if ECS.IsWotlk then - -- Dual Wield Specialization if Data:GetMeleeAttackSpeedOffHand() > 0 then - mod = 2 * DataUtils:GetActiveTalentSpell({30816,30818,30819}) + mod = 2 * DataUtils:GetActiveTalentSpell(Data.Talent[SHAMAN].DUAL_WIELD_SPECIALIZATION) end elseif ECS.IsClassic then - -- Nature's Guidance - mod = 1 * DataUtils:GetActiveTalentSpell({16180,16196,16198}) + mod = 1 * DataUtils:GetActiveTalentSpell(Data.Talent[SHAMAN].NATURES_GUIDANCE) end - elseif classId == Data.ROGUE then + elseif classId == ROGUE then if ECS.IsClassic then - -- precision - mod = 1 * DataUtils:GetActiveTalentSpell({13705,13832,13843,13844,13845}) + mod = 1 * DataUtils:GetActiveTalentSpell(Data.Talent[ROGUE].PRECISION) end - elseif classId == Data.DEATHKNIGHT then - -- Nerves of Cold Steel + elseif classId == DEATHKNIGHT then -- This assumes a DK is dual wielding and not only using a one-hand main hand weapon if Data:GetMeleeAttackSpeedOffHand() > 0 then - mod = 1 * DataUtils:GetActiveTalentSpell({49226,50137,50138}) + mod = 1 * DataUtils:GetActiveTalentSpell(Data.Talent[DEATHKNIGHT].NERVES_OF_COLD_STEEL) end end @@ -108,7 +109,7 @@ function _Melee.GetHitFromRunes() local finger1Rune = DataUtils.GetRuneForEquipSlot(Utils.CHAR_EQUIP_SLOTS.Finger1) local finger2Rune = DataUtils.GetRuneForEquipSlot(Utils.CHAR_EQUIP_SLOTS.Finger2) - if classId == Data.DRUID and (finger1Rune == 7520 or finger2Rune == 7520) and DataUtils:IsShapeshifted() then + if classId == DRUID and (finger1Rune == 7520 or finger2Rune == 7520) and DataUtils:IsShapeshifted() then mod = mod + 3 -- 3% from Feral Combat Specialization Rune end @@ -231,15 +232,15 @@ end function Data:GetArmorPenetration() local armorPenetration = GetArmorPenetration() - if ECS.IsWotlk and classId == Data.WARRIOR then + if ECS.IsWotlk and classId == WARRIOR then local _, isActive = GetShapeshiftFormInfo(1) if isActive then armorPenetration = armorPenetration + 10 -- 10% from Battle Stance end end - if classId == Data.DEATHKNIGHT then - armorPenetration = armorPenetration + 2 * DataUtils:GetActiveTalentSpell({61274,61275,61276,61277,61278}) -- Blood Gorged + if classId == DEATHKNIGHT then + armorPenetration = armorPenetration + 2 * DataUtils:GetActiveTalentSpell(Data.Talent[DEATHKNIGHT].BLOOD_GORGED) end return DataUtils:Round(armorPenetration, 2) .. "%" diff --git a/Modules/Data/Ranged.lua b/Modules/Data/Ranged.lua index f53af9e1..89367528 100755 --- a/Modules/Data/Ranged.lua +++ b/Modules/Data/Ranged.lua @@ -8,6 +8,7 @@ local DataUtils = ECSLoader:ImportModule("DataUtils") local _Ranged = {} local _, _, classId = UnitClass("player") +local HUNTER = Data.HUNTER ---@return number function Data:GetRangeAttackPower() @@ -89,8 +90,8 @@ end function _Ranged:GetHitTalentBonus() local bonus = 0 - if ECS.IsWotlk and classId == Data.HUNTER then - bonus = bonus + 1 * DataUtils:GetActiveTalentSpell({53620,53621,53622}) -- Focused Aim + if ECS.IsWotlk and classId == HUNTER then + bonus = bonus + 1 * DataUtils:GetActiveTalentSpell(Data.Talent[HUNTER].FOCUSED_AIM) end return bonus diff --git a/Modules/Data/SpellCrit.lua b/Modules/Data/SpellCrit.lua index f787fdce..d36e89cd 100755 --- a/Modules/Data/SpellCrit.lua +++ b/Modules/Data/SpellCrit.lua @@ -6,6 +6,12 @@ local DataUtils = ECSLoader:ImportModule("DataUtils") local _SpellCrit = {} local _, _, classId = UnitClass("player") +local WARLOCK = Data.WARLOCK +local PALADIN = Data.PALADIN +local SHAMAN = Data.SHAMAN +local DRUID = Data.DRUID +local MAGE = Data.MAGE +local PRIEST = Data.PRIEST ---@param school number ---@return string @@ -53,29 +59,29 @@ end function _SpellCrit:GetGeneralTalentModifier() local mod = 0 - if classId == Data.MAGE then + if classId == MAGE then if not ECS.IsClassic then - mod = mod + 1 * DataUtils:GetActiveTalentSpell({15058,15059,15060}) -- Arcane Instability + mod = mod + 1 * DataUtils:GetActiveTalentSpell(Data.Talent[MAGE].ARCANE_INSTABILITY) end - elseif classId == Data.DRUID then + elseif classId == DRUID then if ECS.IsWotlk then - mod = mod + 1 * DataUtils:GetActiveTalentSpell({33881,33882,33883}) -- Natural Perfection + mod = mod + 1 * DataUtils:GetActiveTalentSpell(Data.Talent[DRUID].NATURAL_PERFECTION) end - elseif classId == Data.WARLOCK then + elseif classId == WARLOCK then if ECS.IsWotlk then - mod = mod + 2 * DataUtils:GetActiveTalentSpell({30242,30245,30246,30247,30248}) -- Demonic Tactics - mod = mod + 1 * DataUtils:GetActiveTalentSpell({34935,34938,34939}) -- Backlash + mod = mod + 2 * DataUtils:GetActiveTalentSpell(Data.Talent[WARLOCK].DEMONIC_TACTICS) + mod = mod + 1 * DataUtils:GetActiveTalentSpell(Data.Talent[WARLOCK].BACKLASH) end - mod = mod + 1 * DataUtils:GetActiveTalentSpell({18130,18131,18132,18133,18134}) -- Devastation - elseif classId == Data.SHAMAN then + mod = mod + 1 * DataUtils:GetActiveTalentSpell(Data.Talent[WARLOCK].DEVASTATION) + elseif classId == SHAMAN then if ECS.IsWotlk then - mod = mod + 1 * DataUtils:GetActiveTalentSpell({16255,16302,16303,16304,16305}) -- Thundering Strikes + mod = mod + 1 * DataUtils:GetActiveTalentSpell(Data.Talent[SHAMAN].THUNDERING_STRIKES) end - elseif classId == Data.PALADIN then + elseif classId == PALADIN then if ECS.IsWotlk then - mod = mod + 1 * DataUtils:GetActiveTalentSpell({20117,20118,20119,20120,20121}) -- Conviction - mod = mod + 1 * DataUtils:GetActiveTalentSpell({32043,35396,35397}) -- Sanctity of Battle + mod = mod + 1 * DataUtils:GetActiveTalentSpell(Data.Talent[PALADIN].CONVICTION) + mod = mod + 1 * DataUtils:GetActiveTalentSpell(Data.Talent[PALADIN].SANCTITY_OF_BATTLE) end end @@ -98,12 +104,10 @@ end function _SpellCrit:GetTalentModifierHolyCrit() local mod = 0 - if classId == Data.PRIEST then - -- Holy Specialization - mod = 1 * DataUtils:GetActiveTalentSpell({14889,15008,15009,15010,15011}) - elseif classId == Data.PALADIN then - -- Holy Power - mod = 1 * DataUtils:GetActiveTalentSpell({5923,5924,5925,5926,25829}) + if classId == PRIEST then + mod = 1 * DataUtils:GetActiveTalentSpell(Data.Talent[PRIEST].HOLY_SPECIALIZATION) + elseif classId == PALADIN then + mod = 1 * DataUtils:GetActiveTalentSpell(Data.Talent[PALADIN].HOLY_POWER) end return mod end @@ -112,16 +116,16 @@ end function _SpellCrit:GetTalentModifierFireCrit() local mod = 0 - if classId == Data.MAGE then - mod = mod + 2 * DataUtils:GetActiveTalentSpell({11115,11367,11368}) -- Critical Mass + if classId == MAGE then + mod = mod + 2 * DataUtils:GetActiveTalentSpell(Data.Talent[MAGE].CRITICAL_MASS) if ECS.IsWotlk then - mod = mod + 1 * DataUtils:GetActiveTalentSpell({34293,34295,34296}) -- Pyromaniac + mod = mod + 1 * DataUtils:GetActiveTalentSpell(Data.Talent[MAGE].PYROMANIAC) end - elseif classId == Data.WARLOCK then + elseif classId == WARLOCK then if ECS.IsClassic then -- Devastation (while this increases the crit chance of "Destruction spells" there are no fire spells, which are not destruction spells) - mod = mod + 1 * DataUtils:GetActiveTalentSpell({18130,18131,18132,18133,18134}) + mod = mod + 1 * DataUtils:GetActiveTalentSpell(Data.Talent[WARLOCK].DEVASTATION) end end diff --git a/Modules/Data/SpellHit.lua b/Modules/Data/SpellHit.lua index 084e7d82..dcef46df 100755 --- a/Modules/Data/SpellHit.lua +++ b/Modules/Data/SpellHit.lua @@ -6,7 +6,15 @@ local DataUtils = ECSLoader:ImportModule("DataUtils") local Utils = ECSLoader:ImportModule("Utils") local _SpellHit = {} + local _, _, classId = UnitClass("player") +local DEATHKNIGHT = Data.DEATHKNIGHT +local DRUID = Data.DRUID +local MAGE = Data.MAGE +local PALADIN = Data.PALADIN +local PRIEST = Data.PRIEST +local SHAMAN = Data.SHAMAN +local WARLOCK = Data.WARLOCK ---@param school number ---@param levelDifference number @@ -50,44 +58,44 @@ end function _SpellHit:GetTalentSpellHitBonus(school) local bonus = 0 - if classId == Data.DRUID then - bonus = bonus + 2 * DataUtils:GetActiveTalentSpell({33592,33596}) -- Balance of Power - elseif classId == Data.DEATHKNIGHT then + if classId == DRUID then + bonus = bonus + 2 * DataUtils:GetActiveTalentSpell(Data.Talent[DRUID].BALANCE_OF_POWER) + elseif classId == DEATHKNIGHT then if ECS.IsWotlk then - bonus = bonus + 1 * DataUtils:GetActiveTalentSpell({48962,49567,49568}) -- Virulence + bonus = bonus + 1 * DataUtils:GetActiveTalentSpell(Data.Talent[DEATHKNIGHT].VIRULENCE) end - elseif classId == Data.MAGE then + elseif classId == MAGE then if ECS.IsWotlk then - bonus = bonus + 1 * DataUtils:GetActiveTalentSpell({29438,29439,29440}) -- Elemental Precision - bonus = bonus + 1 * DataUtils:GetActiveTalentSpell({11222,12839,12840}) -- Arcane Focus + bonus = bonus + 1 * DataUtils:GetActiveTalentSpell(Data.Talent[MAGE].ELEMENTAL_PRECISION) + bonus = bonus + 1 * DataUtils:GetActiveTalentSpell(Data.Talent[MAGE].ARCANE_FOCUS) else if (school == Data.FIRE_SCHOOL or school == Data.FROST_SCHOOL) then local coeff = ECS.IsClassic and 2 or 1 - bonus = bonus + coeff * DataUtils:GetActiveTalentSpell({29438,29439,29440}) -- Elemental Precision + bonus = bonus + coeff * DataUtils:GetActiveTalentSpell(Data.Talent[MAGE].ELEMENTAL_PRECISION) elseif school == Data.ARCANE_SCHOOL then - bonus = bonus + 2 * DataUtils:GetActiveTalentSpell({11222,12839,12840,12841,12842}) -- Arcane Focus + bonus = bonus + 2 * DataUtils:GetActiveTalentSpell(Data.Talent[MAGE].ARCANE_FOCUS) end end - elseif classId == Data.PALADIN then + elseif classId == PALADIN then if ECS.IsWotlk then - bonus = bonus + 2 * DataUtils:GetActiveTalentSpell({53556,53557}) -- Enlightened Judgements + bonus = bonus + 2 * DataUtils:GetActiveTalentSpell(Data.Talent[PALADIN].ENLIGHTENED_JUDGEMENTS) end - elseif classId == Data.PRIEST then + elseif classId == PRIEST then if school == Data.SHADOW_SCHOOL then local coeff = ECS.IsWotlk and 1 or 2 - bonus = bonus + coeff * DataUtils:GetActiveTalentSpell({15260,15327,15328}) -- Shadow Focus + bonus = bonus + coeff * DataUtils:GetActiveTalentSpell(Data.Talent[PRIEST].SHADOW_FOCUS) end - elseif classId == Data.SHAMAN then + elseif classId == SHAMAN then if (school == Data.FIRE_SCHOOL or school == Data.FROST_SCHOOL or school == Data.NATURE_SCHOOL) then local coeff = ECS.IsWotlk and 1 or 2 - bonus = bonus + coeff * DataUtils:GetActiveTalentSpell({30672,30673,30674}) -- Elemental Precision + bonus = bonus + coeff * DataUtils:GetActiveTalentSpell(Data.Talent[SHAMAN].ELEMENTAL_PRECISION) end if ECS.IsClassic then - bonus = bonus + 1 * DataUtils:GetActiveTalentSpell({16180,16196,16198}) -- Nature's Guidance + bonus = bonus + 1 * DataUtils:GetActiveTalentSpell(Data.Talent[SHAMAN].NATURES_GUIDANCE) end - elseif classId == Data.WARLOCK then + elseif classId == WARLOCK then if ECS.IsWotlk then - bonus = bonus + 1 * DataUtils:GetActiveTalentSpell({18174,18175,18176}) -- Suppression + bonus = bonus + 1 * DataUtils:GetActiveTalentSpell(Data.Talent[WARLOCK].SUPPRESSION) end end From 3677527172bbdb942df34500ec7241a7115b3429 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Thu, 5 Mar 2026 01:37:06 +0100 Subject: [PATCH 2/3] remove unused --- Modules/Data/Constants.lua | 8 -------- Modules/Data/Melee.lua | 1 - 2 files changed, 9 deletions(-) diff --git a/Modules/Data/Constants.lua b/Modules/Data/Constants.lua index 49666a71..d1ec182d 100755 --- a/Modules/Data/Constants.lua +++ b/Modules/Data/Constants.lua @@ -807,7 +807,6 @@ Data.setNames = { Data.Talent = { [Data.DEATHKNIGHT] = { BLOOD_GORGED = {61274,61275,61276,61277,61278}, - NERVES_OF_COLD_STEEL = {49226,50137,50138}, VIRULENCE = {48962,49567,49568}, }, [Data.DRUID] = { @@ -816,9 +815,6 @@ Data.Talent = { NATURAL_PERFECTION = {33881,33882,33883}, SURVIVAL_OF_THE_FITTEST = {33853,33855,33856}, }, - [Data.HUNTER] = { - FOCUSED_AIM = {53620,53621,53622}, - }, [Data.MAGE] = { ARCANE_FOCUS = (IsWotlk and {11222,12839,12840} or {11222,12839,12840,12841,12842}), ARCANE_INSTABILITY = {15058,15059,15060}, @@ -844,7 +840,6 @@ Data.Talent = { SLEIGHT_OF_HAND = {30892,30893}, }, [Data.SHAMAN] = { - DUAL_WIELD_SPECIALIZATION = {30816,30818,30819}, ELEMENTAL_PRECISION = {30672,30673,30674}, NATURES_GUIDANCE = {16180,16196,16198}, THUNDERING_STRIKES = {16255,16302,16303,16304,16305}, @@ -856,7 +851,4 @@ Data.Talent = { DEVASTATION = {18130,18131,18132,18133,18134}, SUPPRESSION = {18174,18175,18176}, }, - [Data.WARRIOR] = { - PRECISION = {29590,29591,29592}, - }, } diff --git a/Modules/Data/Melee.lua b/Modules/Data/Melee.lua index f31eca7b..886588ab 100755 --- a/Modules/Data/Melee.lua +++ b/Modules/Data/Melee.lua @@ -10,7 +10,6 @@ local _Melee = {} local _, _, classId = UnitClass("player") local DEATHKNIGHT = Data.DEATHKNIGHT local DRUID = Data.DRUID -local HUNTER = Data.HUNTER local ROGUE = Data.ROGUE local SHAMAN = Data.SHAMAN local WARRIOR = Data.WARRIOR From 82e53b980ce778d107752e809074ab50f7ce8bdd Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Thu, 5 Mar 2026 01:39:24 +0100 Subject: [PATCH 3/3] sort --- Modules/Data/SpellCrit.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Modules/Data/SpellCrit.lua b/Modules/Data/SpellCrit.lua index d36e89cd..befe2c4d 100755 --- a/Modules/Data/SpellCrit.lua +++ b/Modules/Data/SpellCrit.lua @@ -6,12 +6,12 @@ local DataUtils = ECSLoader:ImportModule("DataUtils") local _SpellCrit = {} local _, _, classId = UnitClass("player") -local WARLOCK = Data.WARLOCK -local PALADIN = Data.PALADIN -local SHAMAN = Data.SHAMAN local DRUID = Data.DRUID local MAGE = Data.MAGE +local PALADIN = Data.PALADIN local PRIEST = Data.PRIEST +local SHAMAN = Data.SHAMAN +local WARLOCK = Data.WARLOCK ---@param school number ---@return string