From e1a6438a567515fe313d70d285c3a008f2518927 Mon Sep 17 00:00:00 2001 From: vaisest <4550061+vaisest@users.noreply.github.com> Date: Thu, 4 Jun 2026 16:45:59 +0300 Subject: [PATCH 1/2] Fix #2089 --- src/Classes/ItemsTab.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Classes/ItemsTab.lua b/src/Classes/ItemsTab.lua index bb58f21265..b8c89312d1 100644 --- a/src/Classes/ItemsTab.lua +++ b/src/Classes/ItemsTab.lua @@ -1939,11 +1939,17 @@ function ItemsTabClass:UpdateRuneControls() for i = 1, item.itemSocketCount do self.controls["displayItemRune"..i].list = runes if item.runes[i] then + local found = false for j, modLine in ipairs(self.controls["displayItemRune"..i].list) do if item.runes[i] == modLine.name then self.controls["displayItemRune"..i].selIndex = j + found = true end end + -- ensure that outdated rune selections from previous display items get reset + if not found then + self.controls["displayItemRune"..i].selIndex = 1 + end else self.controls["displayItemRune"..i].selIndex = 1 end From 99698846de2b8c0f25c8af958ccacb3914a66104 Mon Sep 17 00:00:00 2001 From: vaisest <4550061+vaisest@users.noreply.github.com> Date: Thu, 4 Jun 2026 21:48:04 +0300 Subject: [PATCH 2/2] Avoid adding invalid rune to display item --- src/Classes/ItemsTab.lua | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/src/Classes/ItemsTab.lua b/src/Classes/ItemsTab.lua index b8c89312d1..6f4e2011cb 100644 --- a/src/Classes/ItemsTab.lua +++ b/src/Classes/ItemsTab.lua @@ -1729,10 +1729,23 @@ function ItemsTabClass:CopyAnointsAndAugments(newItem, copyAugments, overwrite, newItem.itemSocketCount = #newItem.sockets newItem:UpdateRunes() end + + local validRunes = self:GetValidRunesForItem(newItem) + -- replace runes with current ones, or set to none if shouldChangeAugments then for i = 1, #newItem.sockets do - newItem.runes[i] = currentRunes[i] or "None" + newItem.runes[i] = "None" + if currentRunes[i] then + local found = false + for _, rune in ipairs(validRunes) do + -- we only copy runes which fit the new item type + if rune.name == currentRunes[i] then + newItem.runes[i] = currentRunes[i] + break + end + end + end end newItem:UpdateRunes() end @@ -1900,10 +1913,8 @@ table.sort(runeModLines, function(a, b) return a.group < b.group end end) --- Update rune selection controls -function ItemsTabClass:UpdateRuneControls() - local item = self.displayItem - -- Build rune selection for item + +function ItemsTabClass:GetValidRunesForItem(item) local runes = { } for _, rune in pairs(runeModLines) do local subType = item.base.subType and item.base.subType:lower() @@ -1935,6 +1946,14 @@ function ItemsTabClass:UpdateRuneControls() end end end + return runes +end + +-- Update rune selection controls +function ItemsTabClass:UpdateRuneControls() + local item = self.displayItem + -- Build rune selection for item + local runes = self:GetValidRunesForItem(item) for i = 1, item.itemSocketCount do self.controls["displayItemRune"..i].list = runes @@ -1946,7 +1965,6 @@ function ItemsTabClass:UpdateRuneControls() found = true end end - -- ensure that outdated rune selections from previous display items get reset if not found then self.controls["displayItemRune"..i].selIndex = 1 end