diff --git a/spec/System/TestImpale_spec.lua b/spec/System/TestImpale_spec.lua index 84b2db0018..24827c3473 100644 --- a/spec/System/TestImpale_spec.lua +++ b/spec/System/TestImpale_spec.lua @@ -58,6 +58,20 @@ describe("TestAttacks", function() assert.are.equals(150*1.3, build.calcsTab.mainOutput.ImpaleDPS) -- 5 impales * 10% stored damage * 1.3 attacks per second end) + it("impale with zero duration has zero dps", function() + build.configTab.input.customMods = "\z + never deal critical strikes\n\z + Impale Damage dealt to Enemies Impaled by you Overwhelms 100% Physical Damage Reduction\n\z + Overwhelm 100% physical damage reduction\n\z + 100% less Impale Duration\n\z + " + build.configTab:BuildModList() + runCallback("OnFrame") + + assert.are.equals(0, build.calcsTab.mainOutput.ImpaleDuration) + assert.are.equals(0, build.calcsTab.mainOutput.ImpaleDPS) + end) + it("impale with inc damage taken", function() -- 0% crit build.configTab.input.customMods = "\z diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index f78d34f7d3..8aaebec12e 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -5874,6 +5874,9 @@ function calcs.offence(env, actor, activeSkill) else output.ImpaleDPS = output.impaleStoredHitAvg * ((output.ImpaleModifier or 1) - 1) * output.HitChance / 100 * skillData.dpsMultiplier end + if output.ImpaleDuration <= 0 then + output.ImpaleDPS = 0 + end if skillData.showAverage then output.WithImpaleDPS = output.AverageDamage + output.ImpaleDPS output.CombinedAvg = output.CombinedAvg + output.ImpaleDPS @@ -5915,6 +5918,9 @@ function calcs.offence(env, actor, activeSkill) if quantityMultiplier > 1 then t_insert(breakdown.ImpaleDPS, s_format("x %g ^8(quantity multiplier for this skill)", quantityMultiplier)) end + if output.ImpaleDuration <= 0 then + t_insert(breakdown.ImpaleDPS, s_format("x 0 ^8(no Impale Duration)")) + end t_insert(breakdown.ImpaleDPS, s_format("= %.1f", output.ImpaleDPS)) end end