@@ -3370,6 +3370,22 @@ function calcs.offence(env, actor, activeSkill)
33703370 breakdown .PoisonFire = { damageTypes = { } }
33713371 breakdown .PoisonChaos = { damageTypes = { } }
33723372 end
3373+ local rateMod = calcLib .mod (skillModList , cfg , " PoisonFaster" ) + enemyDB :Sum (" INC" , nil , " SelfPoisonFaster" ) / 100
3374+ local durationBase
3375+ if skillData .poisonDurationIsSkillDuration then
3376+ durationBase = skillData .duration
3377+ else
3378+ durationBase = data .misc .PoisonDurationBase
3379+ end
3380+ local durationMod = calcLib .mod (skillModList , dotCfg , " EnemyPoisonDuration" , " EnemyAilmentDuration" , " SkillAndDamagingAilmentDuration" , skillData .poisonIsSkillEffect and " Duration" or nil ) * calcLib .mod (enemyDB , nil , " SelfPoisonDuration" , " SelfAilmentDuration" )
3381+ globalOutput .PoisonDuration = durationBase * durationMod / rateMod * debuffDurationMult
3382+ local PoisonStacks = globalOutput .PoisonDuration * (globalOutput .HitSpeed or globalOutput .Speed ) * (skillData .dpsMultiplier or 1 ) * (skillData .stackMultiplier or 1 ) * quantityMultiplier
3383+ if PoisonStacks < 1 and (env .configInput .multiplierPoisonOnEnemy or 0 ) <= 1 then
3384+ skillModList :NewMod (" Condition:SinglePoison" , " FLAG" , true , " poison" )
3385+ end
3386+ if skillModList :Flag (nil , " Condition:SinglePoison" ) then
3387+ PoisonStacks = m_min (PoisonStacks , 1 )
3388+ end
33733389 for sub_pass = 1 , 2 do
33743390 if skillModList :Flag (dotCfg , " AilmentsAreNeverFromCrit" ) or sub_pass == 1 then
33753391 dotCfg .skillCond [" CriticalStrike" ] = false
@@ -3449,7 +3465,6 @@ function calcs.offence(env, actor, activeSkill)
34493465 end
34503466 end
34513467 local effectMod = calcLib .mod (skillModList , dotCfg , " AilmentEffect" )
3452- local rateMod = calcLib .mod (skillModList , cfg , " PoisonFaster" ) + enemyDB :Sum (" INC" , nil , " SelfPoisonFaster" ) / 100
34533468 local PoisonDPSUncapped = baseVal * effectMod * rateMod * effMult
34543469 local PoisonDPSCapped = m_min (PoisonDPSUncapped , data .misc .DotDpsCap )
34553470 output .PoisonDPS = PoisonDPSCapped
@@ -3468,20 +3483,15 @@ function calcs.offence(env, actor, activeSkill)
34683483 }
34693484 end
34703485 end
3471- local durationBase
3472- if skillData .poisonDurationIsSkillDuration then
3473- durationBase = skillData .duration
3474- else
3475- durationBase = data .misc .PoisonDurationBase
3476- end
3477- local durationMod = calcLib .mod (skillModList , dotCfg , " EnemyPoisonDuration" , " EnemyAilmentDuration" , " SkillAndDamagingAilmentDuration" , skillData .poisonIsSkillEffect and " Duration" or nil ) * calcLib .mod (enemyDB , nil , " SelfPoisonDuration" , " SelfAilmentDuration" )
3478- globalOutput .PoisonDuration = durationBase * durationMod / rateMod * debuffDurationMult
34793486 output .PoisonDamage = output .PoisonDPS * globalOutput .PoisonDuration
34803487 if skillData .showAverage then
34813488 output .TotalPoisonAverageDamage = output .HitChance / 100 * output .PoisonChance / 100 * output .PoisonDamage
34823489 output .TotalPoisonDPS = output .PoisonDPS
34833490 else
3484- output .TotalPoisonStacks = output .HitChance / 100 * output .PoisonChance / 100 * globalOutput .PoisonDuration * (globalOutput .HitSpeed or globalOutput .Speed ) * (skillData .dpsMultiplier or 1 ) * (skillData .stackMultiplier or 1 ) * quantityMultiplier
3491+ output .TotalPoisonStacks = output .HitChance / 100 * output .PoisonChance / 100 * PoisonStacks
3492+ if skillModList :Flag (nil , " Condition:SinglePoison" ) and (PoisonStacks >= 1 ) then
3493+ output .TotalPoisonStacks = 1
3494+ end
34853495 output .TotalPoisonDPS = m_min (PoisonDPSCapped * output .TotalPoisonStacks , data .misc .DotDpsCap )
34863496 end
34873497 if breakdown then
@@ -3555,6 +3565,9 @@ function calcs.offence(env, actor, activeSkill)
35553565 { " %g ^8(quantity multiplier for this skill)" , quantityMultiplier },
35563566 total = s_format (" = %.1f" , output .TotalPoisonStacks ),
35573567 })
3568+ if skillModList :Flag (nil , " Condition:SinglePoison" ) then
3569+ t_insert (breakdown .TotalPoisonStacks , " Capped to 1" )
3570+ end
35583571 end
35593572 end
35603573 end
0 commit comments