From 308705a91eb814ef9a76bf67b95e72ab688c2f52 Mon Sep 17 00:00:00 2001 From: Val Voronov Date: Sun, 26 Feb 2023 03:35:32 +0700 Subject: [PATCH] auras: Process subtables in proper order (#634) --- elements/auras.lua | 97 +++++++++++++++++++++++----------------------- 1 file changed, 48 insertions(+), 49 deletions(-) diff --git a/elements/auras.lua b/elements/auras.lua index 95d87af0..764e680e 100644 --- a/elements/auras.lua +++ b/elements/auras.lua @@ -358,6 +358,28 @@ local function UpdateAuras(self, event, unit, updateInfo) end end else + if(updateInfo.addedAuras) then + for _, data in next, updateInfo.addedAuras do + if(data.isHelpful and not C_UnitAuras.IsAuraFilteredOutByInstanceID(unit, data.auraInstanceID, buffFilter)) then + data = processData(auras, unit, data) + auras.allBuffs[data.auraInstanceID] = data + + if((auras.FilterAura or FilterAura) (auras, unit, data)) then + auras.activeBuffs[data.auraInstanceID] = true + buffsChanged = true + end + elseif(data.isHarmful and not C_UnitAuras.IsAuraFilteredOutByInstanceID(unit, data.auraInstanceID, debuffFilter)) then + data = processData(auras, unit, data) + auras.allDebuffs[data.auraInstanceID] = data + + if((auras.FilterAura or FilterAura) (auras, unit, data)) then + auras.activeDebuffs[data.auraInstanceID] = true + debuffsChanged = true + end + end + end + end + if(updateInfo.updatedAuraInstanceIDs) then for _, auraInstanceID in next, updateInfo.updatedAuraInstanceIDs do if(auras.allBuffs[auraInstanceID]) then @@ -398,29 +420,6 @@ local function UpdateAuras(self, event, unit, updateInfo) end end end - - if(updateInfo.addedAuras) then - for _, data in next, updateInfo.addedAuras do - if(data.isHelpful and not C_UnitAuras.IsAuraFilteredOutByInstanceID(unit, data.auraInstanceID, buffFilter)) then - data = processData(auras, unit, data) - auras.allBuffs[data.auraInstanceID] = data - - if((auras.FilterAura or FilterAura) (auras, unit, data)) then - auras.activeBuffs[data.auraInstanceID] = true - buffsChanged = true - end - elseif(data.isHarmful and not C_UnitAuras.IsAuraFilteredOutByInstanceID(unit, data.auraInstanceID, debuffFilter)) then - data = processData(auras, unit, data) - auras.allDebuffs[data.auraInstanceID] = data - - if((auras.FilterAura or FilterAura) (auras, unit, data)) then - auras.activeDebuffs[data.auraInstanceID] = true - debuffsChanged = true - end - - end - end - end end --[[ Callback: Auras:PostUpdateInfo(unit, buffsChanged, debuffsChanged) @@ -593,6 +592,19 @@ local function UpdateAuras(self, event, unit, updateInfo) end end else + if(updateInfo.addedAuras) then + for _, data in next, updateInfo.addedAuras do + if(data.isHelpful and not C_UnitAuras.IsAuraFilteredOutByInstanceID(unit, data.auraInstanceID, buffFilter)) then + buffs.all[data.auraInstanceID] = processData(buffs, unit, data) + + if((buffs.FilterAura or FilterAura) (buffs, unit, data)) then + buffs.active[data.auraInstanceID] = true + buffsChanged = true + end + end + end + end + if(updateInfo.updatedAuraInstanceIDs) then for _, auraInstanceID in next, updateInfo.updatedAuraInstanceIDs do if(buffs.all[auraInstanceID]) then @@ -618,19 +630,6 @@ local function UpdateAuras(self, event, unit, updateInfo) end end end - - if(updateInfo.addedAuras) then - for _, data in next, updateInfo.addedAuras do - if(data.isHelpful and not C_UnitAuras.IsAuraFilteredOutByInstanceID(unit, data.auraInstanceID, buffFilter)) then - buffs.all[data.auraInstanceID] = processData(buffs, unit, data) - - if((buffs.FilterAura or FilterAura) (buffs, unit, data)) then - buffs.active[data.auraInstanceID] = true - buffsChanged = true - end - end - end - end end if(buffs.PostUpdateInfo) then @@ -702,6 +701,19 @@ local function UpdateAuras(self, event, unit, updateInfo) end end else + if(updateInfo.addedAuras) then + for _, data in next, updateInfo.addedAuras do + if(data.isHarmful and not C_UnitAuras.IsAuraFilteredOutByInstanceID(unit, data.auraInstanceID, debuffFilter)) then + debuffs.all[data.auraInstanceID] = processData(debuffs, unit, data) + + if((debuffs.FilterAura or FilterAura) (debuffs, unit, data)) then + debuffs.active[data.auraInstanceID] = true + debuffsChanged = true + end + end + end + end + if(updateInfo.updatedAuraInstanceIDs) then for _, auraInstanceID in next, updateInfo.updatedAuraInstanceIDs do if(debuffs.all[auraInstanceID]) then @@ -727,19 +739,6 @@ local function UpdateAuras(self, event, unit, updateInfo) end end end - - if(updateInfo.addedAuras) then - for _, data in next, updateInfo.addedAuras do - if(data.isHarmful and not C_UnitAuras.IsAuraFilteredOutByInstanceID(unit, data.auraInstanceID, debuffFilter)) then - debuffs.all[data.auraInstanceID] = processData(debuffs, unit, data) - - if((debuffs.FilterAura or FilterAura) (debuffs, unit, data)) then - debuffs.active[data.auraInstanceID] = true - debuffsChanged = true - end - end - end - end end if(debuffs.PostUpdateInfo) then