diff --git a/spec/System/TestSkills_spec.lua b/spec/System/TestSkills_spec.lua index 8075f75884..58baeec85d 100644 --- a/spec/System/TestSkills_spec.lua +++ b/spec/System/TestSkills_spec.lua @@ -132,8 +132,12 @@ describe("TestSkills", function() activeSkill = build.calcsTab.mainEnv.player.mainSkill assert.is_true(activeSkill.skillFlags.disable) assert.are.equals("This skill requires reserving Mana", activeSkill.disableReason) - assert.are.equals(0, activeSkill.skillData.ManaReservedBase) + assert.is_nil(activeSkill.skillData.ManaReservedBase) + assert.is_nil(activeSkill.skillData.ManaReservedPercent) assert.is_nil(activeSkill.skillData.LifeReservedBase) + assert.are.equals(0, build.calcsTab.mainEnv.player.reserved_ManaPercent) + assert.is_nil(build.calcsTab.mainEnv.player.output.ManaReservedPercent) + assert.are.equals(0, #build.calcsTab.mainEnv.player.breakdown.ManaReserved.reservations) end) it("Test Scorching ray applying exposure at max stages", function() diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index c7f75eda6c..cc6a136cc0 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -1976,6 +1976,11 @@ function calcs.perform(env, skipEHP) breakdown.ManaReserved = { reservations = { } } end for _, activeSkill in ipairs(env.player.activeSkillList) do + local forcedManaReservation = activeSkill.skillData.ManaReservationPercentForced + if forcedManaReservation and m_ceil((output.Mana or 0) * forcedManaReservation / 100) == 0 then + activeSkill.skillFlags.disable = true + activeSkill.disableReason = "This skill requires reserving Mana" + end if (activeSkill.skillTypes[SkillType.HasReservation] or activeSkill.skillData.triggeredByAutoexertion ) and not activeSkill.skillTypes[SkillType.ReservationBecomesCost] and not activeSkill.skillFlags.disable then local skillModList = activeSkill.skillModList local skillCfg = activeSkill.skillCfg @@ -2081,10 +2086,6 @@ function calcs.perform(env, skipEHP) env.player["uncancellable_"..name.."Reservation"] = env.player["uncancellable_"..name.."Reservation"] + values.reservedPercent end end - if activeSkill.skillData.ManaReservationPercentForced and activeSkill.skillData.ManaReservedBase == 0 then - activeSkill.skillFlags.disable = true - activeSkill.disableReason = "This skill requires reserving Mana" - end end end