From 5ee5cf8cbddd0f83b464a00892d9fca414da99e5 Mon Sep 17 00:00:00 2001 From: Peechey Date: Mon, 18 May 2026 07:13:11 +0000 Subject: [PATCH 1/2] Apply changes from https://github.com/PathOfBuildingCommunity/PathOfBuilding-PoE2/pull/1868 --- spec/System/TestItemMods_spec.lua.rej | 37 +++++++++++++++++++++++++++ src/Data/ModCache.lua.rej | 10 ++++++++ src/Modules/CalcDefence.lua | 1 - src/Modules/CalcDefence.lua.rej | 20 +++++++++++++++ src/Modules/CalcSections.lua.rej | 19 ++++++++++++++ src/Modules/ModParser.lua.rej | 15 +++++++++++ 6 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 spec/System/TestItemMods_spec.lua.rej create mode 100644 src/Data/ModCache.lua.rej create mode 100644 src/Modules/CalcDefence.lua.rej create mode 100644 src/Modules/CalcSections.lua.rej create mode 100644 src/Modules/ModParser.lua.rej diff --git a/spec/System/TestItemMods_spec.lua.rej b/spec/System/TestItemMods_spec.lua.rej new file mode 100644 index 00000000000..7de8976f70f --- /dev/null +++ b/spec/System/TestItemMods_spec.lua.rej @@ -0,0 +1,37 @@ +diff a/spec/System/TestItemMods_spec.lua b/spec/System/TestItemMods_spec.lua (rejected hunks) +@@ -220,4 +220,35 @@ describe("TetsItemMods", function() + assert.are_not.equals(120, build.calcsTab.mainOutput.Armour) + runCallback("OnFrame") + end) ++ ++ it("sacrosanctum - add life recoup to es recoup", function() ++ build.itemsTab:CreateDisplayItemFromRaw([[ ++ Rarity: UNIQUE ++ Sacrosanctum ++ Corvus Mantle ++ Armour: 588 ++ Energy Shield: 202 ++ League: Dawn of the Hunt ++ Variant: Pre 0.4.0 ++ Variant: Current ++ Selected Variant: 2 ++ Quality: 20 ++ LevelReq: 68 ++ Implicits: 1 ++ {range:0.5}+(20-30) to Spirit ++ {range:0.5}(80-120)% increased Armour and Energy Shield ++ {range:0.5}+(20-30) to Strength ++ {range:0.5}+(20-30) to Intelligence ++ {range:0.5}+(17-23)% to Chaos Resistance ++ {variant:1}{range:0.5}(5-10)% of Damage taken Recouped as Life ++ {variant:2}{range:0.5}(10-20)% of Damage taken Recouped as Life ++ Damage taken Recouped as Life is also Recouped as Energy Shield ++ ]]) ++ build.itemsTab:AddDisplayItem() ++ runCallback("OnFrame") ++ ++ assert.True(build.calcsTab.calcsOutput.LifeRecoupRecoveryAvg > 0) ++ assert.True(build.calcsTab.calcsOutput.EnergyShieldRecoupRecoveryAvg > 0) ++ assert.True(build.calcsTab.calcsOutput.LifeRecoupRecoveryAvg == build.calcsTab.calcsOutput.EnergyShieldRecoupRecoveryAvg) ++ end) + end) diff --git a/src/Data/ModCache.lua.rej b/src/Data/ModCache.lua.rej new file mode 100644 index 00000000000..5155fdbccbf --- /dev/null +++ b/src/Data/ModCache.lua.rej @@ -0,0 +1,10 @@ +diff a/src/Data/ModCache.lua b/src/Data/ModCache.lua (rejected hunks) +@@ -4677,7 +4677,7 @@ c["Damage of Enemies Hitting you is Unlucky while you are on Low Life 50% chance + c["Damage over Time bypasses your Energy Shield"]={nil,"Damage over Time bypasses your Energy Shield "} + c["Damage over Time bypasses your Energy Shield While not on Full Life, Sacrifice 1% of maximum Mana per Second to Recover that much Life"]={nil,"Damage over Time bypasses your Energy Shield While not on Full Life, Sacrifice 1% of maximum Mana per Second to Recover that much Life "} + c["Damage over Time bypasses your Energy Shield While not on Full Life, Sacrifice 10% of maximum Mana per Second to Recover that much Life"]={nil,"Damage over Time bypasses your Energy Shield While not on Full Life, Sacrifice 10% of maximum Mana per Second to Recover that much Life "} +-c["Damage taken Recouped as Life is also Recouped as Energy Shield"]={nil,"Damage taken Recouped as Life is also Recouped as Energy Shield "} ++c["Damage taken Recouped as Life is also Recouped as Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="AddLifeRecoupToEnergyShieldRecoup",type="FLAG",value=true}},nil} + c["Damage taken is Reserved from Darkness before being taken from Life or Energy Shield"]={nil,"Damage taken is Reserved from Darkness before being taken from Life or Energy Shield "} + c["Damage taken is Reserved from Darkness before being taken from Life or Energy Shield Darkness Reservation lasts for 5 seconds"]={nil,"Damage taken is Reserved from Darkness before being taken from Life or Energy Shield Darkness Reservation lasts for 5 seconds "} + c["Damage taken is Reserved from Darkness before being taken from Life or Energy Shield Darkness Reservation lasts for 5 seconds +10 to Maximum Darkness per Level"]={nil,"Damage taken is Reserved from Darkness before being taken from Life or Energy Shield Darkness Reservation lasts for 5 seconds +10 to Maximum Darkness per Level "} diff --git a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua index 6f73ef814b7..0cd6e616609 100644 --- a/src/Modules/CalcDefence.lua +++ b/src/Modules/CalcDefence.lua @@ -1451,7 +1451,6 @@ function calcs.defence(env, actor) end end end - -- pseudo recoup (eg %physical damage prevented from hits regenerated) for _, resource in ipairs(recoupTypeList) do if not modDB:Flag(nil, "No"..resource.."Regen") and not modDB:Flag(nil, "CannotGain"..resource) then diff --git a/src/Modules/CalcDefence.lua.rej b/src/Modules/CalcDefence.lua.rej new file mode 100644 index 00000000000..5788b89337e --- /dev/null +++ b/src/Modules/CalcDefence.lua.rej @@ -0,0 +1,20 @@ +diff a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua (rejected hunks) +@@ -1750,7 +1750,7 @@ function calcs.defence(env, actor) + + -- recoup + local function calcRecoup(recoup, recoupType, damageType) +- output[damageType..recoupType.."Recoup"] = (output[damageType..recoupType.."Recoup"] or 0) + recoup * output[recoupType.."RecoveryRateMod"] ++ output[damageType..recoupType.."Recoup"] = recoup * output[recoupType.."RecoveryRateMod"] + output["anyRecoup"] = output["anyRecoup"] + output[damageType..recoupType.."Recoup"] + if breakdown then + if output[recoupType.."RecoveryRateMod"] ~= 1 then +@@ -1777,9 +1777,6 @@ function calcs.defence(env, actor) + modDB:ReplaceMod("EnergyShieldRecoup", "BASE", recoup, mod.source) + end + end +- -- Kurgal mod +- calcRecoup(modDB:Sum("BASE", nil, "ElementalEnergyShieldRecoup"), "EnergyShield", "") +- + -- iterate over each damageType and add to base Life/Mana/Energy Shield Recoup + for _, recoupType in ipairs(recoupTypeList) do + for _, damageType in ipairs(dmgTypeList) do diff --git a/src/Modules/CalcSections.lua.rej b/src/Modules/CalcSections.lua.rej new file mode 100644 index 00000000000..82f2f8e9a0e --- /dev/null +++ b/src/Modules/CalcSections.lua.rej @@ -0,0 +1,19 @@ +diff a/src/Modules/CalcSections.lua b/src/Modules/CalcSections.lua (rejected hunks) +@@ -2365,7 +2365,7 @@ return { + }, + { format = "{0:output:EnergyShieldRecoupRecoveryMax}", + { breakdown = "EnergyShieldRecoupRecoveryMax" }, +- { label = "Sources", modName = { "EnergyShieldRecoup", "ElementalEnergyShieldRecoup", "PhysicalEnergyShieldRecoup", "LightningEnergyShieldRecoup", "ColdEnergyShieldRecoup", "FireEnergyShieldRecoup", "ChaosEnergyShieldRecoup", "PhysicalDamageMitigatedEnergyShieldPseudoRecoup" } }, ++ { label = "Sources", modName = { "EnergyShieldRecoup", "ElementalEnergyShieldRecoup", "PhysicalEnergyShieldRecoup", "LightningEnergyShieldRecoup", "ColdEnergyShieldRecoup", "FireEnergyShieldRecoup", "ChaosEnergyShieldRecoup", "PhysicalDamageMitigatedEnergyShieldPseudoRecoup" } }, + { label = "Recovery modifiers", modName = "EnergyShieldRecoveryRate" }, + { label = "Faster Recoup", modName = "3SecondRecoup" }, + }, +@@ -2384,7 +2384,7 @@ return { + { label = "Faster Recoup", modName = "3SecondRecoup" }, + }, + { format = "{0:output:EnergyShieldRecoupRecoveryAvg}", +- { breakdown = "EnergyShieldRecoupRecoveryAvg" }, ++ { breakdown = "EnergyShieldRecoupRecoveryAvg" }, + { label = "Sources", modName = { "EnergyShieldRecoup", "ElementalEnergyShieldRecoup", "PhysicalEnergyShieldRecoup", "LightningEnergyShieldRecoup", "ColdEnergyShieldRecoup", "FireEnergyShieldRecoup", "ChaosEnergyShieldRecoup", "PhysicalDamageMitigatedEnergyShieldPseudoRecoup" } }, + { label = "Recovery modifiers", modName = "EnergyShieldRecoveryRate" }, + { label = "Faster Recoup", modName = "3SecondRecoup" }, diff --git a/src/Modules/ModParser.lua.rej b/src/Modules/ModParser.lua.rej new file mode 100644 index 00000000000..d74c27275bf --- /dev/null +++ b/src/Modules/ModParser.lua.rej @@ -0,0 +1,15 @@ +diff a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua (rejected hunks) +@@ -4889,8 +4889,11 @@ local specialModList = { + ["(%d+)%% of damage taken while affected by clarity recouped as mana"] = function(num) return { mod("ManaRecoup", "BASE", num, { type = "Condition", var = "AffectedByClarity" }) } end, + ["recoup effects instead occur over 4 seconds"] = { flag("4SecondRecoup") }, + ["life recoup effects instead occur over 4 seconds"] = { flag("4SecondLifeRecoup") }, +- ["([%d%.]+)%% of physical damage prevented from hits in the past (%d+) seconds is regenerated as life per second"] = function(num, _, duration) return { +- mod("PhysicalDamageMitigatedLifePseudoRecoup", "BASE", num * duration), ++ ["damage taken recouped as (%a+) is also recouped as energy shield"] = function(_, type) return { ++ flag("Add"..firstToUpper(type).."RecoupToEnergyShieldRecoup"), ++ } end, ++ ["([%d%).]+)%% of physical damage prevented from hits in the past (%d+) seconds is regenerated as life per second"] = function(num, _, duration) return { ++ mod("PhysicalDamageMitigatedLifePseudoRecoup", "BASE", num * duration), + mod("PhysicalDamageMitigatedLifePseudoRecoupDuration", "BASE", duration), + } end, + ["([%d%.]+)%% of physical damage prevented from hits recently is regenerated as energy shield per second"] = function(num) return { mod("PhysicalDamageMitigatedEnergyShieldPseudoRecoup", "BASE", num * 4) } end, From 8bf8f2297e59399832fbd97aff62f7333b7ba415 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Thu, 23 Jul 2026 10:05:43 +1000 Subject: [PATCH 2/2] Fix merge --- spec/System/TestItemMods_spec.lua | 15 +++++++++++ spec/System/TestItemMods_spec.lua.rej | 37 --------------------------- src/Data/ModCache.lua.rej | 10 -------- src/Modules/CalcDefence.lua | 15 ++++++++--- src/Modules/CalcDefence.lua.rej | 20 --------------- src/Modules/CalcSections.lua.rej | 19 -------------- src/Modules/ModParser.lua | 3 +++ src/Modules/ModParser.lua.rej | 15 ----------- 8 files changed, 30 insertions(+), 104 deletions(-) delete mode 100644 spec/System/TestItemMods_spec.lua.rej delete mode 100644 src/Data/ModCache.lua.rej delete mode 100644 src/Modules/CalcDefence.lua.rej delete mode 100644 src/Modules/CalcSections.lua.rej delete mode 100644 src/Modules/ModParser.lua.rej diff --git a/spec/System/TestItemMods_spec.lua b/spec/System/TestItemMods_spec.lua index 3c185d98ace..8b32183fe99 100644 --- a/spec/System/TestItemMods_spec.lua +++ b/spec/System/TestItemMods_spec.lua @@ -612,4 +612,19 @@ describe("TetsItemMods", function() assert.are.equals(baseFrenzyChargesMax + 1, build.calcsTab.calcsOutput.FrenzyChargesMax) assert.are.equals(baseEnduranceChargesMax + 1, build.calcsTab.calcsOutput.EnduranceChargesMax) end) + + it("adds life recoup to energy shield recoup", function() + build.configTab.input.customMods = [[ + 20% of Damage taken Recouped as Life + 10% of Physical Damage taken Recouped as Life + Damage taken Recouped as Life is also Recouped as Energy Shield + ]] + build.configTab:BuildModList() + runCallback("OnFrame") + + assert.are.equals(20, build.calcsTab.calcsOutput.LifeRecoup) + assert.are.equals(20, build.calcsTab.calcsOutput.EnergyShieldRecoup) + assert.are.equals(10, build.calcsTab.calcsOutput.PhysicalLifeRecoup) + assert.are.equals(10, build.calcsTab.calcsOutput.PhysicalEnergyShieldRecoup) + end) end) diff --git a/spec/System/TestItemMods_spec.lua.rej b/spec/System/TestItemMods_spec.lua.rej deleted file mode 100644 index 7de8976f70f..00000000000 --- a/spec/System/TestItemMods_spec.lua.rej +++ /dev/null @@ -1,37 +0,0 @@ -diff a/spec/System/TestItemMods_spec.lua b/spec/System/TestItemMods_spec.lua (rejected hunks) -@@ -220,4 +220,35 @@ describe("TetsItemMods", function() - assert.are_not.equals(120, build.calcsTab.mainOutput.Armour) - runCallback("OnFrame") - end) -+ -+ it("sacrosanctum - add life recoup to es recoup", function() -+ build.itemsTab:CreateDisplayItemFromRaw([[ -+ Rarity: UNIQUE -+ Sacrosanctum -+ Corvus Mantle -+ Armour: 588 -+ Energy Shield: 202 -+ League: Dawn of the Hunt -+ Variant: Pre 0.4.0 -+ Variant: Current -+ Selected Variant: 2 -+ Quality: 20 -+ LevelReq: 68 -+ Implicits: 1 -+ {range:0.5}+(20-30) to Spirit -+ {range:0.5}(80-120)% increased Armour and Energy Shield -+ {range:0.5}+(20-30) to Strength -+ {range:0.5}+(20-30) to Intelligence -+ {range:0.5}+(17-23)% to Chaos Resistance -+ {variant:1}{range:0.5}(5-10)% of Damage taken Recouped as Life -+ {variant:2}{range:0.5}(10-20)% of Damage taken Recouped as Life -+ Damage taken Recouped as Life is also Recouped as Energy Shield -+ ]]) -+ build.itemsTab:AddDisplayItem() -+ runCallback("OnFrame") -+ -+ assert.True(build.calcsTab.calcsOutput.LifeRecoupRecoveryAvg > 0) -+ assert.True(build.calcsTab.calcsOutput.EnergyShieldRecoupRecoveryAvg > 0) -+ assert.True(build.calcsTab.calcsOutput.LifeRecoupRecoveryAvg == build.calcsTab.calcsOutput.EnergyShieldRecoupRecoveryAvg) -+ end) - end) diff --git a/src/Data/ModCache.lua.rej b/src/Data/ModCache.lua.rej deleted file mode 100644 index 5155fdbccbf..00000000000 --- a/src/Data/ModCache.lua.rej +++ /dev/null @@ -1,10 +0,0 @@ -diff a/src/Data/ModCache.lua b/src/Data/ModCache.lua (rejected hunks) -@@ -4677,7 +4677,7 @@ c["Damage of Enemies Hitting you is Unlucky while you are on Low Life 50% chance - c["Damage over Time bypasses your Energy Shield"]={nil,"Damage over Time bypasses your Energy Shield "} - c["Damage over Time bypasses your Energy Shield While not on Full Life, Sacrifice 1% of maximum Mana per Second to Recover that much Life"]={nil,"Damage over Time bypasses your Energy Shield While not on Full Life, Sacrifice 1% of maximum Mana per Second to Recover that much Life "} - c["Damage over Time bypasses your Energy Shield While not on Full Life, Sacrifice 10% of maximum Mana per Second to Recover that much Life"]={nil,"Damage over Time bypasses your Energy Shield While not on Full Life, Sacrifice 10% of maximum Mana per Second to Recover that much Life "} --c["Damage taken Recouped as Life is also Recouped as Energy Shield"]={nil,"Damage taken Recouped as Life is also Recouped as Energy Shield "} -+c["Damage taken Recouped as Life is also Recouped as Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="AddLifeRecoupToEnergyShieldRecoup",type="FLAG",value=true}},nil} - c["Damage taken is Reserved from Darkness before being taken from Life or Energy Shield"]={nil,"Damage taken is Reserved from Darkness before being taken from Life or Energy Shield "} - c["Damage taken is Reserved from Darkness before being taken from Life or Energy Shield Darkness Reservation lasts for 5 seconds"]={nil,"Damage taken is Reserved from Darkness before being taken from Life or Energy Shield Darkness Reservation lasts for 5 seconds "} - c["Damage taken is Reserved from Darkness before being taken from Life or Energy Shield Darkness Reservation lasts for 5 seconds +10 to Maximum Darkness per Level"]={nil,"Damage taken is Reserved from Darkness before being taken from Life or Energy Shield Darkness Reservation lasts for 5 seconds +10 to Maximum Darkness per Level "} diff --git a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua index 0cd6e616609..9d7d1611fd6 100644 --- a/src/Modules/CalcDefence.lua +++ b/src/Modules/CalcDefence.lua @@ -1418,6 +1418,11 @@ function calcs.defence(env, actor) end end end + local addToEnergyShieldFlag = "Add"..recoupType.."RecoupToEnergyShieldRecoup" + if modDB:Flag(nil, addToEnergyShieldFlag) then + local flagMod = modDB:Tabulate("FLAG", nil, addToEnergyShieldFlag)[1].mod + modDB:ReplaceMod("EnergyShieldRecoup", "BASE", baseRecoup, flagMod.source) + end end if modDB:Flag(nil, "UsePowerCharges") and modDB:Flag(nil, "PowerChargesConvertToAbsorptionCharges") then @@ -1429,12 +1434,11 @@ function calcs.defence(env, actor) for _, recoupType in ipairs(recoupTypeList) do for _, damageType in ipairs(dmgTypeList) do + local recoup = modDB:Sum("BASE", nil, damageType..recoupType.."Recoup") if recoupType == "Life" and modDB:Flag(nil, "EnergyShieldRecoupInsteadOfLife") then output[damageType.."LifeRecoup"] = 0 - local lifeRecoup = modDB:Sum("BASE", nil, damageType.."LifeRecoup") - modDB:NewMod(damageType.."EnergyShieldRecoup", "BASE", lifeRecoup, "Life Recoup Conversion") + modDB:NewMod(damageType.."EnergyShieldRecoup", "BASE", recoup, "Life Recoup Conversion") else - local recoup = modDB:Sum("BASE", nil, damageType..recoupType.."Recoup") output[damageType..recoupType.."Recoup"] = recoup * output[recoupType.."RecoveryRateMod"] output["anyRecoup"] = output["anyRecoup"] + output[damageType..recoupType.."Recoup"] if breakdown then @@ -1449,6 +1453,11 @@ function calcs.defence(env, actor) end end end + local addToEnergyShieldFlag = "Add"..recoupType.."RecoupToEnergyShieldRecoup" + if modDB:Flag(nil, addToEnergyShieldFlag) then + local flagMod = modDB:Tabulate("FLAG", nil, addToEnergyShieldFlag)[1].mod + modDB:ReplaceMod(damageType.."EnergyShieldRecoup", "BASE", recoup, flagMod.source) + end end end -- pseudo recoup (eg %physical damage prevented from hits regenerated) diff --git a/src/Modules/CalcDefence.lua.rej b/src/Modules/CalcDefence.lua.rej deleted file mode 100644 index 5788b89337e..00000000000 --- a/src/Modules/CalcDefence.lua.rej +++ /dev/null @@ -1,20 +0,0 @@ -diff a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua (rejected hunks) -@@ -1750,7 +1750,7 @@ function calcs.defence(env, actor) - - -- recoup - local function calcRecoup(recoup, recoupType, damageType) -- output[damageType..recoupType.."Recoup"] = (output[damageType..recoupType.."Recoup"] or 0) + recoup * output[recoupType.."RecoveryRateMod"] -+ output[damageType..recoupType.."Recoup"] = recoup * output[recoupType.."RecoveryRateMod"] - output["anyRecoup"] = output["anyRecoup"] + output[damageType..recoupType.."Recoup"] - if breakdown then - if output[recoupType.."RecoveryRateMod"] ~= 1 then -@@ -1777,9 +1777,6 @@ function calcs.defence(env, actor) - modDB:ReplaceMod("EnergyShieldRecoup", "BASE", recoup, mod.source) - end - end -- -- Kurgal mod -- calcRecoup(modDB:Sum("BASE", nil, "ElementalEnergyShieldRecoup"), "EnergyShield", "") -- - -- iterate over each damageType and add to base Life/Mana/Energy Shield Recoup - for _, recoupType in ipairs(recoupTypeList) do - for _, damageType in ipairs(dmgTypeList) do diff --git a/src/Modules/CalcSections.lua.rej b/src/Modules/CalcSections.lua.rej deleted file mode 100644 index 82f2f8e9a0e..00000000000 --- a/src/Modules/CalcSections.lua.rej +++ /dev/null @@ -1,19 +0,0 @@ -diff a/src/Modules/CalcSections.lua b/src/Modules/CalcSections.lua (rejected hunks) -@@ -2365,7 +2365,7 @@ return { - }, - { format = "{0:output:EnergyShieldRecoupRecoveryMax}", - { breakdown = "EnergyShieldRecoupRecoveryMax" }, -- { label = "Sources", modName = { "EnergyShieldRecoup", "ElementalEnergyShieldRecoup", "PhysicalEnergyShieldRecoup", "LightningEnergyShieldRecoup", "ColdEnergyShieldRecoup", "FireEnergyShieldRecoup", "ChaosEnergyShieldRecoup", "PhysicalDamageMitigatedEnergyShieldPseudoRecoup" } }, -+ { label = "Sources", modName = { "EnergyShieldRecoup", "ElementalEnergyShieldRecoup", "PhysicalEnergyShieldRecoup", "LightningEnergyShieldRecoup", "ColdEnergyShieldRecoup", "FireEnergyShieldRecoup", "ChaosEnergyShieldRecoup", "PhysicalDamageMitigatedEnergyShieldPseudoRecoup" } }, - { label = "Recovery modifiers", modName = "EnergyShieldRecoveryRate" }, - { label = "Faster Recoup", modName = "3SecondRecoup" }, - }, -@@ -2384,7 +2384,7 @@ return { - { label = "Faster Recoup", modName = "3SecondRecoup" }, - }, - { format = "{0:output:EnergyShieldRecoupRecoveryAvg}", -- { breakdown = "EnergyShieldRecoupRecoveryAvg" }, -+ { breakdown = "EnergyShieldRecoupRecoveryAvg" }, - { label = "Sources", modName = { "EnergyShieldRecoup", "ElementalEnergyShieldRecoup", "PhysicalEnergyShieldRecoup", "LightningEnergyShieldRecoup", "ColdEnergyShieldRecoup", "FireEnergyShieldRecoup", "ChaosEnergyShieldRecoup", "PhysicalDamageMitigatedEnergyShieldPseudoRecoup" } }, - { label = "Recovery modifiers", modName = "EnergyShieldRecoveryRate" }, - { label = "Faster Recoup", modName = "3SecondRecoup" }, diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 2438ab4ec87..0f0c91ce5fe 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -4593,6 +4593,9 @@ local specialModList = { ["recoup effects instead occur over 3 seconds"] = { flag("3SecondRecoup") }, ["life recoup effects instead occur over 3 seconds"] = { flag("3SecondLifeRecoup") }, ["recoup energy shield instead of life"] = { flag("EnergyShieldRecoupInsteadOfLife") }, + ["damage taken recouped as (%a+) is also recouped as energy shield"] = function(_, type) return { + flag("Add"..firstToUpper(type).."RecoupToEnergyShieldRecoup"), + } end, ["([%d%.]+)%% of physical damage prevented from hits in the past (%d+) seconds is regenerated as life per second"] = function(num, _, duration) return { mod("PhysicalDamageMitigatedLifePseudoRecoup", "BASE", num * duration), mod("PhysicalDamageMitigatedLifePseudoRecoupDuration", "BASE", duration), diff --git a/src/Modules/ModParser.lua.rej b/src/Modules/ModParser.lua.rej deleted file mode 100644 index d74c27275bf..00000000000 --- a/src/Modules/ModParser.lua.rej +++ /dev/null @@ -1,15 +0,0 @@ -diff a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua (rejected hunks) -@@ -4889,8 +4889,11 @@ local specialModList = { - ["(%d+)%% of damage taken while affected by clarity recouped as mana"] = function(num) return { mod("ManaRecoup", "BASE", num, { type = "Condition", var = "AffectedByClarity" }) } end, - ["recoup effects instead occur over 4 seconds"] = { flag("4SecondRecoup") }, - ["life recoup effects instead occur over 4 seconds"] = { flag("4SecondLifeRecoup") }, -- ["([%d%.]+)%% of physical damage prevented from hits in the past (%d+) seconds is regenerated as life per second"] = function(num, _, duration) return { -- mod("PhysicalDamageMitigatedLifePseudoRecoup", "BASE", num * duration), -+ ["damage taken recouped as (%a+) is also recouped as energy shield"] = function(_, type) return { -+ flag("Add"..firstToUpper(type).."RecoupToEnergyShieldRecoup"), -+ } end, -+ ["([%d%).]+)%% of physical damage prevented from hits in the past (%d+) seconds is regenerated as life per second"] = function(num, _, duration) return { -+ mod("PhysicalDamageMitigatedLifePseudoRecoup", "BASE", num * duration), - mod("PhysicalDamageMitigatedLifePseudoRecoupDuration", "BASE", duration), - } end, - ["([%d%.]+)%% of physical damage prevented from hits recently is regenerated as energy shield per second"] = function(num) return { mod("PhysicalDamageMitigatedEnergyShieldPseudoRecoup", "BASE", num * 4) } end,