From cf1632fb2f06f4d8a4c0ef70554adc65a7d2afd1 Mon Sep 17 00:00:00 2001 From: QuickStick <31533893+QuickStick123@users.noreply.github.com> Date: Wed, 23 Nov 2022 15:40:03 +1100 Subject: [PATCH] Fix maximum shock double counting. (#5173) * Fix maximum shock double counting. * Adding test case that would catch this bug Co-authored-by: Wires77 --- spec/System/TestAilments_spec.lua | 22 ++++++++++++++++++++++ src/Modules/CalcPerform.lua | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 spec/System/TestAilments_spec.lua diff --git a/spec/System/TestAilments_spec.lua b/spec/System/TestAilments_spec.lua new file mode 100644 index 00000000..eb5606ce --- /dev/null +++ b/spec/System/TestAilments_spec.lua @@ -0,0 +1,22 @@ +describe("TestAilments", function() + before_each(function() + newBuild() + end) + + teardown(function() + -- newBuild() takes care of resetting everything in setup() + end) + + it("maximum shock value", function() + -- Shock Nova + build.skillsTab:PasteSocketGroup("Slot: Weapon 1\nShock Nova 4/0 Default 1\n") + runCallback("OnFrame") + assert.are.equals(round(50 + 10), build.calcsTab.mainOutput.MaximumShock) + + -- Voltaxic Rift + build.itemsTab:CreateDisplayItemFromRaw("New Item\nAssassin Bow\n+40% to Maximum Effect of Shock") + build.itemsTab:AddDisplayItem() + runCallback("OnFrame") + assert.are.equals(round(50 + 10 + 40), build.calcsTab.mainOutput.MaximumShock) + end) +end) \ No newline at end of file diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index bae50fd6..592ab8de 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -3082,7 +3082,7 @@ function calcs.perform(env, avoidCache) end override = m_max(override, effect or 0) end - output["Maximum"..ailment] = modDB:Override(nil, ailment.."Max") or (ailmentData[ailment].max + modDB:Sum("BASE", nil, ailment.."Max") + env.player.mainSkill.baseSkillModList:Sum("BASE", nil, ailment.."Max")) + output["Maximum"..ailment] = modDB:Override(nil, ailment.."Max") or (ailmentData[ailment].max + env.player.mainSkill.baseSkillModList:Sum("BASE", nil, ailment.."Max")) output["Current"..ailment] = m_floor(m_min(m_max(override, enemyDB:Sum("BASE", nil, ailment.."Val")), output["Maximum"..ailment]) * (10 ^ ailmentData[ailment].precision)) / (10 ^ ailmentData[ailment].precision) for _, mod in ipairs(val.mods(output["Current"..ailment])) do enemyDB:AddMod(mod)