From c8c9afcc42a4c20477b3561e4133e2f9755002dd Mon Sep 17 00:00:00 2001 From: Guilherme Lemmertz Date: Sat, 10 Oct 2026 19:26:18 -0300 Subject: [PATCH 1/2] 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 From 7f70c42f774df7b5076632e7dd93d2f73e246cf9 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Thu, 29 Oct 2026 16:30:41 +1100 Subject: [PATCH 2/2] Simplify fix --- src/Data/Skills/sup_str.lua | 2 +- src/Export/Skills/sup_str.txt | 2 +- src/Modules/CalcPerform.lua | 4 +--- src/Modules/Calcs.lua | 3 +-- 4 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/Data/Skills/sup_str.lua b/src/Data/Skills/sup_str.lua index bc5b39abeb0..42439d1a1f5 100644 --- a/src/Data/Skills/sup_str.lua +++ b/src/Data/Skills/sup_str.lua @@ -1536,7 +1536,7 @@ skills["SupportCruelty"] = { }, }, baseMods = { - flag("Cruelty"), + flag("Cruelty", { type = "SkillType", skillTypeList = { SkillType.SummonsTotem, SkillType.Trapped, SkillType.RemoteMined }, neg = true }), }, qualityStats = { { "cruelty_effect_+%", 0.25 }, diff --git a/src/Export/Skills/sup_str.txt b/src/Export/Skills/sup_str.txt index dfb720c97d1..802016f650e 100644 --- a/src/Export/Skills/sup_str.txt +++ b/src/Export/Skills/sup_str.txt @@ -224,7 +224,7 @@ return function(skills, mod, flag, skill) mod("Damage", "MORE", 1, ModFlag.Dot, 0, { type = "Multiplier", var = "Cruelty" }), }, }, -#baseMod flag("Cruelty") +#baseMod flag("Cruelty", { type = "SkillType", skillTypeList = { SkillType.SummonsTotem, SkillType.Trapped, SkillType.RemoteMined }, neg = true }) #mods #skill SupportCrystalfall diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index 888404a339a..0f31c74fbcb 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -643,9 +643,7 @@ local function doActorMisc(env, actor) -- Add misc buffs/debuffs if env.mode_combat 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 + if env.player.mainSkill.baseSkillModList:Flag(env.player.mainSkill.skillCfg, "Cruelty") 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 93f067c01fd..9cd7fd1759c 100644 --- a/src/Modules/Calcs.lua +++ b/src/Modules/Calcs.lua @@ -650,8 +650,7 @@ function calcs.buildOutput(build, mode) if build.calcsTab.mainEnv.multipliersUsed["SpiritInfusion"] then t_insert(combatList, s_format("%d Spirit Infusions", output.SpiritInfusions)) end - 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 + if env.player.mainSkill.baseSkillModList:Flag(env.player.mainSkill.skillCfg, "Cruelty") then t_insert(combatList, "Cruelty") end if env.modDB:Flag(nil, "Fortify") then