@@ -4276,15 +4276,14 @@ function calcs.offence(env, actor, activeSkill)
42764276 end
42774277 globalOutput .PoisonStacks = PoisonStacks
42784278 local effectMod = calcLib .mod (skillModList , dotCfg , " AilmentEffect" )
4279- local singlePoisonDps = m_min (baseVal * effectMod * rateMod * effMult , data .misc .DotDpsCap )
4280- local PoisonDPSUncapped = singlePoisonDps * PoisonStacks
4281- local PoisonDPSCapped = m_min ( PoisonDPSUncapped , data . misc . DotDpsCap )
4282- output .PoisonDamage = singlePoisonDps * globalOutput .PoisonDuration
4283- local MinPoisonDPSUncapped = baseMinVal * effectMod * rateMod * effMult * PoisonStacks
4279+ local singlePoisonDPSUncapped = m_min (baseVal * effectMod * rateMod * effMult , data .misc .DotDpsCap )
4280+ local singlePoisonDPSCapped = m_min ( singlePoisonDPSUncapped , data . misc . DotDpsCap )
4281+ output . PoisonDPS = singlePoisonDPSCapped
4282+ output .PoisonDamage = singlePoisonDPSCapped * globalOutput .PoisonDuration
4283+ local MinPoisonDPSUncapped = baseMinVal * effectMod * rateMod * effMult
42844284 local MinPoisonDPSCapped = m_min (MinPoisonDPSUncapped , data .misc .DotDpsCap )
4285- local MaxPoisonDPSUncapped = baseMaxVal * effectMod * rateMod * effMult * PoisonStacks
4285+ local MaxPoisonDPSUncapped = baseMaxVal * effectMod * rateMod * effMult
42864286 local MaxPoisonDPSCapped = m_min (MaxPoisonDPSUncapped , data .misc .DotDpsCap )
4287- output .PoisonDPS = PoisonDPSCapped
42884287 local groundMult = m_max (skillModList :Max (nil , " PoisonDpsAsCausticGround" ) or 0 , enemyDB :Max (nil , " PoisonDpsAsCausticGround" ) or 0 )
42894288 if groundMult > 0 then
42904289 local CausticGroundDPSUncapped = baseVal * effectMod * rateMod * effMult * groundMult / 100
@@ -4300,11 +4299,15 @@ function calcs.offence(env, actor, activeSkill)
43004299 }
43014300 end
43024301 end
4302+ local PoisonDPSUncapped
4303+ local PoisonDPSCapped
43034304 if skillData .showAverage then
43044305 output .TotalPoisonAverageDamage = output .PoisonDamage
43054306 output .TotalPoisonDPS = output .PoisonDPS
43064307 else
4307- output .TotalPoisonDPS = m_min (PoisonDPSCapped , data .misc .DotDpsCap )
4308+ PoisonDPSUncapped = singlePoisonDPSCapped * PoisonStacks
4309+ PoisonDPSCapped = m_min (PoisonDPSUncapped , data .misc .DotDpsCap )
4310+ output .TotalPoisonDPS = PoisonDPSCapped
43084311 end
43094312 if breakdown then
43104313 if output .CritPoisonDotMulti and (output .CritPoisonDotMulti ~= output .PoisonDotMulti ) then
@@ -4322,7 +4325,7 @@ function calcs.offence(env, actor, activeSkill)
43224325 t_insert (breakdown .PoisonDPS , s_format (" = %.1f" , baseVal , 1 ))
43234326 t_insert (breakdown .PoisonDPS , " " )
43244327 t_insert (breakdown .PoisonDPS , " Poison DPS:" )
4325- if baseVal ~= PoisonDPSUncapped then
4328+ if baseVal ~= singlePoisonDPSUncapped then
43264329 t_insert (breakdown .PoisonDPS , s_format (" %.1f ^8(base damage per second)" , baseVal ))
43274330 end
43284331 if effectMod ~= 1 then
@@ -4334,13 +4337,10 @@ function calcs.offence(env, actor, activeSkill)
43344337 if effMult ~= 1 then
43354338 t_insert (breakdown .PoisonDPS , s_format (" x %.3f ^8(effective DPS modifier from enemy debuffs)" , effMult ))
43364339 end
4337- if PoisonStacks ~= 1 then
4338- t_insert (breakdown .PoisonDPS , s_format (" x %.2f ^8(poison stacks)" , PoisonStacks ))
4339- end
4340- if output .PoisonDPS ~= PoisonDPSUncapped then
4341- t_insert (breakdown .PoisonDPS , s_format (" = %.1f ^8(Uncapped raw Poison DPS)" , PoisonDPSUncapped ))
4342- t_insert (breakdown .PoisonDPS , s_format (" ^8(Raw Poison DPS is " .. colorCodes .NEGATIVE .. " overcapped ^8by^7 %.0f ^8:^7 %.1f%%^8)" , PoisonDPSUncapped - PoisonDPSCapped , (PoisonDPSUncapped - PoisonDPSCapped ) / PoisonDPSCapped * 100 ))
4343- t_insert (breakdown .PoisonDPS , s_format (" = %d ^8(Capped Poison DPS)" , PoisonDPSCapped ))
4340+ if output .PoisonDPS ~= singlePoisonDPSUncapped then
4341+ t_insert (breakdown .PoisonDPS , s_format (" = %.1f ^8(Uncapped raw Poison DPS)" , singlePoisonDPSUncapped ))
4342+ t_insert (breakdown .PoisonDPS , s_format (" ^8(Raw Poison DPS is " .. colorCodes .NEGATIVE .. " overcapped ^8by^7 %.0f ^8:^7 %.1f%%^8)" , singlePoisonDPSUncapped - singlePoisonDPSCapped , (singlePoisonDPSUncapped - singlePoisonDPSCapped ) / singlePoisonDPSCapped * 100 ))
4343+ t_insert (breakdown .PoisonDPS , s_format (" = %d ^8(Capped Poison DPS)" , singlePoisonDPSCapped ))
43444344 else
43454345 t_insert (breakdown .PoisonDPS , s_format (" = %.1f ^8per second" , output .PoisonDPS ))
43464346 end
@@ -4361,6 +4361,19 @@ function calcs.offence(env, actor, activeSkill)
43614361 if MaxPoisonDPSCapped ~= MaxPoisonDPSUncapped or MinPoisonDPSCapped ~= MinPoisonDPSUncapped then
43624362 t_insert (breakdown .PoisonDPS , s_format (" %.0f to %.0f ^8(Capped Poison DPS Range)" , MinPoisonDPSCapped , MaxPoisonDPSCapped ))
43634363 end
4364+ if not skillData .showAverage and PoisonStacks ~= 1 then
4365+ breakdown .TotalPoisonDPS = {
4366+ s_format (" %.1f ^8single poison damage per second" , singlePoisonDPSCapped ),
4367+ s_format (" x %.2f ^8(poison stacks)" , PoisonStacks ),
4368+ }
4369+ if output .TotalPoisonDPS ~= PoisonDPSUncapped then
4370+ t_insert (breakdown .TotalPoisonDPS , s_format (" = %.1f ^8(Uncapped raw Poison DPS)" , PoisonDPSUncapped ))
4371+ t_insert (breakdown .TotalPoisonDPS , s_format (" ^8(Raw Poison DPS is " .. colorCodes .NEGATIVE .. " overcapped ^8by^7 %.0f ^8:^7 %.1f%%^8)" , PoisonDPSUncapped - PoisonDPSCapped , (PoisonDPSUncapped - PoisonDPSCapped ) / PoisonDPSCapped * 100 ))
4372+ t_insert (breakdown .TotalPoisonDPS , s_format (" = %d ^8(Capped Poison DPS)" , PoisonDPSCapped ))
4373+ else
4374+ t_insert (breakdown .TotalPoisonDPS , s_format (" = %.1f ^8per second" , PoisonDPSCapped ))
4375+ end
4376+ end
43644377 if globalOutput .PoisonDuration ~= 2 then
43654378 globalBreakdown .PoisonDuration = {
43664379 s_format (" %.2fs ^8(base duration)" , durationBase )
@@ -4380,7 +4393,7 @@ function calcs.offence(env, actor, activeSkill)
43804393 if isAttack then
43814394 t_insert (breakdown .PoisonDamage , pass .label .. " :" )
43824395 end
4383- t_insert (breakdown .PoisonDamage , s_format (" %.1f ^8(damage per second)" , singlePoisonDps ))
4396+ t_insert (breakdown .PoisonDamage , s_format (" %.1f ^8(damage per second)" , singlePoisonDPSCapped ))
43844397 t_insert (breakdown .PoisonDamage , s_format (" x %.2fs ^8(poison duration)" , globalOutput .PoisonDuration ))
43854398 t_insert (breakdown .PoisonDamage , s_format (" = %.1f ^8damage per poison stack" , output .PoisonDamage ))
43864399 end
0 commit comments