From 49cc52595698877ecee0dab1649175b1d0b4f0f6 Mon Sep 17 00:00:00 2001 From: Viktor Magyari Date: Wed, 24 Jun 2026 22:18:48 +0200 Subject: [PATCH 1/3] 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/3] 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 From a56be903b3da5465628d13411883587e92604414 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Sat, 11 Jul 2026 15:47:57 +1000 Subject: [PATCH 3/3] Simplify fix --- spec/System/TestSkills_spec.lua | 2 ++ src/Classes/SkillsTab.lua | 38 +++++++++++---------------------- 2 files changed, 14 insertions(+), 26 deletions(-) diff --git a/spec/System/TestSkills_spec.lua b/spec/System/TestSkills_spec.lua index 9609d08349..d4d4cc68c8 100644 --- a/spec/System/TestSkills_spec.lua +++ b/spec/System/TestSkills_spec.lua @@ -539,6 +539,8 @@ describe("TestSkills", function() local skillsTab = { socketGroupList = { + { enabled = false, gemList = { fakeGem("Disabled Skill") } }, + { enabled = true, gemList = { fakeGem("Disabled Gem", nil, { enabled = false }) } }, { enabled = true, gemList = { fakeGem("Item Skill", { fromItem = true }) } }, { enabled = true, gemList = { fakeGem("Tree Skill", { fromTree = true }) } }, { enabled = true, gemList = { fakeGem("Stored Item Skill", nil, { fromItem = true }) } }, diff --git a/src/Classes/SkillsTab.lua b/src/Classes/SkillsTab.lua index a2a79d4ffc..e83b30e05e 100644 --- a/src/Classes/SkillsTab.lua +++ b/src/Classes/SkillsTab.lua @@ -1517,38 +1517,21 @@ 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 = false if socketGroup.enabled then for _, gemInstance in ipairs(socketGroup.gemList) do + if gemInstance.enabled and not countGroup then + local grantedEffect = gemInstance.grantedEffect or gemInstance.gemData and gemInstance.gemData.grantedEffect + local provided = gemInstance.fromItem or gemInstance.fromTree or + grantedEffect and (grantedEffect.fromItem or grantedEffect.fromTree) + countGroup = not provided + end if gemInstance.gemData and gemInstance.enabled then if GlobalGemAssignments[gemInstance.gemData.name] then GlobalGemAssignments[gemInstance.gemData.name].count = GlobalGemAssignments[gemInstance.gemData.name].count + 1 @@ -1569,7 +1552,10 @@ function SkillsTabClass:UpdateGlobalGemCountAssignments() end end end + if countGroup then + countSocketGroups = countSocketGroups + 1 + end end - GlobalGemAssignments["GemGroupCount"] = SkillsTabClass.CountGemGroups(self) + GlobalGemAssignments["GemGroupCount"] = countSocketGroups end