diff --git a/Modules/CalcOffence-3_0.lua b/Modules/CalcOffence-3_0.lua index 135c12cf7..4c2d864b0 100644 --- a/Modules/CalcOffence-3_0.lua +++ b/Modules/CalcOffence-3_0.lua @@ -1854,9 +1854,30 @@ function calcs.offence(env, actor) local baseVal = calcAilmentDamage("Shock", sourceHitDmg, sourceCritDmg) if baseVal > 0 then skillFlags.shock = true - output.ShockDurationMod = 1 + modDB:Sum("INC", cfg, "EnemyShockDuration") / 100 + enemyDB:Sum("INC", nil, "SelfShockDuration") / 100 + + local baseShockDur = 2 + local incDur = 1 + modDB:Sum("INC", cfg, "EnemyShockDuration") / 100 + enemyDB:Sum("INC", nil, "SelfShockDuration") / 100 + output.ShockDurationMod = baseShockDur * incDur + if breakdown then + if output.ShockDurationMod ~= baseShockDur then + globalBreakdown.ShockDurationMod = { + s_format("2.00s ^8(base duration)", baseShockDur), + } + if incDur ~= 0 then + t_insert(globalBreakdown.ShockDurationMod, s_format("x %.2f ^8(increased/reduced shock duration)", incDur)) + end + t_insert(globalBreakdown.ShockDurationMod, s_format("= %.2fs", output.ShockDurationMod)) + end + end + output.ShockEffectMod = 1 + modDB:Sum("INC", cfg, "EnemyShockEffect") / 100 if breakdown then - t_insert(breakdown.ShockDPS, s_format("For shock to apply, target must have no more than %d life.", baseVal * 20 * output.ShockDurationMod)) + --t_insert(breakdown.ShockDPS, s_format("For shock to apply, target must have no more than %d life.", baseVal * 20 * output.ShockDurationMod)) + t_insert(breakdown.ShockDPS, s_format("For 1%% (min) shock to apply, target must have no more than %d life.", baseVal * 500 * output.ShockEffectMod)) + t_insert(breakdown.ShockDPS, s_format("For 10%% shock to apply, target must have no more than %d life.", baseVal * 50 * output.ShockEffectMod)) + t_insert(breakdown.ShockDPS, s_format("For 20%% shock to apply, target must have no more than %d life.", baseVal * 25 * output.ShockEffectMod)) + t_insert(breakdown.ShockDPS, s_format("For 30%% shock to apply, target must have no more than %d life.", baseVal * 16.66 * output.ShockEffectMod)) + t_insert(breakdown.ShockDPS, s_format("For 40%% shock to apply, target must have no more than %d life.", baseVal * 12.5 * output.ShockEffectMod)) + t_insert(breakdown.ShockDPS, s_format("For 50%% (max) shock to apply, target must have no more than %d life.", baseVal * 10 * output.ShockEffectMod)) end end end @@ -1945,6 +1966,7 @@ function calcs.offence(env, actor) end combineStat("ShockChance", "AVERAGE") combineStat("ShockDurationMod", "AVERAGE") + combineStat("ShockEffectMod", "AVERAGE") combineStat("FreezeChance", "AVERAGE") combineStat("FreezeDurationMod", "AVERAGE") end diff --git a/Modules/CalcSections-3_0.lua b/Modules/CalcSections-3_0.lua index 4014b0f80..d60b74e2c 100644 --- a/Modules/CalcSections-3_0.lua +++ b/Modules/CalcSections-3_0.lua @@ -719,12 +719,16 @@ return { { label = "Player modifiers", modName = "EnemyShockChance", cfg = "skill" }, { label = "Enemy modifiers", modName = "SelfShockChance", enemy = true }, }, }, - { label = "Shock Dur. Mod", flag = "shock", { format = "x {2:output:ShockDurationMod}", + { label = "Shock Duration", flag = "shock", { format = "{2:output:ShockDurationMod}s", + { breakdown = "ShockDurationMod" }, + { label = "Player modifiers", modName = "EnemyShockDuration", cfg = "skill" }, + { label = "Enemy modifiers", modName = "SelfShockDuration", enemy = true }, + }, }, + { label = "Shock Effect Mod", flag = "shock", { format = "x {2:output:ShockEffectMod}", { breakdown = "MainHand.ShockDPS" }, { breakdown = "OffHand.ShockDPS" }, { breakdown = "ShockDPS" }, - { label = "Player modifiers", modName = "EnemyShockDuration", cfg = "skill" }, - { label = "Enemy modifiers", modName = "SelfShockDuration", enemy = true }, + { label = "Player modifiers", modName = "EnemyShockEffect", cfg = "skill" }, }, }, { label = "Chance to Freeze", flag = "freeze", { format = "{0:output:FreezeChance}%", { breakdown = "MainHand.FreezeChance" },