From 72958ee967bfbb3d3aeca15b95db86a0a583b105 Mon Sep 17 00:00:00 2001 From: vaisest <4550061+vaisest@users.noreply.github.com> Date: Sat, 8 Aug 2026 16:13:03 +0300 Subject: [PATCH 1/2] Fix #10180 --- src/Classes/TradeQuery.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Classes/TradeQuery.lua b/src/Classes/TradeQuery.lua index 7ea2fcedf0..d99699e23e 100644 --- a/src/Classes/TradeQuery.lua +++ b/src/Classes/TradeQuery.lua @@ -816,8 +816,7 @@ function TradeQueryClass:GetResultEvaluation(row_idx, result_index, calcFunc, ba end local slotTbl = self.slotTables[row_idx] local jewelNodeId = slotTbl.nodeId or slotTbl.selectedJewelNodeId - local slotName = jewelNodeId and "Jewel " .. tostring(jewelNodeId) or slotTbl.slotName - if slotName == "Megalomaniac" then + if slotTbl.slotName == "Megalomaniac" then local addedNodes = {} for nodeName in (result.item_string.."\r\n"):gmatch("1 Added Passive Skill is (.-)\r?\n") do t_insert(addedNodes, self.itemsTab.build.spec.tree.clusterNodeMap[nodeName]) @@ -839,6 +838,7 @@ function TradeQueryClass:GetResultEvaluation(row_idx, result_index, calcFunc, ba } table.sort(result.evaluation, function(a, b) return a.weight > b.weight end) else + local slotName = jewelNodeId and "Jewel " .. tostring(jewelNodeId) or slotTbl.slotName local item = new("Item"):Item(result.item_string) local output = self:ReduceOutput(calcFunc({ repSlotName = slotName, repItem = item })) From 9f6dec56120ada8c38ff3ce1c27ef4b687ef39b1 Mon Sep 17 00:00:00 2001 From: vaisest <4550061+vaisest@users.noreply.github.com> Date: Sat, 8 Aug 2026 16:21:56 +0300 Subject: [PATCH 2/2] Add test --- spec/System/TestTradeQuery_spec.lua | 43 +++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/spec/System/TestTradeQuery_spec.lua b/spec/System/TestTradeQuery_spec.lua index 9a83a331c4..96246a4a7f 100644 --- a/spec/System/TestTradeQuery_spec.lua +++ b/spec/System/TestTradeQuery_spec.lua @@ -61,6 +61,49 @@ describe("TradeQuery", function() assert.are.equal(0, #tooltip.lines) end) end) + describe("GetResultEvaluation", function() + local function newMegalomaniacTradeQuery(slotTbl) + return tq + end + + it("evaluates a socketed Megalomaniac by node combination", function() + local slotTbl = { + slotName = "Megalomaniac", unique = true, alreadyCorrupted = true, selectedJewelNodeId = 12345, + } + local tq = new("TradeQuery", { itemsTab = {} }) + tq.statSortSelectionList = {} + tq.tradeQueryGenerator = new("TradeQueryGenerator", { itemsTab = {} }) + tq.itemsTab.build = { + spec = { + tree = { + clusterNodeMap = { + ["Node One"] = { dn = "Node One" }, + ["Node Two"] = { dn = "Node Two" }, + ["Node Three"] = { dn = "Node Three" }, + } + } + } + } + tq.slotTables[1] = slotTbl + tq.resultTbl[1] = { + [1] = { + item_string = table.concat({ + "1 Added Passive Skill is Node One", + "1 Added Passive Skill is Node Two", + "1 Added Passive Skill is Node Three", + }, "\n") + } + } + + local evaluation = tq:GetResultEvaluation(1, 1, function() return {} end, {}) + + assert.are.equal(4, #evaluation) + for _, entry in ipairs(evaluation) do + assert.is_table(entry.DNs) + assert.is_true(#entry.DNs >= 2) + end + end) + end) describe("ReduceOutput", function() it("preserves lower-is-better values for weighted result comparison", function() local weights = {