Skip to content

Commit a8a04bd

Browse files
authored
Fix Blade Blast default stage cap (#9837)
Blade Blast uses a stage count for blade hits per cast/per second. Its modeled maximum was set to 900, so defaulting staged skills to their maximum stages overinflated Blade Blast damage. Use the skill tooltip cap of 50 blades instead and cover the default plus over-cap input. Fixes #9836
1 parent 321897b commit a8a04bd

3 files changed

Lines changed: 34 additions & 2 deletions

File tree

spec/System/TestSkills_spec.lua

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,38 @@ describe("TestAttacks", function()
100100
assert.True(build.calcsTab.mainEnv.enemyDB:Sum("BASE", nil, "FireResist") < 0)
101101
end)
102102

103+
it("Defaults Blade Blast to the skill's blade cap", function()
104+
build.skillsTab:PasteSocketGroup("Blade Blast 20/0 1\n")
105+
runCallback("OnFrame")
106+
107+
local mainSocketGroup = build.skillsTab.socketGroupList[build.mainSocketGroup]
108+
local activeSkill = mainSocketGroup.displaySkillList[mainSocketGroup.mainActiveSkill]
109+
local calcsSkillSelectControls = build.calcsTab.sectionList[1].controls
110+
build:RefreshSkillSelectControls(calcsSkillSelectControls, build.calcsTab.input.skill_number, "Calcs")
111+
112+
assert.are.equals("50", build.controls.mainSkillStageCount.buf)
113+
assert.are.equals("50", calcsSkillSelectControls.mainSkillStageCount.buf)
114+
assert.are.equals(50, activeSkill.skillData.stagesMax)
115+
assert.are.equals(50, activeSkill.skillModList:Sum("BASE", activeSkill.skillCfg, "Multiplier:BladeBlastStage"))
116+
assert.are.equals(49, activeSkill.skillModList:Sum("BASE", activeSkill.skillCfg, "Multiplier:BladeBlastStageAfterFirst"))
117+
118+
local cappedAverageDamage = build.calcsTab.mainOutput.AverageDamage
119+
local cappedTotalDPS = build.calcsTab.mainOutput.TotalDPS
120+
local cappedCombinedDPS = build.calcsTab.mainOutput.CombinedDPS
121+
activeSkill.activeEffect.srcInstance.skillStageCount = 51
122+
build.modFlag = true
123+
build.buildFlag = true
124+
runCallback("OnFrame")
125+
126+
activeSkill = mainSocketGroup.displaySkillList[mainSocketGroup.mainActiveSkill]
127+
assert.are.equals("51", build.controls.mainSkillStageCount.buf)
128+
assert.are.equals(50, activeSkill.skillModList:Sum("BASE", activeSkill.skillCfg, "Multiplier:BladeBlastStage"))
129+
assert.are.equals(49, activeSkill.skillModList:Sum("BASE", activeSkill.skillCfg, "Multiplier:BladeBlastStageAfterFirst"))
130+
assert.are.equals(cappedAverageDamage, build.calcsTab.mainOutput.AverageDamage)
131+
assert.are.equals(cappedTotalDPS, build.calcsTab.mainOutput.TotalDPS)
132+
assert.are.equals(cappedCombinedDPS, build.calcsTab.mainOutput.CombinedDPS)
133+
end)
134+
103135
it("Test Adrenaline affecting blight max stage count", function()
104136
build.skillsTab:PasteSocketGroup("Blight 20/0 1\n")
105137
runCallback("OnFrame")

src/Data/Skills/act_dex.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1382,7 +1382,7 @@ skills["BladeBlast"] = {
13821382
area = true,
13831383
},
13841384
baseMods = {
1385-
mod("Multiplier:BladeBlastMaxStages", "BASE", 900, 0, 0),
1385+
mod("Multiplier:BladeBlastMaxStages", "BASE", 50, 0, 0),
13861386
skill("dpsBaseMultiplier", 1, { type = "Multiplier", var = "BladeBlastStage" }),
13871387
},
13881388
qualityStats = {

src/Export/Skills/act_dex.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ local skills, mod, flag, skill = ...
237237
activeSkill.skillData.hitTimeOverride = 1
238238
end
239239
end,
240-
#baseMod mod("Multiplier:BladeBlastMaxStages", "BASE", 900, 0, 0)
240+
#baseMod mod("Multiplier:BladeBlastMaxStages", "BASE", 50, 0, 0)
241241
#baseMod skill("dpsBaseMultiplier", 1, { type = "Multiplier", var = "BladeBlastStage" })
242242
#mods
243243

0 commit comments

Comments
 (0)