Skip to content

Commit 0f2a593

Browse files
LocalIdentityLocalIdentity
andauthored
Fix Poison stacks not being capped by skills and config option (#8035)
Updates the breakdowns and makes the single poison config work again Co-authored-by: LocalIdentity <localidentity2@gmail.com>
1 parent d4949f1 commit 0f2a593

File tree

1 file changed

+16
-42
lines changed

1 file changed

+16
-42
lines changed

src/Modules/CalcOffence.lua

Lines changed: 16 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -4107,27 +4107,21 @@ function calcs.offence(env, actor, activeSkill)
41074107
if PoisonStacks < 1 and (env.configInput.multiplierPoisonOnEnemy or 0) <= 1 then
41084108
skillModList:NewMod("Condition:SinglePoison", "FLAG", true, "poison")
41094109
end
4110-
globalOutput.PoisonStacks = PoisonStacks
41114110
if globalBreakdown then
4112-
globalBreakdown.PoisonStacks = {
4113-
"Average number of poisons",
4114-
s_format("%.2f ^8(chance to hit)", output.HitChance / 100),
4115-
s_format("* %.2f ^8(chance to poison)", poisonChance),
4116-
}
4117-
if (globalOutput.HitSpeed or globalOutput.Speed) > 0 then
4118-
t_insert(globalBreakdown.PoisonStacks, s_format("* %.2f ^8(poison duration)", globalOutput.PoisonDuration))
4119-
t_insert(globalBreakdown.PoisonStacks, s_format("* %.2f ^8(attacks per second)", globalOutput.HitSpeed or globalOutput.Speed))
4120-
end
4121-
if skillData.dpsMultiplier ~= 1 then
4122-
t_insert(globalBreakdown.PoisonStacks, s_format("* %.2f ^8(skill DPS multiplier)", skillData.dpsMultiplier))
4123-
end
4124-
if skillData.stackMultiplier and skillData.stackMultiplier ~= 1 then
4125-
t_insert(globalBreakdown.PoisonStacks, s_format("* %.2f ^8(stack multiplier)", skillData.stackMultiplier))
4126-
end
4127-
if quantityMultiplier ~= 1 then
4128-
t_insert(globalBreakdown.PoisonStacks, s_format("* %.2f ^8(quantity multiplier)", quantityMultiplier))
4111+
globalBreakdown.PoisonStacks = { }
4112+
globalBreakdown.multiChain(globalBreakdown.PoisonStacks, {
4113+
base = { "%.2fs ^8(poison duration)", globalOutput.PoisonDuration },
4114+
{ "%.2f ^8(poison chance)", poisonChance },
4115+
{ "%.2f ^8(hit chance)", output.HitChance / 100 },
4116+
{ "%.2f ^8(hits per second)", globalOutput.HitSpeed or globalOutput.Speed },
4117+
{ "%g ^8(dps multiplier for this skill)", skillData.dpsMultiplier or 1 },
4118+
{ "%g ^8(stack multiplier for this skill)", skillData.stackMultiplier or 1 },
4119+
{ "%g ^8(quantity multiplier for this skill)", quantityMultiplier },
4120+
total = s_format("= %.2f", PoisonStacks),
4121+
})
4122+
if skillModList:Flag(nil, "Condition:SinglePoison") then
4123+
t_insert(globalBreakdown.PoisonStacks, "Capped to 1")
41294124
end
4130-
t_insert(globalBreakdown.PoisonStacks, s_format("= %.2f", PoisonStacks))
41314125
end
41324126
for sub_pass = 1, 2 do
41334127
if skillModList:Flag(dotCfg, "AilmentsAreNeverFromCrit") or sub_pass == 1 then
@@ -4213,12 +4207,11 @@ function calcs.offence(env, actor, activeSkill)
42134207
globalBreakdown.PoisonEffMult = breakdown.effMult("Chaos", resist, 0, takenInc, effMult, takenMore, sourceRes, true)
42144208
end
42154209
end
4216-
local effectMod = calcLib.mod(skillModList, dotCfg, "AilmentEffect")
42174210
if skillModList:Flag(nil, "Condition:SinglePoison") then
4218-
output.TotalPoisonStacks = m_min(1, PoisonStacks)
4219-
else
4220-
output.TotalPoisonStacks = PoisonStacks
4211+
PoisonStacks = m_min(1, PoisonStacks)
42214212
end
4213+
globalOutput.PoisonStacks = PoisonStacks
4214+
local effectMod = calcLib.mod(skillModList, dotCfg, "AilmentEffect")
42224215
local singlePoisonDps = m_min(baseVal * effectMod * rateMod * effMult, data.misc.DotDpsCap)
42234216
local PoisonDPSUncapped = singlePoisonDps * PoisonStacks
42244217
local PoisonDPSCapped = m_min(PoisonDPSUncapped, data.misc.DotDpsCap)
@@ -4326,25 +4319,6 @@ function calcs.offence(env, actor, activeSkill)
43264319
t_insert(breakdown.PoisonDamage, s_format("%.1f ^8(damage per second)", singlePoisonDps))
43274320
t_insert(breakdown.PoisonDamage, s_format("x %.2fs ^8(poison duration)", globalOutput.PoisonDuration))
43284321
t_insert(breakdown.PoisonDamage, s_format("= %.1f ^8damage per poison stack", output.PoisonDamage))
4329-
if not skillData.showAverage then
4330-
breakdown.TotalPoisonStacks = { }
4331-
if isAttack then
4332-
t_insert(breakdown.TotalPoisonStacks, pass.label..":")
4333-
end
4334-
breakdown.multiChain(breakdown.TotalPoisonStacks, {
4335-
base = { "%.2fs ^8(poison duration)", globalOutput.PoisonDuration },
4336-
{ "%.2f ^8(poison chance)", output.PoisonChance / 100 },
4337-
{ "%.2f ^8(hit chance)", output.HitChance / 100 },
4338-
{ "%.2f ^8(hits per second)", globalOutput.HitSpeed or globalOutput.Speed },
4339-
{ "%g ^8(dps multiplier for this skill)", skillData.dpsMultiplier or 1 },
4340-
{ "%g ^8(stack multiplier for this skill)", skillData.stackMultiplier or 1 },
4341-
{ "%g ^8(quantity multiplier for this skill)", quantityMultiplier },
4342-
total = s_format("= %.1f", output.TotalPoisonStacks),
4343-
})
4344-
if skillModList:Flag(nil, "Condition:SinglePoison") then
4345-
t_insert(breakdown.TotalPoisonStacks, "Capped to 1")
4346-
end
4347-
end
43484322
end
43494323
end
43504324
end

0 commit comments

Comments
 (0)