@@ -345,7 +345,7 @@ local function calcWarcryCastTime(skillModList, skillCfg, skillData, actor)
345345end
346346
347347function calcSkillDuration (skillModList , skillCfg , skillData , env , enemyDB )
348- local durationMod = calcLib .mod (skillModList , skillCfg , " Duration" , " PrimaryDuration" , " SkillAndDamagingAilmentDuration " , skillData .mineDurationAppliesToSkill and " MineDuration" or nil )
348+ local durationMod = calcLib .mod (skillModList , skillCfg , " Duration" , " PrimaryDuration" , " DamagingAilmentDuration " , skillData .mineDurationAppliesToSkill and " MineDuration" or nil )
349349 durationMod = m_max (durationMod , 0 )
350350 local durationBase = (skillData .duration or 0 ) + skillModList :Sum (" BASE" , skillCfg , " Duration" , " PrimaryDuration" )
351351 local duration = durationBase * durationMod
@@ -1608,10 +1608,10 @@ function calcs.offence(env, actor, activeSkill)
16081608 debuffDurationMult = 1 / m_max (data .misc .BuffExpirationSlowCap , calcLib .mod (enemyDB , skillCfg , " BuffExpireFaster" ))
16091609 end
16101610 do
1611- output .DurationMod = calcLib .mod (skillModList , skillCfg , " Duration" , " PrimaryDuration" , " SkillAndDamagingAilmentDuration " , skillData .mineDurationAppliesToSkill and " MineDuration" or nil )
1611+ output .DurationMod = calcLib .mod (skillModList , skillCfg , " Duration" , " PrimaryDuration" , " DamagingAilmentDuration " , skillData .mineDurationAppliesToSkill and " MineDuration" or nil )
16121612 output .DurationMod = m_max (output .DurationMod , 0 )
16131613 if breakdown then
1614- breakdown .DurationMod = breakdown .mod (skillModList , skillCfg , " Duration" , " PrimaryDuration" , " SkillAndDamagingAilmentDuration " , skillData .mineDurationAppliesToSkill and " MineDuration" or nil )
1614+ breakdown .DurationMod = breakdown .mod (skillModList , skillCfg , " Duration" , " PrimaryDuration" , " DamagingAilmentDuration " , skillData .mineDurationAppliesToSkill and " MineDuration" or nil )
16151615 if breakdown .DurationMod and skillData .durationSecondary then
16161616 t_insert (breakdown .DurationMod , 1 , " Primary duration:" )
16171617 end
@@ -1639,15 +1639,15 @@ function calcs.offence(env, actor, activeSkill)
16391639 end
16401640 durationBase = (skillData .durationSecondary or 0 ) + skillModList :Sum (" BASE" , skillCfg , " Duration" , " SecondaryDuration" )
16411641 if durationBase > 0 then
1642- local durationMod = calcLib .mod (skillModList , skillCfg , " Duration" , " SecondaryDuration" , " SkillAndDamagingAilmentDuration " , skillData .mineDurationAppliesToSkill and " MineDuration" or nil )
1642+ local durationMod = calcLib .mod (skillModList , skillCfg , " Duration" , " SecondaryDuration" , " DamagingAilmentDuration " , skillData .mineDurationAppliesToSkill and " MineDuration" or nil )
16431643 durationMod = m_max (durationMod , 0 )
16441644 output .DurationSecondary = durationBase * durationMod
16451645 if skillData .debuffSecondary then
16461646 output .DurationSecondary = output .DurationSecondary * debuffDurationMult
16471647 end
16481648 output .DurationSecondary = m_ceil (output .DurationSecondary * data .misc .ServerTickRate ) / data .misc .ServerTickRate
16491649 if breakdown and output .DurationSecondary ~= durationBase then
1650- breakdown .SecondaryDurationMod = breakdown .mod (skillModList , skillCfg , " Duration" , " SecondaryDuration" , " SkillAndDamagingAilmentDuration " , skillData .mineDurationAppliesToSkill and " MineDuration" or nil )
1650+ breakdown .SecondaryDurationMod = breakdown .mod (skillModList , skillCfg , " Duration" , " SecondaryDuration" , " DamagingAilmentDuration " , skillData .mineDurationAppliesToSkill and " MineDuration" or nil )
16511651 if breakdown .SecondaryDurationMod then
16521652 t_insert (breakdown .SecondaryDurationMod , 1 , " Secondary duration:" )
16531653 end
@@ -1666,15 +1666,15 @@ function calcs.offence(env, actor, activeSkill)
16661666 end
16671667 durationBase = (skillData .durationTertiary or 0 ) + skillModList :Sum (" BASE" , skillCfg , " Duration" , " TertiaryDuration" )
16681668 if durationBase > 0 then
1669- local durationMod = calcLib .mod (skillModList , skillCfg , " Duration" , " TertiaryDuration" , " SkillAndDamagingAilmentDuration " , skillData .mineDurationAppliesToSkill and " MineDuration" or nil )
1669+ local durationMod = calcLib .mod (skillModList , skillCfg , " Duration" , " TertiaryDuration" , " DamagingAilmentDuration " , skillData .mineDurationAppliesToSkill and " MineDuration" or nil )
16701670 durationMod = m_max (durationMod , 0 )
16711671 output .DurationTertiary = durationBase * durationMod
16721672 if skillData .debuffTertiary then
16731673 output .DurationTertiary = output .DurationTertiary * debuffDurationMult
16741674 end
16751675 output .DurationTertiary = m_ceil (output .DurationTertiary * data .misc .ServerTickRate ) / data .misc .ServerTickRate
16761676 if breakdown and output .DurationTertiary ~= durationBase then
1677- breakdown .TertiaryDurationMod = breakdown .mod (skillModList , skillCfg , " Duration" , " TertiaryDuration" , " SkillAndDamagingAilmentDuration " , skillData .mineDurationAppliesToSkill and " MineDuration" or nil )
1677+ breakdown .TertiaryDurationMod = breakdown .mod (skillModList , skillCfg , " Duration" , " TertiaryDuration" , " DamagingAilmentDuration " , skillData .mineDurationAppliesToSkill and " MineDuration" or nil )
16781678 if breakdown .TertiaryDurationMod then
16791679 t_insert (breakdown .TertiaryDurationMod , 1 , " Tertiary duration:" )
16801680 end
@@ -1693,7 +1693,7 @@ function calcs.offence(env, actor, activeSkill)
16931693 end
16941694 durationBase = (skillData .auraDuration or 0 )
16951695 if durationBase > 0 then
1696- local durationMod = calcLib .mod (skillModList , skillCfg , " Duration" , " SkillAndDamagingAilmentDuration " )
1696+ local durationMod = calcLib .mod (skillModList , skillCfg , " Duration" , " DamagingAilmentDuration " )
16971697 durationMod = m_max (durationMod , 0 )
16981698 output .AuraDuration = durationBase * durationMod
16991699 output .AuraDuration = m_ceil (output .AuraDuration * data .misc .ServerTickRate ) / data .misc .ServerTickRate
@@ -1708,7 +1708,7 @@ function calcs.offence(env, actor, activeSkill)
17081708 end
17091709 durationBase = (skillData .reserveDuration or 0 )
17101710 if durationBase > 0 then
1711- local durationMod = calcLib .mod (skillModList , skillCfg , " Duration" , " SkillAndDamagingAilmentDuration " )
1711+ local durationMod = calcLib .mod (skillModList , skillCfg , " Duration" , " DamagingAilmentDuration " )
17121712 durationMod = m_max (durationMod , 0 )
17131713 output .ReserveDuration = durationBase * durationMod
17141714 output .ReserveDuration = m_ceil (output .ReserveDuration * data .misc .ServerTickRate ) / data .misc .ServerTickRate
@@ -1723,7 +1723,7 @@ function calcs.offence(env, actor, activeSkill)
17231723 end
17241724 durationBase = (skillData .soulPreventionDuration or 0 )
17251725 if durationBase > 0 then
1726- local durationMod = calcLib .mod (skillModList , skillCfg , " SoulGainPreventionDuration" , skillData .skillEffectAppliesToSoulGainPrevention and " Duration" or " SkillAndDamagingAilmentDuration " or nil , skillData .mineDurationAppliesToSkill and " MineDuration" or nil )
1726+ local durationMod = calcLib .mod (skillModList , skillCfg , " SoulGainPreventionDuration" , skillData .skillEffectAppliesToSoulGainPrevention and " Duration" or " DamagingAilmentDuration " or nil , skillData .mineDurationAppliesToSkill and " MineDuration" or nil )
17271727 durationMod = m_max (durationMod , 0 )
17281728 output .SoulGainPreventionDuration = durationBase * durationMod
17291729 output .SoulGainPreventionDuration = m_max (m_ceil (output .SoulGainPreventionDuration * data .misc .ServerTickRate ), 1 ) / data .misc .ServerTickRate
@@ -2469,7 +2469,7 @@ function calcs.offence(env, actor, activeSkill)
24692469 -- Calculates the max number of trauma stacks you can sustain
24702470 if skillModList :Flag (nil , " HasTrauma" ) then
24712471 local effectiveAttackRateCap = data .misc .ServerTickRate * output .Repeats
2472- local duration = skillModList :Sum (" BASE" , cfg , " TraumaDuration" ) * calcLib .mod (skillModList , skillCfg , " Duration" , " SkillAndDamagingAilmentDuration " )
2472+ local duration = skillModList :Sum (" BASE" , cfg , " TraumaDuration" ) * calcLib .mod (skillModList , skillCfg , " Duration" , " DamagingAilmentDuration " )
24732473 local traumaPerAttack = 1 + m_min (skillModList :Sum (" BASE" , cfg , " ExtraTrauma" ), 100 ) / 100
24742474 local incAttackSpeedPerTrauma = skillModList :Sum (" INC" , skillCfg , " SpeedPerTrauma" )
24752475 -- compute trauma using an exact form.
@@ -3335,6 +3335,10 @@ function calcs.offence(env, actor, activeSkill)
33353335 end
33363336
33373337 output .ScaledDamageEffect = 1
3338+
3339+ if output .CritChance ~= 0 then
3340+ skillModList .conditions [" CritInPast8Sec" ] = true
3341+ end
33383342
33393343 -- Calculate chance and multiplier for dealing triple damage on Normal and Crit
33403344 output .TripleDamageChanceOnCrit = m_min (skillModList :Sum (" BASE" , cfg , " TripleDamageChanceOnCrit" ), 100 )
@@ -4415,7 +4419,7 @@ function calcs.offence(env, actor, activeSkill)
44154419 end
44164420 local rateMod = (calcLib .mod (skillModList , cfg , ailment .. " Faster" ) + enemyDB :Sum (" INC" , nil , " Self" .. ailment .. " Faster" ) / 100 ) / calcLib .mod (skillModList , cfg , ailment .. " Slower" )
44174421 local durationBase = skillData [ailment :lower () .. " DurationIsSkillDuration" ] and skillData .duration or env .modDB :Override (nil , ailment .. " DurationBase" ) or data .misc [ailment .. " DurationBase" ]
4418- local durationMod = m_max (calcLib .mod (skillModList , dotCfg , " Enemy" .. ailment .. " Duration" , " EnemyAilmentDuration" , " Enemy" .. ailmentTypeMod .. " AilmentDuration" , " SkillAndDamagingAilmentDuration " , skillData [ailment :lower () .. " DurationIsSkillDuration" ] and
4422+ local durationMod = m_max (calcLib .mod (skillModList , dotCfg , " Enemy" .. ailment .. " Duration" , " EnemyAilmentDuration" , " Enemy" .. ailmentTypeMod .. " AilmentDuration" , " DamagingAilmentDuration " , skillData [ailment :lower () .. " DurationIsSkillDuration" ] and
44194423 " Duration" or nil ) * calcLib .mod (enemyDB , nil , " Self" .. ailment .. " Duration" , " SelfAilmentDuration" , " Self" .. ailmentTypeMod .. " AilmentDuration" ), 0 )
44204424 durationMod = m_max (durationMod , 0 )
44214425 globalOutput [ailment .. " Duration" ] = durationBase * durationMod / rateMod * debuffDurationMult
0 commit comments