From 4b09e3d51110d01b34e869aeafe8b3a3d16d28b2 Mon Sep 17 00:00:00 2001 From: Peechey <92683202+Peechey@users.noreply.github.com> Date: Sat, 22 Nov 2025 21:58:24 -0600 Subject: [PATCH 1/4] set LifeFlaskRecovery for PConc if life flask is in a disabled slot --- src/Modules/CalcSetup.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Modules/CalcSetup.lua b/src/Modules/CalcSetup.lua index 130ad39de7..178c77f398 100644 --- a/src/Modules/CalcSetup.lua +++ b/src/Modules/CalcSetup.lua @@ -853,6 +853,9 @@ function calcs.initEnv(build, mode, override, specEnv) end end for slot in pairs(trueDisabled) do + if slot:find("Flask") and items[slot] and items[slot].baseName:find("Life Flask") then -- save lifeTotal for PConc if life flask is in disabled slot + env.itemModDB.multipliers["LifeFlaskRecovery"] = items[slot].flaskData.lifeTotal + end items[slot] = nil end end From 78d79d3ddca82ec0b534522c00734c55c2743d99 Mon Sep 17 00:00:00 2001 From: Peechey <92683202+Peechey@users.noreply.github.com> Date: Sun, 23 Nov 2025 06:48:07 -0600 Subject: [PATCH 2/4] update for multiple disabled life flasks and refactor into function --- src/Modules/CalcSetup.lua | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/Modules/CalcSetup.lua b/src/Modules/CalcSetup.lua index 178c77f398..a178d19e2c 100644 --- a/src/Modules/CalcSetup.lua +++ b/src/Modules/CalcSetup.lua @@ -791,6 +791,14 @@ function calcs.initEnv(build, mode, override, specEnv) ::continue:: end + local function setLifeRecoveryFromFlasks(item) -- Poisonous Concoction + if item and item.type == "Flask" and item.base.subType == "Life" then + if item.flaskData.lifeTotal > (env.itemModDB.multipliers["LifeFlaskRecovery"] or 0) then + env.itemModDB.multipliers["LifeFlaskRecovery"] = item.flaskData.lifeTotal + end + end + end + if not env.configInput.ignoreItemDisablers then local itemDisabled = {} local itemDisablers = {} @@ -853,9 +861,7 @@ function calcs.initEnv(build, mode, override, specEnv) end end for slot in pairs(trueDisabled) do - if slot:find("Flask") and items[slot] and items[slot].baseName:find("Life Flask") then -- save lifeTotal for PConc if life flask is in disabled slot - env.itemModDB.multipliers["LifeFlaskRecovery"] = items[slot].flaskData.lifeTotal - end + setLifeRecoveryFromFlasks(items[slot]) items[slot] = nil end end @@ -867,12 +873,7 @@ function calcs.initEnv(build, mode, override, specEnv) if slot.active then env.flasks[item] = true end - if item.base.subType == "Life" then - local highestLifeRecovery = env.itemModDB.multipliers["LifeFlaskRecovery"] or 0 - if item.flaskData.lifeTotal > highestLifeRecovery then - env.itemModDB.multipliers["LifeFlaskRecovery"] = item.flaskData.lifeTotal - end - end + setLifeRecoveryFromFlasks(item) item = nil elseif item and item.type == "Tincture" then if slot.active then From d6c371f07ac3d28598bb43b25b22bade61bd35a8 Mon Sep 17 00:00:00 2001 From: Peechey <92683202+Peechey@users.noreply.github.com> Date: Thu, 16 Apr 2026 12:25:45 -0500 Subject: [PATCH 3/4] indent fix --- src/Modules/CalcSetup.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Modules/CalcSetup.lua b/src/Modules/CalcSetup.lua index 85263fc8e7..d75b97251f 100644 --- a/src/Modules/CalcSetup.lua +++ b/src/Modules/CalcSetup.lua @@ -921,8 +921,8 @@ function calcs.initEnv(build, mode, override, specEnv) env.flaskSlotOccupied[flaskNum] = true end if item.base.subType == "Life" then + setLifeRecoveryFromFlasks(item) local highestCharges = env.itemModDB.multipliers["LifeFlaskCharges"] or 0 - setLifeRecoveryFromFlasks(item) if item.flaskData.chargesMax > highestCharges then env.itemModDB.multipliers["LifeFlaskCharges"] = item.flaskData.chargesMax end From 6752419a07a32b7e28f5faf26bc258b29700c0a1 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Fri, 17 Apr 2026 04:07:03 +1000 Subject: [PATCH 4/4] Simplify code Handle it all in the ordered slot loop so it doesn't need to be called on again --- src/Modules/CalcSetup.lua | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/Modules/CalcSetup.lua b/src/Modules/CalcSetup.lua index d75b97251f..2a3d495a1d 100644 --- a/src/Modules/CalcSetup.lua +++ b/src/Modules/CalcSetup.lua @@ -812,18 +812,14 @@ function calcs.initEnv(build, mode, override, specEnv) end end end + if item and item.type == "Flask" and item.base.subType == "Life" and item.flaskData then + -- Keep highest life flask recovery even if this slot is later disabled (e.g. Poisonous Concoction). + env.itemModDB.multipliers["LifeFlaskRecovery"] = m_max(env.itemModDB.multipliers["LifeFlaskRecovery"] or 0, item.flaskData.lifeTotal or 0) + end items[slotName] = item ::continue:: end - local function setLifeRecoveryFromFlasks(item) -- e.g. Poisonous Concoction - if item and item.type == "Flask" and item.base.subType == "Life" then - if item.flaskData.lifeTotal > (env.itemModDB.multipliers["LifeFlaskRecovery"] or 0) then - env.itemModDB.multipliers["LifeFlaskRecovery"] = item.flaskData.lifeTotal - end - end - end - if not env.configInput.ignoreItemDisablers then local itemDisabled = {} local itemDisablers = {} @@ -886,7 +882,6 @@ function calcs.initEnv(build, mode, override, specEnv) end end for slot in pairs(trueDisabled) do - setLifeRecoveryFromFlasks(items[slot]) items[slot] = nil end end @@ -921,7 +916,6 @@ function calcs.initEnv(build, mode, override, specEnv) env.flaskSlotOccupied[flaskNum] = true end if item.base.subType == "Life" then - setLifeRecoveryFromFlasks(item) local highestCharges = env.itemModDB.multipliers["LifeFlaskCharges"] or 0 if item.flaskData.chargesMax > highestCharges then env.itemModDB.multipliers["LifeFlaskCharges"] = item.flaskData.chargesMax