Skip to content
Merged
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
15 changes: 15 additions & 0 deletions spec/System/TestDefence_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,21 @@ describe("TestDefence", function()
assert.are.equals(0, floor(poolsRemaining.Life))
assert.are.equals(0, floor(poolsRemaining.OverkillDamage))
end)

it("applies physical damage reduction overrides", function()
build.configTab.input.customMods = "\z
+10000 to Armour\n\z
10% additional Physical Damage Reduction\n\z
Physical Damage Reduction is zero\n\z
"
build.configTab:BuildModList()
runCallback("OnFrame")

assert.is_true(build.calcsTab.calcsOutput.Armour > 0)
assert.are.equals(0, build.calcsTab.calcsOutput.PhysicalEffectiveAppliedArmour)
assert.are.equals(0, build.calcsTab.calcsOutput.BasePhysicalDamageReduction)
assert.are.equals(0, build.calcsTab.calcsOutput.PhysicalDamageReduction)
end)

-- a small helper function to calculate damage taken from limited test parameters
local function takenHitFromTypeMaxHit(type, enemyDamageMulti)
Expand Down
37 changes: 37 additions & 0 deletions spec/System/TestItemMods_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,43 @@ describe("TetsItemMods", function()
-- newBuild() takes care of resetting everything in setup()
end)

it("shows versioned reusable variant groups", function()
build.itemsTab:CreateDisplayItemFromRaw([[
Rarity: Unique
Grouped Test Item
Plate Vest
Version: Pre 3.28.0
Version: Current
Variant: Life
Variant: Energy Shield
Variant: Mana
Variant: Armour
Implicits: 0
{version:1}{variant:1}{group:1,2}+10 to maximum Life
{version:2}{variant:2}{group:1,2}+10 to maximum Energy Shield
{variant:3}{group:1,2}+10 to maximum Mana
{variant:4}{group:1,2}+10 to Armour
]])

local versionControl = build.itemsTab.controls.displayItemVersion
local group1 = build.itemsTab.controls.displayItemVariant
local group2 = build.itemsTab.controls.displayItemAltVariant
assert.is_true(versionControl:IsShown())
assert.are.equals(2, versionControl.selIndex)
assert.are.equals("Energy Shield", group1.list[1].label)
assert.are.equals("Mana", group2.list[1].label)

group2:SetSel(2)
group1:SetSel(2)
assert.are.equals(3, build.itemsTab.displayItem.variantGroupSelections[1])
versionControl:SetSel(1)
assert.are.equals(3, build.itemsTab.displayItem.variantGroupSelections[1])
assert.are.equals("Life", group1.list[1].label)
assert.are.equals("Mana", group1.list[2].label)
assert.are.equals("Life", group2.list[1].label)
assert.are.equals("Armour", group2.list[2].label)
end)

it("Dialla's socket mods", function()
build.skillsTab:PasteSocketGroup("Slot: Body Armour\nArc 20/0 1\nArc 20/0 1\n")
runCallback("OnFrame")
Expand Down
55 changes: 55 additions & 0 deletions spec/System/TestItemParse_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,61 @@ describe("TestItemParse", function()
assert.are.same({ "Pre 3.19.0", "Current" }, item.variantList)
end)

it("Versioned grouped variants", function()
local item = new("Item", [[
Rarity: UNIQUE
Versioned Grouped Test
Prismatic Ring
Version: Pre 3.28.0
Version: Current
Variant: Life
Variant: Energy Shield
Variant: Mana
Variant: Reflect Immune
Variant: No damage from Crits
Variant: No Monster Suppress
Variant: No Enemy Pen
Variant: Charges cannot be stolen
Variant: Burning Ground Immune
Variant: Shocked Ground Immune
Variant: Desecrated Ground Immune
Variant: Chilled Ground Immune
Implicits: 0
{version:2}{variant:2}{group:1}20% increased maximum Energy Shield
{version:1}{variant:1}{group:1}10% increased maximum Life
{variant:3}{group:1}20% increased maximum Mana
{variant:4}{group:2}Damage cannot be Reflected
{variant:5}{group:2}You take 100% reduced Extra Damage from Critical Strikes
{variant:6}{group:2}Monsters cannot Suppress your Spells
{variant:7}{group:2}Elemental Resistances cannot be Penetrated
{variant:8}{group:2}Monsters cannot steal your Power, Frenzy or Endurance charges on Hit
{variant:9}{group:3}Unaffected by Burning Ground
{variant:10}{group:3}Unaffected by Shocked Ground
{variant:11}{group:3}Unaffected by Desecrated Ground
{variant:12}{group:3}Unaffected by Chilled Ground
]])
assert.are.same({ "Pre 3.28.0", "Current" }, item.versionList)
assert.are.equals(2, item.selectedVersion)
assert.are.equals(2, item.variantGroupSelections[1])
assert.are.equals(4, item.variantGroupSelections[2])
assert.are.equals(9, item.variantGroupSelections[3])
assert.are.same({ 2, 3 }, item:GetVariantGroupOptions(1, false))

item.variantGroupSelections[1] = 3
item.selectedVersion = 1
item:NormaliseVariantSelections()
assert.are.equals(3, item.variantGroupSelections[1])
assert.are.same({ 1, 3 }, item:GetVariantGroupOptions(1, false))

item.variantGroupSelections[1] = 2
item:NormaliseVariantSelections()
assert.are.equals(1, item.variantGroupSelections[1])
item:BuildAndParseRaw()
assert.matches("Selected Version: 1", item.raw, 1, true)
assert.matches("Selected Variant Group: 1=1", item.raw, 1, true)
assert.matches("{version:1}{variant:1}{group:1}", item.raw, 1, true)
end)

it("Talisman Tier", function()
local item = new("Item", raw("Talisman Tier: 3", "Rotfeather Talisman"))
assert.are.equals(3, item.talismanTier)
Expand Down
Loading
Loading