From 769ae5b3b859ba93f21eef626ff5dd7917501004 Mon Sep 17 00:00:00 2001 From: Nostrademous Date: Fri, 26 Mar 2021 00:37:42 -0400 Subject: [PATCH] optimized gem selector choices and pool they use --- Classes/GemSelectControl.lua | 23 ++++++++++++++++------- Modules/CalcSetup.lua | 10 ++++++++-- Modules/Calcs.lua | 1 + 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/Classes/GemSelectControl.lua b/Classes/GemSelectControl.lua index 3faddfb5..9f76127f 100644 --- a/Classes/GemSelectControl.lua +++ b/Classes/GemSelectControl.lua @@ -49,13 +49,20 @@ end) function GemSelectClass:PopulateGemList() wipeTable(self.gems) + local showAll = self.skillsTab.showSupportGemTypes == "ALL" + local showAwakened = self.skillsTab.showSupportGemTypes == "AWAKENED" + local showNormal = self.skillsTab.showSupportGemTypes == "NORMAL" for gemId, gemData in pairs(self.skillsTab.build.data.gems) do - if self.skillsTab.showAltQualityGems then - for _, altQual in ipairs(self.skillsTab:getGemAltQualityList(gemData)) do - self.gems[altQual.type .. ":" .. gemId] = gemData - end - else + if (showAwakened or showAll) and gemData.grantedEffect.plusVersionOf then self.gems["Default:" .. gemId] = gemData + elseif (showNormal or showAll) then + if self.skillsTab.showAltQualityGems and self.skillsTab.defaultGemQuality > 0 then + for _, altQual in ipairs(self.skillsTab:getGemAltQualityList(gemData)) do + self.gems[altQual.type .. ":" .. gemId] = gemData + end + else + self.gems["Default:" .. gemId] = gemData + end end end end @@ -140,16 +147,18 @@ function GemSelectClass:UpdateSortCache() if sortCache and sortCache.socketGroup == self.skillsTab.displayGroup and sortCache.gemInstance == self.skillsTab.displayGroup.gemList[self.index] and sortCache.outputRevision == self.skillsTab.build.outputRevision and sortCache.defaultLevel == self.skillsTab.defaultGemLevel and sortCache.defaultQuality == self.skillsTab.defaultGemQuality and sortCache.sortType == self.skillsTab.sortGemsByDPSField - and sortCache.considerAlternates == self.skillsTab.showAltQualityGems then + and sortCache.considerAlternates == self.skillsTab.showAltQualityGems and sortCache.considerAwakened == self.skillsTab.showSupportGemTypes then return end - if sortCache and sortCache.considerAlternates ~= self.skillsTab.showAltQualityGems then + if sortCache and (sortCache.considerAlternates ~= self.skillsTab.showAltQualityGems or sortCache.considerGemType ~= self.skillsTab.showSupportGemTypes + or sortCache.defaultQuality ~= self.skillsTab.defaultGemQuality) then self:PopulateGemList() end --Initialize a new sort cache sortCache = { + considerGemType = self.skillsTab.showSupportGemTypes, considerAlternates = self.skillsTab.showAltQualityGems, socketGroup = self.skillsTab.displayGroup, gemInstance = self.skillsTab.displayGroup.gemList[self.index], diff --git a/Modules/CalcSetup.lua b/Modules/CalcSetup.lua index 97c8f271..a48d7c25 100644 --- a/Modules/CalcSetup.lua +++ b/Modules/CalcSetup.lua @@ -182,6 +182,10 @@ function wipeEnv(env, accelerate) wipeTable(env.enemyDB.conditions) wipeTable(env.enemyDB.multipliers) + if accelerate.everything then + return + end + -- Passive tree node allocations -- Also in a further pass tracks Legion influenced mods if not accelerate.nodeAlloc then @@ -244,8 +248,6 @@ end -- 5. Builds a list of active skills and their supports (calcs.createActiveSkill) -- 6. Builds modifier lists for all active skills (calcs.buildActiveSkillModList) function calcs.initEnv(build, mode, override, specEnv) - override = override or { } - -- accelerator variables local db1 = specEnv and specEnv.db1 or nil local db2 = specEnv and specEnv.db2 or nil @@ -253,6 +255,7 @@ function calcs.initEnv(build, mode, override, specEnv) local accelerate = specEnv and specEnv.accelerate or { } -- environment variables + override = override or { } local modDB = nil local enemyDB = nil local classStats = nil @@ -308,6 +311,9 @@ function calcs.initEnv(build, mode, override, specEnv) -- skill-related env.player.activeSkillList = { } env.auxSkillList = { } + elseif accelerate.everything then + env.modDB.parent, env.enemyDB.parent = specCopy(env) + wipeEnv(env, accelerate) else wipeEnv(env, accelerate) modDB = env.modDB diff --git a/Modules/Calcs.lua b/Modules/Calcs.lua index b9c1b3ac..fd04e3ea 100644 --- a/Modules/Calcs.lua +++ b/Modules/Calcs.lua @@ -246,6 +246,7 @@ function calcs.calcFullDPS(build, mode, override, specEnv) requirementsItems = true, requirementsGems = true, skills = true, + everything = true, } fullEnv, _, _ = calcs.initEnv(build, mode, override or {}, { db1 = db1, db2 = db2, env = fullEnv, accelerate = accelerationTbl }) end