diff --git a/spec/System/TestDefence_spec.lua b/spec/System/TestDefence_spec.lua index 2dcbbbb247c..e6addf68c3b 100644 --- a/spec/System/TestDefence_spec.lua +++ b/spec/System/TestDefence_spec.lua @@ -17,6 +17,25 @@ describe("TestDefence", function() return build.calcsTab.calcs.reducePoolsByDamage(nil, takenDamages, build.calcsTab.calcsEnv.player) end + it("applies Consecrated Ground curse reduction to the player and minion", function() + build.skillsTab:PasteSocketGroup("Raise Zombie 20/0 1") + build.configTab.input.conditionOnConsecratedGround = true + build.configTab.input.playerCursedWithElementalWeakness = 20 + build.configTab:BuildModList() + runCallback("OnFrame") + + assert.are.equals(50, build.calcsTab.mainOutput.CurseEffectOnSelf) + assert.are.equals(50, build.calcsTab.mainEnv.minion.output.CurseEffectOnSelf) + local fireResistOnConsecratedGround = build.calcsTab.mainOutput.FireResist + + newBuild() + build.configTab.input.playerCursedWithElementalWeakness = 20 + build.configTab:BuildModList() + runCallback("OnFrame") + + assert.is_true(fireResistOnConsecratedGround > build.calcsTab.mainOutput.FireResist) + end) + -- boring part it("no armour max hits", function() build.configTab.input.enemyIsBoss = "None" diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index 65b8a15b3e2..918cbdf5d9b 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -770,7 +770,6 @@ local function doActorMisc(env, actor) if modDB:Flag(nil, "Condition:OnConsecratedGround") then local effect = 1 + modDB:Sum("INC", nil, "ConsecratedGroundEffect") / 100 modDB:NewMod("LifeRegenPercent", "BASE", 5 * effect, "Consecrated Ground") - modDB:NewMod("CurseEffectOnSelf", "INC", -50 * effect, "Consecrated Ground") modDB:NewMod("Accuracy", "INC", m_floor(modDB:Sum("INC", nil, "ConsecratedGroundAlsoAccuracy") * effect), "Consecrated Ground") end if modDB:Flag(nil, "Condition:PhantasmalMight") then @@ -3086,6 +3085,10 @@ function calcs.perform(env, skipEHP) -- Check for extra curses for dest, modDB in pairs({[curses] = modDB, [minionCurses] = env.minion and env.minion.modDB}) do + if env.mode_combat and modDB:Flag(nil, "Condition:OnConsecratedGround") then + local effect = 1 + modDB:Sum("INC", nil, "ConsecratedGroundEffect") / 100 + modDB:NewMod("CurseEffectOnSelf", "INC", -50 * effect, "Consecrated Ground") + end for _, value in ipairs(modDB:List(nil, "ExtraCurse")) do local gemModList = new("ModList") local grantedEffect = env.data.skills[value.skillId]