Files
PathOfBuilding/spec/System/TestSkills_spec.lua
Paliak d320c2e27b FIX: broken tests after changing default boss preset (#8327)
Due to #8271 changing the default boss preset many tests that relied on
enemy stats broke. This pr fixes that by changing the boss configuration
back to "None" for affected tests.

Additionally this commit adds an extra test for scorching ray exposure
when using the automatic maximum sustainable stages mode.
2024-11-18 16:56:01 +11:00

121 lines
4.3 KiB
Lua

describe("TestAttacks", function()
before_each(function()
newBuild()
end)
teardown(function()
-- newBuild() takes care of resetting everything in setup()
end)
it("adds envy, ensures +1 level keeps level 25 Envy", function()
build.itemsTab:CreateDisplayItemFromRaw("New Item\nAssassin Bow\nGrants Level 1 Summon Raging Spirit\nGrants Level 25 Envy Skill")
build.itemsTab:AddDisplayItem()
runCallback("OnFrame")
assert.are.equals(205, build.calcsTab.mainEnv.minion.modDB:Sum("BASE", build.calcsTab.mainEnv.minion.mainSkill.skillCfg, "ChaosMin"))
build.skillsTab:PasteSocketGroup("Slot: Weapon 1\nAwakened Generosity 4/0 Default 1\n")
runCallback("OnFrame")
assert.are.equals(round(205 * 1.43), build.calcsTab.mainEnv.minion.modDB:Sum("BASE", build.calcsTab.mainEnv.minion.mainSkill.skillCfg, "ChaosMin"))
build.skillsTab:PasteSocketGroup("Slot: Weapon 1\nAwakened Generosity 5/0 Default 1\n")
runCallback("OnFrame")
-- No Envy level increase, so base should still be 205
assert.are.equals(round(205 * 1.44), build.calcsTab.mainEnv.minion.modDB:Sum("BASE", build.calcsTab.mainEnv.minion.mainSkill.skillCfg, "ChaosMin"))
end)
it("Test Mirage Archer using triggered skill", function()
build.itemsTab:CreateDisplayItemFromRaw([[+3 Bow
Thicket Bow
Crafted: true
Prefix: {range:0.5}LocalIncreaseSocketedGemLevel1
Prefix: {range:0.5}LocalIncreaseSocketedBowGemLevel2
Prefix: None
Suffix: {range:0.5}LocalIncreasedAttackSpeed2
Suffix: None
Suffix: None
Quality: 20
Sockets: G-G-G-G-G-G
LevelReq: 56
Implicits: 0
+1 to Level of Socketed Gems
+2 to Level of Socketed Bow Gems
9% increased Attack Speed]])
build.itemsTab:AddDisplayItem()
runCallback("OnFrame")
build.skillsTab:PasteSocketGroup("Mirage Archer 20/0 Default 1\nRain of Arrows 20/0 Default 1\nManaforged Arrows 20/0 Default 1\n")
runCallback("OnFrame")
build.skillsTab:PasteSocketGroup("Toxic Rain 20/0 Default 1\n")
runCallback("OnFrame")
assert.True(build.calcsTab.mainOutput.MirageDPS ~= nil)
assert.True(build.calcsTab.mainOutput.SkillTriggerRate == build.calcsTab.mainOutput.Speed)
end)
it("Test Sacred wisps using current skill", function()
build.itemsTab:CreateDisplayItemFromRaw([[Elemental Wand
Imbued Wand
Crafted: true
Prefix: None
Prefix: None
Prefix: None
Suffix: None
Suffix: None
Suffix: None
Quality: 0
Sockets: B-B-B
LevelReq: 59
Implicits: 0]])
build.itemsTab:AddDisplayItem()
runCallback("OnFrame")
build.skillsTab:PasteSocketGroup("Power Siphon 20/0 Default 1\nSacred Wisps 20/0 Default 1\n")
runCallback("OnFrame")
assert.True(build.calcsTab.mainOutput.MirageDPS ~= nil)
end)
it("Test Scorching ray applying exposure at max stages", function()
build.skillsTab:PasteSocketGroup("Scorching Ray 20/0 Default 1\n")
runCallback("OnFrame")
local mainSocketGroup = build.skillsTab.socketGroupList[build.mainSocketGroup]
local srcInstance = mainSocketGroup.displaySkillList[mainSocketGroup.mainActiveSkill].activeEffect.srcInstance
srcInstance.skillStageCount = 8
build.modFlag = true
build.buildFlag = true
build.configTab.input.enemyIsBoss = "None"
build.configTab:BuildModList()
runCallback("OnFrame")
-- Manual stages
assert.True(build.calcsTab.mainEnv.enemyDB:Sum("BASE", nil, "FireResist") < 0)
srcInstance.skillPart = 2
build.modFlag = true
build.buildFlag = true
runCallback("OnFrame")
-- Automatic maximum sustainable stages
assert.True(build.calcsTab.mainEnv.enemyDB:Sum("BASE", nil, "FireResist") < 0)
end)
it("Test Adrenaline affecting blight max stage count", function()
build.skillsTab:PasteSocketGroup("Blight 20/0 Default 1\n")
runCallback("OnFrame")
local mainSocketGroup = build.skillsTab.socketGroupList[build.mainSocketGroup]
local srcInstance = mainSocketGroup.displaySkillList[mainSocketGroup.mainActiveSkill].activeEffect.srcInstance
srcInstance.skillPart = 2
build.modFlag = true
build.buildFlag = true
runCallback("OnFrame")
local preAdrenalineMaxStages = build.calcsTab.mainEnv.player.activeSkillList[1].skillModList:Sum("BASE", nil, "Multiplier:BlightMaxStages")
build.configTab.input.buffAdrenaline = true
build.configTab:BuildModList()
runCallback("OnFrame")
assert.True(preAdrenalineMaxStages < build.calcsTab.mainEnv.player.activeSkillList[1].skillModList:Sum("BASE", nil, "Multiplier:BlightMaxStages"))
end)
end)