Skip to content
This repository was archived by the owner on Oct 21, 2025. It is now read-only.
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
4 changes: 2 additions & 2 deletions src/Data/ModCache.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1245,6 +1245,7 @@ c["23% increased Mana Regeneration Rate"]={{[1]={flags=0,keywordFlags=0,name="Ma
c["23% increased Movement Speed"]={{[1]={flags=0,keywordFlags=0,name="MovementSpeed",type="INC",value=23}},nil}
c["23% increased Skill Speed"]={{[1]={flags=0,keywordFlags=0,name="Speed",type="INC",value=23},[2]={flags=0,keywordFlags=0,name="WarcrySpeed",type="INC",value=23}},nil}
c["23% increased Strength"]={{[1]={flags=0,keywordFlags=0,name="Str",type="INC",value=23}},nil}
c["23% of Damage taken bypasses Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="PhysicalEnergyShieldBypass",type="OVERRIDE",value=23},[2]={flags=0,keywordFlags=0,name="LightningEnergyShieldBypass",type="OVERRIDE",value=23},[3]={flags=0,keywordFlags=0,name="ColdEnergyShieldBypass",type="OVERRIDE",value=23},[4]={flags=0,keywordFlags=0,name="FireEnergyShieldBypass",type="OVERRIDE",value=23},[5]={flags=0,keywordFlags=0,name="ChaosEnergyShieldBypass",type="OVERRIDE",value=23}},nil}
c["23% reduced Light Radius"]={{[1]={flags=0,keywordFlags=0,name="LightRadius",type="INC",value=-23}},nil}
c["24% increased Attack Damage"]={{[1]={flags=1,keywordFlags=0,name="Damage",type="INC",value=24}},nil}
c["24% increased Damage with Hits against Enemies affected by Elemental Ailments"]={{[1]={[1]={actor="enemy",type="ActorCondition",varList={[1]="Frozen",[2]="Chilled",[3]="Shocked",[4]="Ignited",[5]="Scorched",[6]="Brittle",[7]="Sapped"}},flags=0,keywordFlags=262144,name="Damage",type="INC",value=24}},nil}
Expand Down Expand Up @@ -1377,8 +1378,7 @@ c["25% less Magnitude of Chill you inflict"]={{[1]={flags=0,keywordFlags=0,name=
c["25% more Skill Speed while Off Hand is empty and you have"]={{[1]={[1]={type="Condition",var="OffHandAttack"},[2]={skillType=1,type="SkillType"},flags=0,keywordFlags=0,name="Speed",type="MORE",value=25},[2]={[1]={type="Condition",var="OffHandAttack"},[2]={skillType=1,type="SkillType"},flags=0,keywordFlags=0,name="WarcrySpeed",type="MORE",value=25}}," while is empty and you have "}
c["25% more Skill Speed while Off Hand is empty and you have a One-Handed Martial Weapon equipped in your Main Hand"]={{[1]={[1]={type="Condition",var="OffHandAttack"},[2]={skillType=1,type="SkillType"},[3]={type="Condition",var="MainHandAttack"},[4]={skillType=1,type="SkillType"},flags=8192,keywordFlags=0,name="Speed",type="MORE",value=25},[2]={[1]={type="Condition",var="OffHandAttack"},[2]={skillType=1,type="SkillType"},[3]={type="Condition",var="MainHandAttack"},[4]={skillType=1,type="SkillType"},flags=8192,keywordFlags=0,name="WarcrySpeed",type="MORE",value=25}}," while is empty and you have a One-Handed Martial equipped in your "}
c["25% of Armour also applies to Fire Damage taken from Hits"]={{[1]={flags=0,keywordFlags=0,name="ArmourAppliesToFireDamageTaken",type="BASE",value=25}},nil}
c["25% of Damage taken bypasses Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="DamageTaken",type="BASE",value=25}}," bypasses Energy Shield "}
c["25% of Damage taken bypasses Energy Shield Gain 30% of Maximum Life as Extra Maximum Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="DamageTakenGainAsEnergyShield",type="BASE",value=25}}," bypasses Energy Shield Gain 30% of Maximum Life "}
c["25% of Damage taken bypasses Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="PhysicalEnergyShieldBypass",type="OVERRIDE",value=25},[2]={flags=0,keywordFlags=0,name="LightningEnergyShieldBypass",type="OVERRIDE",value=25},[3]={flags=0,keywordFlags=0,name="ColdEnergyShieldBypass",type="OVERRIDE",value=25},[4]={flags=0,keywordFlags=0,name="FireEnergyShieldBypass",type="OVERRIDE",value=25},[5]={flags=0,keywordFlags=0,name="ChaosEnergyShieldBypass",type="OVERRIDE",value=25}},nil}
c["25% of Life Loss from Hits is prevented, then that much Life is lost over 4 seconds instead"]={{[1]={flags=0,keywordFlags=0,name="LifeLossPrevented",type="BASE",value=25}},nil}
c["25% of Spell Mana Cost Converted to Life Cost"]={{[1]={flags=2,keywordFlags=0,name="ManaCost",type="BASE",value=25}}," Converted to Life Cost "}
c["25% reduced Attribute Requirements"]={{[1]={flags=0,keywordFlags=0,name="StrRequirement",type="INC",value=-25},[2]={flags=0,keywordFlags=0,name="DexRequirement",type="INC",value=-25},[3]={flags=0,keywordFlags=0,name="IntRequirement",type="INC",value=-25}},nil}
Expand Down
24 changes: 10 additions & 14 deletions src/Modules/CalcDefence.lua
Original file line number Diff line number Diff line change
Expand Up @@ -449,15 +449,17 @@ function calcs.reducePoolsByDamage(poolTable, damageTable, actor)
end
local esBypass = output[damageType.."EnergyShieldBypass"] or 0
if energyShield > 0 and (not modDB:Flag(nil, "EnergyShieldProtectsMana")) and (esBypass) < 100 then
local tempDamage = m_min(damageRemainder * (1 - esBypass / 100), energyShield)
energyShield = energyShield - tempDamage
local esDamageTypeMultiplier = damageType == "Chaos" and 2 or 1
local tempDamage = m_min(damageRemainder * (1 - esBypass / 100), energyShield / esDamageTypeMultiplier)
energyShield = energyShield - tempDamage * esDamageTypeMultiplier
damageRemainder = damageRemainder - tempDamage
end
if (output.sharedMindOverMatter + output[damageType.."MindOverMatter"]) > 0 then
local MoMDamage = damageRemainder * m_min(output.sharedMindOverMatter + output[damageType.."MindOverMatter"], 100) / 100
if modDB:Flag(nil, "EnergyShieldProtectsMana") and energyShield > 0 and esBypass < 100 then
local tempDamage = m_min(MoMDamage * (1 - esBypass / 100), energyShield)
energyShield = energyShield - tempDamage
local esDamageTypeMultiplier = damageType == "Chaos" and 2 or 1
local tempDamage = m_min(MoMDamage * (1 - esBypass / 100), energyShield / esDamageTypeMultiplier)
energyShield = energyShield - tempDamage * esDamageTypeMultiplier
MoMDamage = MoMDamage - tempDamage
local tempDamage2 = m_min(MoMDamage, mana)
mana = mana - tempDamage2
Expand Down Expand Up @@ -2308,13 +2310,6 @@ function calcs.buildDefenceEstimations(env, actor)
if output[damageType.."EnergyShieldBypass"] ~= 0 then
output.AnyBypass = true
end
if damageType == "Chaos" then
if not modDB:Flag(nil, "ChaosNotBypassEnergyShield") then
output[damageType.."EnergyShieldBypass"] = output[damageType.."EnergyShieldBypass"] + 100
else
output.AnyBypass = true
end
end
end
output[damageType.."EnergyShieldBypass"] = m_max(m_min(output[damageType.."EnergyShieldBypass"], 100), 0)
output.MinimumBypass = m_min(output.MinimumBypass, output[damageType.."EnergyShieldBypass"])
Expand Down Expand Up @@ -2546,13 +2541,14 @@ function calcs.buildDefenceEstimations(env, actor)
if modDB:Flag(nil, "EnergyShieldProtectsMana") then
manatext = manatext.." and non-bypassed Energy Shield"
else
local chaosESMultiplier = damageType == "Chaos" and 2 or 1
if output[damageType.."EnergyShieldBypass"] > 0 then
local poolProtected = output.EnergyShieldRecoveryCap / (1 - output[damageType.."EnergyShieldBypass"] / 100) * (output[damageType.."EnergyShieldBypass"] / 100)
local poolProtected = output.EnergyShieldRecoveryCap / (1 - output[damageType.."EnergyShieldBypass"] / 100) * (output[damageType.."EnergyShieldBypass"] / 100 / chaosESMultiplier)
output[damageType.."TotalPool"] = m_max(output[damageType.."TotalPool"] - poolProtected, 0) + m_min(output[damageType.."TotalPool"], poolProtected) / (output[damageType.."EnergyShieldBypass"] / 100)
output[damageType.."TotalHitPool"] = m_max(output[damageType.."TotalHitPool"] - poolProtected, 0) + m_min(output[damageType.."TotalHitPool"], poolProtected) / (output[damageType.."EnergyShieldBypass"] / 100)
else
output[damageType.."TotalPool"] = output[damageType.."TotalPool"] + output.EnergyShieldRecoveryCap
output[damageType.."TotalHitPool"] = output[damageType.."TotalHitPool"] + output.EnergyShieldRecoveryCap
output[damageType.."TotalPool"] = output[damageType.."TotalPool"] + output.EnergyShieldRecoveryCap / chaosESMultiplier
output[damageType.."TotalHitPool"] = output[damageType.."TotalHitPool"] + output.EnergyShieldRecoveryCap / chaosESMultiplier
end
end
end
Expand Down
7 changes: 7 additions & 0 deletions src/Modules/ModParser.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2178,6 +2178,13 @@
["physical damage taken bypasses energy shield"] = {
mod("PhysicalEnergyShieldBypass", "BASE", 100),
},
["(%d+)%% of damage taken bypasses energy shield"] = function(num) return {
mod("PhysicalEnergyShieldBypass", "OVERRIDE", num),
mod("LightningEnergyShieldBypass", "OVERRIDE", num),
mod("ColdEnergyShieldBypass", "OVERRIDE", num),
mod("FireEnergyShieldBypass", "OVERRIDE", num),
mod("ChaosEnergyShieldBypass", "OVERRIDE", num),
} end,
["auras from your skills do not affect allies"] = { flag("SelfAuraSkillsCannotAffectAllies") },
["auras from your skills have (%d+)%% more effect on you"] = function(num) return { mod("SkillAuraEffectOnSelf", "MORE", num) } end,
["auras from your skills have (%d+)%% increased effect on you"] = function(num) return { mod("SkillAuraEffectOnSelf", "INC", num) } end,
Expand Down Expand Up @@ -2287,16 +2294,16 @@
["life leech is instant"] = { mod("InstantLifeLeech", "BASE", 100), },
["mana leech is instant"] = { mod("InstantManaLeech", "BASE", 100), },
["mana leech effects also recover energy shield"] = { flag("ManaLeechRecoversEnergyShield") },
["leeche?s? (%d.+)%% of (%a+) damage as mana"] = function(num, _, dmgType) return {

Check warning on line 2297 in src/Modules/ModParser.lua

View workflow job for this annotation

GitHub Actions / spellcheck

Unknown word (leeche)
mod(firstToUpper(dmgType) .. "DamageManaLeech", "BASE", num),
} end,
["leeche?s? (%d.+)%% of (%a+) damage as life"] = function(num, _, dmgType) return {

Check warning on line 2300 in src/Modules/ModParser.lua

View workflow job for this annotation

GitHub Actions / spellcheck

Unknown word (leeche)
mod(firstToUpper(dmgType) .. "DamageLifeLeech", "BASE", num),
} end,
["leeche?s? (%d.+)%% of (%a+) attack damage as mana"] = function(num, _, dmgType) return {

Check warning on line 2303 in src/Modules/ModParser.lua

View workflow job for this annotation

GitHub Actions / spellcheck

Unknown word (leeche)
mod(firstToUpper(dmgType) .. "DamageManaLeech", "BASE", num, nil, ModFlag.Attack, 0),
} end,
["leeche?s? (%d.+)%% of (%a+) attack damage as life"] = function(num, _, dmgType) return {

Check warning on line 2306 in src/Modules/ModParser.lua

View workflow job for this annotation

GitHub Actions / spellcheck

Unknown word (leeche)
mod(firstToUpper(dmgType) .. "DamageLifeLeech", "BASE", num, nil, ModFlag.Attack, 0),
} end,
-- Ascendant
Expand Down Expand Up @@ -2443,8 +2450,8 @@
["(%d+)%% increased mirage archer duration"] = function(num) return { mod("MirageArcherDuration", "INC", num), } end,
["([%-%+]%d+) to maximum number of summoned mirage archers"] = function(num) return { mod("MirageArcherMaxCount", "BASE", num), } end,
["([%-%+]%d+) to maximum number of sacred wisps"] = function(num) return { mod("SacredWispsMaxCount", "BASE", num), } end,
["projectiles deal (%d+)%% more hit damage to targets in the first ([%d%.]+) metres of their movement, scaling [du][op]w?n? with distance travelled to reach (%d+)%% after ([%d%.]+) metres"] = function(num, _, strFirstDist, strLowPrct, strSecondDist) return {

Check warning on line 2453 in src/Modules/ModParser.lua

View workflow job for this annotation

GitHub Actions / spellcheck

Unknown word (Prct)
mod("Damage", "MORE", 100, nil, bor(ModFlag.Hit, ModFlag.Projectile), { type = "DistanceRamp", ramp = { { 10*tonumber(strFirstDist), num / 100}, {10*tonumber(strSecondDist), tonumber(strLowPrct) / 100} } }),

Check warning on line 2454 in src/Modules/ModParser.lua

View workflow job for this annotation

GitHub Actions / spellcheck

Unknown word (Prct)
} end,
-- Elementalist
["gain (%d+)%% increased area of effect for %d+ seconds"] = function(num) return { mod("AreaOfEffect", "INC", num, { type = "Condition", var = "PendulumOfDestructionAreaOfEffect" }) } end,
Expand Down Expand Up @@ -2802,7 +2809,7 @@
} end,
["gain maximum life instead of maximum energy shield from equipped armour items"] = { flag("ConvertArmourESToLife") },
-- Mercenary - Gemling
["attribute requirements of gems can be satisi?fied by your highest attribute"] = { flag("GemAttributeRequirementsSatisfiedByHighestAttribute") },

Check warning on line 2812 in src/Modules/ModParser.lua

View workflow job for this annotation

GitHub Actions / spellcheck

Unknown word (satisi)

Check warning on line 2812 in src/Modules/ModParser.lua

View workflow job for this annotation

GitHub Actions / spellcheck

Unknown word (fied)
["you can use two copies of the same support gem in different skills"] = { mod("MaxSupportGemCopies", "OVERRIDE", 2) },
-- Stormweaver
["targets can be affected by two of your shocks at the same time"] = { flag("ShockCanStack"), mod("ShockStacksMax", "OVERRIDE", 2) },
Expand Down
Loading