diff --git a/src/Classes/PassiveTreeView.lua b/src/Classes/PassiveTreeView.lua index a7cbd97664..ddcbdfc0f9 100644 --- a/src/Classes/PassiveTreeView.lua +++ b/src/Classes/PassiveTreeView.lua @@ -1230,9 +1230,17 @@ function PassiveTreeViewClass:AddNodeTooltip(tooltip, node, build) end end end + local goldCost = data.goldRespecPrices[build.characterLevel] + if node.ascendancyName then + goldCost = goldCost * 5 + end if node.depends and #node.depends > 1 then tooltip:AddSeparator(14) tooltip:AddLine(14, "^7"..#node.depends .. " points gained from unallocating these nodes") + tooltip:AddLine(14, "^xFFD700"..formatNumSep(#node.depends * goldCost) .. " Gold ^7required to unallocate these nodes") + tooltip:AddLine(14, colorCodes.TIP) + elseif node.alloc then + tooltip:AddLine(14, "^xFFD700"..formatNumSep(#node.depends * goldCost) .. " Gold ^7required to unallocate this node") tooltip:AddLine(14, colorCodes.TIP) end if node.type == "Socket" then diff --git a/src/Classes/TreeTab.lua b/src/Classes/TreeTab.lua index abae20fe26..c19edf0223 100644 --- a/src/Classes/TreeTab.lua +++ b/src/Classes/TreeTab.lua @@ -68,24 +68,36 @@ local TreeTabClass = newClass("TreeTab", "ControlHost", function(self, build) end if spec.curClassId == self.build.spec.curClassId then local respec = 0 + local respecAscendancy = 0 for nodeId, node in pairs(self.build.spec.allocNodes) do -- Assumption: Nodes >= 65536 are small cluster passives. if node.type ~= "ClassStart" and node.type ~= "AscendClassStart" and (self.build.spec.tree.clusterNodeMap[node.dn] == nil or node.isKeystone or node.isJewelSocket) and nodeId < 65536 and not spec.allocNodes[nodeId] then if node.ascendancyName then - respec = respec + 5 + respecAscendancy = respecAscendancy + 1 else respec = respec + 1 end end end - if respec > 0 then - tooltip:AddLine(16, "^7Switching to this tree requires "..respec.." refund points.") + if respec > 0 or respecAscendancy > 0 then + local goldCost = data.goldRespecPrices[build.characterLevel] + local totalGold = (respec * goldCost) + (respecAscendancy * goldCost * 5) + local goldStr = formatNumSep(tostring(totalGold)) + tooltip:AddLine(16, "^xFFD700" .. goldStr .. " Gold ^7required to switch to this tree.") + if respec > 0 then + local nodeWord = respec == 1 and "Passive node to be refunded" or "Passive nodes to be refunded" + tooltip:AddLine(16, s_format("^7\t%d %s.", respec, nodeWord)) + end + if respecAscendancy > 0 then + local ascendWord = respecAscendancy == 1 and "Ascendancy node to be refunded" or "Ascendancy nodes to be refunded" + tooltip:AddLine(16, s_format("^7\t%d %s.", respecAscendancy, ascendWord)) + end end end end - tooltip:AddLine(16, "Game Version: "..treeVersions[spec.treeVersion].display) + tooltip:AddLine(16, "^7Game Version: "..treeVersions[spec.treeVersion].display) end end end diff --git a/src/Data/Misc.lua b/src/Data/Misc.lua index ca2548a383..2f9a93860d 100644 --- a/src/Data/Misc.lua +++ b/src/Data/Misc.lua @@ -316,3 +316,5 @@ data.mapLevelLifeMult = { [66] = 1.01, [67] = 1.03, [68] = 1.05, [69] = 1.09, [7 -- From MonsterMapBossDifficulty.dat data.mapLevelBossLifeMult = { [1] = 1.5, [2] = 1.52, [3] = 1.54, [4] = 1.56, [5] = 1.58, [6] = 1.6, [7] = 1.62, [8] = 1.64, [9] = 1.66, [10] = 1.68, [11] = 1.7, [12] = 1.72, [13] = 1.74, [14] = 1.76, [15] = 1.78, [16] = 1.8, [17] = 1.82, [18] = 1.84, [19] = 1.86, [20] = 1.88, [21] = 1.9, [22] = 1.92, [23] = 1.94, [24] = 1.96, [25] = 1.98, [26] = 2, [27] = 2.02, [28] = 2.04, [29] = 2.06, [30] = 2.08, [31] = 2.1, [32] = 2.12, [33] = 2.14, [34] = 2.16, [35] = 2.18, [36] = 2.2, [37] = 2.22, [38] = 2.24, [39] = 2.26, [40] = 2.28, [41] = 2.3, [42] = 2.32, [43] = 2.34, [44] = 2.36, [45] = 2.38, [46] = 2.4, [47] = 2.42, [48] = 2.44, [49] = 2.46, [50] = 2.48, [51] = 2.5, [52] = 2.52, [53] = 2.54, [54] = 2.56, [55] = 2.58, [56] = 2.6, [57] = 2.62, [58] = 2.64, [59] = 2.66, [60] = 2.68, [61] = 2.7, [62] = 2.72, [63] = 2.74, [64] = 2.76, [65] = 2.78, [66] = 2.8, [67] = 2.8, [68] = 2.8, [69] = 3.03, [70] = 3.16, [71] = 3.32, [72] = 3.48, [73] = 5.63, [74] = 5.97, [75] = 6.32, [76] = 6.66, [77] = 6.99, [78] = 10.46, [79] = 11.32, [80] = 13.01, [81] = 15.43, [82] = 17.2, [83] = 19.64, [84] = 21.46, [85] = 21.46, [86] = 21.46, [87] = 21.46, [88] = 21.46, [89] = 21.46, [90] = 21.46, } data.mapLevelBossAilmentMult = { [1] = 0.81, [2] = 0.81, [3] = 0.81, [4] = 0.81, [5] = 0.81, [6] = 0.81, [7] = 0.81, [8] = 0.81, [9] = 0.81, [10] = 0.81, [11] = 0.81, [12] = 0.81, [13] = 0.81, [14] = 0.81, [15] = 0.81, [16] = 0.81, [17] = 0.81, [18] = 0.81, [19] = 0.81, [20] = 0.81, [21] = 0.81, [22] = 0.81, [23] = 0.81, [24] = 0.81, [25] = 0.81, [26] = 0.81, [27] = 0.81, [28] = 0.81, [29] = 0.81, [30] = 0.81, [31] = 0.81, [32] = 0.81, [33] = 0.81, [34] = 0.81, [35] = 0.81, [36] = 0.81, [37] = 0.81, [38] = 0.81, [39] = 0.81, [40] = 0.81, [41] = 0.81, [42] = 0.81, [43] = 0.81, [44] = 0.81, [45] = 0.81, [46] = 0.81, [47] = 0.81, [48] = 0.81, [49] = 0.81, [50] = 0.81, [51] = 0.8, [52] = 0.79, [53] = 0.78, [54] = 0.77, [55] = 0.76, [56] = 0.75, [57] = 0.74, [58] = 0.73, [59] = 0.72, [60] = 0.71, [61] = 0.7, [62] = 0.69, [63] = 0.68, [64] = 0.67, [65] = 0.66, [66] = 0.65, [67] = 0.64, [68] = 0.63, [69] = 0.59, [70] = 0.58, [71] = 0.57, [72] = 0.56, [73] = 0.55, [74] = 0.53, [75] = 0.52, [76] = 0.51, [77] = 0.5, [78] = 0.49, [79] = 0.48, [80] = 0.48, [81] = 0.47, [82] = 0.47, [83] = 0.47, [84] = 0.47, [85] = 0.47, [86] = 0.47, [87] = 0.47, [88] = 0.47, [89] = 0.47, [90] = 0.47, } +-- From VillageBalancePerLevelShared.dat +data.goldRespecPrices = { 4, 4, 4, 5, 5, 6, 6, 7, 8, 8, 9, 11, 12, 14, 15, 17, 18, 20, 22, 24, 26, 28, 31, 34, 36, 39, 43, 46, 50, 54, 58, 62, 67, 72, 83, 90, 97, 105, 113, 121, 130, 151, 161, 171, 182, 209, 222, 237, 252, 267, 295, 313, 333, 354, 376, 427, 452, 482, 513, 546, 618, 656, 694, 733, 773, 816, 860, 892, 921, 1055, 1203, 1365, 1541, 1748, 1974, 2221, 2490, 2770, 3073, 3400, 3752, 4131, 4538, 4976, 5444, 5967, 6526, 7126, 7766, 8450, 9851, 11380, 13042, 14847, 16801, 18914, 21192, 23647, 26286, 29119, } diff --git a/src/Export/Classes/GGPKData.lua b/src/Export/Classes/GGPKData.lua index d30873997b..d6e896b14c 100644 --- a/src/Export/Classes/GGPKData.lua +++ b/src/Export/Classes/GGPKData.lua @@ -278,6 +278,7 @@ function GGPKClass:GetNeededFiles() "Data/BrequelGraftTypes.dat", "Data/BrequelGraftSkillStats.dat", "Data/BrequelGraftGrantedSkillLevels.dat", + "Data/VillageBalancePerLevelShared.dat", } local txtFiles = { "Metadata/StatDescriptions/passive_skill_aura_stat_descriptions.txt", diff --git a/src/Export/Scripts/miscdata.lua b/src/Export/Scripts/miscdata.lua index 60fba20397..2c1702496f 100644 --- a/src/Export/Scripts/miscdata.lua +++ b/src/Export/Scripts/miscdata.lua @@ -90,6 +90,13 @@ out:write('-- From MonsterMapBossDifficulty.dat\n') out:write('data.mapLevelBossLifeMult = { '..mapBossLifeMult..'}\n') out:write('data.mapLevelBossAilmentMult = { '..mapBossAilmentMult..'}\n') +out:write('-- From VillageBalancePerLevelShared.dat\n') +out:write('data.goldRespecPrices = { ') +for row in dat("VillageBalancePerLevelShared"):Rows() do + out:write(row.GoldRespec .. ', ') +end +out:write('}\n') + out:close() print("Misc data exported.") diff --git a/src/Export/spec.lua b/src/Export/spec.lua index 791a150217..a5db41a6fa 100644 --- a/src/Export/spec.lua +++ b/src/Export/spec.lua @@ -13475,6 +13475,57 @@ return { }, userinterfacemodecondition={ }, + villagebalanceperlevelshared={ + [1]={ + list=false, + name="Level", + refTo="", + type="Int", + width=150 + }, + [2]={ + list=false, + name="", + refTo="", + type="Int", + width=150 + }, + [3]={ + list=false, + name="", + refTo="", + type="Int", + width=150 + }, + [4]={ + list=false, + name="GoldRespec", + refTo="", + type="Int", + width=150 + }, + [5]={ + list=false, + name="", + refTo="", + type="Int", + width=150 + }, + [6]={ + list=false, + name="", + refTo="", + type="Int", + width=150 + }, + [7]={ + list=false, + name="", + refTo="", + type="Int", + width=150 + } + }, villageuniquedisenchantvalues={ [1]={ list=false,