Skip to content

Commit bfd35fc

Browse files
author
LocalIdentity
committed
Cap pen to not go below 0
1 parent 515a651 commit bfd35fc

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

src/Modules/CalcBreakdown.lua

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,14 +132,16 @@ function breakdown.effMult(damageType, resist, pen, taken, mult, takenMore, sour
132132
if not useRes then
133133
t_insert(out, s_format("x %d%% ^8(resistance ignored)", 0))
134134
t_insert(out, s_format("= %d%%", (0)))
135-
else
135+
elseif (resist - pen) < 0 then
136+
t_insert(out, s_format("= %d%% ^8(penetration cannot bring resistances below 0)", 0))
137+
else
136138
t_insert(out, s_format("= %d%%", (resist - pen)))
137139
end
138140
end
139141
if useRes then
140142
breakdown.multiChain(out, {
141143
label = "Effective DPS modifier:",
142-
{ "%.2f ^8(%s)", 1 - (resist - pen) / 100, resistForm },
144+
{ "%.2f ^8(%s)", 1 - (math.max(resist - pen,0)) / 100, resistForm },
143145
{ "%.2f ^8(increased/reduced damage taken)", 1 + taken / 100 },
144146
{ "%.2f ^8(more/less damage taken)", takenMore },
145147
total = s_format("= %.3f", mult),

src/Modules/CalcOffence.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3237,7 +3237,7 @@ function calcs.offence(env, actor, activeSkill)
32373237
if skillModList:Flag(cfg, isElemental[damageType] and "CannotElePenIgnore" or nil) then
32383238
effMult = effMult * (1 - resist / 100)
32393239
elseif useRes then
3240-
effMult = effMult * (1 - (resist - pen) / 100)
3240+
effMult = effMult * (1 - (m_max(resist - pen, 0)) / 100)
32413241
end
32423242
damageTypeHitMin = damageTypeHitMin * effMult
32433243
damageTypeHitMax = damageTypeHitMax * effMult
@@ -3248,7 +3248,7 @@ function calcs.offence(env, actor, activeSkill)
32483248
if pass == 2 and breakdown and (effMult ~= 1 or sourceRes ~= damageType) and skillModList:Flag(cfg, isElemental[damageType] and "CannotElePenIgnore" or nil) then
32493249
t_insert(breakdown[damageType], s_format("x %.3f ^8(effective DPS modifier)", effMult))
32503250
breakdown[damageType.."EffMult"] = breakdown.effMult(damageType, resist, 0, takenInc, effMult, takenMore, sourceRes, useRes, invertChance)
3251-
elseif pass == 2 and breakdown and (effMult ~= 1 or sourceRes ~= damageType) then
3251+
elseif pass == 2 and breakdown and (effMult ~= 1 or (resist - pen) < 0 or sourceRes ~= damageType) then
32523252
t_insert(breakdown[damageType], s_format("x %.3f ^8(effective DPS modifier)", effMult))
32533253
breakdown[damageType.."EffMult"] = breakdown.effMult(damageType, resist, pen, takenInc, effMult, takenMore, sourceRes, useRes, invertChance)
32543254
end

0 commit comments

Comments
 (0)