From 5d30556cd4e971038c317e29054b35abb317aa5e Mon Sep 17 00:00:00 2001 From: EtherealCarnivore <42915554+EtherealCarnivore@users.noreply.github.com> Date: Mon, 2 Mar 2026 18:07:40 +0200 Subject: [PATCH 1/2] Preserve cluster jewel notables when changing enchantment Keep currently-selected affixes in the dropdown even when they can't naturally spawn on the new base. In 3.28 you can change a cluster jewel's enchantment without losing existing mods, so the affix list filter now skips the spawn weight check for whatever mod is already selected in each slot. --- src/Classes/ItemsTab.lua | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Classes/ItemsTab.lua b/src/Classes/ItemsTab.lua index 9a8162b911..9ec47323db 100644 --- a/src/Classes/ItemsTab.lua +++ b/src/Classes/ItemsTab.lua @@ -1783,10 +1783,13 @@ function ItemsTabClass:UpdateAffixControl(control, item, type, outputTable, outp extraTags[skill.tag] = true end end + local selAffix = item[outputTable][outputIndex] and item[outputTable][outputIndex].modId local affixList = { } for modId, mod in pairs(item.affixes) do - if mod.type == type and not excludeGroups[mod.group] and item:GetModSpawnWeight(mod, extraTags) > 0 and not item:CheckIfModIsDelve(mod) then - t_insert(affixList, modId) + if mod.type == type and not excludeGroups[mod.group] and not item:CheckIfModIsDelve(mod) then + if item:GetModSpawnWeight(mod, extraTags) > 0 or modId == selAffix then + t_insert(affixList, modId) + end end end table.sort(affixList, function(a, b) From e9537fcb3000e25456eea007d2d02cdf745d3112 Mon Sep 17 00:00:00 2001 From: EtherealCarnivore <42915554+EtherealCarnivore@users.noreply.github.com> Date: Mon, 2 Mar 2026 20:23:17 +0200 Subject: [PATCH 2/2] Add [Retained] label to cluster jewel notables from previous enchant Grey out notables in the affix dropdown that only appear because they are currently selected but have zero spawn weight on the active enchantment. This makes it clear which mods were carried over from a different cluster jewel enchant. --- src/Classes/ItemsTab.lua | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Classes/ItemsTab.lua b/src/Classes/ItemsTab.lua index 9ec47323db..165ff9d9b5 100644 --- a/src/Classes/ItemsTab.lua +++ b/src/Classes/ItemsTab.lua @@ -1785,10 +1785,14 @@ function ItemsTabClass:UpdateAffixControl(control, item, type, outputTable, outp end local selAffix = item[outputTable][outputIndex] and item[outputTable][outputIndex].modId local affixList = { } + local retainedAffixes = { } for modId, mod in pairs(item.affixes) do if mod.type == type and not excludeGroups[mod.group] and not item:CheckIfModIsDelve(mod) then - if item:GetModSpawnWeight(mod, extraTags) > 0 or modId == selAffix then + if item:GetModSpawnWeight(mod, extraTags) > 0 then t_insert(affixList, modId) + elseif modId == selAffix then + t_insert(affixList, modId) + retainedAffixes[modId] = true end end end @@ -1824,7 +1828,9 @@ function ItemsTabClass:UpdateAffixControl(control, item, type, outputTable, outp end local modString = table.concat(mod, "/") local label = modString - if item.type == "Flask" then + if retainedAffixes[modId] then + label = "^8[Retained] " .. modString + elseif item.type == "Flask" then label = mod.affix .. " ^8[" .. modString .. "]" end control.list[i + 1] = {