Skip to content

Commit 98a68b1

Browse files
vaisestLocalIdentity
andauthored
Fix crash when clicking on empty rune list (#2091)
* Fix #2089 * Avoid adding invalid rune to display item * Fix old items if someone saved one * Remove local variable --------- Co-authored-by: LocalIdentity <localidentity2@gmail.com>
1 parent ee9c266 commit 98a68b1

1 file changed

Lines changed: 34 additions & 5 deletions

File tree

src/Classes/ItemsTab.lua

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1729,10 +1729,22 @@ function ItemsTabClass:CopyAnointsAndAugments(newItem, copyAugments, overwrite,
17291729
newItem.itemSocketCount = #newItem.sockets
17301730
newItem:UpdateRunes()
17311731
end
1732+
1733+
local validRunes = self:GetValidRunesForItem(newItem)
1734+
17321735
-- replace runes with current ones, or set to none
17331736
if shouldChangeAugments then
17341737
for i = 1, #newItem.sockets do
1735-
newItem.runes[i] = currentRunes[i] or "None"
1738+
newItem.runes[i] = "None"
1739+
if currentRunes[i] then
1740+
for _, rune in ipairs(validRunes) do
1741+
-- we only copy runes which fit the new item type
1742+
if rune.name == currentRunes[i] then
1743+
newItem.runes[i] = currentRunes[i]
1744+
break
1745+
end
1746+
end
1747+
end
17361748
end
17371749
newItem:UpdateRunes()
17381750
end
@@ -1900,10 +1912,8 @@ table.sort(runeModLines, function(a, b)
19001912
return a.group < b.group
19011913
end
19021914
end)
1903-
-- Update rune selection controls
1904-
function ItemsTabClass:UpdateRuneControls()
1905-
local item = self.displayItem
1906-
-- Build rune selection for item
1915+
1916+
function ItemsTabClass:GetValidRunesForItem(item)
19071917
local runes = { }
19081918
for _, rune in pairs(runeModLines) do
19091919
local subType = item.base.subType and item.base.subType:lower()
@@ -1935,19 +1945,38 @@ function ItemsTabClass:UpdateRuneControls()
19351945
end
19361946
end
19371947
end
1948+
return runes
1949+
end
1950+
1951+
-- Update rune selection controls
1952+
function ItemsTabClass:UpdateRuneControls()
1953+
local item = self.displayItem
1954+
-- Build rune selection for item
1955+
local runes = self:GetValidRunesForItem(item)
1956+
local runesUpdated = false
19381957

19391958
for i = 1, item.itemSocketCount do
19401959
self.controls["displayItemRune"..i].list = runes
19411960
if item.runes[i] then
1961+
local found = false
19421962
for j, modLine in ipairs(self.controls["displayItemRune"..i].list) do
19431963
if item.runes[i] == modLine.name then
19441964
self.controls["displayItemRune"..i].selIndex = j
1965+
found = true
19451966
end
19461967
end
1968+
if not found then
1969+
self.controls["displayItemRune"..i].selIndex = 1
1970+
item.runes[i] = "None"
1971+
runesUpdated = true
1972+
end
19471973
else
19481974
self.controls["displayItemRune"..i].selIndex = 1
19491975
end
19501976
end
1977+
if runesUpdated then
1978+
item:UpdateRunes()
1979+
end
19511980
end
19521981

19531982
function ItemsTabClass:UpdateAffixControl(control, item, type, outputTable, outputIndex)

0 commit comments

Comments
 (0)