From 49cc52595698877ecee0dab1649175b1d0b4f0f6 Mon Sep 17 00:00:00 2001 From: Viktor Magyari Date: Wed, 24 Jun 2026 22:18:48 +0200 Subject: [PATCH 1/2] Fix gem group counting logic --- src/Classes/SkillsTab.lua | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/src/Classes/SkillsTab.lua b/src/Classes/SkillsTab.lua index 3c43bfffe3..af8111bcd8 100644 --- a/src/Classes/SkillsTab.lua +++ b/src/Classes/SkillsTab.lua @@ -1517,19 +1517,37 @@ function SkillsTabClass:SetActiveSkillSet(skillSetId, deferSync) end end +-- Count the number of gem groups that have at least one enabled non-provided gem +function SkillsTabClass:CountGemGroups() + local gemGroupCount = 0 + for _, socketGroup in ipairs(self.socketGroupList) do + if socketGroup.enabled then + local hasEnabledNonProvidedGem = false + for _, gem in ipairs(socketGroup.gemList) do + if gem.enabled then + local grantedEffect = gem and (gem.grantedEffect or gem.gemData and gem.gemData.grantedEffect) + local provided = ((gem and (gem.fromItem or gem.fromTree) + or (grantedEffect and (grantedEffect.fromItem or grantedEffect.fromTree)))) + if not provided then + hasEnabledNonProvidedGem = true + break + end + end + end + if hasEnabledNonProvidedGem then + gemGroupCount = gemGroupCount + 1 + end + end + end + return gemGroupCount +end + -- Loop over all socket groups and gem instances -- to updated global gem count assignments function SkillsTabClass:UpdateGlobalGemCountAssignments() wipeTable(GlobalGemAssignments) - local countSocketGroups = 0 for _, socketGroup in ipairs(self.socketGroupList) do - local countGroup = true if socketGroup.enabled then - local activeGem = socketGroup.gemList[1] - local activeGrantedEffect = activeGem and (activeGem.grantedEffect or activeGem.gemData and activeGem.gemData.grantedEffect) - if activeGem and (activeGem.fromItem or activeGem.fromTree or activeGrantedEffect and (activeGrantedEffect.fromItem or activeGrantedEffect.fromTree)) then - countGroup = false - end for _, gemInstance in ipairs(socketGroup.gemList) do if gemInstance.gemData and gemInstance.enabled then if GlobalGemAssignments[gemInstance.gemData.name] then @@ -1551,10 +1569,7 @@ function SkillsTabClass:UpdateGlobalGemCountAssignments() end end end - if countGroup then - countSocketGroups = countSocketGroups + 1 - end end - GlobalGemAssignments["GemGroupCount"] = countSocketGroups + GlobalGemAssignments["GemGroupCount"] = self:CountGemGroups() end From dd94b19fd126cbf434cec71d7c73c92dbb43daab Mon Sep 17 00:00:00 2001 From: Viktor Magyari Date: Wed, 24 Jun 2026 22:34:01 +0200 Subject: [PATCH 2/2] Fix function invocation for unit test --- src/Classes/SkillsTab.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Classes/SkillsTab.lua b/src/Classes/SkillsTab.lua index af8111bcd8..a2a79d4ffc 100644 --- a/src/Classes/SkillsTab.lua +++ b/src/Classes/SkillsTab.lua @@ -1570,6 +1570,6 @@ function SkillsTabClass:UpdateGlobalGemCountAssignments() end end end - GlobalGemAssignments["GemGroupCount"] = self:CountGemGroups() + GlobalGemAssignments["GemGroupCount"] = SkillsTabClass.CountGemGroups(self) end