Skip to content
Open
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
37 changes: 37 additions & 0 deletions spec/System/TestItemMods_spec.lua.rej
Original file line number Diff line number Diff line change
@@ -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)
10 changes: 10 additions & 0 deletions src/Data/ModCache.lua.rej
Original file line number Diff line number Diff line change
@@ -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 "}
1 change: 0 additions & 1 deletion src/Modules/CalcDefence.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
20 changes: 20 additions & 0 deletions src/Modules/CalcDefence.lua.rej
Original file line number Diff line number Diff line change
@@ -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
19 changes: 19 additions & 0 deletions src/Modules/CalcSections.lua.rej
Original file line number Diff line number Diff line change
@@ -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" },
15 changes: 15 additions & 0 deletions src/Modules/ModParser.lua.rej
Original file line number Diff line number Diff line change
@@ -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,