From 272bf1456bd641271acc63afc3317dc2f54ed001 Mon Sep 17 00:00:00 2001 From: ken Date: Tue, 19 May 2026 13:23:06 -0500 Subject: [PATCH 1/3] Fix impale DPS with zero duration Adds a regression test for zero impale duration and prevents ImpaleDPS from contributing when ImpaleDuration is 0. --- spec/System/TestImpale_spec.lua | 14 ++++++++++++++ src/Modules/CalcOffence.lua | 3 +++ 2 files changed, 17 insertions(+) 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..de755fb4f8 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 From ee5272427e6852eaff41b2da5f669dc5f0a10135 Mon Sep 17 00:00:00 2001 From: ken Date: Tue, 19 May 2026 13:47:05 -0500 Subject: [PATCH 2/3] Add zero impale duration breakdown note Added explanation in breakdown for easier user understanding --- src/Modules/CalcOffence.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index de755fb4f8..301de97a9f 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -5918,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 From ad5d98d5835f3d3ef50183a4427840e19b7dbca9 Mon Sep 17 00:00:00 2001 From: ken Date: Wed, 20 May 2026 09:39:40 -0500 Subject: [PATCH 3/3] Fix CalcOffence indentation Fix indentation on line 5878 --- src/Modules/CalcOffence.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index 301de97a9f..8aaebec12e 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -5875,7 +5875,7 @@ function calcs.offence(env, actor, activeSkill) output.ImpaleDPS = output.impaleStoredHitAvg * ((output.ImpaleModifier or 1) - 1) * output.HitChance / 100 * skillData.dpsMultiplier end if output.ImpaleDuration <= 0 then - output.ImpaleDPS = 0 + output.ImpaleDPS = 0 end if skillData.showAverage then output.WithImpaleDPS = output.AverageDamage + output.ImpaleDPS