Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions spec/System/TestSkills_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,29 @@ describe("TestSkills", function()
assert.is_true(supports.SupportNightblade)
assert.is_nil(supports.SupportSacredWisps)
end)

it("keeps forced mana reservations on mana", function()
build.itemsTab:CreateDisplayItemFromRaw("Test Staff\nJudgement Staff")
build.itemsTab:AddDisplayItem()
build.skillsTab:PasteSocketGroup("Mana-Infused Staff 20/0 1\nArrogance 20/0 1\n")
runCallback("OnFrame")

local activeSkill = build.calcsTab.mainEnv.player.mainSkill
assert.are.equals("SupportArrogance", activeSkill.effectList[2].grantedEffect.id)
assert.is_nil(activeSkill.skillFlags.disable)
assert.are.equals(30, build.calcsTab.mainEnv.player.output.ManaReservedPercent)
assert.are.equals(0, build.calcsTab.mainEnv.player.output.LifeReserved)

build.configTab.input.customMods = "Removes all mana\nSkills Reserve Life instead of Mana"
build.configTab:BuildModList()
runCallback("OnFrame")

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.LifeReservedBase)
end)

it("Test Scorching ray applying exposure at max stages", function()
build.skillsTab:PasteSocketGroup("Scorching Ray 20/0 1\n")
Expand Down
6 changes: 5 additions & 1 deletion src/Modules/CalcPerform.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1983,7 +1983,7 @@ function calcs.perform(env, skipEHP)
pool.Life.baseFlat = skillModList:Sum("BASE", skillCfg, "LifeCostBase") + (activeSkill.activeEffect.grantedEffectLevel.cost.Life or 0)
end
pool.Life.basePercent = activeSkill.skillData.lifeReservationPercent or activeSkill.activeEffect.grantedEffectLevel.lifeReservationPercent or 0
if skillModList:Flag(skillCfg, "BloodMagicReserved") then
if skillModList:Flag(skillCfg, "BloodMagicReserved") and not activeSkill.skillData.ManaReservationPercentForced then
pool.Life.baseFlat = pool.Life.baseFlat + pool.Mana.baseFlat
pool.Mana.baseFlat = 0
activeSkill.skillData["LifeReservationFlatForced"] = activeSkill.skillData["ManaReservationFlatForced"]
Expand Down Expand Up @@ -2073,6 +2073,10 @@ 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

Expand Down
Loading