Skip to content

Commit 26cfe73

Browse files
committed
Fix Mana-Infused Staff zero-mana reservation state
Disable forced mana reservations before aggregation so a disabled Mana-Infused Staff cannot remain in reservation totals or breakdowns. Follow-up to PR 10283.
1 parent ed354c2 commit 26cfe73

2 files changed

Lines changed: 10 additions & 5 deletions

File tree

‎spec/System/TestSkills_spec.lua‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,12 @@ describe("TestSkills", function()
132132
activeSkill = build.calcsTab.mainEnv.player.mainSkill
133133
assert.is_true(activeSkill.skillFlags.disable)
134134
assert.are.equals("This skill requires reserving Mana", activeSkill.disableReason)
135-
assert.are.equals(0, activeSkill.skillData.ManaReservedBase)
135+
assert.is_nil(activeSkill.skillData.ManaReservedBase)
136+
assert.is_nil(activeSkill.skillData.ManaReservedPercent)
136137
assert.is_nil(activeSkill.skillData.LifeReservedBase)
138+
assert.are.equals(0, build.calcsTab.mainEnv.player.reserved_ManaPercent)
139+
assert.is_nil(build.calcsTab.mainEnv.player.output.ManaReservedPercent)
140+
assert.are.equals(0, #build.calcsTab.mainEnv.player.breakdown.ManaReserved.reservations)
137141
end)
138142

139143
it("Test Scorching ray applying exposure at max stages", function()

‎src/Modules/CalcPerform.lua‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1976,6 +1976,11 @@ function calcs.perform(env, skipEHP)
19761976
breakdown.ManaReserved = { reservations = { } }
19771977
end
19781978
for _, activeSkill in ipairs(env.player.activeSkillList) do
1979+
local forcedManaReservation = activeSkill.skillData.ManaReservationPercentForced
1980+
if forcedManaReservation and m_ceil((output.Mana or 0) * forcedManaReservation / 100) == 0 then
1981+
activeSkill.skillFlags.disable = true
1982+
activeSkill.disableReason = "This skill requires reserving Mana"
1983+
end
19791984
if (activeSkill.skillTypes[SkillType.HasReservation] or activeSkill.skillData.triggeredByAutoexertion ) and not activeSkill.skillTypes[SkillType.ReservationBecomesCost] and not activeSkill.skillFlags.disable then
19801985
local skillModList = activeSkill.skillModList
19811986
local skillCfg = activeSkill.skillCfg
@@ -2081,10 +2086,6 @@ function calcs.perform(env, skipEHP)
20812086
env.player["uncancellable_"..name.."Reservation"] = env.player["uncancellable_"..name.."Reservation"] + values.reservedPercent
20822087
end
20832088
end
2084-
if activeSkill.skillData.ManaReservationPercentForced and activeSkill.skillData.ManaReservedBase == 0 then
2085-
activeSkill.skillFlags.disable = true
2086-
activeSkill.disableReason = "This skill requires reserving Mana"
2087-
end
20882089
end
20892090
end
20902091

0 commit comments

Comments
 (0)