@@ -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
19021914end )
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
19511980end
19521981
19531982function ItemsTabClass :UpdateAffixControl (control , item , type , outputTable , outputIndex )
0 commit comments