Skip to content

Commit de3b5a2

Browse files
Update chaos damage taken to deal double damage to energy shield (#62)
1 parent 3e7705c commit de3b5a2

File tree

3 files changed

+19
-16
lines changed

3 files changed

+19
-16
lines changed

src/Data/ModCache.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1245,6 +1245,7 @@ c["23% increased Mana Regeneration Rate"]={{[1]={flags=0,keywordFlags=0,name="Ma
12451245
c["23% increased Movement Speed"]={{[1]={flags=0,keywordFlags=0,name="MovementSpeed",type="INC",value=23}},nil}
12461246
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}
12471247
c["23% increased Strength"]={{[1]={flags=0,keywordFlags=0,name="Str",type="INC",value=23}},nil}
1248+
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}
12481249
c["23% reduced Light Radius"]={{[1]={flags=0,keywordFlags=0,name="LightRadius",type="INC",value=-23}},nil}
12491250
c["24% increased Attack Damage"]={{[1]={flags=1,keywordFlags=0,name="Damage",type="INC",value=24}},nil}
12501251
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}
@@ -1377,8 +1378,7 @@ c["25% less Magnitude of Chill you inflict"]={{[1]={flags=0,keywordFlags=0,name=
13771378
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 "}
13781379
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 "}
13791380
c["25% of Armour also applies to Fire Damage taken from Hits"]={{[1]={flags=0,keywordFlags=0,name="ArmourAppliesToFireDamageTaken",type="BASE",value=25}},nil}
1380-
c["25% of Damage taken bypasses Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="DamageTaken",type="BASE",value=25}}," bypasses Energy Shield "}
1381-
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 "}
1381+
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}
13821382
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}
13831383
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 "}
13841384
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}

src/Modules/CalcDefence.lua

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -449,15 +449,17 @@ function calcs.reducePoolsByDamage(poolTable, damageTable, actor)
449449
end
450450
local esBypass = output[damageType.."EnergyShieldBypass"] or 0
451451
if energyShield > 0 and (not modDB:Flag(nil, "EnergyShieldProtectsMana")) and (esBypass) < 100 then
452-
local tempDamage = m_min(damageRemainder * (1 - esBypass / 100), energyShield)
453-
energyShield = energyShield - tempDamage
452+
local esDamageTypeMultiplier = damageType == "Chaos" and 2 or 1
453+
local tempDamage = m_min(damageRemainder * (1 - esBypass / 100), energyShield / esDamageTypeMultiplier)
454+
energyShield = energyShield - tempDamage * esDamageTypeMultiplier
454455
damageRemainder = damageRemainder - tempDamage
455456
end
456457
if (output.sharedMindOverMatter + output[damageType.."MindOverMatter"]) > 0 then
457458
local MoMDamage = damageRemainder * m_min(output.sharedMindOverMatter + output[damageType.."MindOverMatter"], 100) / 100
458459
if modDB:Flag(nil, "EnergyShieldProtectsMana") and energyShield > 0 and esBypass < 100 then
459-
local tempDamage = m_min(MoMDamage * (1 - esBypass / 100), energyShield)
460-
energyShield = energyShield - tempDamage
460+
local esDamageTypeMultiplier = damageType == "Chaos" and 2 or 1
461+
local tempDamage = m_min(MoMDamage * (1 - esBypass / 100), energyShield / esDamageTypeMultiplier)
462+
energyShield = energyShield - tempDamage * esDamageTypeMultiplier
461463
MoMDamage = MoMDamage - tempDamage
462464
local tempDamage2 = m_min(MoMDamage, mana)
463465
mana = mana - tempDamage2
@@ -2308,13 +2310,6 @@ function calcs.buildDefenceEstimations(env, actor)
23082310
if output[damageType.."EnergyShieldBypass"] ~= 0 then
23092311
output.AnyBypass = true
23102312
end
2311-
if damageType == "Chaos" then
2312-
if not modDB:Flag(nil, "ChaosNotBypassEnergyShield") then
2313-
output[damageType.."EnergyShieldBypass"] = output[damageType.."EnergyShieldBypass"] + 100
2314-
else
2315-
output.AnyBypass = true
2316-
end
2317-
end
23182313
end
23192314
output[damageType.."EnergyShieldBypass"] = m_max(m_min(output[damageType.."EnergyShieldBypass"], 100), 0)
23202315
output.MinimumBypass = m_min(output.MinimumBypass, output[damageType.."EnergyShieldBypass"])
@@ -2546,13 +2541,14 @@ function calcs.buildDefenceEstimations(env, actor)
25462541
if modDB:Flag(nil, "EnergyShieldProtectsMana") then
25472542
manatext = manatext.." and non-bypassed Energy Shield"
25482543
else
2544+
local chaosESMultiplier = damageType == "Chaos" and 2 or 1
25492545
if output[damageType.."EnergyShieldBypass"] > 0 then
2550-
local poolProtected = output.EnergyShieldRecoveryCap / (1 - output[damageType.."EnergyShieldBypass"] / 100) * (output[damageType.."EnergyShieldBypass"] / 100)
2546+
local poolProtected = output.EnergyShieldRecoveryCap / (1 - output[damageType.."EnergyShieldBypass"] / 100) * (output[damageType.."EnergyShieldBypass"] / 100 / chaosESMultiplier)
25512547
output[damageType.."TotalPool"] = m_max(output[damageType.."TotalPool"] - poolProtected, 0) + m_min(output[damageType.."TotalPool"], poolProtected) / (output[damageType.."EnergyShieldBypass"] / 100)
25522548
output[damageType.."TotalHitPool"] = m_max(output[damageType.."TotalHitPool"] - poolProtected, 0) + m_min(output[damageType.."TotalHitPool"], poolProtected) / (output[damageType.."EnergyShieldBypass"] / 100)
25532549
else
2554-
output[damageType.."TotalPool"] = output[damageType.."TotalPool"] + output.EnergyShieldRecoveryCap
2555-
output[damageType.."TotalHitPool"] = output[damageType.."TotalHitPool"] + output.EnergyShieldRecoveryCap
2550+
output[damageType.."TotalPool"] = output[damageType.."TotalPool"] + output.EnergyShieldRecoveryCap / chaosESMultiplier
2551+
output[damageType.."TotalHitPool"] = output[damageType.."TotalHitPool"] + output.EnergyShieldRecoveryCap / chaosESMultiplier
25562552
end
25572553
end
25582554
end

src/Modules/ModParser.lua

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2178,6 +2178,13 @@ local specialModList = {
21782178
["physical damage taken bypasses energy shield"] = {
21792179
mod("PhysicalEnergyShieldBypass", "BASE", 100),
21802180
},
2181+
["(%d+)%% of damage taken bypasses energy shield"] = function(num) return {
2182+
mod("PhysicalEnergyShieldBypass", "OVERRIDE", num),
2183+
mod("LightningEnergyShieldBypass", "OVERRIDE", num),
2184+
mod("ColdEnergyShieldBypass", "OVERRIDE", num),
2185+
mod("FireEnergyShieldBypass", "OVERRIDE", num),
2186+
mod("ChaosEnergyShieldBypass", "OVERRIDE", num),
2187+
} end,
21812188
["auras from your skills do not affect allies"] = { flag("SelfAuraSkillsCannotAffectAllies") },
21822189
["auras from your skills have (%d+)%% more effect on you"] = function(num) return { mod("SkillAuraEffectOnSelf", "MORE", num) } end,
21832190
["auras from your skills have (%d+)%% increased effect on you"] = function(num) return { mod("SkillAuraEffectOnSelf", "INC", num) } end,

0 commit comments

Comments
 (0)