From 30302b406bed4d427f2e7dab84b4bba8fce8bb9e Mon Sep 17 00:00:00 2001 From: unrealdreamz <132005717+unrealdreamz@users.noreply.github.com> Date: Mon, 18 May 2026 14:56:43 -0400 Subject: [PATCH] Fix Ember Fusillade projectile DPS --- spec/System/TestSkills_spec.lua | 28 +++++++++++++++++++++++++++- src/Data/Skills/act_int.lua | 5 ++++- src/Export/Skills/act_int.txt | 3 +++ 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/spec/System/TestSkills_spec.lua b/spec/System/TestSkills_spec.lua index 3afa41ce0..cb05d8ae5 100644 --- a/spec/System/TestSkills_spec.lua +++ b/spec/System/TestSkills_spec.lua @@ -238,6 +238,32 @@ describe("TestSkills", function() assert.True(curseList:match("Flammability") ~= nil and curseList:match("Elemental Weakness") ~= nil) end) + it("Ember Fusillade projectile count scales hit DPS and Full DPS", function() + build.skillsTab:PasteSocketGroup("Ember Fusillade 20/0 1\n") + build.skillsTab.socketGroupList[1].includeInFullDPS = true + build.buildFlag = true + runCallback("OnFrame") + + local baseProjectileCount = build.calcsTab.mainOutput.ProjectileCount + local baseTotalDPS = build.calcsTab.mainOutput.TotalDPS + local baseFullDPS = build.calcsTab.mainOutput.FullDPS + + assert.True(baseProjectileCount > 0) + assert.True(baseTotalDPS > 0) + assert.True(baseFullDPS > 0) + + build.configTab.input.customMods = "Ember Fusillade fires 2 additional Projectiles" + build.configTab:BuildModList() + runCallback("OnFrame") + + local projectileCount = build.calcsTab.mainOutput.ProjectileCount + local expectedProjectileRatio = projectileCount / baseProjectileCount + + assert.True(projectileCount > baseProjectileCount) + assert.True(build.calcsTab.mainOutput.TotalDPS > baseTotalDPS * expectedProjectileRatio * 0.95) + assert.True(build.calcsTab.mainOutput.FullDPS > baseFullDPS * expectedProjectileRatio * 0.95) + end) + -- skills that don't have a base CD and have more than one use need to use the added cooldown by whatever support allows the +1 limit to be supportable it("Test Added Cooldown interaction with +1 Limit", function() build.skillsTab:PasteSocketGroup("Thunderstorm 20/0 1\nHourglass 1/0 1\nOverabundance I 1/0 1\n") @@ -245,4 +271,4 @@ describe("TestSkills", function() assert.True(build.calcsTab.calcsOutput.Cooldown == 10) end) -end) \ No newline at end of file +end) diff --git a/src/Data/Skills/act_int.lua b/src/Data/Skills/act_int.lua index fdc49b863..fc09f0398 100644 --- a/src/Data/Skills/act_int.lua +++ b/src/Data/Skills/act_int.lua @@ -5848,6 +5848,9 @@ skills["EmberFusilladePlayer"] = { [39] = { critChance = 7, levelRequirement = 90, cost = { Mana = 206, }, }, [40] = { critChance = 7, levelRequirement = 90, cost = { Mana = 225, }, }, }, + preDamageFunc = function(activeSkill, output) + activeSkill.skillData.dpsMultiplier = output.ProjectileCount or 1 + end, statSets = { [1] = { label = "Projectile", @@ -22501,4 +22504,4 @@ skills["WitheringPresencePlayer"] = { }, }, } -} \ No newline at end of file +} diff --git a/src/Export/Skills/act_int.txt b/src/Export/Skills/act_int.txt index d083e214a..e622f8215 100644 --- a/src/Export/Skills/act_int.txt +++ b/src/Export/Skills/act_int.txt @@ -405,6 +405,9 @@ statMap = { #skillEnd #skill EmberFusilladePlayer +preDamageFunc = function(activeSkill, output) + activeSkill.skillData.dpsMultiplier = output.ProjectileCount or 1 +end, #set EmberFusilladePlayer #flags spell duration projectile #mods