Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 29 additions & 29 deletions spec/System/TestDefence_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ describe("TestDefence", function()
build.configTab.input.enemyIsBoss = "None"
build.configTab:BuildModList()
runCallback("OnFrame")

assert.are.equals(60, build.calcsTab.calcsOutput.PhysicalMaximumHitTaken)
assert.are.equals(38, build.calcsTab.calcsOutput.FireMaximumHitTaken)
assert.are.equals(38, build.calcsTab.calcsOutput.ColdMaximumHitTaken)
Expand Down Expand Up @@ -122,12 +122,12 @@ describe("TestDefence", function()
assert.are.equals(0, floor(poolsRemaining.Life))
assert.are.equals(0, floor(poolsRemaining.OverkillDamage))
end)

-- a small helper function to calculate damage taken from limited test parameters
local function takenHitFromTypeMaxHit(type, enemyDamageMulti)
return build.calcsTab.calcs.takenHitFromDamage(build.calcsTab.calcsOutput[type.."MaximumHitTaken"] * (enemyDamageMulti or 1), type, build.calcsTab.calcsEnv.player)
end

it("progenesis and petrified blood", function()
build.configTab.input.enemyIsBoss = "None"
-- Petrified blood
Expand All @@ -153,7 +153,7 @@ describe("TestDefence", function()
assert.are.equals(3000, build.calcsTab.calcsOutput.LightningMaximumHitTaken)
assert.are.equals(3000, build.calcsTab.calcsOutput.ChaosMaximumHitTaken)
build.skillsTab.socketGroupList = {}

build.skillsTab:PasteSocketGroup("\z
Petrified Blood 20/0 Default 1\n\z
Arrogance 21/0 Default 1\n\z
Expand All @@ -178,7 +178,7 @@ describe("TestDefence", function()
assert.are.equals(6000, build.calcsTab.calcsOutput.LightningMaximumHitTaken)
assert.are.equals(3000, build.calcsTab.calcsOutput.ChaosMaximumHitTaken)
build.skillsTab.socketGroupList = {}

build.skillsTab:PasteSocketGroup("\z
Petrified Blood 20/0 Default 1\n\z
") -- 80% petrified effect, starting from full life, should make the life pool be equivalent to 0.5 * life (unprotected upper half) and then 5 * 0.5 * life (protected lower half), making it 3* bigger in total
Expand All @@ -199,7 +199,7 @@ describe("TestDefence", function()
assert.are.equals(9000, build.calcsTab.calcsOutput.LightningMaximumHitTaken)
assert.are.equals(9000, build.calcsTab.calcsOutput.ChaosMaximumHitTaken)
build.skillsTab.socketGroupList = {}

-- Progenesis
build.configTab.input.customMods = "\z
+200 to all resistances\n\z
Expand All @@ -217,7 +217,7 @@ describe("TestDefence", function()
assert.are.equals(6000, build.calcsTab.calcsOutput.ColdMaximumHitTaken)
assert.are.equals(6000, build.calcsTab.calcsOutput.LightningMaximumHitTaken)
assert.are.equals(6000, build.calcsTab.calcsOutput.ChaosMaximumHitTaken)

build.configTab.input.customMods = "\z
+200 to all resistances\n\z
+200 to all maximum resistances\n\z
Expand All @@ -235,7 +235,7 @@ describe("TestDefence", function()
assert.are.equals(9000, build.calcsTab.calcsOutput.ColdMaximumHitTaken)
assert.are.equals(9000, build.calcsTab.calcsOutput.LightningMaximumHitTaken)
assert.are.equals(6000, build.calcsTab.calcsOutput.ChaosMaximumHitTaken)

-- Progenesis + petrified blood
build.skillsTab:PasteSocketGroup("\z
Petrified Blood 20/0 Default 1\n\z
Expand All @@ -261,7 +261,7 @@ describe("TestDefence", function()
assert.are.equals(6000, build.calcsTab.calcsOutput.LightningMaximumHitTaken)
assert.are.equals(6000, build.calcsTab.calcsOutput.ChaosMaximumHitTaken)
build.skillsTab.socketGroupList = {}

build.skillsTab:PasteSocketGroup("\z
Petrified Blood 20/0 Default 1\n\z
")
Expand All @@ -284,7 +284,7 @@ describe("TestDefence", function()
assert.are.equals(9000, build.calcsTab.calcsOutput.LightningMaximumHitTaken)
assert.are.equals(9000, build.calcsTab.calcsOutput.ChaosMaximumHitTaken)
build.skillsTab.socketGroupList = {}

build.skillsTab:PasteSocketGroup("\z
Petrified Blood 20/0 Default 1\n\z
")
Expand All @@ -306,14 +306,14 @@ describe("TestDefence", function()
assert.are.equals(13000, build.calcsTab.calcsOutput.ColdMaximumHitTaken)
assert.are.equals(13000, build.calcsTab.calcsOutput.LightningMaximumHitTaken)
assert.are.equals(10000, build.calcsTab.calcsOutput.ChaosMaximumHitTaken)

local _, takenDamages = takenHitFromTypeMaxHit("Fire", 0.8)
local poolsRemaining = build.calcsTab.calcs.reducePoolsByDamage(nil, takenDamages, build.calcsTab.calcsEnv.player)
assert.are.equals(0, poolsRemaining.EnergyShield)
assert.are.equals(0, poolsRemaining.Life)
assert.are.equals(120, poolsRemaining.LifeLossLostOverTime)
assert.are.equals(20, poolsRemaining.LifeBelowHalfLossLostOverTime)

build.skillsTab:PasteSocketGroup("\z
Petrified Blood 20/0 Default 1\n\z
")
Expand All @@ -336,25 +336,25 @@ describe("TestDefence", function()
build.configTab.input.conditionUsingFlask = true
build.configTab:BuildModList()
runCallback("OnFrame")

_, takenDamages = takenHitFromTypeMaxHit("Fire")
poolsRemaining = build.calcsTab.calcs.reducePoolsByDamage(nil, takenDamages, build.calcsTab.calcsEnv.player)
assert.are.equals(0, poolsRemaining.Life)
assert.are.equals(0, poolsRemaining.EnergyShield)
assert.is.not_false(poolsRemaining.Mana > 0)

_, takenDamages = takenHitFromTypeMaxHit("Lightning")
poolsRemaining = build.calcsTab.calcs.reducePoolsByDamage(nil, takenDamages, build.calcsTab.calcsEnv.player)
assert.are.equals(0, poolsRemaining.Life)
assert.are.equals(0, poolsRemaining.EnergyShield)
assert.are.equals(0, poolsRemaining.Mana)

_, takenDamages = takenHitFromTypeMaxHit("Chaos")
poolsRemaining = build.calcsTab.calcs.reducePoolsByDamage(nil, takenDamages, build.calcsTab.calcsEnv.player)
assert.are.equals(0, poolsRemaining.Life)
assert.are.equals(0, poolsRemaining.EnergyShield)
assert.are.equals(0, poolsRemaining.Mana)

build.skillsTab.socketGroupList = {}
end)

Expand Down Expand Up @@ -555,7 +555,7 @@ describe("TestDefence", function()
end
it("damage conversion max hits", function()
build.configTab.input.enemyIsBoss = "None"

build.configTab.input.customMods = "\z
+940 to maximum life\n\z
+200 to all resistances\n\z
Expand Down Expand Up @@ -608,7 +608,7 @@ describe("TestDefence", function()
runCallback("OnFrame")
assert.is.not_false(withinTenPercent(1000, takenHitFromTypeMaxHit("Physical")))
assert.is.not_false(withinTenPercent(1000, takenHitFromTypeMaxHit("Cold")))

build.configTab.input.customMods = "\z
+940 to maximum life\n\z
+10000 to armour\n\z
Expand All @@ -622,7 +622,7 @@ describe("TestDefence", function()
runCallback("OnFrame")
assert.is.not_false(withinTenPercent(1000, takenHitFromTypeMaxHit("Physical")))
assert.is.not_false(withinTenPercent(1000, takenHitFromTypeMaxHit("Cold")))

build.configTab.input.customMods = "\z
+99 to energy shield\n\z
100% less attributes\n\z
Expand All @@ -636,7 +636,7 @@ describe("TestDefence", function()
assert.are.equals(0, floor(poolsRemaining.Life))
assert.are.equals(0, floor(poolsRemaining.OverkillDamage))
end)

it("damage conversion to different size pools", function()
-- conversion into a smaller pool
build.configTab.input.customMods = "\z
Expand All @@ -654,7 +654,7 @@ describe("TestDefence", function()
assert.are.equals(0, floor(poolsRemaining.Mana))
assert.are.equals(0, floor(poolsRemaining.Life))
assert.are.equals(0, floor(poolsRemaining.OverkillDamage))

build.configTab.input.customMods = "\z
+40 to maximum life\n\z
+950 to mana\n\z
Expand All @@ -670,7 +670,7 @@ describe("TestDefence", function()
assert.are.equals(0, floor(poolsRemaining.Mana))
assert.are.equals(0, floor(poolsRemaining.Life))
assert.are.equals(0, floor(poolsRemaining.OverkillDamage))

build.configTab.input.customMods = "\z
+40 to maximum life\n\z
+1950 to mana\n\z
Expand All @@ -686,7 +686,7 @@ describe("TestDefence", function()
assert.are.equals(1000, round(poolsRemaining.Mana))
assert.are.equals(0, floor(poolsRemaining.Life))
assert.are.equals(0, floor(poolsRemaining.OverkillDamage))

-- conversion into a bigger pool
build.configTab.input.customMods = "\z
+40 to maximum life\n\z
Expand All @@ -703,7 +703,7 @@ describe("TestDefence", function()
assert.are.equals(0, floor(poolsRemaining.Mana))
assert.are.equals(0, floor(poolsRemaining.Life))
assert.are.equals(0, floor(poolsRemaining.OverkillDamage))

build.configTab.input.customMods = "\z
+40 to maximum life\n\z
+950 to mana\n\z
Expand All @@ -719,7 +719,7 @@ describe("TestDefence", function()
assert.are.equals(0, floor(poolsRemaining.Mana))
assert.are.equals(0, floor(poolsRemaining.Life))
assert.are.equals(0, floor(poolsRemaining.OverkillDamage))

build.configTab.input.customMods = "\z
+40 to maximum life\n\z
+1950 to mana\n\z
Expand Down Expand Up @@ -898,7 +898,7 @@ describe("TestDefence", function()
assert.are.equals(0, floor(poolsRemaining.Life))
assert.are.equals(0, floor(poolsRemaining.OverkillDamage))
end)

it("Unbreakable + Iron Reflexes", function()
build.configTab.input.customMods = [[
you have no dexterity
Expand Down Expand Up @@ -993,7 +993,7 @@ describe("TestDefence", function()
-- Oath Of Maji should apply only once
assert.are.equals(2*2*ironReflexesArmour + baseArmour + baseEvasion, build.calcsTab.mainOutput.Armour)
end)

it("MoM + EB", function()
build.configTab.input.enemyIsBoss = "None"
-- enough mana and es, 0% and 100% bypass
Expand All @@ -1020,7 +1020,7 @@ describe("TestDefence", function()
assert.are.equals(2000, round(poolsRemaining.Mana))
assert.are.equals(0, floor(poolsRemaining.Life))
assert.are.equals(0, floor(poolsRemaining.OverkillDamage))

-- enough mana and es, 50% bypass
build.configTab.input.customMods = [[
50% of damage is taken from mana before life
Expand Down Expand Up @@ -1085,7 +1085,7 @@ describe("TestDefence", function()
assert.are.equals(1940, round(poolsRemaining.Mana))
assert.are.equals(0, floor(poolsRemaining.Life))
assert.are.equals(0, floor(poolsRemaining.OverkillDamage))

-- mana bottleneck, 0% and 100% bypass
build.configTab.input.customMods = [[
50% of damage is taken from mana before life
Expand Down
4 changes: 2 additions & 2 deletions spec/System/TestItemMods_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ describe("TetsItemMods", function()

assert.are.equals(genericRingInt - initialInt, build.calcsTab.mainOutput.Int - genericRingInt)
end)

it("Kalandra's Touch influence copy", function()

build.skillsTab:PasteSocketGroup("Slot: Weapon 1\nSmite 20/0 Default 1\n")
Expand Down Expand Up @@ -308,7 +308,7 @@ describe("TetsItemMods", function()
end)

it("Both slots explicit mod with mixed mod rings (evasion and es mastery)", function()

build.configTab.input.customMods = "\z
20% increased Maximum Energy Shield if both Equipped Rings have an Explicit Evasion Modifier\n\z
"
Expand Down
2 changes: 1 addition & 1 deletion spec/System/TestItemParse_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,7 @@ describe("TestItemParse", function()
item = new("Item", raw("Has a Two Handed Sword Crucible Passive Skill Tree"))
assert.truthy(item.canHaveTwoHandedSwordCrucibleTree)
end)

it("tags", function()
local item = new("Item", raw("{tags:life,physical_damage}+8 to Strength"))
assert.are.same({ "life", "physical_damage" }, item.explicitModLines[1].modTags)
Expand Down
10 changes: 5 additions & 5 deletions spec/System/TestSkills_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ describe("TestAttacks", function()

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
Expand All @@ -76,11 +76,11 @@ describe("TestAttacks", function()

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
Expand All @@ -103,14 +103,14 @@ describe("TestAttacks", function()
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()
Expand Down
Loading