From c8c9afcc42a4c20477b3561e4133e2f9755002dd Mon Sep 17 00:00:00 2001 From: Guilherme Lemmertz Date: Sat, 10 Oct 2026 19:26:18 -0300 Subject: [PATCH] Fix Cruelty applying to Totem, Trap and Mine skills Proxies cannot gain or grant the player Cruelty, so Cruelty Support should not add its damage over time bonus when the main skill is used by a totem, trap or mine. Co-Authored-By: Claude Opus 5.5 --- spec/System/TestSkills_spec.lua | 13 +++++++++++++ src/Modules/CalcPerform.lua | 4 +++- src/Modules/Calcs.lua | 3 ++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/spec/System/TestSkills_spec.lua b/spec/System/TestSkills_spec.lua index 8075f75884c..66c1e4b0adc 100644 --- a/spec/System/TestSkills_spec.lua +++ b/spec/System/TestSkills_spec.lua @@ -727,4 +727,17 @@ describe("TestSkills", function() assert.are.equals("SupportBarrage", barrage.grantedEffect.id) assert.are.equals(20, barrage.level) end) + + it("does not grant Cruelty to Totem, Trap or Mine skills", function() + build.skillsTab:PasteSocketGroup("Cold Snap 20/0 1\nCruelty 20/0 1") + runCallback("OnFrame") + assert.are.equals(40, build.calcsTab.mainEnv.player.modDB.multipliers["Cruelty"]) + + for _, proxySupport in ipairs({ "Spell Totem", "Trap", "Blastchain Mine" }) do + newBuild() + build.skillsTab:PasteSocketGroup("Cold Snap 20/0 1\nCruelty 20/0 1\n"..proxySupport.." 20/0 1") + runCallback("OnFrame") + assert.is_nil(build.calcsTab.mainEnv.player.modDB.multipliers["Cruelty"]) + end + end) end) diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index c7f75eda6c4..888404a339a 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -643,7 +643,9 @@ local function doActorMisc(env, actor) -- Add misc buffs/debuffs if env.mode_combat then - if env.player.mainSkill.baseSkillModList:Flag(nil, "Cruelty") then + -- Totems, Traps and Mines cannot gain or grant Cruelty + local mainSkillFlags = env.player.mainSkill.skillFlags + if env.player.mainSkill.baseSkillModList:Flag(nil, "Cruelty") and not mainSkillFlags.totem and not mainSkillFlags.trap and not mainSkillFlags.mine then modDB.multipliers["Cruelty"] = modDB:Override(nil, "Cruelty") or 40 end -- Minimum Rage diff --git a/src/Modules/Calcs.lua b/src/Modules/Calcs.lua index dc12041374f..93f067c01fd 100644 --- a/src/Modules/Calcs.lua +++ b/src/Modules/Calcs.lua @@ -650,7 +650,8 @@ function calcs.buildOutput(build, mode) if build.calcsTab.mainEnv.multipliersUsed["SpiritInfusion"] then t_insert(combatList, s_format("%d Spirit Infusions", output.SpiritInfusions)) end - if env.player.mainSkill.baseSkillModList:Flag(nil, "Cruelty") then + local mainSkillFlags = env.player.mainSkill.skillFlags + if env.player.mainSkill.baseSkillModList:Flag(nil, "Cruelty") and not mainSkillFlags.totem and not mainSkillFlags.trap and not mainSkillFlags.mine then t_insert(combatList, "Cruelty") end if env.modDB:Flag(nil, "Fortify") then