From 3c0f6f4848194c91a4d8a90dda197e92075f8820 Mon Sep 17 00:00:00 2001 From: EtherealCarnivore <42915554+EtherealCarnivore@users.noreply.github.com> Date: Mon, 2 Mar 2026 13:14:46 +0200 Subject: [PATCH 1/2] Hide legacy awakened gems from dropdown by default Most awakened support gems were discontinued in 3.28. They're now hidden from the gem dropdown unless "Show legacy gems" is checked. Awakened Empower, Enlighten, and Enhance are still shown since they're still obtainable. Existing builds with legacy awakened gems load and calculate fine - this only affects the picker. --- src/Classes/GemSelectControl.lua | 17 +++++++++++++++-- src/Classes/SkillsTab.lua | 13 +++++++++++-- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/Classes/GemSelectControl.lua b/src/Classes/GemSelectControl.lua index 28c9ae5817..78ec767f42 100644 --- a/src/Classes/GemSelectControl.lua +++ b/src/Classes/GemSelectControl.lua @@ -12,6 +12,11 @@ local m_max = math.max local m_floor = math.floor local toolTipText = "Prefix tag searches with a colon and exclude tags with a dash. e.g. :fire:lightning:-cold:area" +local nonLegacyAwakened = { + ["SupportAwakenedEmpower"] = true, + ["SupportAwakenedEnlighten"] = true, + ["SupportAwakenedEnhance"] = true, +} local altQualMap = { ["Default"] = "", ["Alternate1"] = "Anomalous ", @@ -116,7 +121,9 @@ function GemSelectClass:PopulateGemList() local levelRequirement = gemData.grantedEffect.levels[1].levelRequirement or 1 if characterLevel >= levelRequirement or not matchLevel then if (showAwakened or showAll) and gemData.grantedEffect.plusVersionOf then - self.gems["Default:" .. gemId] = gemData + if self.skillsTab.showLegacyGems or nonLegacyAwakened[gemData.grantedEffectId] then + self.gems["Default:" .. gemId] = gemData + end elseif showNormal or showAll then if self.skillsTab.showAltQualityGems and (self.skillsTab.defaultGemQuality or 0) > 0 then for _, altQual in ipairs(self.skillsTab:getGemAltQualityList(gemData)) do @@ -137,6 +144,9 @@ end function GemSelectClass:FilterSupport(gemId, gemData) local showSupportTypes = self.skillsTab.showSupportGemTypes + if gemData.grantedEffect.plusVersionOf and not self.skillsTab.showLegacyGems and not nonLegacyAwakened[gemData.grantedEffectId] then + return false + end return (not gemData.grantedEffect.support or showSupportTypes == "ALL" or (showSupportTypes == "NORMAL" and not gemData.grantedEffect.plusVersionOf) @@ -253,11 +263,13 @@ function GemSelectClass:UpdateSortCache() and sortCache.outputRevision == self.skillsTab.build.outputRevision and sortCache.defaultLevel == self.skillsTab.defaultGemLevel and (sortCache.characterLevel == self.skillsTab.build.characterLevel or self.skillsTab.defaultGemLevel ~= "characterLevel") and sortCache.defaultQuality == self.skillsTab.defaultGemQuality and sortCache.sortType == self.skillsTab.sortGemsByDPSField - and sortCache.considerAlternates == self.skillsTab.showAltQualityGems and sortCache.considerGemType == self.skillsTab.showSupportGemTypes then + and sortCache.considerAlternates == self.skillsTab.showAltQualityGems and sortCache.considerGemType == self.skillsTab.showSupportGemTypes + and sortCache.showLegacyGems == self.skillsTab.showLegacyGems then return end if not sameSortBy or not sortCache or (sortCache.considerAlternates ~= self.skillsTab.showAltQualityGems or sortCache.considerGemType ~= self.skillsTab.showSupportGemTypes + or sortCache.showLegacyGems ~= self.skillsTab.showLegacyGems or sortCache.defaultQuality ~= self.skillsTab.defaultGemQuality or sortCache.defaultLevel ~= self.skillsTab.defaultGemLevel or (sortCache.characterLevel ~= self.skillsTab.build.characterLevel and self.skillsTab.defaultGemLevel == "characterLevel")) then @@ -269,6 +281,7 @@ function GemSelectClass:UpdateSortCache() sortCache = { considerGemType = self.skillsTab.showSupportGemTypes, considerAlternates = self.skillsTab.showAltQualityGems, + showLegacyGems = self.skillsTab.showLegacyGems, socketGroup = self.skillsTab.displayGroup, gemInstance = self.skillsTab.displayGroup.gemList[self.index], outputRevision = self.skillsTab.build.outputRevision, diff --git a/src/Classes/SkillsTab.lua b/src/Classes/SkillsTab.lua index 65a7e498f6..f6cc48048e 100644 --- a/src/Classes/SkillsTab.lua +++ b/src/Classes/SkillsTab.lua @@ -90,6 +90,7 @@ local SkillsTabClass = newClass("SkillsTab", "UndoHandler", "ControlHost", "Cont self.sortGemsByDPSField = "CombinedDPS" self.showSupportGemTypes = "ALL" self.showAltQualityGems = false + self.showLegacyGems = false self.defaultGemLevel = "normalMaximum" self.defaultGemQuality = main.defaultGemQuality @@ -122,7 +123,7 @@ local SkillsTabClass = newClass("SkillsTab", "UndoHandler", "ControlHost", "Cont -- Gem options local optionInputsX = 170 local optionInputsY = 45 - self.controls.optionSection = new("SectionControl", { "TOPLEFT", self.controls.groupList, "BOTTOMLEFT" }, { 0, optionInputsY + 50, 360, 156 }, "Gem Options") + self.controls.optionSection = new("SectionControl", { "TOPLEFT", self.controls.groupList, "BOTTOMLEFT" }, { 0, optionInputsY + 50, 360, 180 }, "Gem Options") self.controls.sortGemsByDPS = new("CheckBoxControl", { "TOPLEFT", self.controls.groupList, "BOTTOMLEFT" }, { optionInputsX, optionInputsY + 70, 20 }, "Sort gems by DPS:", function(state) self.sortGemsByDPS = state end, nil, true) @@ -150,6 +151,9 @@ local SkillsTabClass = newClass("SkillsTab", "UndoHandler", "ControlHost", "Cont self.controls.showAltQualityGems = new("CheckBoxControl", { "TOPLEFT", self.controls.groupList, "BOTTOMLEFT" }, { optionInputsX, optionInputsY + 166, 20 }, "^7Show quality variants:", function(state) self.showAltQualityGems = state end) + self.controls.showLegacyGems = new("CheckBoxControl", { "TOPLEFT", self.controls.groupList, "BOTTOMLEFT" }, { optionInputsX, optionInputsY + 190, 20 }, "^7Show legacy gems:", function(state) + self.showLegacyGems = state + end) -- Socket group details if main.portraitMode then @@ -397,6 +401,10 @@ function SkillsTabClass:Load(xml, fileName) self.showAltQualityGems = xml.attrib.showAltQualityGems == "true" end self.controls.showAltQualityGems.state = self.showAltQualityGems + if xml.attrib.showLegacyGems then + self.showLegacyGems = xml.attrib.showLegacyGems == "true" + end + self.controls.showLegacyGems.state = self.showLegacyGems self.controls.showSupportGemTypes:SelByValue(xml.attrib.showSupportGemTypes or "ALL", "show") self.controls.sortGemsByDPSFieldControl:SelByValue(xml.attrib.sortGemsByDPSField or "CombinedDPS", "type") self.showSupportGemTypes = self.controls.showSupportGemTypes:GetSelValueByKey("show") @@ -432,7 +440,8 @@ function SkillsTabClass:Save(xml) sortGemsByDPS = tostring(self.sortGemsByDPS), showSupportGemTypes = self.showSupportGemTypes, sortGemsByDPSField = self.sortGemsByDPSField, - showAltQualityGems = tostring(self.showAltQualityGems) + showAltQualityGems = tostring(self.showAltQualityGems), + showLegacyGems = tostring(self.showLegacyGems) } for _, skillSetId in ipairs(self.skillSetOrderList) do local skillSet = self.skillSets[skillSetId] From 48cb29e9bfb7e4c08995f0fb5aaa8ce7089e97b0 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Tue, 10 Mar 2026 00:20:07 +1100 Subject: [PATCH 2/2] Adjust logic --- src/Classes/GemSelectControl.lua | 10 +++++----- src/Classes/SkillsTab.lua | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Classes/GemSelectControl.lua b/src/Classes/GemSelectControl.lua index 78ec767f42..ac19f68414 100644 --- a/src/Classes/GemSelectControl.lua +++ b/src/Classes/GemSelectControl.lua @@ -111,7 +111,7 @@ end function GemSelectClass:PopulateGemList() wipeTable(self.gems) local showAll = self.skillsTab.showSupportGemTypes == "ALL" - local showAwakened = self.skillsTab.showSupportGemTypes == "AWAKENED" + local showExceptional = self.skillsTab.showSupportGemTypes == "EXCEPTIONAL" local showNormal = self.skillsTab.showSupportGemTypes == "NORMAL" local matchLevel = self.skillsTab.defaultGemLevel == "characterLevel" local characterLevel = self.skillsTab.build and self.skillsTab.build.characterLevel or 1 @@ -120,8 +120,8 @@ function GemSelectClass:PopulateGemList() if (self.sortGemsBy and gemData.tags[self.sortGemsBy] == true or not self.sortGemsBy) then local levelRequirement = gemData.grantedEffect.levels[1].levelRequirement or 1 if characterLevel >= levelRequirement or not matchLevel then - if (showAwakened or showAll) and gemData.grantedEffect.plusVersionOf then - if self.skillsTab.showLegacyGems or nonLegacyAwakened[gemData.grantedEffectId] then + if (showExceptional or showAll) and gemData.grantedEffect.plusVersionOf then + if self.skillsTab.showLegacyGems or nonLegacyAwakened[gemData.grantedEffectId] or not gemData.name:match("^Awakened") then self.gems["Default:" .. gemId] = gemData end elseif showNormal or showAll then @@ -144,13 +144,13 @@ end function GemSelectClass:FilterSupport(gemId, gemData) local showSupportTypes = self.skillsTab.showSupportGemTypes - if gemData.grantedEffect.plusVersionOf and not self.skillsTab.showLegacyGems and not nonLegacyAwakened[gemData.grantedEffectId] then + if gemData.name:match("^Awakened") and not self.skillsTab.showLegacyGems and not nonLegacyAwakened[gemData.grantedEffectId] then return false end return (not gemData.grantedEffect.support or showSupportTypes == "ALL" or (showSupportTypes == "NORMAL" and not gemData.grantedEffect.plusVersionOf) - or (showSupportTypes == "AWAKENED" and gemData.grantedEffect.plusVersionOf)) + or (showSupportTypes == "EXCEPTIONAL" and gemData.grantedEffect.plusVersionOf)) and (self.skillsTab.showAltQualityGems or (not self.skillsTab.showAltQualityGems and self:GetQualityType(gemId) == "Default")) end diff --git a/src/Classes/SkillsTab.lua b/src/Classes/SkillsTab.lua index f6cc48048e..6b7f5652eb 100644 --- a/src/Classes/SkillsTab.lua +++ b/src/Classes/SkillsTab.lua @@ -54,8 +54,8 @@ This hides gems with a minimum level requirement above your character level, pre local showSupportGemTypeList = { { label = "All", show = "ALL" }, - { label = "Non-Awakened", show = "NORMAL" }, - { label = "Awakened", show = "AWAKENED" }, + { label = "Non-Exceptional", show = "NORMAL" }, + { label = "Exceptional", show = "EXCEPTIONAL" }, } local sortGemTypeList = {