From 937a6548b75fe2b7d00de0d4246dbcfde8aa5f17 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Tue, 11 Mar 2025 05:52:45 +0100 Subject: [PATCH 01/36] wip --- Modules/Data/ItemSets.lua | 90 ++++++++++++++++++++++++++++++++++++++- Modules/Data/Melee.lua | 31 ++++++++++++++ 2 files changed, 120 insertions(+), 1 deletion(-) diff --git a/Modules/Data/ItemSets.lua b/Modules/Data/ItemSets.lua index 3cd5ca8b..7bf847ec 100755 --- a/Modules/Data/ItemSets.lua +++ b/Modules/Data/ItemSets.lua @@ -77,8 +77,96 @@ local itemSets = { [19827] = true, [19952] = true }, + [setNames.DREADNOUGHTS_BATTLEGEAR] = { + [236005] = true, + [246006] = true, + [236007] = true, + [236008] = true, + [236009] = true, + [236010] = true, + [236011] = true, + [236012] = true, + [236013] = true + }, + [setNames.BONESCYTHE_LEATHERS] = { + [236032] = true, + [236033] = true, + [236034] = true, + [236035] = true, + [236036] = true, + [236037] = true, + [236038] = true, + [236039] = true, + [236040] = true + }, + [setNames.THE_EARTHSHATTERERS_RESOLVE] = { + [236160] = true, + [236162] = true, + [236163] = true, + [236164] = true, + [236165] = true, + [236166] = true, + [236167] = true, + [236168] = true, + [236169] = true + }, + [setNames.REDEMPTION_BULWARK] = { + [236133] = true, + [236134] = true, + [236135] = true, + [236136] = true, + [236137] = true, + [236138] = true, + [236139] = true, + [236140] = true, + [236141] = true + }, + [setNames.PLAGUEHEART_STITCHINGS] = { + [236068] = true, + [236069] = true, + [236070] = true, + [236071] = true, + [236072] = true, + [236073] = true, + [236074] = true, + [236075] = true, + [236076] = true + }, + [setNames.DREAMWALKER_GUARDIAN] = { + [236201] = true, + [236202] = true, + [236203] = true, + [236204] = true, + [236205] = true, + [236206] = true, + [236207] = true, + [236208] = true, + [236209] = true + }, } +function Data:HasSetBonusIncreasedExperise() + if classId == Data.WARRIOR then + return Data:IsSetBonusActive(setNames.DREADNOUGHTS_BATTLEGEAR, 2) + elseif classId == Data.DRUID then + return Data:IsSetBonusActive(setNames.DREAMWALKER_GUARDIAN, 2) + elseif classId == Data.SHAMAN then + return Data:IsSetBonusActive(setNames.THE_EARTHSHATTERERS_RESOLVE, 2) + elseif classId == Data.PALADIN then + return Data:IsSetBonusActive(setNames.REDEMPTION_BULWARK, 2) + elseif classId == Data.ROGUE then + return Data:IsSetBonusActive(setNames.BONESCYTHE_LEATHERS, 2) + elseif classId == Data.WARLOCK then + return Data:IsSetBonusActive(setNames.PLAGUEHEART_STITCHINGS, 2) + end +end + +function Data:HasSetBonusIncreasedSpellHit() + if classId == Data.WARLOCK then + return Data:IsSetBonusActive(setNames.PLAGUEHEART_STITCHINGS, 2) + end +end + function Data:HasSetBonusModifierMP5() if classId == Data.PRIEST then return Data:IsSetBonusActive(setNames.VESTMENTS_OF_TRANSCENDENCE, 3) @@ -126,4 +214,4 @@ function Data:IsSetBonusActive(setName, bonusLevel) end end return (equippedPieces >= bonusLevel) -end \ No newline at end of file +end diff --git a/Modules/Data/Melee.lua b/Modules/Data/Melee.lua index 0f0642c7..c8450aee 100755 --- a/Modules/Data/Melee.lua +++ b/Modules/Data/Melee.lua @@ -231,6 +231,37 @@ end ---@return number function Data:GetExpertise() local expertise, _ = GetExpertise() + + if ECS.IsSoD then + local increased_expertise_2 = {233640, 234985, 236300, 233614} + for _, itemId in pairs(increased_expertise_2) do + if C_Item.IsEquippedItem(itemId) then + expertise = expertise + 2 + end + end + + local increased_expertise_1 = {233585, 234650, 233397, 233693, 233692, 233401, 233689, 236130, 236056, 236022, 233635, 237512, 236034, 236032, 236030, 236023, 236039, 236038, 236036, 236035, 236037, 236026, 236031, 236033, 236029, 236040, 235888, 233651, 233658, 233376, 236051, 236055, 236052, 236050, 236054, 233634, 234984, 233659, 233662, 233663, 233661, 234748, 236020, 236012, 236005, 236010, 236019, 236007, 236016, 236006, 236008, 236009, 236011, 236021, 236209, 236201, 236206, 236215, 236205, 236204, 236203, 236208, 236211, 236212, 236218, 236202, 236210, 236171, 236172, 236175, 236174, 236170, 233637, 233582, 233711, 233412, 233413, 233415, 236222, 236309, 233579, 233618, 236339, 237275, 236260, 236319, 233992, 236139, 236207, 233642, 236304, 236262, 233612, 236125, 236133, 236141, 236137, 236138, 236129, 236128, 236136, 236135, 236140, 236124, 236134, 236013, 233600, 233442, 235005, 236216, 236176, 236311, 233699, 233700, 233668, 233665, 233666, 236306, 236341, 236293, 236263, 236255} + for _, itemId in pairs(increased_expertise_1) do + if C_Item.IsEquippedItem(itemId) then + expertise = expertise + 1 + end + end + + local timeworn_expertise = {234018, 234022, 234027, 234031, 234035} + for _, itemId in pairs(timeworn_expertise) do + if C_Item.IsEquippedItem(itemId) then + expertise = expertise + 1 * timeworn + end + end + + if Data:HasSetBonusIncreasedExpertise() then + expertise = expertise + 2 + end + + if classId == Data.DRUID then + end + end + return DataUtils:Round(expertise, 0) end From f049e85c3ea4f7cdd541607455d8f3ddfee7e236 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Tue, 11 Mar 2025 05:59:24 +0100 Subject: [PATCH 02/36] wip --- Modules/Config/MeleeSection.lua | 4 ++-- Modules/Profile.lua | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Modules/Config/MeleeSection.lua b/Modules/Config/MeleeSection.lua index d5886b77..8fe976ea 100755 --- a/Modules/Config/MeleeSection.lua +++ b/Modules/Config/MeleeSection.lua @@ -92,7 +92,7 @@ function _Config:LoadMeleeSection() desc = function() return i18n("Shows/Hides the expertise value.") end, width = 1.5, hidden = function() - return (not ECS.IsWotlk) + return (not (ECS.IsWotlk or ECS.IsSoD)) end, disabled = function() return (not ExtendedCharacterStats.profile.melee.display); end, get = function () return ExtendedCharacterStats.profile.melee.expertise.display; end, @@ -383,4 +383,4 @@ function _Config:LoadMeleeSection() }, }, } -end \ No newline at end of file +end diff --git a/Modules/Profile.lua b/Modules/Profile.lua index 135b301d..1d91b09c 100755 --- a/Modules/Profile.lua +++ b/Modules/Profile.lua @@ -127,7 +127,7 @@ local function GetDefaultStatsProfile() textColor = colors.ATTACK_SPEED_SECONDARY, statColor = colors.ATTACK_SPEED_PRIMARY, }, - expertise = {display = true, isTbcOnly = true, refName = "Expertise", text = "Expertise"}, + expertise = {display = true, refName = "Expertise", text = "Expertise"}, expertiseRating = {display = true, isTbcOnly = true, refName = "ExpertiseRating", text = "Expertise Rating"}, hasteRating = { display = true, From b019b4e2a2264c0524a18e9785daf13aed64c7c6 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Fri, 14 Mar 2025 02:32:51 +0100 Subject: [PATCH 03/36] wip --- Modules/Data/Melee.lua | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Modules/Data/Melee.lua b/Modules/Data/Melee.lua index c8450aee..e17392ee 100755 --- a/Modules/Data/Melee.lua +++ b/Modules/Data/Melee.lua @@ -247,10 +247,16 @@ function Data:GetExpertise() end end + local timeworn = {234146, 234147, 233564, 233561, 233617, 234148, 234149, 233644, 234075, 234150, 233559, 233618, 233645, 233522, 233563, 233567, 233566, 233560, 233619, 233520, 233521, 233523, 233568, 234098, 234099, 234100, 234102, 233578, 233582, 233579, 235047, 233646, 233574, 233583, 233573, 233575, 233584, 233577, 234090, 234093, 234094, 234095, 234091, 233635, 233631, 233633, 233637, 233632, 234156, 234157, 233611, 233612, 233614, 233613, 233623, 233622, 233590, 233592, 233593, 233594, 233595, 233591, 234069, 234068, 234070, 234071, 234072, 234064, 234063, 234065, 234066, 234062, 234161, 234162, 234163, 234164, 234165, 234166, 234078, 234123, 234073, 234081, 234120, 234088, 234082, 234087, 234084, 234077, 234117, 234103, 234105, 234106, 234107, 234108, 234109, 234110, 234111, 234114, 233625, 233624, 233607, 233610, 233608, 234167, 234168, 234171, 233496, 233506, 233518, 233517, 233514, 233516, 233505, 233604, 233603, 233598, 234174, 234962, 234173, 234963} local timeworn_expertise = {234018, 234022, 234027, 234031, 234035} for _, itemId in pairs(timeworn_expertise) do if C_Item.IsEquippedItem(itemId) then - expertise = expertise + 1 * timeworn + for _, timewornItemId in pairs(timeworn) do + if C_Item.IsEquippedItem(timewornItemId) then + expertise = expertise + 1 + end + end + break end end From 8477a74940b0ff9ce51d7732d09cf2cb15ce7ac5 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Sun, 16 Mar 2025 03:15:29 +0100 Subject: [PATCH 04/36] wip --- Modules/Data/ItemSets.lua | 6 ------ Modules/Data/Melee.lua | 17 ++++++++++++++--- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/Modules/Data/ItemSets.lua b/Modules/Data/ItemSets.lua index 7bf847ec..67ed724b 100755 --- a/Modules/Data/ItemSets.lua +++ b/Modules/Data/ItemSets.lua @@ -161,12 +161,6 @@ function Data:HasSetBonusIncreasedExperise() end end -function Data:HasSetBonusIncreasedSpellHit() - if classId == Data.WARLOCK then - return Data:IsSetBonusActive(setNames.PLAGUEHEART_STITCHINGS, 2) - end -end - function Data:HasSetBonusModifierMP5() if classId == Data.PRIEST then return Data:IsSetBonusActive(setNames.VESTMENTS_OF_TRANSCENDENCE, 3) diff --git a/Modules/Data/Melee.lua b/Modules/Data/Melee.lua index e17392ee..2b1a5f40 100755 --- a/Modules/Data/Melee.lua +++ b/Modules/Data/Melee.lua @@ -240,14 +240,26 @@ function Data:GetExpertise() end end - local increased_expertise_1 = {233585, 234650, 233397, 233693, 233692, 233401, 233689, 236130, 236056, 236022, 233635, 237512, 236034, 236032, 236030, 236023, 236039, 236038, 236036, 236035, 236037, 236026, 236031, 236033, 236029, 236040, 235888, 233651, 233658, 233376, 236051, 236055, 236052, 236050, 236054, 233634, 234984, 233659, 233662, 233663, 233661, 234748, 236020, 236012, 236005, 236010, 236019, 236007, 236016, 236006, 236008, 236009, 236011, 236021, 236209, 236201, 236206, 236215, 236205, 236204, 236203, 236208, 236211, 236212, 236218, 236202, 236210, 236171, 236172, 236175, 236174, 236170, 233637, 233582, 233711, 233412, 233413, 233415, 236222, 236309, 233579, 233618, 236339, 237275, 236260, 236319, 233992, 236139, 236207, 233642, 236304, 236262, 233612, 236125, 236133, 236141, 236137, 236138, 236129, 236128, 236136, 236135, 236140, 236124, 236134, 236013, 233600, 233442, 235005, 236216, 236176, 236311, 233699, 233700, 233668, 233665, 233666, 236306, 236341, 236293, 236263, 236255} + local increased_expertise_1 = {233585, 234650, 233397, 233693, 233692, 233401, 233689, 236130, 236056, 236022, 233635, 237512, 236034, 236032, 236030, 236023, 236039, 236038, 236036, 236035, + 236037, 236026, 236031, 236033, 236029, 236040, 235888, 233651, 233658, 233376, 236051, 236055, 236052, 236050, 236054, 233634, 234984, 233659, 233662, 233663, 233661, 234748, 236020, + 236012, 236005, 236010, 236019, 236007, 236016, 236006, 236008, 236009, 236011, 236021, 236209, 236201, 236206, 236215, 236205, 236204, 236203, 236208, 236211, 236212, 236218, 236202, + 236210, 236171, 236172, 236175, 236174, 236170, 233637, 233582, 233711, 233412, 233413, 233415, 236222, 236309, 233579, 233618, 236339, 237275, 236260, 236319, 233992, 236139, 236207, + 233642, 236304, 236262, 233612, 236125, 236133, 236141, 236137, 236138, 236129, 236128, 236136, 236135, 236140, 236124, 236134, 236013, 233600, 233442, 235005, 236216, 236176, 236311, + 233699, 233700, 233668, 233665, 233666, 236306, 236341, 236293, 236263, 236255 + } for _, itemId in pairs(increased_expertise_1) do if C_Item.IsEquippedItem(itemId) then expertise = expertise + 1 end end - local timeworn = {234146, 234147, 233564, 233561, 233617, 234148, 234149, 233644, 234075, 234150, 233559, 233618, 233645, 233522, 233563, 233567, 233566, 233560, 233619, 233520, 233521, 233523, 233568, 234098, 234099, 234100, 234102, 233578, 233582, 233579, 235047, 233646, 233574, 233583, 233573, 233575, 233584, 233577, 234090, 234093, 234094, 234095, 234091, 233635, 233631, 233633, 233637, 233632, 234156, 234157, 233611, 233612, 233614, 233613, 233623, 233622, 233590, 233592, 233593, 233594, 233595, 233591, 234069, 234068, 234070, 234071, 234072, 234064, 234063, 234065, 234066, 234062, 234161, 234162, 234163, 234164, 234165, 234166, 234078, 234123, 234073, 234081, 234120, 234088, 234082, 234087, 234084, 234077, 234117, 234103, 234105, 234106, 234107, 234108, 234109, 234110, 234111, 234114, 233625, 233624, 233607, 233610, 233608, 234167, 234168, 234171, 233496, 233506, 233518, 233517, 233514, 233516, 233505, 233604, 233603, 233598, 234174, 234962, 234173, 234963} + local timeworn = {234146, 234147, 233564, 233561, 233617, 234148, 234149, 233644, 234075, 234150, 233559, 233618, 233645, 233522, 233563, 233567, 233566, 233560, 233619, 233520, 233521, + 233523, 233568, 234098, 234099, 234100, 234102, 233578, 233582, 233579, 235047, 233646, 233574, 233583, 233573, 233575, 233584, 233577, 234090, 234093, 234094, 234095, 234091, 233635, + 233631, 233633, 233637, 233632, 234156, 234157, 233611, 233612, 233614, 233613, 233623, 233622, 233590, 233592, 233593, 233594, 233595, 233591, 234069, 234068, 234070, 234071, 234072, + 234064, 234063, 234065, 234066, 234062, 234161, 234162, 234163, 234164, 234165, 234166, 234078, 234123, 234073, 234081, 234120, 234088, 234082, 234087, 234084, 234077, 234117, 234103, + 234105, 234106, 234107, 234108, 234109, 234110, 234111, 234114, 233625, 233624, 233607, 233610, 233608, 234167, 234168, 234171, 233496, 233506, 233518, 233517, 233514, 233516, 233505, + 233604, 233603, 233598, 234174, 234962, 234173, 234963 + } local timeworn_expertise = {234018, 234022, 234027, 234031, 234035} for _, itemId in pairs(timeworn_expertise) do if C_Item.IsEquippedItem(itemId) then @@ -313,4 +325,3 @@ function Data:GetMeleeHasteBonus() local hasteBonus = GetCombatRatingBonus(CR_HASTE_MELEE) return DataUtils:Round(hasteBonus, 2) .. "%" end - From 766c38a41baeb091bf67915d72c202e08fd9e5af Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Sun, 16 Mar 2025 19:07:30 +0100 Subject: [PATCH 05/36] wip --- Modules/Data/Constants.lua | 55 ++++++++--- Modules/Data/ItemSets.lua | 191 ++++++++++++++++++++----------------- Modules/Data/Melee.lua | 42 ++++---- 3 files changed, 161 insertions(+), 127 deletions(-) diff --git a/Modules/Data/Constants.lua b/Modules/Data/Constants.lua index 0eb541b5..f2b4553f 100755 --- a/Modules/Data/Constants.lua +++ b/Modules/Data/Constants.lua @@ -21,27 +21,35 @@ Data.WARLOCK = 9 Data.DRUID = 11 Data.setNames = { + AUGURS_REGALIA = "Augur's Regalia", BATTLEGEAR_OF_MIGHT = "Battlegear of Might", + BONESCYTHE_LEATHERS = "Bonescythe Leathers", + DREAMWALKER_GUARDIAN = "Dreamwalker Guardian", + DREADNOUGHTS_BATTLEGEAR = "Dreadnought's Battlegear", + FREETHINKERS_ARMOR = "Freethinker's Armor", + HARUSPEXS_GARB = "Haruspex's Garb", + PLAGUEHEART_STITCHINGS = "Plagueheart Stitchings", + REDEMPTION_BULWARK = "Redemption Bulwark", STORMRAGE_RAIMENT = "Stormrage Raiment", - VESTMENTS_OF_TRANSCENDENCE = "Vestments of Transcendence", + SYMBOLS_OF_UNENDING_LIFE = "Symbols of Unending Life", TEN_STORMS = "The Ten Storms", THE_EARTHSHATTERER = "The Earthshatterer", - HARUSPEXS_GARB = "Haruspex's Garb", - AUGURS_REGALIA = "Augur's Regalia", - FREETHINKERS_ARMOR = "Freethinker's Armor" + THE_EARTHSHATTERER_RESOLVE = "The Earthshatterer Resolve", + VESTMENTS_OF_TRANSCENDENCE = "Vestments of Transcendence", } Data.enchantIds = { - BIZNICK_SCOPE = "2523", -- 3% Hit from Biznicks 247x128 Accurascope - BRACER_MANA_REGENERATION = "2565", -- 4 MP5 on bracer - PROPHETIC_AURA = "2590", -- 4 MP5 for priest ZG Enchant - RESILIENCE_OF_THE_SCOURGE = "2715", -- 4 MP5 for priest ZG Enchant - INSCRIPTION_OF_FAITH = "2980", -- 4 MP5 from aldor enchant - GLYPH_OF_RENEWAL = "3001", -- 7 MP5 from Honor Hold/Thrallmar enchant - RESTORE_MANA_PRIME = "3150", -- 6 MP5 on chest - BRILLIANT_MANA_OIL = "2629", -- 12 MP5 - LESSER_MANA_OIL = "2625", -- 8 MP5 - MINOR_MANA_OIL = "2624", -- 4 MP5 + ANIMALISTIC_EXPERTISE = 7875, -- Your melee attacks have 5% less chance to be Dodged or Parried. + BIZNICK_SCOPE = 2523, -- 3% Hit from Biznicks 247x128 Accurascope + BRACER_MANA_REGENERATION = 2565, -- 4 MP5 on bracer + BRILLIANT_MANA_OIL = 2629, -- 12 MP5 + GLYPH_OF_RENEWAL = 3001, -- 7 MP5 from Honor Hold/Thrallmar enchant + INSCRIPTION_OF_FAITH = 2980, -- 4 MP5 from aldor enchant + LESSER_MANA_OIL = 2625, -- 8 MP5 + MINOR_MANA_OIL = 2624, -- 4 MP5 + PROPHETIC_AURA = 2590, -- 4 MP5 for priest ZG Enchant + RESILIENCE_OF_THE_SCOURGE = 2715, -- 5 MP5 Sapphiron shoulder enchant + RESTORE_MANA_PRIME = 3150, -- 6 MP5 on chest } Data.gemIds = { @@ -50,3 +58,22 @@ Data.gemIds = { TWO_MP5_GEMS = {"30589", "32225", "24065", "30594", "31865", "32214", "30606", "23121", "24057", "32216", "30603", "30560", "30550"}, ONE_MP5_GEMS = {"23106", "31864", "28465", "23109"} } + +Data.itemsIds = { + INCREASED_EXPERTISE_1 = {233585, 234650, 233397, 233693, 233692, 233401, 233689, 236130, 236056, 236022, 233635, 237512, 236034, 236032, 236030, 236023, 236039, 236038, 236036, 236035, 236037, + 236026, 236031, 236033, 236029, 236040, 235888, 233651, 233658, 233376, 236051, 236055, 236052, 236050, 236054, 233634, 234984, 233659, 233662, 233663, 233661, 234748, 236020, 236012, 236005, + 236010, 236019, 236007, 236016, 236006, 236008, 236009, 236011, 236021, 236209, 236201, 236206, 236215, 236205, 236204, 236203, 236208, 236211, 236212, 236218, 236202, 236210, 236171, 236172, + 236175, 236174, 236170, 233637, 233582, 233711, 233412, 233413, 233415, 236222, 236309, 233579, 233618, 236339, 237275, 236260, 236319, 233992, 236139, 236207, 233642, 236304, 236262, 233612, + 236125, 236133, 236141, 236137, 236138, 236129, 236128, 236136, 236135, 236140, 236124, 236134, 236013, 233600, 233442, 235005, 236216, 236176, 236311, 233699, 233700, 233668, 233665, 233666, + 236306, 236341, 236293, 236263, 236255 + } + INCREASED_EXPERTISE_2 = {233640, 234985, 236300, 233614} + TIMEWORN = {234146, 234147, 233564, 233561, 233617, 234148, 234149, 233644, 234075, 234150, 233559, 233618, 233645, 233522, 233563, 233567, 233566, 233560, 233619, 233520, 233521, 233523, 233568, + 234098, 234099, 234100, 234102, 233578, 233582, 233579, 235047, 233646, 233574, 233583, 233573, 233575, 233584, 233577, 234090, 234093, 234094, 234095, 234091, 233635, 233631, 233633, 233637, + 233632, 234156, 234157, 233611, 233612, 233614, 233613, 233623, 233622, 233590, 233592, 233593, 233594, 233595, 233591, 234069, 234068, 234070, 234071, 234072, 234064, 234063, 234065, 234066, + 234062, 234161, 234162, 234163, 234164, 234165, 234166, 234078, 234123, 234073, 234081, 234120, 234088, 234082, 234087, 234084, 234077, 234117, 234103, 234105, 234106, 234107, 234108, 234109, + 234110, 234111, 234114, 233625, 233624, 233607, 233610, 233608, 234167, 234168, 234171, 233496, 233506, 233518, 233517, 233514, 233516, 233505, 233604, 233603, 233598, 234174, 234962, 234173, + 234963 + } + TIMEWORN_EXPERTISE = {234018, 234022, 234027, 234031, 234035} +} diff --git a/Modules/Data/ItemSets.lua b/Modules/Data/ItemSets.lua index 67ed724b..60e59123 100755 --- a/Modules/Data/ItemSets.lua +++ b/Modules/Data/ItemSets.lua @@ -5,6 +5,13 @@ local _, _, classId = UnitClass("player") local setNames = Data.setNames local itemSets = { + [setNames.AUGURS_REGALIA] = { + [19609] = true, + [19828] = true, + [19829] = true, + [19830] = true, + [19956] = true + }, [setNames.BATTLEGEAR_OF_MIGHT] = { [16861] = true, [16862] = true, @@ -15,6 +22,75 @@ local itemSets = { [16867] = true, [16868] = true }, + [setNames.BONESCYTHE_LEATHERS] = { + [236032] = true, + [236033] = true, + [236034] = true, + [236035] = true, + [236036] = true, + [236037] = true, + [236038] = true, + [236039] = true, + [236040] = true + }, + [setNames.DREADNOUGHTS_BATTLEGEAR] = { + [236005] = true, + [246006] = true, + [236007] = true, + [236008] = true, + [236009] = true, + [236010] = true, + [236011] = true, + [236012] = true, + [236013] = true + }, + [setNames.DREAMWALKER_GUARDIAN] = { + [236201] = true, + [236202] = true, + [236203] = true, + [236204] = true, + [236205] = true, + [236206] = true, + [236207] = true, + [236208] = true, + [236209] = true + }, + [setNames.FREETHINKERS_ARMOR] = { + [19588] = true, + [19825] = true, + [19826] = true, + [19827] = true, + [19952] = true + }, + [setNames.HARUSPEXS_GARB] = { + [19613] = true, + [19838] = true, + [19839] = true, + [19840] = true, + [19955] = true + }, + [setNames.PLAGUEHEART_STITCHINGS] = { + [236068] = true, + [236069] = true, + [236070] = true, + [236071] = true, + [236072] = true, + [236073] = true, + [236074] = true, + [236075] = true, + [236076] = true + }, + [setNames.REDEMPTION_BULWARK] = { + [236133] = true, + [236134] = true, + [236135] = true, + [236136] = true, + [236137] = true, + [236138] = true, + [236139] = true, + [236140] = true, + [236141] = true + }, [setNames.STORMRAGE_RAIMENT] = { [16899] = true, [16900] = true, @@ -25,15 +101,10 @@ local itemSets = { [16897] = true, [16898] = true }, - [setNames.VESTMENTS_OF_TRANSCENDENCE] = { - [16919] = true, - [16920] = true, - [16921] = true, - [16922] = true, - [16923] = true, - [16924] = true, - [16925] = true, - [16926] = true + [setNames.SYMBOLS_OF_UNENDING_LIFE] = { + [233417] = true, + [233418] = true, + [233419] = true }, [setNames.TEN_STORMS] = { [16943] = true, @@ -46,59 +117,16 @@ local itemSets = { [16950] = true }, [setNames.THE_EARTHSHATTERER] = { - [22468] = true, - [22470] = true, - [22469] = true, - [22466] = true, + [22464] = true, [22465] = true, + [22466] = true, [22467] = true, - [22464] = true, + [22468] = true, + [22469] = true, + [22470] = true, [22471] = true, [23065] = true }, - [setNames.HARUSPEXS_GARB] = { - [19613] = true, - [19838] = true, - [19839] = true, - [19840] = true, - [19955] = true - }, - [setNames.AUGURS_REGALIA] = { - [19609] = true, - [19828] = true, - [19829] = true, - [19830] = true, - [19956] = true - }, - [setNames.FREETHINKERS_ARMOR] = { - [19588] = true, - [19825] = true, - [19826] = true, - [19827] = true, - [19952] = true - }, - [setNames.DREADNOUGHTS_BATTLEGEAR] = { - [236005] = true, - [246006] = true, - [236007] = true, - [236008] = true, - [236009] = true, - [236010] = true, - [236011] = true, - [236012] = true, - [236013] = true - }, - [setNames.BONESCYTHE_LEATHERS] = { - [236032] = true, - [236033] = true, - [236034] = true, - [236035] = true, - [236036] = true, - [236037] = true, - [236038] = true, - [236039] = true, - [236040] = true - }, [setNames.THE_EARTHSHATTERERS_RESOLVE] = { [236160] = true, [236162] = true, @@ -110,42 +138,19 @@ local itemSets = { [236168] = true, [236169] = true }, - [setNames.REDEMPTION_BULWARK] = { - [236133] = true, - [236134] = true, - [236135] = true, - [236136] = true, - [236137] = true, - [236138] = true, - [236139] = true, - [236140] = true, - [236141] = true - }, - [setNames.PLAGUEHEART_STITCHINGS] = { - [236068] = true, - [236069] = true, - [236070] = true, - [236071] = true, - [236072] = true, - [236073] = true, - [236074] = true, - [236075] = true, - [236076] = true - }, - [setNames.DREAMWALKER_GUARDIAN] = { - [236201] = true, - [236202] = true, - [236203] = true, - [236204] = true, - [236205] = true, - [236206] = true, - [236207] = true, - [236208] = true, - [236209] = true + [setNames.VESTMENTS_OF_TRANSCENDENCE] = { + [16919] = true, + [16920] = true, + [16921] = true, + [16922] = true, + [16923] = true, + [16924] = true, + [16925] = true, + [16926] = true }, } -function Data:HasSetBonusIncreasedExperise() +function Data:HasSetBonusIncreasedExpertise2() if classId == Data.WARRIOR then return Data:IsSetBonusActive(setNames.DREADNOUGHTS_BATTLEGEAR, 2) elseif classId == Data.DRUID then @@ -161,6 +166,12 @@ function Data:HasSetBonusIncreasedExperise() end end +function Data:HasSetBonusIncreasedExpertise5() + if classId == Data.DRUID then + return Data:IsSetBonusActive(setNames.SYMBOLS_OF_UNENDING_LIFE, 3) + end +end + function Data:HasSetBonusModifierMP5() if classId == Data.PRIEST then return Data:IsSetBonusActive(setNames.VESTMENTS_OF_TRANSCENDENCE, 3) diff --git a/Modules/Data/Melee.lua b/Modules/Data/Melee.lua index 2b1a5f40..5dfa0c92 100755 --- a/Modules/Data/Melee.lua +++ b/Modules/Data/Melee.lua @@ -233,50 +233,46 @@ function Data:GetExpertise() local expertise, _ = GetExpertise() if ECS.IsSoD then - local increased_expertise_2 = {233640, 234985, 236300, 233614} - for _, itemId in pairs(increased_expertise_2) do + for _, itemId in pairs(Data.itemsIds.INCREASED_EXPERTISE_2) do if C_Item.IsEquippedItem(itemId) then expertise = expertise + 2 end end - local increased_expertise_1 = {233585, 234650, 233397, 233693, 233692, 233401, 233689, 236130, 236056, 236022, 233635, 237512, 236034, 236032, 236030, 236023, 236039, 236038, 236036, 236035, - 236037, 236026, 236031, 236033, 236029, 236040, 235888, 233651, 233658, 233376, 236051, 236055, 236052, 236050, 236054, 233634, 234984, 233659, 233662, 233663, 233661, 234748, 236020, - 236012, 236005, 236010, 236019, 236007, 236016, 236006, 236008, 236009, 236011, 236021, 236209, 236201, 236206, 236215, 236205, 236204, 236203, 236208, 236211, 236212, 236218, 236202, - 236210, 236171, 236172, 236175, 236174, 236170, 233637, 233582, 233711, 233412, 233413, 233415, 236222, 236309, 233579, 233618, 236339, 237275, 236260, 236319, 233992, 236139, 236207, - 233642, 236304, 236262, 233612, 236125, 236133, 236141, 236137, 236138, 236129, 236128, 236136, 236135, 236140, 236124, 236134, 236013, 233600, 233442, 235005, 236216, 236176, 236311, - 233699, 233700, 233668, 233665, 233666, 236306, 236341, 236293, 236263, 236255 - } - for _, itemId in pairs(increased_expertise_1) do + for _, itemId in pairs(Data.itemsIds.INCREASED_EXPERTISE_1) do if C_Item.IsEquippedItem(itemId) then expertise = expertise + 1 end end - local timeworn = {234146, 234147, 233564, 233561, 233617, 234148, 234149, 233644, 234075, 234150, 233559, 233618, 233645, 233522, 233563, 233567, 233566, 233560, 233619, 233520, 233521, - 233523, 233568, 234098, 234099, 234100, 234102, 233578, 233582, 233579, 235047, 233646, 233574, 233583, 233573, 233575, 233584, 233577, 234090, 234093, 234094, 234095, 234091, 233635, - 233631, 233633, 233637, 233632, 234156, 234157, 233611, 233612, 233614, 233613, 233623, 233622, 233590, 233592, 233593, 233594, 233595, 233591, 234069, 234068, 234070, 234071, 234072, - 234064, 234063, 234065, 234066, 234062, 234161, 234162, 234163, 234164, 234165, 234166, 234078, 234123, 234073, 234081, 234120, 234088, 234082, 234087, 234084, 234077, 234117, 234103, - 234105, 234106, 234107, 234108, 234109, 234110, 234111, 234114, 233625, 233624, 233607, 233610, 233608, 234167, 234168, 234171, 233496, 233506, 233518, 233517, 233514, 233516, 233505, - 233604, 233603, 233598, 234174, 234962, 234173, 234963 - } - local timeworn_expertise = {234018, 234022, 234027, 234031, 234035} - for _, itemId in pairs(timeworn_expertise) do + for _, itemId in pairs(Data.itemsIds.TIMEWORN_EXPERTISE) do if C_Item.IsEquippedItem(itemId) then - for _, timewornItemId in pairs(timeworn) do - if C_Item.IsEquippedItem(timewornItemId) then + for _, t in pairs(Data.itemsIds.TIMEWORN) do + if C_Item.IsEquippedItem(t) then expertise = expertise + 1 end end - break + break -- no need to check for other rings, you can have only one end end - if Data:HasSetBonusIncreasedExpertise() then + if Data:HasSetBonusIncreasedExpertise2() then expertise = expertise + 2 end + if Data:HasSetBonusIncreasedExpertise5() then + expertise = expertise + 5 + end + if classId == Data.DRUID then + for i = 1, 18 do + local itemLink = GetInventoryItemLink("player", i) + if itemLink then + local enchant = DataUtils:GetEnchantFromItemLink(itemLink) + if enchant and enchant == Data.enchantIds.ANIMALISTIC_EXPERTISE then + expertise = expertise + 5 + end + end end end From 5c2f5ad405f0e18fa14f9996458a6d8d19490de7 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Sun, 16 Mar 2025 19:15:16 +0100 Subject: [PATCH 06/36] wip --- Modules/Data/Constants.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Modules/Data/Constants.lua b/Modules/Data/Constants.lua index f2b4553f..d45eebb8 100755 --- a/Modules/Data/Constants.lua +++ b/Modules/Data/Constants.lua @@ -66,14 +66,14 @@ Data.itemsIds = { 236175, 236174, 236170, 233637, 233582, 233711, 233412, 233413, 233415, 236222, 236309, 233579, 233618, 236339, 237275, 236260, 236319, 233992, 236139, 236207, 233642, 236304, 236262, 233612, 236125, 236133, 236141, 236137, 236138, 236129, 236128, 236136, 236135, 236140, 236124, 236134, 236013, 233600, 233442, 235005, 236216, 236176, 236311, 233699, 233700, 233668, 233665, 233666, 236306, 236341, 236293, 236263, 236255 - } - INCREASED_EXPERTISE_2 = {233640, 234985, 236300, 233614} + }, + INCREASED_EXPERTISE_2 = {233640, 234985, 236300, 233614}, TIMEWORN = {234146, 234147, 233564, 233561, 233617, 234148, 234149, 233644, 234075, 234150, 233559, 233618, 233645, 233522, 233563, 233567, 233566, 233560, 233619, 233520, 233521, 233523, 233568, 234098, 234099, 234100, 234102, 233578, 233582, 233579, 235047, 233646, 233574, 233583, 233573, 233575, 233584, 233577, 234090, 234093, 234094, 234095, 234091, 233635, 233631, 233633, 233637, 233632, 234156, 234157, 233611, 233612, 233614, 233613, 233623, 233622, 233590, 233592, 233593, 233594, 233595, 233591, 234069, 234068, 234070, 234071, 234072, 234064, 234063, 234065, 234066, 234062, 234161, 234162, 234163, 234164, 234165, 234166, 234078, 234123, 234073, 234081, 234120, 234088, 234082, 234087, 234084, 234077, 234117, 234103, 234105, 234106, 234107, 234108, 234109, 234110, 234111, 234114, 233625, 233624, 233607, 233610, 233608, 234167, 234168, 234171, 233496, 233506, 233518, 233517, 233514, 233516, 233505, 233604, 233603, 233598, 234174, 234962, 234173, 234963 - } + }, TIMEWORN_EXPERTISE = {234018, 234022, 234027, 234031, 234035} } From 28c8e583381f5eef3941343184bebe393338c2ce Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Sun, 16 Mar 2025 19:21:11 +0100 Subject: [PATCH 07/36] wip --- Modules/Data/Melee.lua | 58 +++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/Modules/Data/Melee.lua b/Modules/Data/Melee.lua index 5dfa0c92..23b90526 100755 --- a/Modules/Data/Melee.lua +++ b/Modules/Data/Melee.lua @@ -232,40 +232,40 @@ end function Data:GetExpertise() local expertise, _ = GetExpertise() - if ECS.IsSoD then - for _, itemId in pairs(Data.itemsIds.INCREASED_EXPERTISE_2) do - if C_Item.IsEquippedItem(itemId) then - expertise = expertise + 2 - end - end - - for _, itemId in pairs(Data.itemsIds.INCREASED_EXPERTISE_1) do - if C_Item.IsEquippedItem(itemId) then - expertise = expertise + 1 - end - end - - for _, itemId in pairs(Data.itemsIds.TIMEWORN_EXPERTISE) do - if C_Item.IsEquippedItem(itemId) then + if ECS.IsSoD then + for _, itemId in pairs(Data.itemsIds.INCREASED_EXPERTISE_2) do + if C_Item.IsEquippedItem(itemId) then + expertise = expertise + 2 + end + end + + for _, itemId in pairs(Data.itemsIds.INCREASED_EXPERTISE_1) do + if C_Item.IsEquippedItem(itemId) then + expertise = expertise + 1 + end + end + + for _, itemId in pairs(Data.itemsIds.TIMEWORN_EXPERTISE) do + if C_Item.IsEquippedItem(itemId) then for _, t in pairs(Data.itemsIds.TIMEWORN) do if C_Item.IsEquippedItem(t) then expertise = expertise + 1 end - end - break -- no need to check for other rings, you can have only one - end - end + end + break -- no need to check for other rings, you can have only one + end + end - if Data:HasSetBonusIncreasedExpertise2() then - expertise = expertise + 2 - end + if Data:HasSetBonusIncreasedExpertise2() then + expertise = expertise + 2 + end - if Data:HasSetBonusIncreasedExpertise5() then - expertise = expertise + 5 - end + if Data:HasSetBonusIncreasedExpertise5() then + expertise = expertise + 5 + end - if classId == Data.DRUID then - for i = 1, 18 do + if classId == Data.DRUID then + for i = 1, 18 do local itemLink = GetInventoryItemLink("player", i) if itemLink then local enchant = DataUtils:GetEnchantFromItemLink(itemLink) @@ -273,8 +273,8 @@ function Data:GetExpertise() expertise = expertise + 5 end end - end - end + end + end return DataUtils:Round(expertise, 0) end From e473553adcee810a77b2810dcc25c3ae644e0607 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Sun, 16 Mar 2025 19:34:55 +0100 Subject: [PATCH 08/36] wip --- Modules/Data/Constants.lua | 22 +++++++++++----------- Modules/Data/DataUtils.lua | 10 +++++----- Modules/Data/Melee.lua | 11 ++++++----- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/Modules/Data/Constants.lua b/Modules/Data/Constants.lua index d45eebb8..c03e33df 100755 --- a/Modules/Data/Constants.lua +++ b/Modules/Data/Constants.lua @@ -39,17 +39,17 @@ Data.setNames = { } Data.enchantIds = { - ANIMALISTIC_EXPERTISE = 7875, -- Your melee attacks have 5% less chance to be Dodged or Parried. - BIZNICK_SCOPE = 2523, -- 3% Hit from Biznicks 247x128 Accurascope - BRACER_MANA_REGENERATION = 2565, -- 4 MP5 on bracer - BRILLIANT_MANA_OIL = 2629, -- 12 MP5 - GLYPH_OF_RENEWAL = 3001, -- 7 MP5 from Honor Hold/Thrallmar enchant - INSCRIPTION_OF_FAITH = 2980, -- 4 MP5 from aldor enchant - LESSER_MANA_OIL = 2625, -- 8 MP5 - MINOR_MANA_OIL = 2624, -- 4 MP5 - PROPHETIC_AURA = 2590, -- 4 MP5 for priest ZG Enchant - RESILIENCE_OF_THE_SCOURGE = 2715, -- 5 MP5 Sapphiron shoulder enchant - RESTORE_MANA_PRIME = 3150, -- 6 MP5 on chest + ANIMALISTIC_EXPERTISE = "7875", -- Your melee attacks have 5% less chance to be Dodged or Parried. + BIZNICK_SCOPE = "2523", -- 3% Hit from Biznicks 247x128 Accurascope + BRACER_MANA_REGENERATION = "2565", -- 4 MP5 on bracer + BRILLIANT_MANA_OIL = "2629", -- 12 MP5 + GLYPH_OF_RENEWAL = "3001", -- 7 MP5 from Honor Hold/Thrallmar enchant + INSCRIPTION_OF_FAITH = "2980", -- 4 MP5 from aldor enchant + LESSER_MANA_OIL = "2625", -- 8 MP5 + MINOR_MANA_OIL = "2624", -- 4 MP5 + PROPHETIC_AURA = "2590", -- 4 MP5 for priest ZG Enchant + RESILIENCE_OF_THE_SCOURGE = "2715", -- 5 MP5 Sapphiron shoulder enchant + RESTORE_MANA_PRIME = "3150", -- 6 MP5 on chest } Data.gemIds = { diff --git a/Modules/Data/DataUtils.lua b/Modules/Data/DataUtils.lua index b31ff18f..f4bf34a7 100644 --- a/Modules/Data/DataUtils.lua +++ b/Modules/Data/DataUtils.lua @@ -83,12 +83,12 @@ function DataUtils:GetEnchantForEquipSlot(equipSlot) end ---@param itemLink ItemLink ----@return number|nil +---@return string|nil function DataUtils:GetEnchantFromItemLink(itemLink) if itemLink then local _, itemStringLink = GetItemInfo(itemLink) if itemStringLink then - local _, _, enchant = string.find(itemStringLink, "item:%d+:(%d*)") + local _, _, enchant, _ = string.split(":", itemStringLink, 4) return enchant end end @@ -110,12 +110,12 @@ function DataUtils.GetRuneForEquipSlot(equipSlot) end ---@param itemLink ItemLink ----@return (number, number, number) | nil +---@return (string, string, string) | nil function DataUtils:GetSocketedGemsFromItemLink(itemLink) if itemLink then local _, itemStringLink = GetItemInfo(itemLink) if itemStringLink then - local _, _, gem1, gem2, gem3 = string.find(itemStringLink, "item:%d*:%d*:(%d*):(%d*):(%d*)") + local _, _, gem1, gem2, gem3, _ = string.split(":", itemStringLink, 6) return gem1, gem2, gem3 end end @@ -123,4 +123,4 @@ function DataUtils:GetSocketedGemsFromItemLink(itemLink) return nil end -return DataUtils \ No newline at end of file +return DataUtils diff --git a/Modules/Data/Melee.lua b/Modules/Data/Melee.lua index 23b90526..c15cb2f5 100755 --- a/Modules/Data/Melee.lua +++ b/Modules/Data/Melee.lua @@ -266,11 +266,12 @@ function Data:GetExpertise() if classId == Data.DRUID then for i = 1, 18 do - local itemLink = GetInventoryItemLink("player", i) - if itemLink then - local enchant = DataUtils:GetEnchantFromItemLink(itemLink) - if enchant and enchant == Data.enchantIds.ANIMALISTIC_EXPERTISE then - expertise = expertise + 5 + local itemLink = GetInventoryItemLink("player", i) + if itemLink then + local enchant = DataUtils:GetEnchantFromItemLink(itemLink) + if enchant and enchant == Data.enchantIds.ANIMALISTIC_EXPERTISE then + expertise = expertise + 5 + end end end end From 0e03932445a38415fece6232eaf4373a8ce9d473 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Sun, 16 Mar 2025 19:38:00 +0100 Subject: [PATCH 09/36] wip --- Modules/Data/DataUtils.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Modules/Data/DataUtils.lua b/Modules/Data/DataUtils.lua index f4bf34a7..0e59cde8 100644 --- a/Modules/Data/DataUtils.lua +++ b/Modules/Data/DataUtils.lua @@ -88,7 +88,7 @@ function DataUtils:GetEnchantFromItemLink(itemLink) if itemLink then local _, itemStringLink = GetItemInfo(itemLink) if itemStringLink then - local _, _, enchant, _ = string.split(":", itemStringLink, 4) + local _, _, enchant, _ = strsplit(":", itemStringLink, 4) return enchant end end @@ -115,7 +115,7 @@ function DataUtils:GetSocketedGemsFromItemLink(itemLink) if itemLink then local _, itemStringLink = GetItemInfo(itemLink) if itemStringLink then - local _, _, gem1, gem2, gem3, _ = string.split(":", itemStringLink, 6) + local _, _, gem1, gem2, gem3, _ = strsplit(":", itemStringLink, 6) return gem1, gem2, gem3 end end From c6c003f542456b5eb2ac58b633a71b588cbe3e76 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Sun, 14 Dec 2025 04:37:42 +0100 Subject: [PATCH 10/36] change expertise logic --- Modules/Data/Melee.lua | 40 +++++++++------------------------------- 1 file changed, 9 insertions(+), 31 deletions(-) diff --git a/Modules/Data/Melee.lua b/Modules/Data/Melee.lua index f48ce413..4b96c742 100755 --- a/Modules/Data/Melee.lua +++ b/Modules/Data/Melee.lua @@ -233,39 +233,17 @@ function Data:GetExpertise() local expertise, _ = GetExpertise() if ECS.IsSoD then - for _, itemId in pairs(Data.itemsIds.INCREASED_EXPERTISE_2) do - if C_Item.IsEquippedItem(itemId) then - expertise = expertise + 2 - end - end - - for _, itemId in pairs(Data.itemsIds.INCREASED_EXPERTISE_1) do - if C_Item.IsEquippedItem(itemId) then - expertise = expertise + 1 - end - end - - for _, itemId in pairs(Data.itemsIds.TIMEWORN_EXPERTISE) do - if C_Item.IsEquippedItem(itemId) then - for _, t in pairs(Data.itemsIds.TIMEWORN) do - if C_Item.IsEquippedItem(t) then - expertise = expertise + 1 - end - end - break -- no need to check for other rings, you can have only one - end - end - - if Data:HasSetBonusIncreasedExpertise2() then - expertise = expertise + 2 - end - - if Data:HasSetBonusIncreasedExpertise5() then - expertise = expertise + 5 + local timeworn = 0 + for i = 1, 18 do + id, _ = GetInventoryItemID("player", i) + timeworn = timeworn + (Data.itemsTimeworn[id] or 0) end - if classId == Data.DRUID then - for i = 1, 18 do + for i = 1, 18 do + id, _ = GetInventoryItemID("player", i) + expertise = expertise + (Data.itemsIncreaseExpertise[id] or 0) + expertise = expertise + timeworn * (Data.itemsTimewornExpertise[id] or 0) + if classId == Data.DRUID then local itemLink = GetInventoryItemLink("player", i) if itemLink then local enchant = DataUtils:GetEnchantFromItemLink(itemLink) From 8e58240bc0a52074b61a23c26e83ef07636727b2 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Sun, 14 Dec 2025 04:39:17 +0100 Subject: [PATCH 11/36] Update itemsTimewornExpertise values to numeric Changed values in itemsTimewornExpertise from true to 1 for specific item IDs. --- Modules/Data/Constants.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Modules/Data/Constants.lua b/Modules/Data/Constants.lua index d05efa1e..e1c0c18b 100755 --- a/Modules/Data/Constants.lua +++ b/Modules/Data/Constants.lua @@ -194,7 +194,7 @@ Data.itemsIncreaseExpertise = { }, Data.itemsTimeworn = { [233496] = true, - [233505] = true, + [233505] = true, [233506] = true, [233514] = true, [233516] = true, @@ -315,11 +315,11 @@ Data.itemsTimeworn = { [235047] = true, }, Data.itemsTimewornExpertise = { - [234018] = true, - [234022] = true, - [234027] = true, - [234031] = true, - [234035] = true, + [234018] = 1, + [234022] = 1, + [234027] = 1, + [234031] = 1, + [234035] = 1, }, Data.BuffCritReductionAll = { [430432] = 5, -- battle hardened From 4b444f0cd64fca29590cb165011f7a0c998770ae Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Sun, 14 Dec 2025 04:41:42 +0100 Subject: [PATCH 12/36] change count timeworn items logic --- Modules/Data/Melee.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Modules/Data/Melee.lua b/Modules/Data/Melee.lua index 4b96c742..c2410c67 100755 --- a/Modules/Data/Melee.lua +++ b/Modules/Data/Melee.lua @@ -233,10 +233,13 @@ function Data:GetExpertise() local expertise, _ = GetExpertise() if ECS.IsSoD then + -- count timeworn items local timeworn = 0 for i = 1, 18 do id, _ = GetInventoryItemID("player", i) - timeworn = timeworn + (Data.itemsTimeworn[id] or 0) + if Data.itemsTimeworn[id] then + timeworn = timeworn + 1 + end end for i = 1, 18 do From 79ad11f92aa0bf8c49049ab5e29e135e5f4de12d Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Sun, 14 Dec 2025 04:43:40 +0100 Subject: [PATCH 13/36] Fix syntax errors in Constants.lua --- Modules/Data/Constants.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Modules/Data/Constants.lua b/Modules/Data/Constants.lua index e1c0c18b..bc8c8a28 100755 --- a/Modules/Data/Constants.lua +++ b/Modules/Data/Constants.lua @@ -191,7 +191,7 @@ Data.itemsIncreaseExpertise = { [236341] = 1, [237275] = 1, [237512] = 1, -}, +} Data.itemsTimeworn = { [233496] = true, [233505] = true, @@ -313,14 +313,14 @@ Data.itemsTimeworn = { [234962] = true, [234963] = true, [235047] = true, -}, +} Data.itemsTimewornExpertise = { [234018] = 1, [234022] = 1, [234027] = 1, [234031] = 1, [234035] = 1, -}, +} Data.BuffCritReductionAll = { [430432] = 5, -- battle hardened [403816] = 6, -- metamorphosis From e2bffe507f02460a01481a32e19647ae9c2cabc8 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Sun, 14 Dec 2025 04:44:58 +0100 Subject: [PATCH 14/36] make id local --- Modules/Data/Melee.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Modules/Data/Melee.lua b/Modules/Data/Melee.lua index c2410c67..3a925d05 100755 --- a/Modules/Data/Melee.lua +++ b/Modules/Data/Melee.lua @@ -236,14 +236,14 @@ function Data:GetExpertise() -- count timeworn items local timeworn = 0 for i = 1, 18 do - id, _ = GetInventoryItemID("player", i) + local id, _ = GetInventoryItemID("player", i) if Data.itemsTimeworn[id] then timeworn = timeworn + 1 end end for i = 1, 18 do - id, _ = GetInventoryItemID("player", i) + local id, _ = GetInventoryItemID("player", i) expertise = expertise + (Data.itemsIncreaseExpertise[id] or 0) expertise = expertise + timeworn * (Data.itemsTimewornExpertise[id] or 0) if classId == Data.DRUID then From 7fb21dd68fd42b5be61e5d7df9f3e4bfb3be0c7b Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Sun, 14 Dec 2025 04:48:06 +0100 Subject: [PATCH 15/36] Fix indentation in itemsTimeworn table --- Modules/Data/Constants.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Modules/Data/Constants.lua b/Modules/Data/Constants.lua index bc8c8a28..ff0ee9c1 100755 --- a/Modules/Data/Constants.lua +++ b/Modules/Data/Constants.lua @@ -193,9 +193,9 @@ Data.itemsIncreaseExpertise = { [237512] = 1, } Data.itemsTimeworn = { - [233496] = true, - [233505] = true, - [233506] = true, + [233496] = true, + [233505] = true, + [233506] = true, [233514] = true, [233516] = true, [233517] = true, From 327cc9b22472abe271bea402c408f6c6c85b004f Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Sun, 14 Dec 2025 05:38:53 +0100 Subject: [PATCH 16/36] hide expertise only in classic --- Modules/Config/MeleeSection.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/Config/MeleeSection.lua b/Modules/Config/MeleeSection.lua index 8fe976ea..26577c97 100755 --- a/Modules/Config/MeleeSection.lua +++ b/Modules/Config/MeleeSection.lua @@ -92,7 +92,7 @@ function _Config:LoadMeleeSection() desc = function() return i18n("Shows/Hides the expertise value.") end, width = 1.5, hidden = function() - return (not (ECS.IsWotlk or ECS.IsSoD)) + return ECS.IsClassic end, disabled = function() return (not ExtendedCharacterStats.profile.melee.display); end, get = function () return ExtendedCharacterStats.profile.melee.expertise.display; end, From 17a96b2883b3c556774ef2f8e4d117911cae983b Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Tue, 23 Dec 2025 09:01:42 +0100 Subject: [PATCH 17/36] Refactor enchant and item data structures Refactor enchant and item data structures for clarity and organization. --- Modules/Data/Constants.lua | 37 ++++++++++--------------------------- 1 file changed, 10 insertions(+), 27 deletions(-) diff --git a/Modules/Data/Constants.lua b/Modules/Data/Constants.lua index ff0ee9c1..80f327e5 100755 --- a/Modules/Data/Constants.lua +++ b/Modules/Data/Constants.lua @@ -43,28 +43,16 @@ Data.setNames = { WINDHAWK_ARMOR = "Windhawk Armor", } -Data.enchantIds = { - ANIMALISTIC_EXPERTISE = "7875", -- Your melee attacks have 5% less chance to be Dodged or Parried. - BIZNICK_SCOPE = "2523", -- 3% Hit from Biznicks 247x128 Accurascope - BRACER_MANA_REGENERATION = "2565", -- 4 MP5 on bracer - BRILLIANT_MANA_OIL = "2629", -- 12 MP5 - GLYPH_OF_RENEWAL = "3001", -- 7 MP5 from Honor Hold/Thrallmar enchant - INSCRIPTION_OF_FAITH = "2980", -- 4 MP5 from aldor enchant - LESSER_MANA_OIL = "2625", -- 8 MP5 - MINOR_MANA_OIL = "2624", -- 4 MP5 - PROPHETIC_AURA = "2590", -- 4 MP5 for priest ZG Enchant - RESILIENCE_OF_THE_SCOURGE = "2715", -- 5 MP5 Sapphiron shoulder enchant - RESTORE_MANA_PRIME = "3150", -- 6 MP5 on chest +Data.Aura.CritReductionAll = { + [430432] = 5, -- battle hardened + [403816] = 6, -- metamorphosis + [428741] = 5, -- molten armor } - -Data.gemIds = { - FOUR_MP5_GEMS = {"32202"}, - THREE_MP5_GEMS = {"24037"}, - TWO_MP5_GEMS = {"30589", "32225", "24065", "30594", "31865", "32214", "30606", "23121", "24057", "32216", "30603", "30560", "30550"}, - ONE_MP5_GEMS = {"23106", "31864", "28465", "23109"} +Data.Enchant.Ids = { + ANIMALISTIC_EXPERTISE = 7875, -- Your melee attacks have 5% less chance to be Dodged or Parried. + BIZNICK_SCOPE = 2523, -- 3% Hit from Biznicks 247x128 Accurascope } - -Data.itemsIncreaseExpertise = { +Data.Item.IncreaseExpertise = { [233376] = 1, [233397] = 1, [233401] = 1, @@ -192,7 +180,7 @@ Data.itemsIncreaseExpertise = { [237275] = 1, [237512] = 1, } -Data.itemsTimeworn = { +Data.Item.IsTimeworn = { [233496] = true, [233505] = true, [233506] = true, @@ -314,15 +302,10 @@ Data.itemsTimeworn = { [234963] = true, [235047] = true, } -Data.itemsTimewornExpertise = { +Data.Item.TimewornExpertise = { [234018] = 1, [234022] = 1, [234027] = 1, [234031] = 1, [234035] = 1, } -Data.BuffCritReductionAll = { - [430432] = 5, -- battle hardened - [403816] = 6, -- metamorphosis - [428741] = 5, -- molten armor -} From f6d33b8b4022dbc2bf2a906930fe468ddb5ec7b6 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Tue, 23 Dec 2025 09:08:20 +0100 Subject: [PATCH 18/36] wip --- Modules/Data/Melee.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Modules/Data/Melee.lua b/Modules/Data/Melee.lua index 3a925d05..d169571f 100755 --- a/Modules/Data/Melee.lua +++ b/Modules/Data/Melee.lua @@ -237,20 +237,20 @@ function Data:GetExpertise() local timeworn = 0 for i = 1, 18 do local id, _ = GetInventoryItemID("player", i) - if Data.itemsTimeworn[id] then + if Data.Item.IsTimeworn[id] then timeworn = timeworn + 1 end end for i = 1, 18 do local id, _ = GetInventoryItemID("player", i) - expertise = expertise + (Data.itemsIncreaseExpertise[id] or 0) - expertise = expertise + timeworn * (Data.itemsTimewornExpertise[id] or 0) + expertise = expertise + (Data.Item.IncreaseExpertise[id] or 0) + expertise = expertise + timeworn * (Data.Item.TimewornExpertise[id] or 0) if classId == Data.DRUID then local itemLink = GetInventoryItemLink("player", i) if itemLink then local enchant = DataUtils:GetEnchantFromItemLink(itemLink) - if enchant and enchant == Data.enchantIds.ANIMALISTIC_EXPERTISE then + if enchant and enchant == Data.Enchant.Ids.ANIMALISTIC_EXPERTISE then expertise = expertise + 5 end end From b2ba1d53e17489973cb6f7c376ef9e62550919a6 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Tue, 23 Dec 2025 09:16:32 +0100 Subject: [PATCH 19/36] sort --- Modules/Data/Constants.lua | 45 +++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/Modules/Data/Constants.lua b/Modules/Data/Constants.lua index 80f327e5..bed8233b 100755 --- a/Modules/Data/Constants.lua +++ b/Modules/Data/Constants.lua @@ -20,29 +20,6 @@ Data.MAGE = 8 Data.WARLOCK = 9 Data.DRUID = 11 -Data.setNames = { - AUGURS_REGALIA = "Augur's Regalia", - BATTLEGEAR_OF_MIGHT = "Battlegear of Might", - BLOODSOUL_EMBRACE = "Bloodsoul Embrace", - BONESCYTHE_LEATHERS = "Bonescythe Leathers", - DREAMWALKER_GUARDIAN = "Dreamwalker Guardian", - DREADNOUGHTS_BATTLEGEAR = "Dreadnought's Battlegear", - FEL_IRON_CHAIN = "Fel Iron Chain", - FREETHINKERS_ARMOR = "Freethinker's Armor", - GREEN_DRAGON_MAIL = "Green Dragon Mail", - HARUSPEXS_GARB = "Haruspex's Garb", - LIVING_GREEN_DRAGON_MAIL = "Living Green Dragon Mail", - PLAGUEHEART_STITCHINGS = "Plagueheart Stitchings", - REDEMPTION_BULWARK = "Redemption Bulwark", - STORMRAGE_RAIMENT = "Stormrage Raiment", - SYMBOLS_OF_UNENDING_LIFE = "Symbols of Unending Life", - TEN_STORMS = "The Ten Storms", - THE_EARTHSHATTERER = "The Earthshatterer", - THE_EARTHSHATTERER_RESOLVE = "The Earthshatterer Resolve", - VESTMENTS_OF_TRANSCENDENCE = "Vestments of Transcendence", - WINDHAWK_ARMOR = "Windhawk Armor", -} - Data.Aura.CritReductionAll = { [430432] = 5, -- battle hardened [403816] = 6, -- metamorphosis @@ -309,3 +286,25 @@ Data.Item.TimewornExpertise = { [234031] = 1, [234035] = 1, } +Data.setNames = { + AUGURS_REGALIA = "Augur's Regalia", + BATTLEGEAR_OF_MIGHT = "Battlegear of Might", + BLOODSOUL_EMBRACE = "Bloodsoul Embrace", + BONESCYTHE_LEATHERS = "Bonescythe Leathers", + DREAMWALKER_GUARDIAN = "Dreamwalker Guardian", + DREADNOUGHTS_BATTLEGEAR = "Dreadnought's Battlegear", + FEL_IRON_CHAIN = "Fel Iron Chain", + FREETHINKERS_ARMOR = "Freethinker's Armor", + GREEN_DRAGON_MAIL = "Green Dragon Mail", + HARUSPEXS_GARB = "Haruspex's Garb", + LIVING_GREEN_DRAGON_MAIL = "Living Green Dragon Mail", + PLAGUEHEART_STITCHINGS = "Plagueheart Stitchings", + REDEMPTION_BULWARK = "Redemption Bulwark", + STORMRAGE_RAIMENT = "Stormrage Raiment", + SYMBOLS_OF_UNENDING_LIFE = "Symbols of Unending Life", + TEN_STORMS = "The Ten Storms", + THE_EARTHSHATTERER = "The Earthshatterer", + THE_EARTHSHATTERER_RESOLVE = "The Earthshatterer Resolve", + VESTMENTS_OF_TRANSCENDENCE = "Vestments of Transcendence", + WINDHAWK_ARMOR = "Windhawk Armor", +} From 5ca347a68602b562bb98e0b54f24368022de9c04 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Tue, 23 Dec 2025 17:45:35 +0100 Subject: [PATCH 20/36] fixes --- Modules/Data/ItemSets.lua | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Modules/Data/ItemSets.lua b/Modules/Data/ItemSets.lua index 8badf62f..afdd2dcf 100755 --- a/Modules/Data/ItemSets.lua +++ b/Modules/Data/ItemSets.lua @@ -204,8 +204,11 @@ function Data:HasSetBonusIncreasedExpertise5() end function Data:HasSetBonusModifierMP5() - return (ECS.IsClassic and ( - Data:IsSetBonusActive(setNames.GREEN_DRAGON_MAIL, 3) or + local mod = 0 + if (ECS.IsClassic and Data:IsSetBonusActive(setNames.GREEN_DRAGON_MAIL, 3)) then + mod = mod + 0.15 + end + if (ECS.IsClassic and ( (classId == Data.DRUID and Data:IsSetBonusActive(setNames.STORMRAGE_RAIMENT, 3)) or (classId == Data.PRIEST and Data:IsSetBonusActive(setNames.VESTMENTS_OF_TRANSCENDENCE, 3)) )) then From b6b8bcd8250ce25327aaaa06ffcb9e65f3fe091d Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Tue, 23 Dec 2025 17:49:09 +0100 Subject: [PATCH 21/36] Rename HasSetBonusModifierMP5 to GetSetBonusModifierMP5 --- Modules/Data/ItemSets.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Modules/Data/ItemSets.lua b/Modules/Data/ItemSets.lua index afdd2dcf..5f02900c 100755 --- a/Modules/Data/ItemSets.lua +++ b/Modules/Data/ItemSets.lua @@ -203,7 +203,8 @@ function Data:HasSetBonusIncreasedExpertise5() end end -function Data:HasSetBonusModifierMP5() +---@return number +function Data:GetSetBonusModifierMP5() local mod = 0 if (ECS.IsClassic and Data:IsSetBonusActive(setNames.GREEN_DRAGON_MAIL, 3)) then mod = mod + 0.15 From e006ef966615285b113c8e8574fe68df2c033714 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Mon, 29 Dec 2025 01:41:38 +0100 Subject: [PATCH 22/36] restructure tables --- Modules/Data/Constants.lua | 1280 ++++++++++++++++++------------------ 1 file changed, 642 insertions(+), 638 deletions(-) diff --git a/Modules/Data/Constants.lua b/Modules/Data/Constants.lua index 7befc211..a4e49868 100755 --- a/Modules/Data/Constants.lua +++ b/Modules/Data/Constants.lua @@ -20,647 +20,651 @@ Data.MAGE = 8 Data.WARLOCK = 9 Data.DRUID = 11 -Data.Aura = {} -Data.Aura.AllowCastingManaRegeneration = { - [6117] = (ECS.IsWotlk and 0.5 or 0.3), -- Mage Armor rank 1 - [12051] = 1, -- Evocation - [15271] = (ECS.IsWotlk and 0.83 or 0.5), -- Spirit Tap - [18371] = 0.5, -- Soul Siphon - [22782] = (ECS.IsWotlk and 0.5 or 0.3), -- Mage Armor rank 2 - [22783] = (ECS.IsWotlk and 0.5 or 0.3), -- Mage Armor rank 3 - [23684] = 1, -- Aura of the Blue Dragon - [27125] = (ECS.IsWotlk and 0.5 or 0.3), -- Mage Armor rank 4 - [29166] = 1, -- Innervate - [32932] = 1, -- Sun Shield - [38346] = 0.15, -- Meditation - [43023] = 0.5, -- Mage Armor rank 5 - [43024] = 0.5, -- Mage Armor rank 6 - [49307] = 1, -- Full Mana Regen - [49694] = 0.17, -- Improved Spirit Tap 1/2 - [59000] = 0.33, -- Improved Spirit Tap 2/2 - [408261] = 0.5, -- Dreamstate - [412325] = 0.1, -- Enlightenment - [425124] = 1, -- Arcane Surge - [437357] = 1, -- Gneuromantic Meditation - [456195] = 1, -- Innervate - [468466] = 1, -- Unmaking the Simulacrum - [1213422] = 1, -- Aura of the Blue Dragon +Data.Aura = { + AllowCastingManaRegeneration = { + [6117] = (ECS.IsWotlk and 0.5 or 0.3), -- Mage Armor rank 1 + [12051] = 1, -- Evocation + [15271] = (ECS.IsWotlk and 0.83 or 0.5), -- Spirit Tap + [18371] = 0.5, -- Soul Siphon + [22782] = (ECS.IsWotlk and 0.5 or 0.3), -- Mage Armor rank 2, + [22783] = (ECS.IsWotlk and 0.5 or 0.3), -- Mage Armor rank 3 + [23684] = 1, -- Aura of the Blue Dragon + [27125] = (ECS.IsWotlk and 0.5 or 0.3), -- Mage Armor rank 4 + [29166] = 1, -- Innervate + [32932] = 1, -- Sun Shield + [38346] = 0.15, -- Meditation + [43023] = 0.5, -- Mage Armor rank 5 + [43024] = 0.5, -- Mage Armor rank 6 + [49307] = 1, -- Full Mana Regen + [49694] = 0.17, -- Improved Spirit Tap 1/2 + [59000] = 0.33, -- Improved Spirit Tap 2/2 + [408261] = 0.5, -- Dreamstate + [412325] = 0.1, -- Enlightenment + [425124] = 1, -- Arcane Surge + [437357] = 1, -- Gneuromantic Meditation + [456195] = 1, -- Innervate + [468466] = 1, -- Unmaking the Simulacrum + [1213422] = 1, -- Aura of the Blue Dragon + }, + CritReductionAll = { + [30708] = (ECS.IsWotlk and -3 or nil), -- totem of wrath + [403816] = 6, -- metamorphosis + [428741] = 5, -- molten armor + [430432] = 5, -- battle hardened + }, + CritReductionMelee = { + [47241] = 6, -- metamorphosis + [408680] = 6, -- way of earth + }, + CritReductionSpell = { + [17794] = (ECS.IsWotlk and -1 or nil), -- Shadow Mastery 1/5 + [17797] = (ECS.IsWotlk and -3 or nil), -- Shadow Mastery 2/5 + [17798] = (ECS.IsWotlk and -2 or nil), -- Shadow Mastery 3/5 + [17799] = (ECS.IsWotlk and -4 or nil), -- Shadow Mastery 4/5 + [17800] = (ECS.IsWotlk and -5 or nil), -- Shadow Mastery 5/5 + [22959] = (ECS.IsWotlk and -5 or nil), -- Improved Scorch + }, + IsFeralForm = { + [768] = true, -- Cat Form + [5487] = true, -- Bear Form + [9634] = true, -- Dire Bear Form + }, + IsLightningShield = { + [324] = true, -- Lightning Shield rank 1 + [325] = true, -- Lightning Shield rank 2 + [905] = true, -- Lightning Shield rank 3 + [945] = true, -- Lightning Shield rank 4 + [8134] = true, -- Lightning Shield rank 5 + [10431] = true, -- Lightning Shield rank 6 + [10432] = true, -- Lightning Shield rank 7 + [25469] = true, -- Lightning Shield rank 8 + [25472] = true, -- Lightning Shield rank 9 + [26363] = true, -- Lightning Shield + [26364] = true, -- Lightning Shield + [26365] = true, -- Lightning Shield + [26366] = true, -- Lightning Shield + [26367] = true, -- Lightning Shield + [26369] = true, -- Lightning Shield + [26370] = true, -- Lightning Shield + [26371] = true, -- Lightning Shield + [26372] = true, -- Lightning Shield + [27635] = true, -- Lightning Shield + [32642] = true, -- Spore Cloud + [34828] = true, -- Water Shield + [35320] = true, -- Electric Skin + [49278] = true, -- Lightning Shield + [49279] = true, -- Lightning Shield + [49280] = true, -- Lightning Shield rank 10 + [49281] = true, -- Lightning Shield rank 11 + }, + MP5 = { + [430] = 42, -- drink + [431] = 104, -- drink + [432] = 174, -- drink + [833] = 30, -- Green Tea + [1133] = 249, -- drink + [1135] = 332, -- drink + [1137] = 489, -- drink + [2639] = 70, -- food + [10250] = 800, -- drink + [16609] = 10, -- Warchief's Blessing + [18140] = 735, -- Blessed Sunfruit Juice + [18194] = (ECS.IsWotlk and 10 or 8), -- Mana Regeneration + [21172] = 75, -- Grip of Command + [21174] = 50, -- Aura of Battle + [22734] = 700, -- drink + [23698] = 735, -- Alterac Spring Water + [24363] = (ECS.IsWotlk and 15 or 12), -- Mana Regeneration + [24398] = 43, -- Water Shield Rank 1 TBC / 7 WOTLK + [25696] = 735, -- Drink + [25697] = 735, -- Old Enriched Manna Biscuit + [25701] = 75, -- Brain Food + [25703] = 135, -- Brain Food + [25887] = 210, -- Brain Food + [25889] = 300, -- Brain Food + [26261] = 735, -- Drink + [26402] = 735, -- Drink + [26473] = 367, -- drink + [26475] = 551, -- drink + [27089] = 240*5, -- Drink + [28145] = (ECS.IsWotlk and 14 or 11), -- Power of the Guardian + [28509] = (ECS.IsWotlk and 20 or 16), -- Greater Mana Regeneration + [28519] = (ECS.IsWotlk and 31 or 25), -- Flask of Mighty Restoration + [28795] = (ECS.IsWotlk and 35 or 28), -- Holy Power + [28804] = (ECS.IsWotlk and 30 or 24), -- Epiphany + [28820] = (ECS.IsWotlk and 19 or 15), -- Lightning Shield + [28824] = (ECS.IsWotlk and 35 or 28), -- Totemic Power + [29007] = 489, -- Drink + [29039] = 300, -- Fizzy Energy Drink + [31036] = (ECS.IsWotlk and 56 or 45), -- Verdant Flame + [31462] = 12, -- Moonwell Restoration + [32548] = 33, -- Symbol of Hope + [33265] = (ECS.IsWotlk and 10 or 8), -- well fed + [33736] = 50, -- Water Shield Rank 2 TBC / 8 WOTLK + [33774] = 735, -- Underspore Pod + [34291] = 850, -- drink + [34410] = 10, -- Hellscream's Warsong + [35095] = (ECS.IsWotlk and 26 or 21), -- Enlightenment + [37656] = (ECS.IsWotlk and 95 or 76), -- wisdom + [38437] = (ECS.IsWotlk and 19 or 15), -- Totemic Mastery + [40568] = (ECS.IsWotlk and 12 or 8), -- Unstable Flask of the Elder Only works in Blade's Edge Mountains Plateaus and Gruul's Lair. + [40582] = (ECS.IsWotlk and 12 or 8), -- Unstable Flask of the Elder Only works in Blade's Edge Mountains Plateaus and Gruul's Lair. + [41605] = (ECS.IsWotlk and 31 or 25), -- Mighty Restoration of Shattrath Only active in Tempest Keep, Serpentshrine Cavern, Caverns of Time: Mount Hyjal, Black Temple and the Sunwell Plateau. + [41610] = (ECS.IsWotlk and 31 or 25), -- Mighty Restoration of Shattrath Only active in Tempest Keep, Serpentshrine Cavern, Caverns of Time: Mount Hyjal, Black Temple and the Sunwell Plateau. + [42308] = 1250, -- brain food + [42312] = 1200, -- Brain Food + [43154] = 489, -- Drink + [43182] = 428*5, -- Drink + [43183] = 640*5, -- Drink + [43742] = (ECS.IsWotlk and 28 or 22), -- Grace of the Naaru + [44107] = 42, -- Brewfest Drink + [44109] = 104, -- Brewfest Drink + [44110] = 174, -- Brewfest Drink + [44111] = 249, -- Brewfest Drink + [44112] = 332, -- Brewfest Drink + [44113] = 489, -- Brewfest Drink + [44114] = 700, -- Brewfest Drink + [44115] = 1200, -- Brewfest Drink + [44116] = 1200, -- Brewfest Drink + [45019] = 332, -- Holiday Drink + [45020] = 1200, -- Holiday Drink + [46386] = (ECS.IsWotlk and 83 or 66), -- Luminous Bluetail + [46755] = 240, -- drink + [49472] = 240*5, -- Drink Coffee + [49623] = 125, -- Effervescence + [52051] = 91, -- Blessing of Zim'Rhuk within Zul'Drak, Gundrak, and Drak'Tharon Keep. + [52127] = 10, -- Water Shield rank 1 + [52129] = 15, -- Water Shield rank 2 + [52131] = 21, -- Water Shield rank 3 + [52134] = 26, -- Water Shield rank 4 + [52136] = 33, -- Water Shield rank 5 + [52138] = 38, -- Water Shield rank 6 + [52911] = 3200, -- Drink + [53373] = 1200, -- Thunderbrew's Hard Ale + [53764] = 30, -- Mighty Mana Regeneration + [54212] = 45, -- Flask of Pure Mojo + [57073] = 640*5, -- Drink + [57107] = 15, -- Well Fed + [57291] = 15, -- Well Fed + [57334] = 40, -- Well Fed + [57960] = 100, -- Water Shield rank 9 + [59674] = 20, -- Moonshroud Residue + [60520] = 220, -- Spark of Life + [61268] = 2160, -- Mana Regeneration + [61830] = 428*5, -- Drink + [64356] = 3200, -- Drink + [64739] = 272, -- Show of Faith + [65003] = 220, -- Memories of Love + [65363] = 3200, -- Brewfest Drink + [67696] = 16, -- Energized + [67750] = 18, -- Energized + [69560] = 3200, -- Brewfest Drink + [69561] = 3200, -- Brewfest Drink + [71584] = 304, -- Revitalized + [72623] = 489, -- Drink + [355366] = 10, -- Warchief's Blessing + [370548] = 10, -- Skeletal Artifact + [430948] = 8, -- Arcane Recovery + [446396] = 12, -- Atal'ai Mojo of Life. This has no effect outside of Sunken Temple. + [446714] = 1104, -- Drink + [448084] = 12, -- Restless Dreams. The benefits of this flask only apply in areas under the influence of the nightmare. + [460939] = 10, -- Might of Stormwind + [460940] = 10, -- Might of Stormwind + [461632] = 1104, -- Stratholme Holy Water + [468767] = 851, -- drink + [473441] = 10, -- Might of Blackrock + [1213886] = 13, -- Flask of Unyielding Sorrow + [1220542] = 28, -- Holy Power + [1220685] = 28, -- Totemic Power + }, + MP5Tooltip = { + [5677] = (ECS.IsWotlk and 5/2 or nil), -- Mana Spring rank 1 + [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 + [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 + [27142] = 1, -- Blessing of Wisdom rank 7 + [27143] = 1, -- Greater Blessing of Wisdom rank 3 + [48935] = 1, -- Blessing of Wisdom rank 8 + [48936] = 1, -- Blessing of Wisdom rank 9 + [48937] = 1, -- Greater Blessing of Wisdom rank 4 + [48938] = 1, -- Greater Blessing of Wisdom rank 5 + [56521] = 1, -- Blessing of Wisdom + [58775] = 5/2, -- Mana Spring rank 6 + [58776] = 5/2, -- Mana Spring rank 7 + [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 + [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 + [29055] = 0.04*5, -- Refreshing Red Apple + [30024] = 0.2*5, -- Drink + [30254] = 0.05*5, -- Evocation + [30874] = 0.05*5, -- Gift of the Water Spirit + [34074] = 0.04/3*5, -- Aspect of the Viper + [35701] = 0.02/4*5, -- Touch of Shadow + [38549] = 0.03*5, -- Empowerment + [38730] = 0.09/2*5, -- Refreshing Mist + [52067] = 0.02/2*5, -- Aura of Regeneration + [53089] = 0.02*5, -- Worgen's Blood + [53517] = 0.1/3*5, -- Roar of Recovery + [54428] = 0.05/3*5, -- Divine Plea + [57056] = 0.02/5*5, -- Aura of Regeneration + [58026] = 0.1/2*5, -- Blessing of the Crusade + [61011] = 0.15/2*5, -- Improved Brilliance Aura + [74501] = 0.05*5, -- Brilliant Tactics + [74719] = 0.05*5, -- Brilliant Tactics + [74865] = 0.05*5, -- Boon of the Loa + [408510] = 0.02, -- Water Shield + [413083] = 0.15, -- Resilience of Nature + [415058] = 0.05/3*5, -- Guarded by the Light + [415423] = 0.1/3*5, -- Aspect of the Viper + [425294] = 0.06*5, -- Dispersion + [437324] = 0.02*5, -- Deep Slumber + [449879] = 0.06*5, -- Dream Fog + [1226808] = 0.05*5, -- Food + }, + PeriodicallyGiveMana = { + [15604] = 150, -- Second Wind + [15822] = 20, -- Dreamless Sleep + [16191] = 170/3*5, -- Mana Tide + [16599] = 50, -- Blessing of Shahram + [17252] = 22, -- Mark of the Dragon Lord + [17328] = 15, -- Aura of Penitence + [17355] = 230/3*5, -- Mana Tide + [17360] = 290/3*5, -- Mana Tide + [17447] = 375, -- Circle of Flame + [18194] = 8, -- Mana Regeneration + [19634] = 50/3*5, -- Mana Rejuvenation + [21955] = 60, -- Razorlash Root + [23108] = 500, -- Blessing of Nordrassil + [23513] = 2500, -- Essence of the Red + [24268] = 60, -- Mar'li's Brain Boost + [24360] = 875, -- Greater Dreamless Sleep + [24884] = 200, -- Earthen Sigil + [25694] = 3, -- Well Fed + [25941] = 6, -- Well Fed + [26551] = 600, -- Jade Owl + [26600] = 300, -- Emerald Owl + [27996] = 50, -- Spellsurge + [28504] = 1500, -- Major Dreamless Sleep + [29040] = 6, -- Fizzy Energy Drink + [29882] = 875, -- Loose Mana + [31045] = 375, -- Talasite Owl + [35478] = 200, -- Drums of Restoration + [38929] = 400/3*5, -- Fel Mana + [45027] = 750, -- Revitalize + [45052] = 750, -- Evocation + [45860] = 1125, -- Breath: Revitalize + [46785] = 375, -- Seaspray Albatross + [53753] = 4500, -- Nightmare Slumber + [54833] = 450, -- Glyph of Innervate + [55740] = 2500, -- Essence of the Red + [71881] = 300, -- Invigoration + [71941] = 200/3*5, -- Twisted Nightmare + [351358] = 200, -- Greater Drums of Restoration + [434851] = 380, -- Minor Evocation + [435168] = 12, -- Guard of the Innovator + [446088] = 24, -- Leyline Attunement + [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 + [24853] = 5/2, -- Mana Spring + [25290] = ((ECS.IsTbc or ECS.IsWotlk) and nil or 1), -- 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 + }, + SpellCrit = { + [24907] = ((ECS.IsTBC or ECS.IsWotlk) and 5 or nil), -- Moonkin Aura + [29177] = 6, -- Elemental Devastation Rank 2 + [29178] = 9, -- Elemental Devastation Rank 3 + [30165] = 3, -- Elemental Devastation Rank 1 + [30482] = 3, -- Molten Armor + [30708] = 3, -- Totem of Wrath + [51466] = 3, -- Elemental Oath Rank 1 + [51470] = 5, -- Elemental Oath Rank 2 + }, } -Data.Aura.CritReductionAll = { - [30708] = (ECS.IsWotlk and -3 or nil), -- totem of wrath - [403816] = 6, -- metamorphosis - [428741] = 5, -- molten armor - [430432] = 5, -- battle hardened +Data.Enchant = { + BlockValue = { + [2583] = 15, -- Presence of Might + [2653] = 18, -- Enchant Shield - Tough Shield + [2655] = 15, -- Enchant Shield - Shield Block + [3849] = 81, -- Titanium Plating + [7633] = 15, -- Presence of Valor + }, + Ids = { + ANIMALISTIC_EXPERTISE = 7875, -- Your melee attacks have 5% less chance to be Dodged or Parried. + BIZNICK_SCOPE = 2523, -- 3% Hit from Biznicks 247x128 Accurascope + }, + MP5 = { + [2381] = 10, -- Enchant Chest - Greater Mana Restoration + [2565] = 4, -- Enchant Bracer - Mana Regeneration + [2590] = 4, -- Prophetic Aura + [2624] = 4, -- Minor Mana Oil + [2625] = 8, -- Lesser Mana Oil + [2629] = 12, -- Brilliant Mana Oil + [2656] = 4, -- Enchant Boots - Vitality + [2677] = 14, -- Superior Mana Oil + [2679] = 6, -- Enchant Bracer - Restore Mana Prime + [2715] = 4, -- Resilience of the Scourge + [2980] = 4, -- Greater Inscription of Faith + [2992] = 5, -- Inscription of the Oracle + [2993] = 6, -- Greater Inscription of the Oracle + [3001] = 7, -- Glyph of Renewal + [3150] = 6, -- Enchant Chest – Restore Mana Prime + [3244] = 7, -- Enchant Boots - Greater Vitality + [3298] = 19, -- Exceptional Mana Oil + [3807] = 5, -- Inscription of the Crag + [3809] = 8, -- Greater Inscription of the Crag + [3819] = 10, -- Arcanum of Blissful Mending + [3836] = 8, -- Master's Inscription of the Crag + [7099] = 12, -- Blackfathom Mana Oil. This effect only applies within Blackfathom Deeps. + }, } -Data.Aura.CritReductionMelee = { - [47241] = 6, -- metamorphosis - [408680] = 6, -- way of earth +Data.Gem = { + MP5 = { + [23106] = 1, + [23109] = 1, + [23121] = 2, + [24037] = 3, + [24057] = 2, + [24065] = 2, + [28465] = 1, + [30550] = 2, + [30560] = 2, + [30589] = 2, + [30594] = 2, + [30603] = 2, + [30606] = 2, + [31864] = 1, + [31865] = 2, + [32202] = 4, + [32214] = 2, + [32216] = 2, + [32225] = 2, + }, } -Data.Aura.CritReductionSpell = { - [17794] = (ECS.IsWotlk and -1 or nil), -- Shadow Mastery 1/5 - [17797] = (ECS.IsWotlk and -3 or nil), -- Shadow Mastery 2/5 - [17798] = (ECS.IsWotlk and -2 or nil), -- Shadow Mastery 3/5 - [17799] = (ECS.IsWotlk and -4 or nil), -- Shadow Mastery 4/5 - [17800] = (ECS.IsWotlk and -5 or nil), -- Shadow Mastery 5/5 - [22959] = (ECS.IsWotlk and -5 or nil), -- Improved Scorch -} -Data.Aura.IsFeralForm = { - [768] = true, -- Cat Form - [5487] = true, -- Bear Form - [9634] = true, -- Dire Bear Form -} -Data.Aura.IsLightningShield = { - [324] = true, -- Lightning Shield rank 1 - [325] = true, -- Lightning Shield rank 2 - [905] = true, -- Lightning Shield rank 3 - [945] = true, -- Lightning Shield rank 4 - [8134] = true, -- Lightning Shield rank 5 - [10431] = true, -- Lightning Shield rank 6 - [10432] = true, -- Lightning Shield rank 7 - [25469] = true, -- Lightning Shield rank 8 - [25472] = true, -- Lightning Shield rank 9 - [26363] = true, -- Lightning Shield - [26364] = true, -- Lightning Shield - [26365] = true, -- Lightning Shield - [26366] = true, -- Lightning Shield - [26367] = true, -- Lightning Shield - [26369] = true, -- Lightning Shield - [26370] = true, -- Lightning Shield - [26371] = true, -- Lightning Shield - [26372] = true, -- Lightning Shield - [27635] = true, -- Lightning Shield - [32642] = true, -- Spore Cloud - [34828] = true, -- Water Shield - [35320] = true, -- Electric Skin - [49278] = true, -- Lightning Shield - [49279] = true, -- Lightning Shield - [49280] = true, -- Lightning Shield rank 10 - [49281] = true, -- Lightning Shield rank 11 -} -Data.Aura.MP5 = { - [430] = 42, -- drink - [431] = 104, -- drink - [432] = 174, -- drink - [833] = 30, -- Green Tea - [1133] = 249, -- drink - [1135] = 332, -- drink - [1137] = 489, -- drink - [2639] = 70, -- food - [10250] = 800, -- drink - [16609] = 10, -- Warchief's Blessing - [18140] = 735, -- Blessed Sunfruit Juice - [18194] = (ECS.IsWotlk and 10 or 8), -- Mana Regeneration - [21172] = 75, -- Grip of Command - [21174] = 50, -- Aura of Battle - [22734] = 700, -- drink - [23698] = 735, -- Alterac Spring Water - [24363] = (ECS.IsWotlk and 15 or 12), -- Mana Regeneration - [24398] = 43, -- Water Shield Rank 1 TBC / 7 WOTLK - [25696] = 735, -- Drink - [25697] = 735, -- Old Enriched Manna Biscuit - [25701] = 75, -- Brain Food - [25703] = 135, -- Brain Food - [25887] = 210, -- Brain Food - [25889] = 300, -- Brain Food - [26261] = 735, -- Drink - [26402] = 735, -- Drink - [26473] = 367, -- drink - [26475] = 551, -- drink - [27089] = 240*5, -- Drink - [28145] = (ECS.IsWotlk and 14 or 11), -- Power of the Guardian - [28509] = (ECS.IsWotlk and 20 or 16), -- Greater Mana Regeneration - [28519] = (ECS.IsWotlk and 31 or 25), -- Flask of Mighty Restoration - [28795] = (ECS.IsWotlk and 35 or 28), -- Holy Power - [28804] = (ECS.IsWotlk and 30 or 24), -- Epiphany - [28820] = (ECS.IsWotlk and 19 or 15), -- Lightning Shield - [28824] = (ECS.IsWotlk and 35 or 28), -- Totemic Power - [29007] = 489, -- Drink - [29039] = 300, -- Fizzy Energy Drink - [31036] = (ECS.IsWotlk and 56 or 45), -- Verdant Flame - [31462] = 12, -- Moonwell Restoration - [32548] = 33, -- Symbol of Hope - [33265] = (ECS.IsWotlk and 10 or 8), -- well fed - [33736] = 50, -- Water Shield Rank 2 TBC / 8 WOTLK - [33774] = 735, -- Underspore Pod - [34291] = 850, -- drink - [34410] = 10, -- Hellscream's Warsong - [35095] = (ECS.IsWotlk and 26 or 21), -- Enlightenment - [37656] = (ECS.IsWotlk and 95 or 76), -- wisdom - [38437] = (ECS.IsWotlk and 19 or 15), -- Totemic Mastery - [40568] = (ECS.IsWotlk and 12 or 8), -- Unstable Flask of the Elder Only works in Blade's Edge Mountains Plateaus and Gruul's Lair. - [40582] = (ECS.IsWotlk and 12 or 8), -- Unstable Flask of the Elder Only works in Blade's Edge Mountains Plateaus and Gruul's Lair. - [41605] = (ECS.IsWotlk and 31 or 25), -- Mighty Restoration of Shattrath Only active in Tempest Keep, Serpentshrine Cavern, Caverns of Time: Mount Hyjal, Black Temple and the Sunwell Plateau. - [41610] = (ECS.IsWotlk and 31 or 25), -- Mighty Restoration of Shattrath Only active in Tempest Keep, Serpentshrine Cavern, Caverns of Time: Mount Hyjal, Black Temple and the Sunwell Plateau. - [42308] = 1250, -- brain food - [42312] = 1200, -- Brain Food - [43154] = 489, -- Drink - [43182] = 428*5, -- Drink - [43183] = 640*5, -- Drink - [43742] = (ECS.IsWotlk and 28 or 22), -- Grace of the Naaru - [44107] = 42, -- Brewfest Drink - [44109] = 104, -- Brewfest Drink - [44110] = 174, -- Brewfest Drink - [44111] = 249, -- Brewfest Drink - [44112] = 332, -- Brewfest Drink - [44113] = 489, -- Brewfest Drink - [44114] = 700, -- Brewfest Drink - [44115] = 1200, -- Brewfest Drink - [44116] = 1200, -- Brewfest Drink - [45019] = 332, -- Holiday Drink - [45020] = 1200, -- Holiday Drink - [46386] = (ECS.IsWotlk and 83 or 66), -- Luminous Bluetail - [46755] = 240, -- drink - [49472] = 240*5, -- Drink Coffee - [49623] = 125, -- Effervescence - [52051] = 91, -- Blessing of Zim'Rhuk within Zul'Drak, Gundrak, and Drak'Tharon Keep. - [52127] = 10, -- Water Shield rank 1 - [52129] = 15, -- Water Shield rank 2 - [52131] = 21, -- Water Shield rank 3 - [52134] = 26, -- Water Shield rank 4 - [52136] = 33, -- Water Shield rank 5 - [52138] = 38, -- Water Shield rank 6 - [52911] = 3200, -- Drink - [53373] = 1200, -- Thunderbrew's Hard Ale - [53764] = 30, -- Mighty Mana Regeneration - [54212] = 45, -- Flask of Pure Mojo - [57073] = 640*5, -- Drink - [57107] = 15, -- Well Fed - [57291] = 15, -- Well Fed - [57334] = 40, -- Well Fed - [57960] = 100, -- Water Shield rank 9 - [59674] = 20, -- Moonshroud Residue - [60520] = 220, -- Spark of Life - [61268] = 2160, -- Mana Regeneration - [61830] = 428*5, -- Drink - [64356] = 3200, -- Drink - [64739] = 272, -- Show of Faith - [65003] = 220, -- Memories of Love - [65363] = 3200, -- Brewfest Drink - [67696] = 16, -- Energized - [67750] = 18, -- Energized - [69560] = 3200, -- Brewfest Drink - [69561] = 3200, -- Brewfest Drink - [71584] = 304, -- Revitalized - [72623] = 489, -- Drink - [355366] = 10, -- Warchief's Blessing - [370548] = 10, -- Skeletal Artifact - [430948] = 8, -- Arcane Recovery - [446396] = 12, -- Atal'ai Mojo of Life. This has no effect outside of Sunken Temple. - [446714] = 1104, -- Drink - [448084] = 12, -- Restless Dreams. The benefits of this flask only apply in areas under the influence of the nightmare. - [460939] = 10, -- Might of Stormwind - [460940] = 10, -- Might of Stormwind - [461632] = 1104, -- Stratholme Holy Water - [468767] = 851, -- drink - [473441] = 10, -- Might of Blackrock - [1213886] = 13, -- Flask of Unyielding Sorrow - [1220542] = 28, -- Holy Power - [1220685] = 28, -- Totemic Power -} -Data.Aura.MP5Tooltip = { - [5677] = (ECS.IsWotlk and 5/2 or nil), -- Mana Spring rank 1 - [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 - [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 - [27142] = 1, -- Blessing of Wisdom rank 7 - [27143] = 1, -- Greater Blessing of Wisdom rank 3 - [48935] = 1, -- Blessing of Wisdom rank 8 - [48936] = 1, -- Blessing of Wisdom rank 9 - [48937] = 1, -- Greater Blessing of Wisdom rank 4 - [48938] = 1, -- Greater Blessing of Wisdom rank 5 - [56521] = 1, -- Blessing of Wisdom - [58775] = 5/2, -- Mana Spring rank 6 - [58776] = 5/2, -- Mana Spring rank 7 - [58777] = 5/2, -- Mana Spring rank 8 -} -Data.Aura.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 - [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 - [29055] = 0.04*5, -- Refreshing Red Apple - [30024] = 0.2*5, -- Drink - [30254] = 0.05*5, -- Evocation - [30874] = 0.05*5, -- Gift of the Water Spirit - [34074] = 0.04/3*5, -- Aspect of the Viper - [35701] = 0.02/4*5, -- Touch of Shadow - [38549] = 0.03*5, -- Empowerment - [38730] = 0.09/2*5, -- Refreshing Mist - [52067] = 0.02/2*5, -- Aura of Regeneration - [53089] = 0.02*5, -- Worgen's Blood - [53517] = 0.1/3*5, -- Roar of Recovery - [54428] = 0.05/3*5, -- Divine Plea - [57056] = 0.02/5*5, -- Aura of Regeneration - [58026] = 0.1/2*5, -- Blessing of the Crusade - [61011] = 0.15/2*5, -- Improved Brilliance Aura - [74501] = 0.05*5, -- Brilliant Tactics - [74719] = 0.05*5, -- Brilliant Tactics - [74865] = 0.05*5, -- Boon of the Loa - [408510] = 0.02, -- Water Shield - [413083] = 0.15, -- Resilience of Nature - [415058] = 0.05/3*5, -- Guarded by the Light - [415423] = 0.1/3*5, -- Aspect of the Viper - [425294] = 0.06*5, -- Dispersion - [437324] = 0.02*5, -- Deep Slumber - [449879] = 0.06*5, -- Dream Fog - [1226808] = 0.05*5, -- Food -} -Data.Aura.PeriodicallyGiveMana = { - [15604] = 150, -- Second Wind - [15822] = 20, -- Dreamless Sleep - [16191] = 170/3*5, -- Mana Tide - [16599] = 50, -- Blessing of Shahram - [17252] = 22, -- Mark of the Dragon Lord - [17328] = 15, -- Aura of Penitence - [17355] = 230/3*5, -- Mana Tide - [17360] = 290/3*5, -- Mana Tide - [17447] = 375, -- Circle of Flame - [18194] = 8, -- Mana Regeneration - [19634] = 50/3*5, -- Mana Rejuvenation - [21955] = 60, -- Razorlash Root - [23108] = 500, -- Blessing of Nordrassil - [23513] = 2500, -- Essence of the Red - [24268] = 60, -- Mar'li's Brain Boost - [24360] = 875, -- Greater Dreamless Sleep - [24884] = 200, -- Earthen Sigil - [25694] = 3, -- Well Fed - [25941] = 6, -- Well Fed - [26551] = 600, -- Jade Owl - [26600] = 300, -- Emerald Owl - [27996] = 50, -- Spellsurge - [28504] = 1500, -- Major Dreamless Sleep - [29040] = 6, -- Fizzy Energy Drink - [29882] = 875, -- Loose Mana - [31045] = 375, -- Talasite Owl - [35478] = 200, -- Drums of Restoration - [38929] = 400/3*5, -- Fel Mana - [45027] = 750, -- Revitalize - [45052] = 750, -- Evocation - [45860] = 1125, -- Breath: Revitalize - [46785] = 375, -- Seaspray Albatross - [53753] = 4500, -- Nightmare Slumber - [54833] = 450, -- Glyph of Innervate - [55740] = 2500, -- Essence of the Red - [71881] = 300, -- Invigoration - [71941] = 200/3*5, -- Twisted Nightmare - [351358] = 200, -- Greater Drums of Restoration - [434851] = 380, -- Minor Evocation - [435168] = 12, -- Guard of the Innovator - [446088] = 24, -- Leyline Attunement - [462858] = 750, -- Circle of Flame -} -Data.Aura.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 - [24853] = 5/2, -- Mana Spring - [25290] = ((ECS.IsTbc or ECS.IsWotlk) and nil or 1), -- 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 -} -Data.Aura.SpellCrit = { - [24907] = ((ECS.IsTBC or ECS.IsWotlk) and 5 or nil), -- Moonkin Aura - [29177] = 6, -- Elemental Devastation Rank 2 - [29178] = 9, -- Elemental Devastation Rank 3 - [30165] = 3, -- Elemental Devastation Rank 1 - [30482] = 3, -- Molten Armor - [30708] = 3, -- Totem of Wrath - [51466] = 3, -- Elemental Oath Rank 1 - [51470] = 5, -- Elemental Oath Rank 2 -} -Data.Enchant = {} -Data.Enchant.BlockValue = { - [2583] = 15, -- Presence of Might - [2653] = 18, -- Enchant Shield - Tough Shield - [2655] = 15, -- Enchant Shield - Shield Block - [3849] = 81, -- Titanium Plating - [7633] = 15, -- Presence of Valor -} -Data.Enchant.Ids = { - ANIMALISTIC_EXPERTISE = 7875, -- Your melee attacks have 5% less chance to be Dodged or Parried. - BIZNICK_SCOPE = 2523, -- 3% Hit from Biznicks 247x128 Accurascope -} -Data.Enchant.MP5 = { - [2381] = 10, -- Enchant Chest - Greater Mana Restoration - [2565] = 4, -- Enchant Bracer - Mana Regeneration - [2590] = 4, -- Prophetic Aura - [2624] = 4, -- Minor Mana Oil - [2625] = 8, -- Lesser Mana Oil - [2629] = 12, -- Brilliant Mana Oil - [2656] = 4, -- Enchant Boots - Vitality - [2677] = 14, -- Superior Mana Oil - [2679] = 6, -- Enchant Bracer - Restore Mana Prime - [2715] = 4, -- Resilience of the Scourge - [2980] = 4, -- Greater Inscription of Faith - [2992] = 5, -- Inscription of the Oracle - [2993] = 6, -- Greater Inscription of the Oracle - [3001] = 7, -- Glyph of Renewal - [3150] = 6, -- Enchant Chest – Restore Mana Prime - [3244] = 7, -- Enchant Boots - Greater Vitality - [3298] = 19, -- Exceptional Mana Oil - [3807] = 5, -- Inscription of the Crag - [3809] = 8, -- Greater Inscription of the Crag - [3819] = 10, -- Arcanum of Blissful Mending - [3836] = 8, -- Master's Inscription of the Crag - [7099] = 12, -- Blackfathom Mana Oil. This effect only applies within Blackfathom Deeps. -} -Data.Gem = {} -Data.Gem.MP5 = { - [23106] = 1, - [23109] = 1, - [23121] = 2, - [24037] = 3, - [24057] = 2, - [24065] = 2, - [28465] = 1, - [30550] = 2, - [30560] = 2, - [30589] = 2, - [30594] = 2, - [30603] = 2, - [30606] = 2, - [31864] = 1, - [31865] = 2, - [32202] = 4, - [32214] = 2, - [32216] = 2, - [32225] = 2, -} -Data.Item = {} -Data.Item.IncreaseExpertise = { - [233376] = 1, - [233397] = 1, - [233401] = 1, - [233412] = 1, - [233413] = 1, - [233415] = 1, - [233442] = 1, - [233579] = 1, - [233582] = 1, - [233585] = 1, - [233600] = 1, - [233612] = 1, - [233614] = 2, - [233618] = 1, - [233634] = 1, - [233635] = 1, - [233637] = 1, - [233640] = 2, - [233642] = 1, - [233651] = 1, - [233658] = 1, - [233659] = 1, - [233661] = 1, - [233662] = 1, - [233663] = 1, - [233665] = 1, - [233666] = 1, - [233668] = 1, - [233689] = 1, - [233692] = 1, - [233693] = 1, - [233699] = 1, - [233700] = 1, - [233711] = 1, - [233992] = 1, - [234650] = 1, - [234748] = 1, - [234984] = 1, - [234985] = 2, - [235005] = 1, - [235888] = 1, - [236005] = 1, - [236006] = 1, - [236007] = 1, - [236008] = 1, - [236009] = 1, - [236010] = 1, - [236011] = 1, - [236012] = 1, - [236013] = 1, - [236016] = 1, - [236019] = 1, - [236020] = 1, - [236021] = 1, - [236022] = 1, - [236023] = 1, - [236026] = 1, - [236029] = 1, - [236030] = 1, - [236031] = 1, - [236032] = 1, - [236033] = 1, - [236034] = 1, - [236035] = 1, - [236036] = 1, - [236037] = 1, - [236038] = 1, - [236039] = 1, - [236040] = 1, - [236050] = 1, - [236051] = 1, - [236052] = 1, - [236054] = 1, - [236055] = 1, - [236056] = 1, - [236124] = 1, - [236125] = 1, - [236128] = 1, - [236129] = 1, - [236130] = 1, - [236133] = 1, - [236134] = 1, - [236135] = 1, - [236136] = 1, - [236137] = 1, - [236138] = 1, - [236139] = 1, - [236140] = 1, - [236141] = 1, - [236170] = 1, - [236171] = 1, - [236172] = 1, - [236174] = 1, - [236175] = 1, - [236176] = 1, - [236201] = 1, - [236202] = 1, - [236203] = 1, - [236204] = 1, - [236205] = 1, - [236206] = 1, - [236207] = 1, - [236208] = 1, - [236209] = 1, - [236210] = 1, - [236211] = 1, - [236212] = 1, - [236215] = 1, - [236216] = 1, - [236218] = 1, - [236222] = 1, - [236255] = 1, - [236260] = 1, - [236262] = 1, - [236263] = 1, - [236293] = 1, - [236300] = 2, - [236304] = 1, - [236306] = 1, - [236309] = 1, - [236311] = 1, - [236319] = 1, - [236339] = 1, - [236341] = 1, - [237275] = 1, - [237512] = 1, -} -Data.Item.IsTimeworn = { - [233496] = true, - [233505] = true, - [233506] = true, - [233514] = true, - [233516] = true, - [233517] = true, - [233518] = true, - [233520] = true, - [233521] = true, - [233522] = true, - [233523] = true, - [233559] = true, - [233560] = true, - [233561] = true, - [233563] = true, - [233564] = true, - [233566] = true, - [233567] = true, - [233568] = true, - [233573] = true, - [233574] = true, - [233575] = true, - [233577] = true, - [233578] = true, - [233579] = true, - [233582] = true, - [233583] = true, - [233584] = true, - [233590] = true, - [233591] = true, - [233592] = true, - [233593] = true, - [233594] = true, - [233595] = true, - [233598] = true, - [233603] = true, - [233604] = true, - [233607] = true, - [233608] = true, - [233610] = true, - [233611] = true, - [233612] = true, - [233613] = true, - [233614] = true, - [233617] = true, - [233618] = true, - [233619] = true, - [233622] = true, - [233623] = true, - [233624] = true, - [233625] = true, - [233631] = true, - [233632] = true, - [233633] = true, - [233635] = true, - [233637] = true, - [233644] = true, - [233645] = true, - [233646] = true, - [234062] = true, - [234063] = true, - [234064] = true, - [234065] = true, - [234066] = true, - [234068] = true, - [234069] = true, - [234070] = true, - [234071] = true, - [234072] = true, - [234073] = true, - [234075] = true, - [234077] = true, - [234078] = true, - [234081] = true, - [234082] = true, - [234084] = true, - [234087] = true, - [234088] = true, - [234090] = true, - [234091] = true, - [234093] = true, - [234094] = true, - [234095] = true, - [234098] = true, - [234099] = true, - [234100] = true, - [234102] = true, - [234103] = true, - [234105] = true, - [234106] = true, - [234107] = true, - [234108] = true, - [234109] = true, - [234110] = true, - [234111] = true, - [234114] = true, - [234117] = true, - [234120] = true, - [234123] = true, - [234146] = true, - [234147] = true, - [234148] = true, - [234149] = true, - [234150] = true, - [234156] = true, - [234157] = true, - [234161] = true, - [234162] = true, - [234163] = true, - [234164] = true, - [234165] = true, - [234166] = true, - [234167] = true, - [234168] = true, - [234171] = true, - [234173] = true, - [234174] = true, - [234962] = true, - [234963] = true, - [235047] = true, -} -Data.Item.TimewornExpertise = { - [234018] = 1, - [234022] = 1, - [234027] = 1, - [234031] = 1, - [234035] = 1, +Data.Item = { + IncreaseExpertise = { + [233376] = 1, + [233397] = 1, + [233401] = 1, + [233412] = 1, + [233413] = 1, + [233415] = 1, + [233442] = 1, + [233579] = 1, + [233582] = 1, + [233585] = 1, + [233600] = 1, + [233612] = 1, + [233614] = 2, + [233618] = 1, + [233634] = 1, + [233635] = 1, + [233637] = 1, + [233640] = 2, + [233642] = 1, + [233651] = 1, + [233658] = 1, + [233659] = 1, + [233661] = 1, + [233662] = 1, + [233663] = 1, + [233665] = 1, + [233666] = 1, + [233668] = 1, + [233689] = 1, + [233692] = 1, + [233693] = 1, + [233699] = 1, + [233700] = 1, + [233711] = 1, + [233992] = 1, + [234650] = 1, + [234748] = 1, + [234984] = 1, + [234985] = 2, + [235005] = 1, + [235888] = 1, + [236005] = 1, + [236006] = 1, + [236007] = 1, + [236008] = 1, + [236009] = 1, + [236010] = 1, + [236011] = 1, + [236012] = 1, + [236013] = 1, + [236016] = 1, + [236019] = 1, + [236020] = 1, + [236021] = 1, + [236022] = 1, + [236023] = 1, + [236026] = 1, + [236029] = 1, + [236030] = 1, + [236031] = 1, + [236032] = 1, + [236033] = 1, + [236034] = 1, + [236035] = 1, + [236036] = 1, + [236037] = 1, + [236038] = 1, + [236039] = 1, + [236040] = 1, + [236050] = 1, + [236051] = 1, + [236052] = 1, + [236054] = 1, + [236055] = 1, + [236056] = 1, + [236124] = 1, + [236125] = 1, + [236128] = 1, + [236129] = 1, + [236130] = 1, + [236133] = 1, + [236134] = 1, + [236135] = 1, + [236136] = 1, + [236137] = 1, + [236138] = 1, + [236139] = 1, + [236140] = 1, + [236141] = 1, + [236170] = 1, + [236171] = 1, + [236172] = 1, + [236174] = 1, + [236175] = 1, + [236176] = 1, + [236201] = 1, + [236202] = 1, + [236203] = 1, + [236204] = 1, + [236205] = 1, + [236206] = 1, + [236207] = 1, + [236208] = 1, + [236209] = 1, + [236210] = 1, + [236211] = 1, + [236212] = 1, + [236215] = 1, + [236216] = 1, + [236218] = 1, + [236222] = 1, + [236255] = 1, + [236260] = 1, + [236262] = 1, + [236263] = 1, + [236293] = 1, + [236300] = 2, + [236304] = 1, + [236306] = 1, + [236309] = 1, + [236311] = 1, + [236319] = 1, + [236339] = 1, + [236341] = 1, + [237275] = 1, + [237512] = 1, + }, + IsTimeworn = { + [233496] = true, + [233505] = true, + [233506] = true, + [233514] = true, + [233516] = true, + [233517] = true, + [233518] = true, + [233520] = true, + [233521] = true, + [233522] = true, + [233523] = true, + [233559] = true, + [233560] = true, + [233561] = true, + [233563] = true, + [233564] = true, + [233566] = true, + [233567] = true, + [233568] = true, + [233573] = true, + [233574] = true, + [233575] = true, + [233577] = true, + [233578] = true, + [233579] = true, + [233582] = true, + [233583] = true, + [233584] = true, + [233590] = true, + [233591] = true, + [233592] = true, + [233593] = true, + [233594] = true, + [233595] = true, + [233598] = true, + [233603] = true, + [233604] = true, + [233607] = true, + [233608] = true, + [233610] = true, + [233611] = true, + [233612] = true, + [233613] = true, + [233614] = true, + [233617] = true, + [233618] = true, + [233619] = true, + [233622] = true, + [233623] = true, + [233624] = true, + [233625] = true, + [233631] = true, + [233632] = true, + [233633] = true, + [233635] = true, + [233637] = true, + [233644] = true, + [233645] = true, + [233646] = true, + [234062] = true, + [234063] = true, + [234064] = true, + [234065] = true, + [234066] = true, + [234068] = true, + [234069] = true, + [234070] = true, + [234071] = true, + [234072] = true, + [234073] = true, + [234075] = true, + [234077] = true, + [234078] = true, + [234081] = true, + [234082] = true, + [234084] = true, + [234087] = true, + [234088] = true, + [234090] = true, + [234091] = true, + [234093] = true, + [234094] = true, + [234095] = true, + [234098] = true, + [234099] = true, + [234100] = true, + [234102] = true, + [234103] = true, + [234105] = true, + [234106] = true, + [234107] = true, + [234108] = true, + [234109] = true, + [234110] = true, + [234111] = true, + [234114] = true, + [234117] = true, + [234120] = true, + [234123] = true, + [234146] = true, + [234147] = true, + [234148] = true, + [234149] = true, + [234150] = true, + [234156] = true, + [234157] = true, + [234161] = true, + [234162] = true, + [234163] = true, + [234164] = true, + [234165] = true, + [234166] = true, + [234167] = true, + [234168] = true, + [234171] = true, + [234173] = true, + [234174] = true, + [234962] = true, + [234963] = true, + [235047] = true, + }, + TimewornExpertise = { + [234018] = 1, + [234022] = 1, + [234027] = 1, + [234031] = 1, + [234035] = 1, + }, } Data.setNames = { AUGURS_REGALIA = "Augur's Regalia", From 94b05de06f9b12570da6b3dd2a5fb8fdef9115c6 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Mon, 12 Jan 2026 20:59:25 +0100 Subject: [PATCH 23/36] Update MeleeSection.lua --- Modules/Config/MeleeSection.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/Config/MeleeSection.lua b/Modules/Config/MeleeSection.lua index 26577c97..c11abbfd 100755 --- a/Modules/Config/MeleeSection.lua +++ b/Modules/Config/MeleeSection.lua @@ -92,7 +92,7 @@ function _Config:LoadMeleeSection() desc = function() return i18n("Shows/Hides the expertise value.") end, width = 1.5, hidden = function() - return ECS.IsClassic + return not (ECS.IsTbc or ECS.IsWotlk or ECS.IsSod) end, disabled = function() return (not ExtendedCharacterStats.profile.melee.display); end, get = function () return ExtendedCharacterStats.profile.melee.expertise.display; end, From d633f8b6030af0a945ebbdf1dae5a4a91ae45804 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Mon, 12 Jan 2026 21:02:12 +0100 Subject: [PATCH 24/36] Update Constants.lua --- Modules/Data/Constants.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/Data/Constants.lua b/Modules/Data/Constants.lua index de1964d1..78c921a3 100755 --- a/Modules/Data/Constants.lua +++ b/Modules/Data/Constants.lua @@ -723,7 +723,7 @@ Data.setNames = { SYMBOLS_OF_UNENDING_LIFE = "Symbols of Unending Life", TEN_STORMS = "The Ten Storms", THE_EARTHSHATTERER = "The Earthshatterer", - THE_EARTHSHATTERER_RESOLVE = "The Earthshatterer Resolve", + THE_EARTHSHATTERERS_RESOLVE = "The Earthshatterer Resolve", VESTMENTS_OF_TRANSCENDENCE = "Vestments of Transcendence", WINDHAWK_ARMOR = "Windhawk Armor", } From 24e3df633c200599db5bcb7a6d22f1783d8aa265 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Tue, 13 Jan 2026 03:15:33 +0100 Subject: [PATCH 25/36] wip --- Modules/Data/Constants.lua | 40 +++++++++++++++++++------------------- Modules/Stats.lua | 10 +++++++--- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/Modules/Data/Constants.lua b/Modules/Data/Constants.lua index 78c921a3..4466278c 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 @@ -325,19 +325,19 @@ Data.Aura = { [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/Stats.lua b/Modules/Stats.lua index e10820a4..188c2395 100755 --- a/Modules/Stats.lua +++ b/Modules/Stats.lua @@ -215,11 +215,15 @@ _CreateStatInfos = function() _CreateStatInfo(category, category.movementSpeed) category = profile.melee - if ECS.IsWotlk then + if ECS.IsClassic then + if ECS.IsSod then + _CreateStatInfo(category, category.attackPower, category.crit, category.expertise) + else + _CreateStatInfo(category, category.attackPower, category.crit) + end + else _CreateStatInfo(category, category.attackPower, category.crit, category.penetration, category.penetrationRating, category.expertise, category.expertiseRating, category.hasteRating, category.hasteBonus) - else - _CreateStatInfo(category, category.attackPower, category.crit) end if category.display then category = category.hit From 05689ce4a65b2a3682acb862f7a0efa5ac988155 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Mon, 26 Jan 2026 05:20:19 +0100 Subject: [PATCH 26/36] make function more reusable --- Modules/Data/DataUtils.lua | 14 ++++++++++++++ Modules/Data/Melee.lua | 9 +-------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/Modules/Data/DataUtils.lua b/Modules/Data/DataUtils.lua index e8986ed1..e970ccb6 100644 --- a/Modules/Data/DataUtils.lua +++ b/Modules/Data/DataUtils.lua @@ -142,4 +142,18 @@ function DataUtils:GetSocketedGemsFromItemLink(itemLink) return nil end +---@return number +function DataUtils:CountTimewornItems() + local timeworn = 0 + if ECS.IsSoD then + for i = 1, 18 do + local id, _ = GetInventoryItemID("player", i) + if Data.Item.IsTimeworn[id] then + timeworn = timeworn + 1 + end + end + end + return timeworn +end + return DataUtils diff --git a/Modules/Data/Melee.lua b/Modules/Data/Melee.lua index 61fbb40d..6d01d976 100755 --- a/Modules/Data/Melee.lua +++ b/Modules/Data/Melee.lua @@ -239,14 +239,7 @@ function Data:GetExpertise() local expertise, _ = GetExpertise() if ECS.IsSoD then - -- count timeworn items - local timeworn = 0 - for i = 1, 18 do - local id, _ = GetInventoryItemID("player", i) - if Data.Item.IsTimeworn[id] then - timeworn = timeworn + 1 - end - end + local timeworn = DataUtils:CountTimewornItems() for i = 1, 18 do local id, _ = GetInventoryItemID("player", i) From e0b4b3f58c6955ed3c681f80ad3854171bac62ab Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Mon, 26 Jan 2026 17:59:00 +0100 Subject: [PATCH 27/36] rework conditional MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Björn Heiß --- Modules/Config/MeleeSection.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/Config/MeleeSection.lua b/Modules/Config/MeleeSection.lua index cdbfa050..c72a1a3f 100755 --- a/Modules/Config/MeleeSection.lua +++ b/Modules/Config/MeleeSection.lua @@ -92,7 +92,7 @@ function _Config:LoadMeleeSection() desc = function() return i18n("Shows/Hides the expertise value.") end, width = 1.5, hidden = function() - return not (ECS.IsTbc or ECS.IsWotlk or ECS.IsSod) + return ECS.IsClassic and (not ECS.IsSoD) end, disabled = function() return (not ExtendedCharacterStats.profile.melee.display); end, get = function () return ExtendedCharacterStats.profile.melee.expertise.display; end, From 2c617ff00e4d2f0fb2632082a1fcabf10ad9c310 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Sat, 14 Feb 2026 02:23:46 +0100 Subject: [PATCH 28/36] revert --- Modules/Profile.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/Profile.lua b/Modules/Profile.lua index cc6e2f5c..2739d369 100755 --- a/Modules/Profile.lua +++ b/Modules/Profile.lua @@ -127,7 +127,7 @@ local function GetDefaultStatsProfile() textColor = colors.ATTACK_SPEED_SECONDARY, statColor = colors.ATTACK_SPEED_PRIMARY, }, - expertise = {display = true, refName = "Expertise", text = "Expertise"}, + expertise = {display = true, isTbcOnly = true, refName = "Expertise", text = "Expertise"}, expertiseRating = {display = true, isTbcOnly = true, refName = "ExpertiseRating", text = "Expertise Rating"}, hasteRating = { display = true, From bc7c4df969c0cfbff8f59e74c214b83ec3cc5cb1 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Tue, 24 Feb 2026 20:25:01 +0100 Subject: [PATCH 29/36] add migration --- Modules/Migration.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Modules/Migration.lua b/Modules/Migration.lua index 0f1bf19b..81bcec07 100644 --- a/Modules/Migration.lua +++ b/Modules/Migration.lua @@ -15,6 +15,8 @@ function Migration:ToLatestProfileVersion(profileVersion) return end + local defaultProfile = Profile:GetDefaultProfile() + if profileVersion < 24 then ExtendedCharacterStats.profile.defense.resilienceRating = ExtendedCharacterStats.profile.defense.resilience ExtendedCharacterStats.profile.defense.resilience = nil @@ -22,4 +24,8 @@ function Migration:ToLatestProfileVersion(profileVersion) if profileVersion < 25 then ExtendedCharacterStats.profile.defense.resilience = nil end + if profileVersion < 26 then + ExtendedCharacterStats.profile.melee.expertise = (ECS.IsClassic and not ECS.IsSoD) and nil or defaultProfile.profile.melee.expertise + ExtendedCharacterStats.profile.melee.expertiseRating = ECS.IsClassic and nil or defaultProfile.profile.melee.expertiseRating + end end From 635271ca1315d97c23afddced9f175834d84c2e7 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Tue, 24 Feb 2026 20:30:28 +0100 Subject: [PATCH 30/36] profile number --- Modules/Profile.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/Profile.lua b/Modules/Profile.lua index 2a2152fe..fda4c91f 100755 --- a/Modules/Profile.lua +++ b/Modules/Profile.lua @@ -6,7 +6,7 @@ local Utils = ECSLoader:ImportModule("Utils") ---@return number function Profile.GetProfileVersion() - return 25 + return 26 end ---@return ECSProfile From fb41a21419bb84e196d4391ff27048ba9d1a85a4 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Mon, 2 Mar 2026 22:29:51 +0100 Subject: [PATCH 31/36] revert --- Modules/Migration.lua | 4 ++-- Modules/Stats.lua | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Modules/Migration.lua b/Modules/Migration.lua index 81bcec07..915517be 100644 --- a/Modules/Migration.lua +++ b/Modules/Migration.lua @@ -25,7 +25,7 @@ function Migration:ToLatestProfileVersion(profileVersion) ExtendedCharacterStats.profile.defense.resilience = nil end if profileVersion < 26 then - ExtendedCharacterStats.profile.melee.expertise = (ECS.IsClassic and not ECS.IsSoD) and nil or defaultProfile.profile.melee.expertise - ExtendedCharacterStats.profile.melee.expertiseRating = ECS.IsClassic and nil or defaultProfile.profile.melee.expertiseRating + ExtendedCharacterStats.profile.melee.expertise = defaultProfile.profile.melee.expertise + ExtendedCharacterStats.profile.melee.expertiseRating = defaultProfile.profile.melee.expertiseRating end end diff --git a/Modules/Stats.lua b/Modules/Stats.lua index ea53368b..7d3f7220 100755 --- a/Modules/Stats.lua +++ b/Modules/Stats.lua @@ -220,7 +220,7 @@ _CreateStatInfos = function() ECS.IsWotlk and category.penetrationRating or nil, (not ECS.IsClassic) and category.penetration or nil, (not ECS.IsClassic) and category.expertiseRating or nil, - (ECS.IsClassic and not ECS.IsSoD) and nil or category.expertise, + ((not ECS.IsClassic) or ECS.IsSoD) and category.expertise or nil, (not ECS.IsClassic) and category.hasteRating or nil, (not ECS.IsClassic) and category.hasteBonus or nil ) From 5cee9c612351189938eddb47406362771758c26b Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Fri, 6 Mar 2026 03:09:42 +0100 Subject: [PATCH 32/36] more stuff --- Modules/Data/Constants.lua | 588 +++++++++++++++++++++---------------- 1 file changed, 337 insertions(+), 251 deletions(-) diff --git a/Modules/Data/Constants.lua b/Modules/Data/Constants.lua index 5fdfb7a2..d7b0c6a5 100755 --- a/Modules/Data/Constants.lua +++ b/Modules/Data/Constants.lua @@ -523,254 +523,340 @@ Data.Gem = { } Data.Item = { IncreaseExpertise = { - [233376] = 1, - [233397] = 1, - [233401] = 1, - [233412] = 1, - [233413] = 1, - [233415] = 1, - [233442] = 1, - [233579] = 1, - [233582] = 1, - [233585] = 1, - [233600] = 1, - [233612] = 1, - [233614] = 2, - [233618] = 1, - [233634] = 1, - [233635] = 1, - [233637] = 1, - [233640] = 2, - [233642] = 1, - [233651] = 1, - [233658] = 1, - [233659] = 1, - [233661] = 1, - [233662] = 1, - [233663] = 1, - [233665] = 1, - [233666] = 1, - [233668] = 1, - [233689] = 1, - [233692] = 1, - [233693] = 1, - [233699] = 1, - [233700] = 1, - [233711] = 1, - [233992] = 1, - [234650] = 1, - [234748] = 1, - [234984] = 1, - [234985] = 2, - [235005] = 1, - [235888] = 1, - [236005] = 1, - [236006] = 1, - [236007] = 1, - [236008] = 1, - [236009] = 1, - [236010] = 1, - [236011] = 1, - [236012] = 1, - [236013] = 1, - [236016] = 1, - [236019] = 1, - [236020] = 1, - [236021] = 1, - [236022] = 1, - [236023] = 1, - [236026] = 1, - [236029] = 1, - [236030] = 1, - [236031] = 1, - [236032] = 1, - [236033] = 1, - [236034] = 1, - [236035] = 1, - [236036] = 1, - [236037] = 1, - [236038] = 1, - [236039] = 1, - [236040] = 1, - [236050] = 1, - [236051] = 1, - [236052] = 1, - [236054] = 1, - [236055] = 1, - [236056] = 1, - [236124] = 1, - [236125] = 1, - [236128] = 1, - [236129] = 1, - [236130] = 1, - [236133] = 1, - [236134] = 1, - [236135] = 1, - [236136] = 1, - [236137] = 1, - [236138] = 1, - [236139] = 1, - [236140] = 1, - [236141] = 1, - [236170] = 1, - [236171] = 1, - [236172] = 1, - [236174] = 1, - [236175] = 1, - [236176] = 1, - [236201] = 1, - [236202] = 1, - [236203] = 1, - [236204] = 1, - [236205] = 1, - [236206] = 1, - [236207] = 1, - [236208] = 1, - [236209] = 1, - [236210] = 1, - [236211] = 1, - [236212] = 1, - [236215] = 1, - [236216] = 1, - [236218] = 1, - [236222] = 1, - [236255] = 1, - [236260] = 1, - [236262] = 1, - [236263] = 1, - [236293] = 1, - [236300] = 2, - [236304] = 1, - [236306] = 1, - [236309] = 1, - [236311] = 1, - [236319] = 1, - [236339] = 1, - [236341] = 1, - [237275] = 1, - [237512] = 1, + [233376] = 1, -- Conqueror's Spaulders + [233397] = 1, -- Avenger's Breastplate + [233401] = 1, -- Avenger's Pauldrons + [233412] = 1, -- Genesis Helm + [233413] = 1, -- Genesis Shoulderpads + [233415] = 1, -- Genesis Vest + [233442] = 1, -- Sickle of Unyielding Strength + [233579] = 1, -- Gloves of Enforcement + [233582] = 1, -- Gauntlets of Steadfast Determination + [233585] = 1, -- Ancient Qiraji Ripper + [233600] = 1, -- Ring of the Qiraji Fury + [233612] = 1, -- Qiraji Execution Bracers + [233614] = 2, -- Royal Qiraji Belt + [233618] = 1, -- Gloves of the Hidden Temple + [233634] = 1, -- Death's Sting + [233635] = 1, -- Belt of Never-ending Agony + [233637] = 1, -- Gauntlets of Annihilation + [233640] = 2, -- Dark Edge of Insanity + [233642] = 1, -- Mark of C'Thun + [233651] = 1, -- Conqueror's Cuirass + [233658] = 1, -- Conqueror's Pauldrons + [233659] = 1, -- Deathdealer's Chestguard + [233661] = 1, -- Deathdealer's Visor + [233662] = 1, -- Deathdealer's Pants + [233663] = 1, -- Deathdealer's Pauldrons + [233665] = 1, -- Striker's Treads + [233666] = 1, -- Striker's Visor + [233668] = 1, -- Striker's Spaulders + [233689] = 1, -- Avenger's Spaulders + [233692] = 1, -- Avenger's Great Helm + [233693] = 1, -- Avenger's Chestguard + [233699] = 1, -- Stormcaller's Breastplate + [233700] = 1, -- Stormcaller's Crown + [233711] = 1, -- Genesis Armor + [233992] = 1, -- Lodestone of Retaliation + [234650] = 1, -- Ancient Qiraji Ripper + [234748] = 1, -- Deeprock Bracers + [234984] = 1, -- Death's Sting + [234985] = 2, -- Dark Edge of Insanity + [235005] = 1, -- Sickle of Unyielding Strength + [235888] = 1, -- Clobberclub + [236005] = 1, -- Dreadnaught Breastplate + [236006] = 1, -- Dreadnaught Legplates + [236007] = 1, -- Dreadnaught Helmet + [236008] = 1, -- Dreadnaught Pauldrons + [236009] = 1, -- Dreadnaught Sabatons + [236010] = 1, -- Dreadnaught Gauntlets + [236011] = 1, -- Dreadnaught Waistguard + [236012] = 1, -- Dreadnaught Bracers + [236013] = 1, -- Ring of the Dreadnaught + [236016] = 1, -- Dreadnaught Horns + [236019] = 1, -- Dreadnaught Grips + [236020] = 1, -- Dreadnaught Belt + [236021] = 1, -- Dreadnaught Wrists + [236022] = 1, -- Band of the Dreadnaught + [236023] = 1, -- Bonescythe Breastplate + [236026] = 1, -- Bonescythe Pauldrons + [236029] = 1, -- Bonescythe Waistguard + [236030] = 1, -- Bonescythe Bracers + [236031] = 1, -- Bonescythe Ring + [236032] = 1, -- Bonescythe Belt + [236033] = 1, -- Bonescythe Treads + [236034] = 1, -- Bonescythe Band + [236035] = 1, -- Bonescythe Mantle + [236036] = 1, -- Bonescythe Leggings + [236037] = 1, -- Bonescythe Mask + [236038] = 1, -- Bonescythe Grips + [236039] = 1, -- Bonescythe Chestguard + [236040] = 1, -- Bonescythe Wristguards + [236050] = 1, -- Cryptstalker Vambraces + [236051] = 1, -- Cryptstalker Belt + [236052] = 1, -- Cryptstalker Pauldrons + [236054] = 1, -- Cryptstalker Visor + [236055] = 1, -- Cryptstalker Gauntlets + [236056] = 1, -- Band of the Cryptstalker + [236124] = 1, -- Redemption Vambraces + [236125] = 1, -- Redemption Belt + [236128] = 1, -- Redemption Helmet + [236129] = 1, -- Redemption Gloves + [236130] = 1, -- Band of Redemption + [236133] = 1, -- Redemption Bracers + [236134] = 1, -- Redemption Waistguard + [236135] = 1, -- Redemption Pauldrons + [236136] = 1, -- Redemption Legplates + [236137] = 1, -- Redemption Crown + [236138] = 1, -- Redemption Gauntlets + [236139] = 1, -- Loop of Redemption + [236140] = 1, -- Redemption Sabatons + [236141] = 1, -- Redemption Chestguard + [236170] = 1, -- Earthshatter Vambraces + [236171] = 1, -- Earthshatter Bel,t + [236172] = 1, -- Earthshatter Epaulets + [236174] = 1, -- Earthshatter Helmet + [236175] = 1, -- Earthshatter Grips + [236176] = 1, -- Signet of the Earthshatterer + [236201] = 1, -- Dreamwalker Bracers + [236202] = 1, -- Dreamwalker Waistguard + [236203] = 1, -- Dreamwalker Pauldrons + [236204] = 1, -- Dreamwalker Leggings + [236205] = 1, -- Dreamwalker Headdress + [236206] = 1, -- Dreamwalker Gauntlets + [236207] = 1, -- Loop of the Dreamwalker + [236208] = 1, -- Dreamwalker Sabatons + [236209] = 1, -- Dreamwalker Armor + [236210] = 1, -- Dreamwalker Wraps + [236211] = 1, -- Dreamwalker Sash + [236212] = 1, -- Dreamwalker Shoulderpads + [236215] = 1, -- Dreamwalker Grips + [236216] = 1, -- Signet of the Dreamwalker + [236218] = 1, -- Dreamwalker Vest + [236222] = 1, -- Ghoul Skin Tunic + [236255] = 1, -- Wristguards of Vengeance + [236260] = 1, -- Icebane Pauldrons + [236262] = 1, -- Polar Shoulder Pads + [236263] = 1, -- Widow's Remorse + [236293] = 1, -- Toxin Injector + [236300] = 2, -- Gluth's Missing Collar + [236304] = 1, -- Plated Abomination Ribcage + [236306] = 1, -- The Castigator + [236309] = 1, -- Girdle of the Mentor + [236311] = 1, -- Signet of the Fallen Defender + [236319] = 1, -- Leggings of Apocalypse + [236339] = 1, -- Gressil, Dawn of Ruin + [236341] = 1, -- The Hungering Cold + [237275] = 1, -- Icebane Helmet + [237512] = 1, -- Blade of Inquisition + [238273] = 1, -- Scarlet Infiltrator's Shoulderpads + [238274] = 1, -- Scarlet Infiltrator's Vest + [238278] = 1, -- Scarlet Infiltrator's Trousers + [238290] = 1, -- Scarlet Soldier's Chestplate + [238294] = 1, -- Scarlet Soldier's Legplates + [238961] = 1, -- Caladbolg + [239060] = 1, -- Will of the Mountain + [239301] = 2, -- Corrupted Ashbringer + [239514] = 1, -- Lightbreaker Grips + [239517] = 1, -- Lightbreaker Greathelm + [239519] = 1, -- Lightbreaker Cuirass + [239520] = 1, -- Lightbreaker Bracers + [239521] = 1, -- Lightbreaker Waistguard + [239522] = 1, -- Lightbreaker Gauntlets + [239523] = 1, -- Lightbreaker Sabatons + [239524] = 1, -- Lightbreaker Pauldrons + [239525] = 1, -- Lightbreaker Helmet + [239526] = 1, -- Lightbreaker Legplates + [239527] = 1, -- Lightbreaker Breastplate + [239531] = 1, -- Dawnstalker Gauntlets + [239535] = 1, -- Dawnstalker Belt + [239536] = 1, -- Dawnstalker Vambraces + [239547] = 1, -- Duskwraith Wristguards + [239548] = 1, -- Duskwraith Chestguard + [239549] = 1, -- Duskwraith Grips + [239550] = 1, -- Duskwraith Mask + [239551] = 1, -- Duskwraith Leggings + [239552] = 1, -- Duskwraith Mantle + [239553] = 1, -- Duskwraith Treads + [239554] = 1, -- Duskwraith Belt + [239555] = 1, -- Duskwraith Bracers + [239556] = 1, -- Duskwraith Waistguard + [239559] = 1, -- Duskwraith Pauldrons + [240023] = 1, -- Inquisition Vambraces + [240024] = 1, -- Inquisition Belt + [240025] = 1, -- Inquisition Shoulderplates + [240027] = 1, -- Inquisition Helmet + [240028] = 1, -- Inquisition Gloves + [240030] = 1, -- Inquisition Breastplate + [240031] = 1, -- Inquisition Bracers + [240032] = 1, -- Inquisition Waistguard + [240033] = 1, -- Inquisition Pauldrons + [240034] = 1, -- Inquisition Legplates + [240035] = 1, -- Inquisition Crown + [240036] = 1, -- Inquisition Gauntlets + [240037] = 1, -- Inquisition Sabatons + [240038] = 1, -- Inquisition Chestguard + [240060] = 1, -- Waywatcher Wraps + [240061] = 1, -- Waywatcher Sash + [240063] = 1, -- Waywatcher Trousers + [240065] = 1, -- Waywatcher Grips + [240066] = 1, -- Waywatcher Stompers + [240076] = 1, -- Waywatcher Bracers + [240077] = 1, -- Waywatcher Waistguard + [240078] = 1, -- Waywatcher Pauldrons + [240079] = 1, -- Waywatcher Leggings + [240080] = 1, -- Waywatcher Headdress + [240081] = 2, -- Waywatcher Gauntlets + [240083] = 1, -- Waywatcher Armor + [240131] = 2, -- Soulcrusher Helmet + [240135] = 1, -- Soulcrusher Epaulets + [240136] = 2, -- Soulcrusher Belt + [240841] = 2, -- High Commander's Guard + [240842] = 2, -- Scarlet Rotbringer + [240850] = 1, -- Lightfist Hammer + [240922] = 1, -- Deception + [240923] = 1, -- Duplicity + [241022] = 1, -- Dawnbringer's Cloak + [241027] = 1, -- Shield Warden's Guard + [241038] = 2, -- Sir Dornel's Didgeridoo + [241074] = 1, -- Helm of the Red Crusade + [241162] = 2, -- Sunblessed Leathers + [241164] = 1, -- Scrapped Argent Leathers + [241166] = 1, -- Dawnstripped Bands + [241172] = 1, -- Caldoran's Locked Gauntlets + [241178] = 1, -- Stalwart Pain Plate + [241180] = 1, -- Lightscale Leggings + [241185] = 1, -- Bear Training Boots + [241187] = 2, -- Crimson Wartreads + [244460] = 1, -- Caladbolg + [246055] = 1, -- Inquisition Grips + [246056] = 1, -- Inquisition Armbraces + [246059] = 1, -- Inquisition Cord + [246060] = 1, -- Inquisition Cuirass + [246061] = 1, -- Inquisition Epaulets + [246062] = 1, -- Inquisition Faceguard }, IsTimeworn = { - [233496] = true, - [233505] = true, - [233506] = true, - [233514] = true, - [233516] = true, - [233517] = true, - [233518] = true, - [233520] = true, - [233521] = true, - [233522] = true, - [233523] = true, - [233559] = true, - [233560] = true, - [233561] = true, - [233563] = true, - [233564] = true, - [233566] = true, - [233567] = true, - [233568] = true, - [233573] = true, - [233574] = true, - [233575] = true, - [233577] = true, - [233578] = true, - [233579] = true, - [233582] = true, - [233583] = true, - [233584] = true, - [233590] = true, - [233591] = true, - [233592] = true, - [233593] = true, - [233594] = true, - [233595] = true, - [233598] = true, - [233603] = true, - [233604] = true, - [233607] = true, - [233608] = true, - [233610] = true, - [233611] = true, - [233612] = true, - [233613] = true, - [233614] = true, - [233617] = true, - [233618] = true, - [233619] = true, - [233622] = true, - [233623] = true, - [233624] = true, - [233625] = true, - [233631] = true, - [233632] = true, - [233633] = true, - [233635] = true, - [233637] = true, - [233644] = true, - [233645] = true, - [233646] = true, - [234062] = true, - [234063] = true, - [234064] = true, - [234065] = true, - [234066] = true, - [234068] = true, - [234069] = true, - [234070] = true, - [234071] = true, - [234072] = true, - [234073] = true, - [234075] = true, - [234077] = true, - [234078] = true, - [234081] = true, - [234082] = true, - [234084] = true, - [234087] = true, - [234088] = true, - [234090] = true, - [234091] = true, - [234093] = true, - [234094] = true, - [234095] = true, - [234098] = true, - [234099] = true, - [234100] = true, - [234102] = true, - [234103] = true, - [234105] = true, - [234106] = true, - [234107] = true, - [234108] = true, - [234109] = true, - [234110] = true, - [234111] = true, - [234114] = true, - [234117] = true, - [234120] = true, - [234123] = true, - [234146] = true, - [234147] = true, - [234148] = true, - [234149] = true, - [234150] = true, - [234156] = true, - [234157] = true, - [234161] = true, - [234162] = true, - [234163] = true, - [234164] = true, - [234165] = true, - [234166] = true, - [234167] = true, - [234168] = true, - [234171] = true, - [234173] = true, - [234174] = true, - [234962] = true, - [234963] = true, - [235047] = true, + [233496] = true, -- Barrage Shoulders + [233505] = true, -- Leggings of Immersion + [233506] = true, -- Beetle Scaled Wristguards + [233514] = true, -- Boots of the Unwavering Will + [233516] = true, -- Breastplate of Annihilation + [233517] = true, -- Boots of the Redeemed Prophecy + [233518] = true, -- Boots of the Fallen Prophet + [233520] = true, -- Robes of the Triumvirate + [233521] = true, -- Ternary Mantle + [233522] = true, -- Guise of the Devourer + [233523] = true, -- Triad Girdle + [233559] = true, -- Gloves of Ebru + [233560] = true, -- Ooze-ridden Gauntlets + [233561] = true, -- Boots of the Fallen Hero + [233563] = true, -- Mantle of Phrenic Power + [233564] = true, -- Bile-Covered Gauntlets + [233566] = true, -- Mantle of the Desert's Fury + [233567] = true, -- Mantle of the Desert Crusade + [233568] = true, -- Vest of Swift Execution + [233573] = true, -- Recomposed Boots + [233574] = true, -- Leggings of the Festering Swarm + [233575] = true, -- Robes of the Battleguard + [233577] = true, -- Thick Qirajihide Belt + [233578] = true, -- Creeping Vine Helm + [233579] = true, -- Gloves of Enforcement + [233582] = true, -- Gauntlets of Steadfast Determination + [233583] = true, -- Legplates of Blazing Light + [233584] = true, -- Scaled Leggings of Qiraji Fury + [233590] = true, -- Hive Tunneler's Boots + [233591] = true, -- Silithid Carapace Chestguard + [233592] = true, -- Mantle of Wicked Revenge + [233593] = true, -- Pauldrons of the Unrelenting + [233594] = true, -- Robes of the Guardian Saint + [233595] = true, -- Scaled Sand Reaver Leggings + [233598] = true, -- Slime-coated Leggings + [233603] = true, -- Gauntlets of the Righteous Champion + [233604] = true, -- Gauntlets of Kalimdor + [233607] = true, -- Gloves of the Messiah + [233608] = true, -- Wasphide Gauntlets + [233610] = true, -- Hive Defiler Wristguards + [233611] = true, -- Boots of Epiphany + [233612] = true, -- Qiraji Execution Bracers + [233613] = true, --Vek'lor's Gloves of Devastation + [233614] = true, -- Royal Qiraji Belt + [233617] = true, -- Bracelets of Royal Redemption + [233618] = true, -- Gloves of the Hidden Temple + [233619] = true, -- Regenerating Belt of Vek'nilash + [233622] = true, -- Grasp of the Fallen Emperor + [233623] = true, -- Belt of the Fallen Emperor + [233624] = true, -- Don Rigoberto's Lost Hat + [233625] = true, -- Burrower Bracers + [233631] = true, -- Dark Storm Gauntlets + [233632] = true, -- Grasp of the Old God + [233633] = true, -- Eyestalk Waist Cord + [233635] = true, -- Belt of Never-ending Agony + [233637] = true, -- Gauntlets of Annihilation + [233644] = true, -- Garb of Royal Ascension + [233645] = true, -- Gloves of the Immortal + [233646] = true, -- Gloves of the Redeemed Prophecy + [234062] = true, -- Vestments of the Shifting Sands + [234063] = true, -- Belt of the Sand Reaver + [234064] = true, -- Belt of the Inquisition + [234065] = true, -- Sand Reaver Wristguards + [234066] = true, -- Toughened Silithid Hide Gloves + [234068] = true, -- Boots of the Vanguard + [234069] = true, -- Boots of the Qiraji General + [234070] = true, -- Bracers of Qiraji Command + [234071] = true, -- Legplates of the Qiraji Command + [234072] = true, -- Southwind's Grasp + [234073] = true, -- Dustwind Turban + [234075] = true, -- Gauntlets of the Immovable + [234077] = true, -- Thick Silithid Chestguard + [234078] = true, -- Chitinous Shoulderguards + [234081] = true, -- Gauntlets of Southwind + [234082] = true, -- Mantle of Maz'Nadir + [234084] = true, -- Southwind Helm + [234087] = true, -- Obsidian Scaled Leggings + [234088] = true, -- Legplates of the Destroyer + [234090] = true, -- Gloves of the Swarm + [234091] = true, -- Slimy Scaled Gauntlets + [234093] = true, -- Quicksand Waders + [234094] = true, -- Scaled Bracers of the Gorger + [234095] = true, -- Slime Kickers + [234098] = true, -- Boots of the Desert Protector + [234099] = true, -- Boots of the Fiery Sands + [234100] = true, -- Helm of Regrowth + [234102] = true, -- Scaled Silithid Gauntlets + [234103] = true, -- Bracers of Brutality + [234105] = true, -- Gauntlets of New Life + [234106] = true, -- Gloves of Dark Wisdom + [234107] = true, -- Helm of Domination + [234108] = true, -- Leggings of the Black Blizzard + [234109] = true, -- Mantle of the Horusath + [234110] = true, -- Ossirian's Binding + [234111] = true, -- Runic Stone Shoulders + [234114] = true, -- Shackles of the Unscarred + [234117] = true, -- Treads of the Wandering Nomad + [234120] = true, -- Helm of the Holy Avenger + [234123] = true, -- Coif of Elemental Fury + [234146] = true, -- Acid Inscribed Greaves + [234147] = true, -- Ancient Corroded Leggings + [234148] = true, -- Dragonbone Wristguards + [234149] = true, -- Dragonspur Wraps + [234150] = true, -- Gloves of Delusional Power + [234156] = true, -- Boots of the Endless Moor + [234157] = true, -- Circlet of Restless Dreams + [234161] = true, -- Belt of the Dark Bog + [234162] = true, -- Black Bark Wristbands + [234163] = true, -- Dark Heart Pants + [234164] = true, -- Deviate Growth Cap + [234165] = true, -- Gauntlets of the Shining Light + [234166] = true, -- Malignant Footguards + [234167] = true, -- Boots of Fright + [234168] = true, -- Mendicant's Slippers + [234171] = true, -- Unnatural Leather Spaulders + [234173] = true, -- Leggings of the Demented Mind + [234174] = true, -- Acid Inscribed Pauldrons + [234962] = true, -- Jade Inlaid Vestments + [234963] = true, -- Strangely Glyphed Legplates + [235047] = true, -- Gloves of the Fallen Prophet }, SpellHaste = { [235874] = 2, @@ -908,11 +994,11 @@ Data.Item = { [242317] = 3, }, TimewornExpertise = { - [234018] = 1, - [234022] = 1, - [234027] = 1, - [234031] = 1, - [234035] = 1, + [234018] = 1, -- Signet Ring of the Bronze Dragonflight + [234022] = 1, -- Signet Ring of the Bronze Dragonflight + [234027] = 1, -- Signet Ring of the Bronze Dragonflight + [234031] = 1, -- Signet Ring of the Bronze Dragonflight + [234035] = 1, -- Signet Ring of the Bronze Dragonflight }, TimewornSpellHaste = { [234016] = 2, From 2a1a30571309abdba8b4330272d1c5b73ef9b880 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Sun, 15 Mar 2026 17:36:19 +0100 Subject: [PATCH 33/36] keep-sorted --- Modules/Data/Constants.lua | 4 ++++ Modules/Data/ItemSets.lua | 44 ++++++++++++++++++++++++++++---------- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/Modules/Data/Constants.lua b/Modules/Data/Constants.lua index d7b0c6a5..6ddf599b 100755 --- a/Modules/Data/Constants.lua +++ b/Modules/Data/Constants.lua @@ -424,6 +424,7 @@ Data.Aura = { }, } Data.Enchant = { + -- keep-sorted start block=yes case=no BlockValue = { [2583] = 15, -- Presence of Might [2653] = 18, -- Enchant Shield - Tough Shield @@ -432,8 +433,10 @@ Data.Enchant = { [7633] = 15, -- Presence of Valor }, Ids = { + -- keep-sorted start ANIMALISTIC_EXPERTISE = 7875, -- Your melee attacks have 5% less chance to be Dodged or Parried. BIZNICK_SCOPE = 2523, -- 3% Hit from Biznicks 247x128 Accurascope + -- keep-sorted end }, MP5 = { [2381] = 10, -- Enchant Chest - Greater Mana Restoration @@ -459,6 +462,7 @@ Data.Enchant = { [3836] = 8, -- Master's Inscription of the Crag [7099] = 12, -- Blackfathom Mana Oil. This effect only applies within Blackfathom Deeps. }, + -- keep-sorted end } Data.Gem = { MP5 = { diff --git a/Modules/Data/ItemSets.lua b/Modules/Data/ItemSets.lua index 8ff0565e..4dc89a8e 100755 --- a/Modules/Data/ItemSets.lua +++ b/Modules/Data/ItemSets.lua @@ -5,6 +5,7 @@ local _, _, classId = UnitClass("player") local setNames = Data.setNames local itemSets = { + -- keep-sorted start block=yes [setNames.AUGURS_REGALIA] = { [19609] = true, [19828] = true, @@ -18,6 +19,7 @@ local itemSets = { [19692] = true, }, [setNames.BONESCYTHE_LEATHERS] = { + -- keep-sorted start numeric=yes [236032] = true, [236033] = true, [236034] = true, @@ -26,7 +28,8 @@ local itemSets = { [236037] = true, [236038] = true, [236039] = true, - [236040] = true + [236040] = true, + -- keep-sorted end }, [setNames.DAWN_OF_TRANSCENDENCE] = { [231155] = true, @@ -39,6 +42,7 @@ local itemSets = { [231162] = true, }, [setNames.DREADNOUGHTS_BATTLEGEAR] = { + -- keep-sorted start numeric=yes [236005] = true, [246006] = true, [236007] = true, @@ -47,9 +51,11 @@ local itemSets = { [236010] = true, [236011] = true, [236012] = true, - [236013] = true + [236013] = true, + -- keep-sorted end }, [setNames.DREAMWALKER_GUARDIAN] = { + -- keep-sorted start numeric=yes [236201] = true, [236202] = true, [236203] = true, @@ -58,7 +64,8 @@ local itemSets = { [236206] = true, [236207] = true, [236208] = true, - [236209] = true + [236209] = true, + -- keep-sorted end }, [setNames.FEL_IRON_CHAIN] = { [23490] = true, @@ -96,6 +103,7 @@ local itemSets = { [21875] = true, }, [setNames.PLAGUEHEART_STITCHINGS] = { + -- keep-sorted start numeric=yes [236068] = true, [236069] = true, [236070] = true, @@ -104,9 +112,11 @@ local itemSets = { [236073] = true, [236074] = true, [236075] = true, - [236076] = true + [236076] = true, + -- keep-sorted end }, [setNames.REDEMPTION_BULWARK] = { + -- keep-sorted start numeric=yes [236133] = true, [236134] = true, [236135] = true, @@ -115,7 +125,8 @@ local itemSets = { [236138] = true, [236139] = true, [236140] = true, - [236141] = true + [236141] = true, + -- keep-sorted end }, [setNames.STORMRAGE_RAIMENT] = { [16897] = true, @@ -128,9 +139,11 @@ local itemSets = { [16904] = true, }, [setNames.SYMBOLS_OF_UNENDING_LIFE] = { + -- keep-sorted start numeric=yes [233417] = true, [233418] = true, - [233419] = true + [233419] = true, + -- keep-sorted end }, [setNames.TEN_STORMS] = { [16943] = true, @@ -143,6 +156,7 @@ local itemSets = { [16950] = true }, [setNames.THE_EARTHSHATTERER] = { + -- keep-sorted start numeric=yes [22464] = true, [22465] = true, [22466] = true, @@ -151,9 +165,11 @@ local itemSets = { [22469] = true, [22470] = true, [22471] = true, - [23065] = true + [23065] = true, + -- keep-sorted end }, [setNames.THE_EARTHSHATTERERS_RESOLVE] = { + -- keep-sorted start numeric=yes [236160] = true, [236162] = true, [236163] = true, @@ -162,7 +178,8 @@ local itemSets = { [236166] = true, [236167] = true, [236168] = true, - [236169] = true + [236169] = true, + -- keep-sorted end }, [setNames.VESTMENTS_OF_TRANSCENDENCE] = { [16919] = true, @@ -179,12 +196,12 @@ local itemSets = { [29523] = true, [29524] = true, }, + -- keep-sorted end } function Data:HasSetBonusIncreasedExpertise2() - if classId == Data.WARRIOR then - return Data:IsSetBonusActive(setNames.DREADNOUGHTS_BATTLEGEAR, 2) - elseif classId == Data.DRUID then + -- keep-sorted start block=yes + if classId == Data.DRUID then return Data:IsSetBonusActive(setNames.DREAMWALKER_GUARDIAN, 2) elseif classId == Data.SHAMAN then return Data:IsSetBonusActive(setNames.THE_EARTHSHATTERERS_RESOLVE, 2) @@ -194,13 +211,18 @@ function Data:HasSetBonusIncreasedExpertise2() return Data:IsSetBonusActive(setNames.BONESCYTHE_LEATHERS, 2) elseif classId == Data.WARLOCK then return Data:IsSetBonusActive(setNames.PLAGUEHEART_STITCHINGS, 2) + elseif classId == Data.WARRIOR then + return Data:IsSetBonusActive(setNames.DREADNOUGHTS_BATTLEGEAR, 2) end + -- keep-sorted end end function Data:HasSetBonusIncreasedExpertise5() + -- keep-sorted start block=yes if classId == Data.DRUID then return Data:IsSetBonusActive(setNames.SYMBOLS_OF_UNENDING_LIFE, 3) end + -- keep-sorted end end ---@return number From 18643a86939dff49e1a6aaabea79ceeffa812231 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Sun, 15 Mar 2026 17:45:08 +0100 Subject: [PATCH 34/36] keep-sorted --- Modules/Data/Constants.lua | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Modules/Data/Constants.lua b/Modules/Data/Constants.lua index 6ddf599b..e2cf77e0 100755 --- a/Modules/Data/Constants.lua +++ b/Modules/Data/Constants.lua @@ -526,7 +526,9 @@ Data.Gem = { }, } Data.Item = { + -- keep-sorted start block=yes case=no IncreaseExpertise = { + -- keep-sorted start numeric=yes [233376] = 1, -- Conqueror's Spaulders [233397] = 1, -- Avenger's Breastplate [233401] = 1, -- Avenger's Pauldrons @@ -739,8 +741,10 @@ Data.Item = { [246060] = 1, -- Inquisition Cuirass [246061] = 1, -- Inquisition Epaulets [246062] = 1, -- Inquisition Faceguard + -- keep-sorted end }, IsTimeworn = { + -- keep-sorted start numeric=yes [233496] = true, -- Barrage Shoulders [233505] = true, -- Leggings of Immersion [233506] = true, -- Beetle Scaled Wristguards @@ -861,6 +865,7 @@ Data.Item = { [234962] = true, -- Jade Inlaid Vestments [234963] = true, -- Strangely Glyphed Legplates [235047] = true, -- Gloves of the Fallen Prophet + -- keep-sorted end }, SpellHaste = { [235874] = 2, @@ -998,12 +1003,14 @@ Data.Item = { [242317] = 3, }, TimewornExpertise = { + -- keep-sorted start numeric=yes [234018] = 1, -- Signet Ring of the Bronze Dragonflight [234022] = 1, -- Signet Ring of the Bronze Dragonflight [234027] = 1, -- Signet Ring of the Bronze Dragonflight [234031] = 1, -- Signet Ring of the Bronze Dragonflight [234035] = 1, -- Signet Ring of the Bronze Dragonflight - }, + -- keep-sorted end + }, TimewornSpellHaste = { [234016] = 2, [234020] = 2, @@ -1011,14 +1018,16 @@ Data.Item = { [234028] = 2, [234032] = 2, }, + -- keep-sorted end } Data.setNames = { + -- keep-sorted start AUGURS_REGALIA = "Augur's Regalia", BLOODSOUL_EMBRACE = "Bloodsoul Embrace", BONESCYTHE_LEATHERS = "Bonescythe Leathers", DAWN_OF_TRANSCENDENCE = "Dawn of Transcendence", - DREAMWALKER_GUARDIAN = "Dreamwalker Guardian", DREADNOUGHTS_BATTLEGEAR = "Dreadnought's Battlegear", + DREAMWALKER_GUARDIAN = "Dreamwalker Guardian", FEL_IRON_CHAIN = "Fel Iron Chain", FREETHINKERS_ARMOR = "Freethinker's Armor", GREEN_DRAGON_MAIL = "Green Dragon Mail", @@ -1034,4 +1043,5 @@ Data.setNames = { THE_EARTHSHATTERERS_RESOLVE = "The Earthshatterer Resolve", VESTMENTS_OF_TRANSCENDENCE = "Vestments of Transcendence", WINDHAWK_ARMOR = "Windhawk Armor", + -- keep-sorted end } From 793c0a8659c1a7d47b25605889cd88c8bd0c9031 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Mon, 16 Mar 2026 01:17:40 +0100 Subject: [PATCH 35/36] wip --- Modules/Data/ItemSets.lua | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Modules/Data/ItemSets.lua b/Modules/Data/ItemSets.lua index 4dc89a8e..856a431e 100755 --- a/Modules/Data/ItemSets.lua +++ b/Modules/Data/ItemSets.lua @@ -200,7 +200,6 @@ local itemSets = { } function Data:HasSetBonusIncreasedExpertise2() - -- keep-sorted start block=yes if classId == Data.DRUID then return Data:IsSetBonusActive(setNames.DREAMWALKER_GUARDIAN, 2) elseif classId == Data.SHAMAN then @@ -214,15 +213,12 @@ function Data:HasSetBonusIncreasedExpertise2() elseif classId == Data.WARRIOR then return Data:IsSetBonusActive(setNames.DREADNOUGHTS_BATTLEGEAR, 2) end - -- keep-sorted end end function Data:HasSetBonusIncreasedExpertise5() - -- keep-sorted start block=yes if classId == Data.DRUID then return Data:IsSetBonusActive(setNames.SYMBOLS_OF_UNENDING_LIFE, 3) end - -- keep-sorted end end ---@return number From 810c6e50fe23ab748ef27582320bac5e4da61e12 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Thu, 19 Mar 2026 02:41:40 +0100 Subject: [PATCH 36/36] wip --- .luacheckrc | 76 ++++++++++++++++++++++++++---------------- Modules/Data/Melee.lua | 12 +++++-- 2 files changed, 57 insertions(+), 31 deletions(-) diff --git a/.luacheckrc b/.luacheckrc index 2e903fee..1d0a266d 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -17,6 +17,7 @@ stds.ecs = { read_globals = {}, -- these globals can only be accessed. globals = { "----> GlobalAPI", + -- keep-sorted start case=no "AbandonQuest", "AbandonSkill", "AcceptAreaSpiritHeal", @@ -117,8 +118,8 @@ stds.ecs = { "C_ActionBar.IsEnabledAutoCastPetAction", "C_ActionBar.IsOnBarOrSpecialBar", "C_ActionBar.ToggleAutoCastPetAction", - "C_AddOns.GetAddOnInfo", "C_AddOns", + "C_AddOns.GetAddOnInfo", "C_AreaPoiInfo.GetAreaPOIForMap", "C_AreaPoiInfo.GetAreaPOIInfo", "C_AreaPoiInfo.IsAreaPOITimed", @@ -135,6 +136,7 @@ stds.ecs = { "C_CharacterServices.SetAutomaticBoostCharacter", "C_CharacterServicesPublic.ShouldSeeControlPopup", "C_ChatBubbles.GetAllChatBubbles", + "C_ChatInfo", "C_ChatInfo.GetChannelRosterInfo", "C_ChatInfo.GetNumActiveChannels", "C_ChatInfo.GetRegisteredAddonMessagePrefixes", @@ -145,7 +147,6 @@ stds.ecs = { "C_ChatInfo.ReportServerLag", "C_ChatInfo.SendAddonMessage", "C_ChatInfo.SendAddonMessageLogged", - "C_ChatInfo", "C_Club.AcceptInvitation", "C_Club.AddClubStreamChatChannel", "C_Club.AdvanceStreamViewMarker", @@ -389,6 +390,7 @@ stds.ecs = { "C_GuildInfo.RemoveFromGuild", "C_GuildInfo.SetGuildRankOrder", "C_GuildInfo.SetNote", + "C_Item", "C_Item.DoesItemExist", "C_Item.DoesItemExistByID", "C_Item.GetCurrentItemLevel", @@ -411,7 +413,6 @@ stds.ecs = { "C_Item.RequestLoadItemData", "C_Item.RequestLoadItemDataByID", "C_Item.UnlockItem", - "C_Item", "C_KeyBindings.GetCustomBindingType", "C_LootHistory.CanMasterLoot", "C_LootHistory.GetExpiration", @@ -424,6 +425,7 @@ stds.ecs = { "C_LossOfControl.GetNumEvents", "C_Mail.HasInboxMoney", "C_Mail.IsCommandPending", + "C_Map", "C_Map.GetAreaInfo", "C_Map.GetBestMapForUnit", "C_Map.GetBountySetIDForMap", @@ -449,10 +451,9 @@ stds.ecs = { "C_Map.GetWorldPosFromMapPos", "C_Map.MapHasArt", "C_Map.RequestPreloadMap", - "C_Map", + "C_MapExplorationInfo", "C_MapExplorationInfo.GetExploredAreaIDsAtPosition", "C_MapExplorationInfo.GetExploredMapTextures", - "C_MapExplorationInfo", "C_MerchantFrame.GetBuybackItemID", "C_ModelInfo.AddActiveModelScene", "C_ModelInfo.AddActiveModelSceneActor", @@ -462,6 +463,7 @@ stds.ecs = { "C_ModelInfo.GetModelSceneActorInfoByID", "C_ModelInfo.GetModelSceneCameraInfoByID", "C_ModelInfo.GetModelSceneInfoByID", + "C_NamePlate", "C_NamePlate.GetNamePlateEnemyClickThrough", "C_NamePlate.GetNamePlateEnemyPreferredClickInsets", "C_NamePlate.GetNamePlateEnemySize", @@ -485,16 +487,15 @@ stds.ecs = { "C_NamePlate.SetNamePlateSelfPreferredClickInsets", "C_NamePlate.SetNamePlateSelfSize", "C_NamePlate.SetTargetClampingInsets", - "C_NamePlate", "C_NewItems.ClearAll", "C_NewItems.IsNewItem", "C_NewItems.RemoveNewItem", + "C_PaperDollInfo", "C_PaperDollInfo.GetArmorEffectiveness", "C_PaperDollInfo.GetArmorEffectivenessAgainstTarget", "C_PaperDollInfo.GetMinItemLevel", "C_PaperDollInfo.OffhandHasShield", "C_PaperDollInfo.OffhandHasWeapon", - "C_PaperDollInfo", "C_PartyInfo.GetActiveCategories", "C_PartyInfo.GetInviteConfirmationInvalidQueues", "C_PlayerInfo.GetClass", @@ -507,13 +508,13 @@ stds.ecs = { "C_ProductChoice.GetProducts", "C_ProductChoice.MakeSelection", "C_PvP.IsPVPMap", + "C_QuestLog", "C_QuestLog.GetMaxNumQuests", "C_QuestLog.GetMaxNumQuestsCanAccept", "C_QuestLog.GetQuestInfo", "C_QuestLog.GetQuestObjectives", "C_QuestLog.IsOnQuest", "C_QuestLog.ShouldShowQuestRewards", - "C_QuestLog", "C_RecruitAFriend.CheckEmailEnabled", "C_RecruitAFriend.GetRecruitInfo", "C_RecruitAFriend.IsSendingEnabled", @@ -544,15 +545,15 @@ stds.ecs = { "C_Spell.DoesSpellExist", "C_Spell.IsSpellDataCached", "C_Spell.RequestLoadSpellData", - "C_SpellBook.IsSpellKnown", "C_SpellBook", + "C_SpellBook.IsSpellKnown", "C_StorePublic.DoesGroupHavePurchaseableProducts", "C_StorePublic.IsDisabledByParentalControls", "C_StorePublic.IsEnabled", "C_TaxiMap.GetAllTaxiNodes", "C_TaxiMap.GetTaxiNodesForMap", - "C_Timer.After", "C_Timer", + "C_Timer.After", "C_UI.Reload", "C_UIWidgetManager.GetAllWidgetsBySetID", "C_UIWidgetManager.GetBelowMinimapWidgetSetID", @@ -804,22 +805,6 @@ stds.ecs = { "ConvertToParty", "ConvertToRaid", "CopyToClipboard", - "CR_ARMOR_PENETRATION", - "CR_BLOCK", - "CR_CRIT_MELEE", - "CR_CRIT_RANGED", - "CR_CRIT_SPELL", - "CR_DEFENSE_SKILL", - "CR_DODGE", - "CR_EXPERTISE", - "CR_HASTE_MELEE", - "CR_HASTE_RANGED", - "CR_HASTE_SPELL", - "CR_HIT_MELEE", - "CR_HIT_RANGED", - "CR_HIT_SPELL", - "CR_PARRY", - "CR_WEAPON_SKILL", "CreateFont", "CreateFrame", "CreateMacro", @@ -2268,14 +2253,16 @@ stds.ecs = { "UseHearthstone", "UseInventoryItem", "UseItemByName", + -- keep-sorted end "----------------------------------------------------->LUA API", - "bit", + -- keep-sorted start case=no "abs", "acos", "asin", "assert", "atan", "atan2", + "bit", "bit.arshift", "bit.band", "bit.bnot", @@ -2415,7 +2402,9 @@ stds.ecs = { "unpack", "wipe", "xpcall", + -- keep-sorted end "------------------------------------------------------> FRAMES", + -- keep-sorted start case=no "ActionBarActionEventsFrame", "ActionBarButtonEventsFrame", "ActionBarController", @@ -2474,7 +2463,6 @@ stds.ecs = { "ChatConfigFrame", "ChatEdit_GetActiveWindow", "ChatEdit_InsertLink", - "ChatFrame_AddMessageEventFilter", "ChatFrame1", "ChatFrame10", "ChatFrame10EditBox", @@ -2503,6 +2491,7 @@ stds.ecs = { "ChatFrame9", "ChatFrame9EditBox", "ChatFrame9Tab", + "ChatFrame_AddMessageEventFilter", "ChatFrameChannelButton", "ChatFrameMenuButton", "ChatMenu", @@ -2537,6 +2526,22 @@ stds.ecs = { "ContainerFrame7", "ContainerFrame8", "ContainerFrame9", + "CR_ARMOR_PENETRATION", + "CR_BLOCK", + "CR_CRIT_MELEE", + "CR_CRIT_RANGED", + "CR_CRIT_SPELL", + "CR_DEFENSE_SKILL", + "CR_DODGE", + "CR_EXPERTISE", + "CR_HASTE_MELEE", + "CR_HASTE_RANGED", + "CR_HASTE_SPELL", + "CR_HIT_MELEE", + "CR_HIT_RANGED", + "CR_HIT_SPELL", + "CR_PARRY", + "CR_WEAPON_SKILL", "CraftFrame", "CreateChannelPopup", "DEFAULT_CHAT_FRAME", @@ -2547,6 +2552,8 @@ stds.ecs = { "DurabilityFrame", "EmbeddedItemTooltip", "EngravingFrame", + "EQUIPPED_FIRST", + "EQUIPPED_LAST", "EventTraceFrame", "FauxScrollFrame_GetOffset", "FlightMapFrame", @@ -2696,11 +2703,11 @@ stds.ecs = { "SpellBookFrame", "StackSplitFrame", "STANDARD_TEXT_FONT", - "StaticPopup_Show", "StaticPopup1", "StaticPopup2", "StaticPopup3", "StaticPopup4", + "StaticPopup_Show", "StaticPopupDialogs", "StatsFrame", "StopwatchFrame", @@ -2752,7 +2759,9 @@ stds.ecs = { "WorldMapTooltip", "WorldStateScoreFrame", "ZoneTextFrame", + -- keep-sorted end "-----------------------------------------------------> Blizzard Data", + -- keep-sorted start case=no "CALENDAR_FULLDATE_MONTH_NAMES", "CALENDAR_WEEKDAY_NAMES", "QUEST_ITEMS_NEEDED", @@ -2765,19 +2774,27 @@ stds.ecs = { "WOW_PROJECT_ID", "WOW_PROJECT_MAINLINE", "WOW_PROJECT_WRATH_CLASSIC", + -- keep-sorted end "-----------------------------------------------------> Enums", + -- keep-sorted start case=no "LE_EXPANSION_BURNING_CRUSADE", + -- keep-sorted end "-----------------------------------------------------> GlobalStrings", + -- keep-sorted start case=no "CLOSE", "DEFENSE", + -- keep-sorted end "-----------------------------------------------------> External Addons", + -- keep-sorted start case=no "LeaPlusDB", "LibStub", "OutfitterButton", "OutfitterButtonFrame", "OutfitterFrame", "PawnInitialize", + -- keep-sorted end "-----------------------------------------------------> Project Specific", + -- keep-sorted start case=no "assert.are_same", "assert.is_nil", "assert.spy", @@ -2791,6 +2808,7 @@ stds.ecs = { "SLASH_ECS1", "SlashCmdList", "spy", + -- keep-sorted end } } std = "max+ecs" diff --git a/Modules/Data/Melee.lua b/Modules/Data/Melee.lua index c7ea42c5..b172fda6 100755 --- a/Modules/Data/Melee.lua +++ b/Modules/Data/Melee.lua @@ -1,3 +1,11 @@ +-- keep-sorted start case=no +local EQUIPPED_FIRST = EQUIPPED_FIRST +local EQUIPPED_LAST = EQUIPPED_LAST +local GetInventoryItemID = GetInventoryItemID +local GetInventoryItemLink = GetInventoryItemLink +local IsSoD = ECS.IsSoD +-- keep-sorted end + ---@class Data local Data = ECSLoader:ImportModule("Data") ---@type DataUtils @@ -190,10 +198,10 @@ end function Data:GetExpertise() local expertise, _ = GetExpertise() - if ECS.IsSoD then + if IsSoD then local timeworn = DataUtils:CountTimewornItems() - for i = 1, 18 do + for i = EQUIPPED_FIRST,EQUIPPED_LAST do local id, _ = GetInventoryItemID("player", i) expertise = expertise + (Data.Item.IncreaseExpertise[id] or 0) expertise = expertise + timeworn * (Data.Item.TimewornExpertise[id] or 0)