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