From 8a175928420e4ddfd6188e66a20d13dbc2a29ef6 Mon Sep 17 00:00:00 2001 From: Sumsebrum Date: Thu, 29 Jul 2021 17:11:54 +0200 Subject: [PATCH] optimize and randomize DR and Aura test mode --- Modules/Auras.lua | 77 ++++++++++++++++++++-------------------- Modules/Diminishings.lua | 38 ++++++++++++++------ 2 files changed, 66 insertions(+), 49 deletions(-) diff --git a/Modules/Auras.lua b/Modules/Auras.lua index 3f88fd6..a41c275 100644 --- a/Modules/Auras.lua +++ b/Modules/Auras.lua @@ -272,56 +272,57 @@ function Auras:Test(unit) self:AURA_FADE(unit, AURA_TYPE_DEBUFF) --Auras - local enabledAuras = 0 - for _,value in pairs(Gladdy.db.auraListDefault) do + local enabledDebuffs, enabledBuffs, testauras = {}, {} + for spellIdStr,value in pairs(Gladdy.db.auraListDefault) do if value.enabled then - enabledAuras = enabledAuras + 1 + if value.track == AURA_TYPE_BUFF then + tinsert(enabledBuffs, {value = value, spellIdStr = spellIdStr}) + else + tinsert(enabledDebuffs, {value = value, spellIdStr = spellIdStr}) + end end end - if enabledAuras > 0 then - limit, i = rand(1, enabledAuras), 1 - for spellIdStr,value in pairs(Gladdy.db.auraListDefault) do - if i > limit then break end - if value.enabled then - spellid = tonumber(spellIdStr) - spellName = select(1, GetSpellInfo(tonumber(spellIdStr))) - icon = select(3, GetSpellInfo(tonumber(spellIdStr))) - if Gladdy.exceptionNames[spellid] then - spellName = Gladdy.exceptionNames[spellid] - end - self:AURA_GAIN(unit,value.track, spellid, spellName, icon, self.auras[spellName].duration, GetTime() + self.auras[spellName].duration) - i = i + 1 + if unit == "arena2" then + testauras = enabledBuffs + else + testauras = enabledDebuffs + end + + if #testauras > 0 then + limit = rand(1, #testauras) + local v = testauras[rand(1, #testauras)] + spellid = tonumber(v.spellIdStr) + spellName = select(1, GetSpellInfo(tonumber(v.spellIdStr))) + icon = select(3, GetSpellInfo(tonumber(v.spellIdStr))) + if Gladdy.exceptionNames[spellid] then + spellName = Gladdy.exceptionNames[spellid] + end + if (unit == "arena2") then + if (v.value.track == AURA_TYPE_BUFF) then + self:AURA_GAIN(unit,v.value.track, spellid, spellName, icon, self.auras[spellName].duration, GetTime() + self.auras[spellName].duration) end + else + self:AURA_GAIN(unit,v.value.track, spellid, spellName, icon, self.auras[spellName].duration, GetTime() + self.auras[spellName].duration) end end --Interrupts - local spellSchools = {} - for k,_ in pairs(Gladdy:GetSpellSchoolColors()) do - tinsert(spellSchools, k) - end - enabledAuras = 0 - for _, value in pairs(Gladdy.db.auraListInterrupts) do - if value.enabled then - enabledAuras = enabledAuras + 1 + if (unit == "arena1" or unit == "arena3") then + local enabledInterrupts = {} + local spellSchools = {} + for k,_ in pairs(Gladdy:GetSpellSchoolColors()) do + tinsert(spellSchools, k) end - end - if enabledAuras > 0 then - limit, i = rand(1, enabledAuras), 1 - local extraSpellSchool for spellIdStr, value in pairs(Gladdy.db.auraListInterrupts) do - if i > limit then break end if value.enabled then - enabledAuras = enabledAuras + 1 + tinsert(enabledInterrupts, spellIdStr) end - spellid = tonumber(spellIdStr) - if (unit == "arena1" or unit == "arena2") then - extraSpellSchool = spellSchools[rand(1, #spellSchools)] - spellName = select(1, GetSpellInfo(spellid)) - Gladdy:Print(spellName, extraSpellSchool) - self:SPELL_INTERRUPT(unit,spellid, spellName, "physical", spellid, spellName, extraSpellSchool) - end - i = i + 1 + end + if #enabledInterrupts > 0 then + local extraSpellSchool = spellSchools[rand(1, #spellSchools)] + spellid = tonumber(enabledInterrupts[rand(1, #enabledInterrupts)]) + spellName = select(1, GetSpellInfo(spellid)) + self:SPELL_INTERRUPT(unit,spellid, spellName, "physical", spellid, spellName, extraSpellSchool) end end end diff --git a/Modules/Diminishings.lua b/Modules/Diminishings.lua index 7cb8903..4f24a19 100644 --- a/Modules/Diminishings.lua +++ b/Modules/Diminishings.lua @@ -257,17 +257,32 @@ end function Diminishings:Test(unit) if Gladdy.db.drEnabled then - local limit = {} - for spellID,category in pairs(DRData:GetSpells()) do - if Gladdy.db.drCategories[category].enabled then - if not limit[category] then - limit[category] = { count = 1, limit = rand(1,3) } - else - limit[category].count = limit[category].count + 1 - end - if limit[category].count <= limit[category].limit then - self:AuraFade(unit, spellID) - end + local enabledCategories = {} + for cat,val in pairs(Gladdy.db.drCategories) do + if (val.enabled) then + tinsert(enabledCategories, {cat = cat , spellIDs = {}}) + enabledCategories[cat] = #enabledCategories + end + end + for spellId,cat in pairs(DRData:GetSpells()) do + if enabledCategories[cat] then + tinsert(enabledCategories[enabledCategories[cat]].spellIDs, spellId) + end + end + + --shuffle + for i = #enabledCategories, 2, -1 do + local j = rand(i) + enabledCategories[i], enabledCategories[j] = enabledCategories[j], enabledCategories[i] + end + + --execute test + local index, amount = 0,0 + for i=1, (#enabledCategories < 4 and #enabledCategories) or 4 do + amount = rand(1,3) + index = rand(1, #enabledCategories[i].spellIDs) + for _=1, amount do + self:AuraFade(unit, enabledCategories[i].spellIDs[index]) end end end @@ -294,6 +309,7 @@ function Diminishings:AuraFade(unit, spellID) lastIcon.diminishing = 1.0 end end + if not lastIcon then return end lastIcon.dr = drCat lastIcon.timeLeft = Gladdy.db.drDuration lastIcon.diminishing = DRData:NextDR(lastIcon.diminishing)