Skip to content

Commit 1b7a60e

Browse files
authored
Fix CWC not supporting triggerbots (#8671)
* FIX: CWC not supporting triggerbots * MISC(test): add triggerbot tests * FIX(breakdown): fix breakdown for trigger bots in defaultHandler * FIX: tests
1 parent c18aa2c commit 1b7a60e

2 files changed

Lines changed: 64 additions & 7 deletions

File tree

spec/System/TestTriggers_spec.lua

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1359,4 +1359,54 @@ describe("TestTriggers", function()
13591359

13601360
assert.True(build.calcsTab.mainOutput.SkillTriggerRate ~= nil)
13611361
end)
1362+
1363+
it("Triggerbots CWCHandler", function()
1364+
build.skillsTab:PasteSocketGroup("Arc 20/0 Default 1\nCast while Channelling 20/0 Default 1\nBlight 20/0 Default 1\n")
1365+
runCallback("OnFrame")
1366+
local baseRate = build.calcsTab.mainOutput.SkillTriggerRate
1367+
assert.True(build.calcsTab.mainOutput.SkillTriggerRate ~= nil)
1368+
1369+
build.configTab.input.customMods = [[
1370+
Triggers Level 20 Summon Triggerbots when Allocated
1371+
]]
1372+
build.configTab:BuildModList()
1373+
runCallback("OnFrame")
1374+
assert.are.not_equals(math.floor(build.calcsTab.mainOutput.SkillTriggerRate * 100), math.floor(baseRate * 100))
1375+
end)
1376+
1377+
it("Triggerbots defaultHandler", function()
1378+
build.itemsTab:CreateDisplayItemFromRaw([[Elemental 1H Sword
1379+
Eternal Sword
1380+
Crafted: true
1381+
Prefix: {range:0.5}WeaponElementalDamageOnWeapons4
1382+
Prefix: None
1383+
Prefix: None
1384+
Suffix: {range:0.5}LocalIncreasedAttackSpeed3
1385+
Suffix: {range:0.5}LocalCriticalStrikeChance3
1386+
Suffix: {range:0.5}LocalCriticalMultiplier4
1387+
Quality: 20
1388+
Sockets: G-G-G
1389+
LevelReq: 66
1390+
Implicits: 1
1391+
{tags:attack}+475 to Accuracy Rating
1392+
12% increased Attack Speed
1393+
22% increased Critical Strike Chance
1394+
+27% to Global Critical Strike Multiplier
1395+
40% increased Elemental Damage with Attack Skills]])
1396+
build.itemsTab:AddDisplayItem()
1397+
runCallback("OnFrame")
1398+
1399+
build.skillsTab:PasteSocketGroup("Cast On Critical Strike 20/0 Default 1\nArc 20/0 Default 1\nCyclone 20/0 Default 1\n")
1400+
runCallback("OnFrame")
1401+
1402+
local baseRate = build.calcsTab.mainOutput.SkillTriggerRate
1403+
assert.True(build.calcsTab.mainOutput.SkillTriggerRate ~= nil)
1404+
1405+
build.configTab.input.customMods = [[
1406+
Triggers Level 20 Summon Triggerbots when Allocated
1407+
]]
1408+
build.configTab:BuildModList()
1409+
runCallback("OnFrame")
1410+
assert.are.not_equals(math.floor(build.calcsTab.mainOutput.SkillTriggerRate * 100), math.floor(baseRate * 100))
1411+
end)
13621412
end)

src/Modules/CalcTriggers.lua

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,10 @@ local function CWCHandler(env)
261261
local simBreakdown = nil
262262
output.TriggerRateCap = m_min(1 / effCDTriggeredSkill, triggerRateOfTrigger)
263263
output.SkillTriggerRate, simBreakdown = calcMultiSpellRotationImpact(env, triggeredSkills, triggerRateOfTrigger, 0)
264+
local triggerBotsEffective = env.player.modDB:Flag(nil, "HaveTriggerBots") and env.player.mainSkill.skillTypes[SkillType.Spell]
265+
if triggerBotsEffective then
266+
output.SkillTriggerRate = 2 * output.SkillTriggerRate
267+
end
264268

265269
if breakdown then
266270
if triggeredCD or cooldownOverride then
@@ -331,13 +335,16 @@ local function CWCHandler(env)
331335
t_insert(breakdown.TriggerRateCap, s_format("1 / %.3f ^8(trigger rate adjusted for triggering interval)", 1 / output.TriggerRateCap))
332336
t_insert(breakdown.TriggerRateCap, s_format("= %.2f ^8 %s casts per second", output.TriggerRateCap, triggeredName))
333337

338+
-- Hide Skill Trigger Rate breakdown if there's only one skill to av
334339
if #triggeredSkills > 1 then
335340
breakdown.SkillTriggerRate = {
336341
s_format("%.2f ^8(%s triggers per second)", triggerRateOfTrigger, triggerName),
337342
s_format("/ %.2f ^8(Estimated impact of linked spells)", (triggerRateOfTrigger / output.SkillTriggerRate) or 1),
338343
s_format("= %.2f ^8%s casts per second", output.SkillTriggerRate, triggeredName),
339344
}
340-
345+
if triggerBotsEffective then
346+
t_insert(breakdown.SkillTriggerRate, 3, "x 2 ^8(Trigger bots effectively cause the skill to trigger twice)")
347+
end
341348
if simBreakdown.extraSimInfo then
342349
t_insert(breakdown.SkillTriggerRate, "")
343350
t_insert(breakdown.SkillTriggerRate, simBreakdown.extraSimInfo)
@@ -809,6 +816,12 @@ local function defaultTriggerHandler(env, config)
809816
s_format("/ %.2f ^8(Estimated impact of skill rotation, cooldown alignment and trigger chance)", m_max(output.EffectiveSourceRate / output.SkillTriggerRate, 1)),
810817
s_format("= %.2f ^8per second", output.SkillTriggerRate),
811818
}
819+
if triggerBotsEffective then
820+
t_insert(breakdown.SkillTriggerRate, 3, "x 2 ^8(Trigger bots effectively cause the skill to trigger twice)")
821+
end
822+
if hits_per_cast > 1 then
823+
t_insert(breakdown.SkillTriggerRate, 3, s_format("x %.2f ^8(hits per triggered skill cast)", hits_per_cast))
824+
end
812825
if triggerChance ~= 100 then
813826
t_insert(breakdown.SkillTriggerRate, 1, "")
814827
t_insert(breakdown.SkillTriggerRate, 1, s_format("= %.2f%% ^8(Effective chance to trigger)", triggerChance))
@@ -817,12 +830,6 @@ local function defaultTriggerHandler(env, config)
817830
end
818831
t_insert(breakdown.SkillTriggerRate, 1, "100% ^8(Base chance)")
819832
end
820-
if triggerBotsEffective then
821-
t_insert(breakdown.SkillTriggerRate, 3, "x 2 ^8(Trigger bots effectively cause the skill to trigger twice)")
822-
end
823-
if hits_per_cast > 1 then
824-
t_insert(breakdown.SkillTriggerRate, 3, s_format("x %.2f ^8(hits per triggered skill cast)", hits_per_cast))
825-
end
826833
if simBreakdown.extraSimInfo then
827834
t_insert(breakdown.SkillTriggerRate, "")
828835
t_insert(breakdown.SkillTriggerRate, simBreakdown.extraSimInfo)

0 commit comments

Comments
 (0)