Skip to content

Commit 3a73a54

Browse files
LocalIdentityLocalIdentity
andauthored
3.29 export (#9992)
* Bases * Cluster * Crucible * Enchants * Essences * Flavour Text * Support new Talisman bases * Mods * Uniques Fixes the uniques to use their correct mods Fixes the export to strip the keyword text * Pantheon * Update existing gems * Tattoo's * Minions * Misc * Scalability * Timeless Jewels Updates the existing timeless jewel LuTs and adds the new ones Does not hook up all the plumbing with them being uniques as we dont know what mods they have yet * New skills Adds all the new skills and supports some of them * Fix tests modCache --------- Co-authored-by: LocalIdentity <localidentity2@gmail.com>
1 parent 248791a commit 3a73a54

131 files changed

Lines changed: 92821 additions & 69132 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

spec/System/TestDefence_spec.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -661,7 +661,7 @@ describe("TestDefence", function()
661661
local minionLife = build.calcsTab.mainEnv.player.allyLifeList.TotalMinionLife[1].life
662662
assert.are.equals(15, output.MinionAllyDamageMitigation)
663663
assert.are.equals(minionLife, output.TotalMinionLife)
664-
assert.are.near(unsupportedLife * 1.6, minionLife, 20)
664+
assert.are.near(unsupportedLife, minionLife, 20)
665665
end)
666666

667667
it("requires exactly one summoned minion for Companionship", function()

spec/System/TestItemParse_spec.lua

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,34 @@ describe("TestItemParse", function()
2626
assert.are.equals("Plate Vest", item.baseName)
2727
end)
2828

29+
it("adds talisman base mods as enchants", function()
30+
local baseName = "Test Talisman"
31+
data.itemBases[baseName] = {
32+
type = "Amulet",
33+
subType = "Talisman",
34+
tags = { amulet = true, talisman = true },
35+
req = { },
36+
enchant = "+10 to Strength",
37+
enchantModTypes = { { "attribute" } },
38+
cannotBeAnointed = true,
39+
}
40+
41+
local item = new("Item", "Rarity: Normal\n" .. baseName)
42+
43+
assert.are.equals(1, #item.enchantModLines)
44+
assert.are.equals("+10 to Strength", item.enchantModLines[1].line)
45+
assert.truthy(item.enchantModLines[1].crafted)
46+
assert.truthy(item.enchantModLines[1].implicit)
47+
assert.are.same({ "attribute" }, item.enchantModLines[1].modTags)
48+
assert.truthy(item.base.cannotBeAnointed)
49+
50+
item:BuildAndParseRaw()
51+
assert.are.equals(1, #item.enchantModLines)
52+
assert.truthy(item.enchantModLines[1].crafted)
53+
assert.truthy(item.enchantModLines[1].implicit)
54+
data.itemBases[baseName] = nil
55+
end)
56+
2957
it("Two-Toned Boots", function()
3058
local item = new("Item", raw("", "Two-Toned Boots"))
3159
assert.are.equals("Two-Toned Boots (Armour/Energy Shield)", item.baseName)
@@ -943,4 +971,4 @@ describe("TestAdvancedItemParse #item", function()
943971
assert.equal(8, spellDamage())
944972
end)
945973
end)
946-
end)
974+
end)

spec/System/TestItemTools_spec.lua

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,4 +96,24 @@ Can be Anointed
9696
assert.are.equals("Belt", overrides[1].repSlotName)
9797
assert.are.equals("Belt", overrides[2].repSlotName)
9898
end)
99+
100+
it("does not report missing anoints for non-anointable talisman bases", function()
101+
if not common.classes.ItemsTab then
102+
LoadModule("Classes/ItemsTab")
103+
end
104+
local fakeItemsTab = setmetatable({ }, common.classes.ItemsTab)
105+
local item = {
106+
base = {
107+
type = "Amulet",
108+
cannotBeAnointed = true,
109+
},
110+
enchantModLines = { },
111+
scourgeModLines = { },
112+
implicitModLines = { },
113+
explicitModLines = { },
114+
crucibleModLines = { },
115+
}
116+
117+
assert.are.equals(0, fakeItemsTab:getMissingAnointCount(item))
118+
end)
99119
end)

spec/System/TestSkills_spec.lua

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,10 +168,10 @@ describe("TestAttacks", function()
168168
end)
169169
it("Test cost efficiency modifiers", function()
170170
-- Test Mana Cost Efficiency
171-
build.skillsTab:PasteSocketGroup("Ball Lightning 1/0 1\n")
171+
build.skillsTab:PasteSocketGroup("Hydrosphere 1/0 1\n")
172172
runCallback("OnFrame")
173173

174-
-- Get base mana cost (Ball Lightning level 1 has 12 mana cost)
174+
-- Get base mana cost (Hydrosphere level 1 has 12 mana cost)
175175
local baseCost = build.calcsTab.mainOutput.ManaCost
176176
assert.are.equals(12, baseCost)
177177

@@ -185,7 +185,7 @@ describe("TestAttacks", function()
185185

186186
-- Test generic cost efficiency (should also affect mana)
187187
newBuild()
188-
build.skillsTab:PasteSocketGroup("Ball Lightning 1/0 1\n")
188+
build.skillsTab:PasteSocketGroup("Hydrosphere 1/0 1\n")
189189
build.configTab.input.customMods = "25% increased Cost Efficiency"
190190
build.configTab:BuildModList()
191191
runCallback("OnFrame")
@@ -205,7 +205,7 @@ describe("TestAttacks", function()
205205

206206
it("Test cost efficiency with cost modifiers", function()
207207
-- Test interaction between cost efficiency and cost multipliers
208-
build.skillsTab:PasteSocketGroup("Ball Lightning 1/0 1\n")
208+
build.skillsTab:PasteSocketGroup("Hydrosphere 1/0 1\n")
209209

210210
-- Add cost multiplier and efficiency
211211
build.configTab.input.customMods = "50% increased Mana Cost\n50% increased Mana Cost Efficiency"

src/Classes/Item.lua

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,7 @@ function ItemClass:ParseRaw(raw, rarity, highQuality)
327327
self.rawLines = { }
328328
-- Find non-blank lines and trim whitespace
329329
for line in raw:gmatch("%s*([^\n]*%S)") do
330+
line = escapeGGGString(line)
330331
t_insert(self.rawLines, line)
331332
end
332333
local mode = rarity and "GAME" or "WIKI"
@@ -1315,6 +1316,22 @@ function ItemClass:ParseRaw(raw, rarity, highQuality)
13151316
self:NormaliseQuality()
13161317
end
13171318
end
1319+
if self.base and self.base.enchant and #self.enchantModLines == 0 then
1320+
local enchantIndex = 1
1321+
for line in self.base.enchant:gmatch("[^\n]+") do
1322+
local modList, extra = modLib.parseMod(line)
1323+
t_insert(self.enchantModLines, {
1324+
line = line,
1325+
crafted = true,
1326+
implicit = true,
1327+
enchant = true,
1328+
extra = extra,
1329+
modList = modList or { },
1330+
modTags = self.base.enchantModTypes and self.base.enchantModTypes[enchantIndex] or { },
1331+
})
1332+
enchantIndex = enchantIndex + 1
1333+
end
1334+
end
13181335
self:BuildModList()
13191336
if deferJewelRadiusIndexAssignment then
13201337
self.jewelRadiusIndex = self.jewelData.radiusIndex
@@ -1516,6 +1533,9 @@ function ItemClass:BuildRaw()
15161533
if modLine.crafted then
15171534
line = "{crafted}" .. line
15181535
end
1536+
if modLine.enchant then
1537+
line = "{enchant}" .. line
1538+
end
15191539
if modLine.custom then
15201540
line = "{custom}" .. line
15211541
end

src/Classes/ItemsTab.lua

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ for _, entry in pairs(data.flavourText) do
6161
end
6262

6363
local function isAnointable(item)
64-
return (item.canBeAnointed or item.base.type == "Amulet")
64+
return item and item.base and not item.base.cannotBeAnointed
65+
and (item.canBeAnointed or item.base.type == "Amulet")
6566
end
6667

6768
local function buildModSortList()
@@ -2627,7 +2628,7 @@ end
26272628
---@param item table @The item to inspect
26282629
---@return number @How many additional anoints can still be applied
26292630
function ItemsTabClass:getMissingAnointCount(item)
2630-
if not item or not item.base or not (item.canBeAnointed or item.base.type == "Amulet") then
2631+
if not isAnointable(item) then
26312632
return 0
26322633
end
26332634
local maxAnoints = item.canHaveFourEnchants and 4 or item.canHaveThreeEnchants and 3 or item.canHaveTwoEnchants and 2 or 1

src/Classes/PassiveSpec.lua

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1171,6 +1171,16 @@ function PassiveSpecClass:BuildAllDependsAndPaths()
11711171
jewelType = 4
11721172
elseif conqueredBy.conqueror.type == "kalguur" then
11731173
jewelType = 6
1174+
elseif conqueredBy.conqueror.type == "abyssTecrod" then
1175+
jewelType = 7
1176+
elseif conqueredBy.conqueror.type == "abyssUlaman" then
1177+
jewelType = 8
1178+
elseif conqueredBy.conqueror.type == "abyssKurgal" then
1179+
jewelType = 9
1180+
elseif conqueredBy.conqueror.type == "abyssAmanamu" then
1181+
jewelType = 10
1182+
elseif conqueredBy.conqueror.type == "abyssZorath" then
1183+
jewelType = 11
11741184
end
11751185
local seed = conqueredBy.id
11761186
if jewelType == 5 then

0 commit comments

Comments
 (0)