From 9e6c6fe61960dd5762f5c17b6b0a3d129f3595f3 Mon Sep 17 00:00:00 2001 From: Peechey <92683202+Peechey@users.noreply.github.com> Date: Sat, 9 May 2026 10:46:40 -0500 Subject: [PATCH 1/4] add parsing for twisted empyrean unique mods --- src/Modules/ModParser.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index a13144ac8..42589af4e 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -3588,6 +3588,13 @@ local specialModList = { mod("DamageGainAsCold", "BASE", num), mod("DamageGainAsFire", "BASE", num), } end, + ["attacks with this weapon have added (%a+) damage equal to (%d+)%% to (%d+)%% of maximum (%a+)"] = function(_, damageType, min, max) return { + mod(firstToUpper(damageType).."Min", "BASE", 1, { type = "PercentStat", stat = "Mana", percent = min }, { type = "Condition", var = "{Hand}Attack" }, { type = "SkillType", skillType = SkillType.Attack }), + mod(firstToUpper(damageType).."Max", "BASE", 1, { type = "PercentStat", stat = "Mana", percent = max }, { type = "Condition", var = "{Hand}Attack" }, { type = "SkillType", skillType = SkillType.Attack }), + } end, + ["convert (%d+)%% of (%a+) damage of (%a+) skills to (%a+) damage"] = function (num, _, fromDmg, skillType, toDmg) return { + mod(firstToUpper(fromDmg) .. "DamageConvertTo" .. firstToUpper(toDmg), "BASE", num, nil, ModFlag[firstToUpper(skillType)]) + } end, -- Twisted Empyrean ["gain (%d+)%% of weapon physical damage as extra damage of an? r?a?n?d?o?m? ?element"] = function(num) return { mod("PhysicalDamageGainAsRandom", "BASE", num, nil, ModFlag.Weapon) } end, ["gain (%d+)%% of physical damage as extra damage of a random element"] = function(num) return { mod("PhysicalDamageGainAsRandom", "BASE", num ) } end, ["(%d+)%% chance for hits to deal (%d+)%% of physical damage as extra damage of a random element"] = function(num, _, physPercent) return { mod("PhysicalDamageGainAsRandom", "BASE", (num*physPercent/100) ) } end, From 304e6b64cef0e6432f93c06e291c39182bc5c2aa Mon Sep 17 00:00:00 2001 From: Peechey <92683202+Peechey@users.noreply.github.com> Date: Sat, 9 May 2026 11:21:50 -0500 Subject: [PATCH 2/4] test --- spec/System/TestItemMods_spec.lua | 32 +++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/spec/System/TestItemMods_spec.lua b/spec/System/TestItemMods_spec.lua index 3cd048c22..a2c52dc6a 100644 --- a/spec/System/TestItemMods_spec.lua +++ b/spec/System/TestItemMods_spec.lua @@ -220,4 +220,36 @@ describe("TetsItemMods", function() assert.are_not.equals(120, build.calcsTab.mainOutput.Armour) runCallback("OnFrame") end) + + it("twisted empyrean", function() + build.itemsTab:CreateDisplayItemFromRaw([[ + Rarity: UNIQUE + Twisted Empyrean Test + Greatmace + Quality: 0 + Sockets: S S S S + Rune: None + Rune: None + Rune: None + Rune: None + LevelReq: 52 + Implicits: 0 + Attacks with this Weapon have Added Cold Damage equal to 6% to 10% of Maximum Mana + Convert 100% of Fire Damage of Mace Skills to Cold Damage + ]]) + build.itemsTab:AddDisplayItem() + runCallback("OnFrame") + + build.skillsTab:PasteSocketGroup("Leap Slam 20/0 1") + runCallback("OnFrame") + + build.configTab.input.customMods = [[ + +904 maximum mana + 100 to 200 added fire damage + ]] + build.configTab:BuildModList() + runCallback("OnFrame") + + assert.equals(171, round(build.calcsTab.mainOutput.AverageDamage)) + end) end) From 3ab938e30a81a8d114310e6687ca306924b8e32b Mon Sep 17 00:00:00 2001 From: Peechey <92683202+Peechey@users.noreply.github.com> Date: Sat, 9 May 2026 14:02:36 -0500 Subject: [PATCH 3/4] better test --- spec/System/TestItemMods_spec.lua | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/spec/System/TestItemMods_spec.lua b/spec/System/TestItemMods_spec.lua index a2c52dc6a..88fae38a3 100644 --- a/spec/System/TestItemMods_spec.lua +++ b/spec/System/TestItemMods_spec.lua @@ -243,13 +243,24 @@ describe("TetsItemMods", function() build.skillsTab:PasteSocketGroup("Leap Slam 20/0 1") runCallback("OnFrame") + local baseTotalDps = round(build.calcsTab.mainOutput.AverageDamage) + local baseColdAvg = round(build.calcsTab.mainOutput.ColdStoredCombinedAvg) + build.configTab.input.customMods = [[ +904 maximum mana - 100 to 200 added fire damage ]] build.configTab:BuildModList() runCallback("OnFrame") + -- more mana increases average hit + assert.are_not.equals(baseTotalDps, round(build.calcsTab.mainOutput.AverageDamage)) - assert.equals(171, round(build.calcsTab.mainOutput.AverageDamage)) + build.configTab.input.customMods = [[ + 100 to 200 added fire damage + ]] + build.configTab:BuildModList() + runCallback("OnFrame") + -- added fire damage increases cold damage + assert.are_not.equals(baseColdAvg, round(build.calcsTab.mainOutput.ColdStoredCombinedAvg)) + assert.equals(0, round(build.calcsTab.mainOutput.FireStoredCombinedAvg)) end) end) From 407d8260f4973a6993471f4175f8692292a6b498 Mon Sep 17 00:00:00 2001 From: Peechey <92683202+Peechey@users.noreply.github.com> Date: Sat, 9 May 2026 14:07:46 -0500 Subject: [PATCH 4/4] but wait! an even better test? --- spec/System/TestItemMods_spec.lua | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/spec/System/TestItemMods_spec.lua b/spec/System/TestItemMods_spec.lua index 88fae38a3..d51d0e57b 100644 --- a/spec/System/TestItemMods_spec.lua +++ b/spec/System/TestItemMods_spec.lua @@ -243,7 +243,6 @@ describe("TetsItemMods", function() build.skillsTab:PasteSocketGroup("Leap Slam 20/0 1") runCallback("OnFrame") - local baseTotalDps = round(build.calcsTab.mainOutput.AverageDamage) local baseColdAvg = round(build.calcsTab.mainOutput.ColdStoredCombinedAvg) build.configTab.input.customMods = [[ @@ -251,8 +250,8 @@ describe("TetsItemMods", function() ]] build.configTab:BuildModList() runCallback("OnFrame") - -- more mana increases average hit - assert.are_not.equals(baseTotalDps, round(build.calcsTab.mainOutput.AverageDamage)) + -- more mana increases average cold hit + assert.are_not.equals(baseColdAvg, round(build.calcsTab.mainOutput.ColdStoredCombinedAvg)) build.configTab.input.customMods = [[ 100 to 200 added fire damage