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
71 changes: 64 additions & 7 deletions src/Classes/PassiveSpec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -134,15 +134,42 @@ function PassiveSpecClass:Load(xml, dbFileName)
end
end
if xml.attrib.nodes then
local classId = -1
local ascendClassId = -1
-- Legacy format contain classId and ascendClassId as xml attributes
if xml.attrib.classId then
classId = tonumber(xml.attrib.classId)
end
if xml.attrib.ascendClassId then
ascendClassId = tonumber(xml.attrib.ascendClassId)
end

-- New format
if not xml.attrib.classId then
launch:ShowErrMsg("^1Error parsing '%s': 'Spec' element missing 'classId' attribute", dbFileName)
if xml.attrib.classInternalId then
local classInternalId = tonumber(xml.attrib.classInternalId)
if self.tree.classIntegerIdMap[classInternalId] then
classId = self.tree.classIntegerIdMap[classInternalId]
end
end
if xml.attrib.ascendancyInternalId then
local ascendancyInternalId = tostring(xml.attrib.ascendancyInternalId)
if ascendancyInternalId == "" then
ascendClassId = 0
elseif self.tree.internalAscendNameMap[ascendancyInternalId] then
ascendClassId = self.tree.internalAscendNameMap[ascendancyInternalId].ascendClassId
end
end

if classId == -1 then
launch:ShowErrMsg("^1Error parsing '%s': 'Spec' element missing 'classId' / 'classInternalId' attribute", dbFileName)
return true
end
if not xml.attrib.ascendClassId then
launch:ShowErrMsg("^1Error parsing '%s': 'Spec' element missing 'ascendClassId' attribute", dbFileName)

if ascendClassId == -1 then
launch:ShowErrMsg("^1Error parsing '%s': 'Spec' element missing 'ascendClassId' / 'ascendancyInternalId' attribute", dbFileName)
return true
end

local hashList = { }
for hash in xml.attrib.nodes:gmatch("%d+") do
t_insert(hashList, tonumber(hash))
Expand Down Expand Up @@ -174,7 +201,7 @@ function PassiveSpecClass:Load(xml, dbFileName)
end
end
end
self:ImportFromNodeList(nil, tonumber(xml.attrib.classId), tonumber(xml.attrib.ascendClassId), tonumber(xml.attrib.secondaryAscendClassId or 0), hashList, weaponSets, copyTable(self.hashOverrides, true), masteryEffects)
self:ImportFromNodeList(nil, classId, ascendClassId, tonumber(xml.attrib.secondaryAscendClassId or 0), hashList, weaponSets, copyTable(self.hashOverrides, true), masteryEffects)
elseif url then
self:DecodeURL(url)
end
Expand All @@ -198,12 +225,23 @@ function PassiveSpecClass:Save(xml)
for mastery, effect in pairs(self.masterySelections) do
t_insert(masterySelections, "{"..mastery..","..effect.."}")
end

local classInternalId = self.tree.classes[self.curClassId].integerId
local ascendancyInternalId = ""
if self.curAscendClassId and self.tree.classes[self.curClassId].classes[self.curAscendClassId] then
-- None ascendancy case will have no internalId
ascendancyInternalId = self.tree.classes[self.curClassId].classes[self.curAscendClassId].internalId or ""
end

xml.attrib = {
title = self.title,
treeVersion = self.treeVersion,
-- New format
-- TODO remove old class format
classId = tostring(self.curClassId),
ascendClassId = tostring(self.curAscendClassId),
-- New format
classInternalId = tostring(classInternalId),
ascendancyInternalId = tostring(ascendancyInternalId),
secondaryAscendClassId = tostring(self.curSecondaryAscendClassId),
nodes = table.concat(allocNodeIdList, ","),
masteryEffects = table.concat(masterySelections, ",")
Expand Down Expand Up @@ -1990,7 +2028,16 @@ function PassiveSpecClass:CreateUndoState()
for mastery, effect in pairs(self.masterySelections) do
selections[mastery] = effect
end
local classInternalId = self.tree.classes[self.curClassId].integerId
local ascendancyInternalId = ""
if self.curAscendClassId and self.tree.classes[self.curClassId].classes[self.curAscendClassId] then
-- None ascendancy doesn't have an internalId
ascendancyInternalId = self.tree.classes[self.curClassId].classes[self.curAscendClassId].internalId or ""
end

return {
classInternalId = classInternalId,
ascendancyInternalId = ascendancyInternalId,
classId = self.curClassId,
ascendClassId = self.curAscendClassId,
secondaryAscendClassId = self.secondaryAscendClassId,
Expand All @@ -2003,7 +2050,17 @@ function PassiveSpecClass:CreateUndoState()
end

function PassiveSpecClass:RestoreUndoState(state, treeVersion)
self:ImportFromNodeList(nil, state.classId, state.ascendClassId, state.secondaryAscendClassId, state.hashList, state.weaponSets, state.hashOverrides, state.masteryEffects, treeVersion or state.treeVersion)
local classId = state.classId
local ascendClassId = state.ascendClassId
if treeVersion ~= nil and treeVersion ~= state.treeVersion then
-- we are upgrading the tree view so in this case we use the classInternalId to find the correct classId
classId = self.tree.classIntegerIdMap[state.classInternalId]
ascendClassId = 0
if state.ascendancyInternalId and state.ascendancyInternalId ~= "" and self.tree.internalAscendNameMap[state.ascendancyInternalId] then
ascendClassId = self.tree.internalAscendNameMap[state.ascendancyInternalId].ascendClassId
end
end
self:ImportFromNodeList(nil, classId, ascendClassId, state.secondaryAscendClassId, state.hashList, state.weaponSets, state.hashOverrides, state.masteryEffects, treeVersion or state.treeVersion)
self:SetWindowTitleWithBuildClass()
end

Expand Down
2 changes: 2 additions & 0 deletions src/Classes/PassiveTree.lua
Original file line number Diff line number Diff line change
Expand Up @@ -86,13 +86,15 @@ local PassiveTreeClass = newClass("PassiveTree", function(self, treeVersion)
-- Build maps of class name -> class table
self.classNameMap = { }
self.ascendNameMap = { }
self.classIntegerIdMap = { }
self.internalAscendNameMap = { }
self.classNotables = { }

for classId, class in pairs(self.classes) do
class.classes = class.ascendancies
class.classes[0] = { name = "None" }
self.classNameMap[class.name] = classId
self.classIntegerIdMap[class.integerId] = classId
for ascendClassId, ascendClass in pairs(class.classes) do
self.ascendNameMap[ascendClass.id or ascendClass.name] = {
classId = classId,
Expand Down
1 change: 1 addition & 0 deletions src/Export/Scripts/passivetree.lua
Original file line number Diff line number Diff line change
Expand Up @@ -643,6 +643,7 @@ for i, classId in ipairs(psg.passives) do
end
local classDef = {
["name"] = character.Name,
["integerId"] = character.IntegerId,
["base_str"] = character.BaseStrength,
["base_dex"] = character.BaseDexterity,
["base_int"] = character.BaseIntelligence,
Expand Down
6 changes: 6 additions & 0 deletions src/TreeData/0_1/tree.lua
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ return {
["base_dex"]=15,
["base_int"]=7,
["base_str"]=7,
integerId=2,
name="Ranger"
},
[2]={
Expand Down Expand Up @@ -190,6 +191,7 @@ return {
["base_dex"]=7,
["base_int"]=7,
["base_str"]=15,
integerId=6,
name="Warrior"
},
[3]={
Expand Down Expand Up @@ -240,6 +242,7 @@ return {
["base_dex"]=11,
["base_int"]=7,
["base_str"]=11,
integerId=9,
name="Mercenary"
},
[4]={
Expand Down Expand Up @@ -290,6 +293,7 @@ return {
["base_dex"]=7,
["base_int"]=15,
["base_str"]=7,
integerId=1,
name="Witch"
},
[5]={
Expand Down Expand Up @@ -340,6 +344,7 @@ return {
["base_dex"]=7,
["base_int"]=15,
["base_str"]=7,
integerId=7,
name="Sorceress"
},
[6]={
Expand Down Expand Up @@ -390,6 +395,7 @@ return {
["base_dex"]=11,
["base_int"]=11,
["base_str"]=7,
integerId=10,
name="Monk"
}
},
Expand Down
7 changes: 7 additions & 0 deletions src/TreeData/0_2/tree.lua
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ return {
["base_dex"]=15,
["base_int"]=7,
["base_str"]=7,
integerId=2,
name="Ranger"
},
[2]={
Expand Down Expand Up @@ -190,6 +191,7 @@ return {
["base_dex"]=15,
["base_int"]=7,
["base_str"]=7,
integerId=8,
name="Huntress"
},
[3]={
Expand Down Expand Up @@ -253,6 +255,7 @@ return {
["base_dex"]=7,
["base_int"]=7,
["base_str"]=15,
integerId=6,
name="Warrior"
},
[4]={
Expand Down Expand Up @@ -316,6 +319,7 @@ return {
["base_dex"]=11,
["base_int"]=7,
["base_str"]=11,
integerId=9,
name="Mercenary"
},
[5]={
Expand Down Expand Up @@ -379,6 +383,7 @@ return {
["base_dex"]=7,
["base_int"]=15,
["base_str"]=7,
integerId=1,
name="Witch"
},
[6]={
Expand Down Expand Up @@ -429,6 +434,7 @@ return {
["base_dex"]=7,
["base_int"]=15,
["base_str"]=7,
integerId=7,
name="Sorceress"
},
[7]={
Expand Down Expand Up @@ -479,6 +485,7 @@ return {
["base_dex"]=11,
["base_int"]=11,
["base_str"]=7,
integerId=10,
name="Monk"
}
},
Expand Down
7 changes: 7 additions & 0 deletions src/TreeData/0_3/tree.lua
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ return {
["base_dex"]=15,
["base_int"]=7,
["base_str"]=7,
integerId=2,
name="Ranger"
},
[2]={
Expand Down Expand Up @@ -190,6 +191,7 @@ return {
["base_dex"]=15,
["base_int"]=7,
["base_str"]=7,
integerId=8,
name="Huntress"
},
[3]={
Expand Down Expand Up @@ -253,6 +255,7 @@ return {
["base_dex"]=7,
["base_int"]=7,
["base_str"]=15,
integerId=6,
name="Warrior"
},
[4]={
Expand Down Expand Up @@ -316,6 +319,7 @@ return {
["base_dex"]=11,
["base_int"]=7,
["base_str"]=11,
integerId=9,
name="Mercenary"
},
[5]={
Expand Down Expand Up @@ -394,6 +398,7 @@ return {
["base_dex"]=7,
["base_int"]=15,
["base_str"]=7,
integerId=1,
name="Witch"
},
[6]={
Expand Down Expand Up @@ -444,6 +449,7 @@ return {
["base_dex"]=7,
["base_int"]=15,
["base_str"]=7,
integerId=7,
name="Sorceress"
},
[7]={
Expand Down Expand Up @@ -494,6 +500,7 @@ return {
["base_dex"]=11,
["base_int"]=11,
["base_str"]=7,
integerId=10,
name="Monk"
}
},
Expand Down
Binary file modified src/TreeData/0_4/ascendancy-background_1500_1500_BC7.dds.zst
Binary file not shown.
Binary file modified src/TreeData/0_4/ascendancy-background_4000_4000_BC7.dds.zst
Binary file not shown.
Binary file modified src/TreeData/0_4/group-background_104_104_BC7.dds.zst
Binary file not shown.
Binary file modified src/TreeData/0_4/group-background_152_156_BC7.dds.zst
Binary file not shown.
Binary file modified src/TreeData/0_4/group-background_160_164_BC7.dds.zst
Binary file not shown.
Binary file modified src/TreeData/0_4/group-background_208_208_BC7.dds.zst
Binary file not shown.
Binary file modified src/TreeData/0_4/group-background_220_224_BC7.dds.zst
Binary file not shown.
Binary file modified src/TreeData/0_4/jewel-sockets_152_156_BC7.dds.zst
Binary file not shown.
Binary file modified src/TreeData/0_4/legion_128_128_BC1.dds.zst
Binary file not shown.
Binary file modified src/TreeData/0_4/legion_564_564_BC7.dds.zst
Binary file not shown.
Binary file modified src/TreeData/0_4/legion_64_64_BC1.dds.zst
Binary file not shown.
Binary file modified src/TreeData/0_4/mastery-active-effect_776_768_BC7.dds.zst
Binary file not shown.
Binary file modified src/TreeData/0_4/monster-categories_36_36_BC7.dds.zst
Binary file not shown.
Binary file modified src/TreeData/0_4/oils_108_108_RGBA.dds.zst
Binary file not shown.
Binary file modified src/TreeData/0_4/skills-disabled_128_128_BC1.dds.zst
Binary file not shown.
Binary file modified src/TreeData/0_4/skills-disabled_64_64_BC1.dds.zst
Binary file not shown.
Binary file modified src/TreeData/0_4/skills_128_128_BC1.dds.zst
Binary file not shown.
Binary file modified src/TreeData/0_4/skills_64_64_BC1.dds.zst
Binary file not shown.
2 changes: 1 addition & 1 deletion src/TreeData/0_4/tree.json

Large diffs are not rendered by default.

Loading
Loading