Skip to content

Commit 91aa548

Browse files
EminGulLocalIdentity
andauthored
Fix for Chieftain resist nodes applying effects twice due to Foulborn Choir of the Storm (#9643)
* Fix: Valako, Storm's Embrace and Tasalio, Cleansing Water Ascendancy nodes applying effects twice due to Foulborn Choir of the Storm * Use temp actor instead of changing calcs --------- Co-authored-by: LocalIdentity <localidentity2@gmail.com>
1 parent aeccaca commit 91aa548

3 files changed

Lines changed: 32 additions & 4 deletions

File tree

spec/System/TestDefence_spec.lua

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,26 @@ describe("TestDefence", function()
358358
build.skillsTab.socketGroupList = {}
359359
end)
360360

361+
it("foulborn resistance conversion remains stable across recalculation", function()
362+
build.configTab.input.enemyIsBoss = "None"
363+
build.configTab.input.customMods = "\z
364+
+300 to fire resistance\n\z
365+
modifiers to fire resistance also apply to cold and lightning resistances at 50% of their value\n\z
366+
mana is increased by 100% of overcapped lightning resistance\n\z
367+
"
368+
build.configTab:BuildModList()
369+
runCallback("OnFrame")
370+
371+
assert.are.equals(90, build.calcsTab.calcsOutput.LightningResistTotal)
372+
assert.are.equals(15, build.calcsTab.calcsOutput.LightningResistOverCap)
373+
374+
build.configTab:BuildModList()
375+
runCallback("OnFrame")
376+
377+
assert.are.equals(90, build.calcsTab.calcsOutput.LightningResistTotal)
378+
assert.are.equals(15, build.calcsTab.calcsOutput.LightningResistOverCap)
379+
end)
380+
361381
-- fun part
362382
it("armoured max hits", function()
363383
build.configTab.input.enemyIsBoss = "None"
@@ -1177,4 +1197,4 @@ describe("TestDefence", function()
11771197
assert.are.equals(0, floor(poolsRemaining.Life))
11781198
assert.are.equals(0, floor(poolsRemaining.OverkillDamage))
11791199
end)
1180-
end)
1200+
end)

src/Modules/CalcDefence.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,7 @@ function calcs.resistances(actor)
532532
end
533533
end
534534
end
535-
535+
536536
for _, resFrom in ipairs(resistTypeList) do
537537
local res
538538
for _, resTo in ipairs(resistTypeList) do

src/Modules/CalcPerform.lua

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3216,8 +3216,16 @@ function calcs.perform(env, skipEHP)
32163216

32173217
-- Foulborn Choir of the Storm, needs to be after main auras (incase purity of lightning/elements auras) but before extra auras (Radiant Faith)
32183218
if modDB:Flag(nil, "ManaIncreasedByOvercappedLightningRes") then
3219-
-- Calclate resistances for ManaIncreasedByOvercappedLightningRes
3220-
calcs.resistances(env.player)
3219+
-- Calculate resistances for ManaIncreasedByOvercappedLightningRes without mutating conversion mods on the player ModDB.
3220+
local tempResistActor = {
3221+
modDB = new("ModDB", modDB),
3222+
output = output,
3223+
activeSkillList = env.player.activeSkillList,
3224+
enemy = env.player.enemy,
3225+
}
3226+
tempResistActor.player = tempResistActor
3227+
tempResistActor.modDB.actor = tempResistActor
3228+
calcs.resistances(tempResistActor)
32213229
-- Set the life/mana reservations again as we now have increased mana from overcapped lightning resistance
32223230
doActorLifeMana(env.player)
32233231
doActorLifeManaReservation(env.player, true)

0 commit comments

Comments
 (0)