Skip to content

Commit cf3e195

Browse files
authored
Merge pull request #234 from DaleHuntGB/aura-filters
Aura filters
2 parents 5cbc20b + 8d8b6fc commit cf3e195

3 files changed

Lines changed: 236 additions & 53 deletions

File tree

Core/Config/GUI.lua

Lines changed: 160 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,92 @@ local UnitDBToUnitPrettyName = {
3434
local AnchorPoints = { { ["TOPLEFT"] = "Top Left", ["TOP"] = "Top", ["TOPRIGHT"] = "Top Right", ["LEFT"] = "Left", ["CENTER"] = "Center", ["RIGHT"] = "Right", ["BOTTOMLEFT"] = "Bottom Left", ["BOTTOM"] = "Bottom", ["BOTTOMRIGHT"] = "Bottom Right" }, { "TOPLEFT", "TOP", "TOPRIGHT", "LEFT", "CENTER", "RIGHT", "BOTTOMLEFT", "BOTTOM", "BOTTOMRIGHT", } }
3535
local FrameStrataList = {{ ["BACKGROUND"] = "Background", ["LOW"] = "Low", ["MEDIUM"] = "Medium", ["HIGH"] = "High", ["DIALOG"] = "Dialog", ["FULLSCREEN"] = "Fullscreen", ["FULLSCREEN_DIALOG"] = "Fullscreen Dialog", ["TOOLTIP"] = "Tooltip" }, { "BACKGROUND", "LOW", "MEDIUM", "HIGH", "DIALOG", "FULLSCREEN", "FULLSCREEN_DIALOG", "TOOLTIP" }}
3636

37+
local function GetAuraBaseFilter(auraDB)
38+
return auraDB == "Buffs" and "HELPFUL" or "HARMFUL"
39+
end
40+
41+
local function GetAuraFilterConfig(auraDB)
42+
if not UUF.AURA_FILTERS or type(UUF.AURA_FILTERS[auraDB]) ~= "table" then
43+
return {}
44+
end
45+
return UUF.AURA_FILTERS[auraDB]
46+
end
47+
48+
local function GetAuraFilterToggleOrder(auraDB)
49+
local auraFilterConfig = GetAuraFilterConfig(auraDB)
50+
local baseFilter = GetAuraBaseFilter(auraDB)
51+
local auraFilters = {}
52+
for filterType, filterData in pairs(auraFilterConfig) do
53+
if filterType ~= baseFilter and type(filterData) == "table" then
54+
auraFilters[#auraFilters + 1] = filterType
55+
end
56+
end
57+
table.sort(auraFilters, function(a, b)
58+
local auraFilterA = (auraFilterConfig[a] and auraFilterConfig[a].Title) or a
59+
local auraFilterB = (auraFilterConfig[b] and auraFilterConfig[b].Title) or b
60+
if auraFilterA == auraFilterB then return a < b end
61+
return auraFilterA < auraFilterB
62+
end)
63+
return auraFilters
64+
end
65+
66+
local function ResolveAuraFilterSelectionKey(auraDB, filterString)
67+
local auraFilterConfig = GetAuraFilterConfig(auraDB)
68+
local baseFilter = GetAuraBaseFilter(auraDB)
69+
if type(filterString) ~= "string" then return nil end
70+
local decodedFilterString = filterString:gsub("||", "|")
71+
72+
if decodedFilterString ~= baseFilter and auraFilterConfig[decodedFilterString] then
73+
return decodedFilterString
74+
end
75+
76+
for filterType in decodedFilterString:gmatch("[^|]+") do
77+
if filterType ~= baseFilter then
78+
if auraFilterConfig[filterType] then
79+
return filterType
80+
end
81+
local baseQualifiedFilter = baseFilter .. "|" .. filterType
82+
if auraFilterConfig[baseQualifiedFilter] then
83+
return baseQualifiedFilter
84+
end
85+
end
86+
end
87+
88+
return nil
89+
end
90+
91+
local function ParseAuraFilterSelections(auraDB, filterString)
92+
local selectedFilters = {}
93+
local selectedFilter = ResolveAuraFilterSelectionKey(auraDB, filterString)
94+
if selectedFilter then selectedFilters[selectedFilter] = true end
95+
return selectedFilters
96+
end
97+
98+
local function GetSelectedAuraFilter(selectedFilters, orderedFilters)
99+
for _, filterType in ipairs(orderedFilters) do
100+
if selectedFilters[filterType] then
101+
return filterType
102+
end
103+
end
104+
end
105+
106+
local function SetSelectedAuraFilter(selectedFilters, orderedFilters, selectedFilter)
107+
for _, filterType in ipairs(orderedFilters) do
108+
selectedFilters[filterType] = filterType == selectedFilter and true or nil
109+
end
110+
end
111+
112+
local function BuildAuraFilterString(baseFilter, selectedFilters, orderedFilters)
113+
local selectedFilter = GetSelectedAuraFilter(selectedFilters, orderedFilters)
114+
return selectedFilter or baseFilter
115+
end
116+
117+
local function EncodeAuraFilterStringForStorage(filterString)
118+
if type(filterString) ~= "string" then return "" end
119+
local decodedFilterString = filterString:gsub("||", "|")
120+
return decodedFilterString:gsub("|", "||")
121+
end
122+
37123
local Power = {
38124
[0] = "Mana",
39125
[1] = "Rage",
@@ -2198,48 +2284,84 @@ local function CreateSpecificAuraSettings(containerParent, unit, auraDB)
21982284
Toggle:SetRelativeWidth(0.33)
21992285
AuraContainer:AddChild(Toggle)
22002286

2201-
local OnlyShowPlayerToggle = AG:Create("CheckBox")
2202-
OnlyShowPlayerToggle:SetLabel("Only Show Player "..auraDB)
2203-
OnlyShowPlayerToggle:SetValue(AuraDB.OnlyShowPlayer)
2204-
OnlyShowPlayerToggle:SetCallback("OnValueChanged", function(_, _, value) AuraDB.OnlyShowPlayer = value if unit == "boss" then UUF:UpdateBossFrames() else UUF:UpdateUnitAuras(UUF[unit:upper()], unit, auraDB) end end)
2205-
OnlyShowPlayerToggle:SetRelativeWidth(0.33)
2206-
AuraContainer:AddChild(OnlyShowPlayerToggle)
2207-
2208-
local ShowTypeCheckbox = AG:Create("CheckBox")
2209-
ShowTypeCheckbox:SetLabel(auraDB .. " Type Border")
2210-
ShowTypeCheckbox:SetValue(AuraDB.ShowType)
2211-
ShowTypeCheckbox:SetCallback("OnValueChanged", function(_, _, value) AuraDB.ShowType = value if unit == "boss" then UUF:UpdateBossFrames() else UUF:UpdateUnitAuras(UUF[unit:upper()], unit, auraDB) end end)
2212-
ShowTypeCheckbox:SetRelativeWidth(0.33)
2213-
AuraContainer:AddChild(ShowTypeCheckbox)
2214-
2215-
local FilterDropdown = AG:Create("Dropdown")
2216-
if auraDB == "Buffs" then
2217-
FilterDropdown:SetList({
2218-
["HELPFUL"] = "All",
2219-
["HELPFUL|PLAYER"] = "Player",
2220-
["HELPFUL|RAID"] = "Raid",
2221-
["INCLUDE_NAME_PLATE_ONLY"] = "Nameplate",
2222-
})
2223-
else
2224-
FilterDropdown:SetList({
2225-
["HARMFUL"] = "All",
2226-
["HARMFUL|PLAYER"] = "Player",
2227-
["HARMFUL|RAID"] = "Raid",
2228-
["INCLUDE_NAME_PLATE_ONLY"] = "Nameplate",
2229-
})
2287+
-- local OnlyShowPlayerToggle = AG:Create("CheckBox")
2288+
-- OnlyShowPlayerToggle:SetLabel("Only Show Player "..auraDB)
2289+
-- OnlyShowPlayerToggle:SetValue(AuraDB.OnlyShowPlayer)
2290+
-- OnlyShowPlayerToggle:SetCallback("OnValueChanged", function(_, _, value) AuraDB.OnlyShowPlayer = value if unit == "boss" then UUF:UpdateBossFrames() else UUF:UpdateUnitAuras(UUF[unit:upper()], unit, auraDB) end end)
2291+
-- OnlyShowPlayerToggle:SetRelativeWidth(0.33)
2292+
-- AuraContainer:AddChild(OnlyShowPlayerToggle)
2293+
2294+
-- local ShowTypeCheckbox = AG:Create("CheckBox")
2295+
-- ShowTypeCheckbox:SetLabel(auraDB .. " Type Border")
2296+
-- ShowTypeCheckbox:SetValue(AuraDB.ShowType)
2297+
-- ShowTypeCheckbox:SetCallback("OnValueChanged", function(_, _, value) AuraDB.ShowType = value if unit == "boss" then UUF:UpdateBossFrames() else UUF:UpdateUnitAuras(UUF[unit:upper()], unit, auraDB) end end)
2298+
-- ShowTypeCheckbox:SetRelativeWidth(0.33)
2299+
-- AuraContainer:AddChild(ShowTypeCheckbox)
2300+
2301+
local auraBaseFilter = GetAuraBaseFilter(auraDB)
2302+
local auraFilterConfig = GetAuraFilterConfig(auraDB)
2303+
local auraFilterOrder = GetAuraFilterToggleOrder(auraDB)
2304+
local auraFilterSelections = ParseAuraFilterSelections(auraDB, AuraDB.Filter or auraBaseFilter)
2305+
local auraFilterToggles = {}
2306+
local isUpdatingAuraFilterToggles = false
2307+
2308+
local function UpdateAuraFilter()
2309+
local builtFilter = BuildAuraFilterString(auraBaseFilter, auraFilterSelections, auraFilterOrder)
2310+
AuraDB.Filter = EncodeAuraFilterStringForStorage(builtFilter)
2311+
if unit == "boss" then
2312+
UUF:UpdateBossFrames()
2313+
else
2314+
UUF:UpdateUnitAuras(UUF[unit:upper()], unit, auraDB)
2315+
end
22302316
end
2231-
FilterDropdown:SetLabel("Aura Filter")
2232-
FilterDropdown:SetValue(AuraDB.Filter or (auraDB == "Buffs" and "HELPFUL" or "HARMFUL"))
2233-
FilterDropdown:SetRelativeWidth(1.0)
2234-
FilterDropdown:SetCallback("OnValueChanged", function(_, _, value)
2235-
AuraDB.Filter = value
2317+
2318+
local function RefreshAuraFilterToggles()
2319+
local selectedFilter = GetSelectedAuraFilter(auraFilterSelections, auraFilterOrder)
2320+
isUpdatingAuraFilterToggles = true
2321+
for _, filterType in ipairs(auraFilterOrder) do
2322+
local filterToggle = auraFilterToggles[filterType]
2323+
if filterToggle then
2324+
filterToggle:SetValue(auraFilterSelections[filterType] or false)
2325+
filterToggle:SetDisabled(selectedFilter and selectedFilter ~= filterType)
2326+
end
2327+
end
2328+
isUpdatingAuraFilterToggles = false
2329+
end
2330+
2331+
local normalizedAuraFilter = EncodeAuraFilterStringForStorage(BuildAuraFilterString(auraBaseFilter, auraFilterSelections, auraFilterOrder))
2332+
if AuraDB.Filter ~= normalizedAuraFilter then
2333+
AuraDB.Filter = normalizedAuraFilter
22362334
if unit == "boss" then
22372335
UUF:UpdateBossFrames()
22382336
else
22392337
UUF:UpdateUnitAuras(UUF[unit:upper()], unit, auraDB)
22402338
end
2241-
end)
2242-
AuraContainer:AddChild(FilterDropdown)
2339+
end
2340+
2341+
GUIWidgets.CreateHeader(AuraContainer, "Aura Filters")
2342+
2343+
for _, auraFilter in ipairs(auraFilterOrder) do
2344+
local filterType = auraFilter
2345+
local filterData = auraFilterConfig[filterType]
2346+
local FilterToggle = AG:Create("CheckBox")
2347+
FilterToggle:SetLabel(filterData.Title or filterType)
2348+
FilterToggle:SetDescription(filterData.Desc or "")
2349+
FilterToggle:SetValue(auraFilterSelections[filterType] or false)
2350+
FilterToggle:SetRelativeWidth(1.0)
2351+
FilterToggle:SetCallback("OnValueChanged", function(_, _, value)
2352+
if isUpdatingAuraFilterToggles then return end
2353+
if value then
2354+
SetSelectedAuraFilter(auraFilterSelections, auraFilterOrder, filterType)
2355+
else
2356+
auraFilterSelections[filterType] = nil
2357+
end
2358+
RefreshAuraFilterToggles()
2359+
UpdateAuraFilter()
2360+
end)
2361+
auraFilterToggles[filterType] = FilterToggle
2362+
AuraContainer:AddChild(FilterToggle)
2363+
end
2364+
RefreshAuraFilterToggles()
22432365

22442366
local LayoutContainer = GUIWidgets.CreateInlineGroup(containerParent, "Layout & Positioning")
22452367

@@ -2380,6 +2502,7 @@ local function CreateSpecificAuraSettings(containerParent, unit, auraDB)
23802502
GUIWidgets.DeepDisable(AuraContainer, false, Toggle)
23812503
GUIWidgets.DeepDisable(LayoutContainer, false, Toggle)
23822504
GUIWidgets.DeepDisable(CountContainer, false, Toggle)
2505+
RefreshAuraFilterToggles()
23832506
else
23842507
GUIWidgets.DeepDisable(AuraContainer, true, Toggle)
23852508
GUIWidgets.DeepDisable(LayoutContainer, true, Toggle)
@@ -3181,4 +3304,4 @@ function UUFG:CloseUUFGUI()
31813304
if isGUIOpen and Container then
31823305
Container:Hide()
31833306
end
3184-
end
3307+
end

Core/Globals.lua

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,3 +417,23 @@ function UUF:UpdateHealthBarLayout(unitFrame, unit)
417417
unitFrame.Health:SetPoint("TOPLEFT", unitFrame.Container, "TOPLEFT", 1, topOffset)
418418
unitFrame.Health:SetPoint("BOTTOMRIGHT", unitFrame.Container, "BOTTOMRIGHT", -1, bottomOffset)
419419
end
420+
421+
422+
UUF.AURA_FILTERS = {
423+
Buffs = {
424+
["HELPFUL"] = {Title = "Helpful", Desc = "Buffs"},
425+
["HELPFUL|PLAYER"] = {Title = "Player", Desc = "Buffs applied by the Player"},
426+
["HELPFUL|RAID"] = {Title = "Raid", Desc = "|cFF40FF40Helpful|r: Buffs filtered by the Player's Class."},
427+
["EXTERNAL_DEFENSIVE"] = {Title = "External Defensives", Desc = "Externals."},
428+
["BIG_DEFENSIVE"] = {Title = "Big Defensives", Desc = "Big Defensive Buffs."},
429+
["IMPORTANT"] = {Title = "Important", Desc = "Important Buffs. Flagged by |cFF00B0F7Blizzard|r."},
430+
},
431+
Debuffs = {
432+
["HARMFUL"] = {Title = "Harmful", Desc = "Debuffs"},
433+
["HARMFUL|PLAYER"] = {Title = "Player", Desc = "Debuffs applied by the Player"},
434+
["HARMFUL|RAID"] = {Title = "Raid", Desc = "|cFFFF4040Harmful|r: Debuffs that show up on Raid Frames."},
435+
["CROWD_CONTROL"] = {Title = "Crowd Control", Desc = "Crowd Control Effects."},
436+
["RAID_PLAYER_DISPELLABLE"] = {Title = "Player Dispellable", Desc = "Auras that the Player can dispel."},
437+
["IMPORTANT"] = {Title = "Important", Desc = "Important Debuffs. Flagged by |cFF00B0F7Blizzard|r."},
438+
}
439+
}

Elements/Auras.lua

Lines changed: 56 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,41 @@ local function ApplyAuraDuration(icon, unit)
4040
end)
4141
end
4242

43+
local function DecodeAuraFilterString(filterString)
44+
if type(filterString) ~= "string" then return nil end
45+
return filterString:gsub("||", "|")
46+
end
47+
48+
local function EncodeAuraFilterStringForStorage(filterString)
49+
if type(filterString) ~= "string" then return "" end
50+
local decodedFilterString = DecodeAuraFilterString(filterString) or ""
51+
return decodedFilterString:gsub("|", "||")
52+
end
53+
54+
local function NormalizeAuraFilter(filterString, baseFilter, auraFilterConfig)
55+
local decodedFilterString = DecodeAuraFilterString(filterString)
56+
if type(decodedFilterString) ~= "string" then return baseFilter end
57+
58+
if auraFilterConfig and decodedFilterString ~= baseFilter and auraFilterConfig[decodedFilterString] then
59+
return decodedFilterString
60+
end
61+
62+
for filterType in decodedFilterString:gmatch("[^|]+") do
63+
if filterType ~= baseFilter and auraFilterConfig then
64+
if auraFilterConfig[filterType] then
65+
return filterType
66+
end
67+
68+
local baseQualifiedFilter = baseFilter .. "|" .. filterType
69+
if auraFilterConfig[baseQualifiedFilter] then
70+
return baseQualifiedFilter
71+
end
72+
end
73+
end
74+
75+
return baseFilter
76+
end
77+
4378
local function StyleAuras(_, button, unit, auraType)
4479
if not button or not unit or not auraType then return end
4580
local GeneralDB = UUF.db.profile.General
@@ -102,9 +137,6 @@ local function StyleAuras(_, button, unit, auraType)
102137
auraOverlay:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -1, 1)
103138
auraOverlay:SetTexCoord(0, 1, 0, 1)
104139
end
105-
106-
-- local auraInstanceID = button.auraInstanceID
107-
-- local hasExpiration = C_UnitAuras.DoesAuraHaveExpirationTime(unit, auraInstanceID)
108140
end
109141

110142
local function RestyleAuras(_, button, unit, auraType)
@@ -175,13 +207,15 @@ local function CreateUnitBuffs(unitFrame, unit)
175207
unitFrame.BuffContainer.onlyShowPlayer = BuffsDB.OnlyShowPlayer
176208
unitFrame.BuffContainer["growthX"] = BuffsDB.GrowthDirection
177209
unitFrame.BuffContainer["growthY"] = BuffsDB.WrapDirection
178-
unitFrame.BuffContainer.filter = BuffsDB.Filter or "HELPFUL"
210+
local buffFilter = NormalizeAuraFilter(BuffsDB.Filter, "HELPFUL", UUF.AURA_FILTERS and UUF.AURA_FILTERS.Buffs)
211+
BuffsDB.Filter = EncodeAuraFilterStringForStorage(buffFilter)
212+
unitFrame.BuffContainer.filter = buffFilter
179213
unitFrame.BuffContainer.PostCreateButton = function(_, button) StyleAuras(_, button, unit, "HELPFUL") end
180214
unitFrame.BuffContainer.anchoredButtons = 0
181215
unitFrame.BuffContainer.createdButtons = 0
182216
unitFrame.BuffContainer.tooltipAnchor = "ANCHOR_CURSOR"
183-
unitFrame.BuffContainer.showType = BuffsDB.ShowType
184-
unitFrame.BuffContainer.showBuffType = BuffsDB.ShowType
217+
unitFrame.BuffContainer.showType = false
218+
unitFrame.BuffContainer.showBuffType = false
185219
unitFrame.BuffContainer.dispelColorCurve = C_CurveUtil.CreateColorCurve()
186220
unitFrame.BuffContainer.dispelColorCurve:SetType(Enum.LuaCurveType.Step)
187221
for _, dispelIndex in next, oUF.Enum.DispelType do
@@ -216,13 +250,15 @@ local function CreateUnitDebuffs(unitFrame, unit)
216250
unitFrame.DebuffContainer.onlyShowPlayer = DebuffsDB.OnlyShowPlayer
217251
unitFrame.DebuffContainer["growthX"] = DebuffsDB.GrowthDirection
218252
unitFrame.DebuffContainer["growthY"] = DebuffsDB.WrapDirection
219-
unitFrame.DebuffContainer.filter = DebuffsDB.Filter or "HARMFUL"
253+
local debuffFilter = NormalizeAuraFilter(DebuffsDB.Filter, "HARMFUL", UUF.AURA_FILTERS and UUF.AURA_FILTERS.Debuffs)
254+
DebuffsDB.Filter = EncodeAuraFilterStringForStorage(debuffFilter)
255+
unitFrame.DebuffContainer.filter = debuffFilter
220256
unitFrame.DebuffContainer.anchoredButtons = 0
221257
unitFrame.DebuffContainer.createdButtons = 0
222258
unitFrame.DebuffContainer.PostCreateButton = function(_, button) StyleAuras(_, button, unit, "HARMFUL") end
223259
unitFrame.DebuffContainer.tooltipAnchor = "ANCHOR_CURSOR"
224-
unitFrame.DebuffContainer.showType = DebuffsDB.ShowType
225-
unitFrame.DebuffContainer.showDebuffType = DebuffsDB.ShowType
260+
unitFrame.DebuffContainer.showType = false
261+
unitFrame.DebuffContainer.showDebuffType = false
226262
unitFrame.DebuffContainer.dispelColorCurve = C_CurveUtil.CreateColorCurve()
227263
unitFrame.DebuffContainer.dispelColorCurve:SetType(Enum.LuaCurveType.Step)
228264
for _, dispelIndex in next, oUF.Enum.DispelType do
@@ -265,12 +301,14 @@ function UUF:UpdateUnitAuras(unitFrame, unit)
265301
unitFrame.BuffContainer.onlyShowPlayer = BuffsDB.OnlyShowPlayer
266302
unitFrame.BuffContainer["growthX"] = BuffsDB.GrowthDirection
267303
unitFrame.BuffContainer["growthY"] = BuffsDB.WrapDirection
268-
unitFrame.BuffContainer.filter = BuffsDB.Filter or "HELPFUL"
304+
local buffFilter = NormalizeAuraFilter(BuffsDB.Filter, "HELPFUL", UUF.AURA_FILTERS and UUF.AURA_FILTERS.Buffs)
305+
BuffsDB.Filter = EncodeAuraFilterStringForStorage(buffFilter)
306+
unitFrame.BuffContainer.filter = buffFilter
269307
unitFrame.BuffContainer.createdButtons = unitFrame.Buffs.createdButtons or 0
270308
unitFrame.BuffContainer.anchoredButtons = unitFrame.Buffs.anchoredButtons or 0
271309
unitFrame.BuffContainer.PostCreateButton = function(_, button) StyleAuras(_, button, unit, "HELPFUL") end
272-
unitFrame.BuffContainer.showType = BuffsDB.ShowType
273-
unitFrame.BuffContainer.showBuffType = BuffsDB.ShowType
310+
unitFrame.BuffContainer.showType = false
311+
unitFrame.BuffContainer.showBuffType = false
274312
unitFrame.BuffContainer:Show()
275313
else
276314
unitFrame.BuffContainer:Hide()
@@ -294,12 +332,14 @@ function UUF:UpdateUnitAuras(unitFrame, unit)
294332
unitFrame.DebuffContainer.onlyShowPlayer = DebuffsDB.OnlyShowPlayer
295333
unitFrame.DebuffContainer["growthX"] = DebuffsDB.GrowthDirection
296334
unitFrame.DebuffContainer["growthY"] = DebuffsDB.WrapDirection
297-
unitFrame.DebuffContainer.filter = DebuffsDB.Filter or "HARMFUL"
335+
local debuffFilter = NormalizeAuraFilter(DebuffsDB.Filter, "HARMFUL", UUF.AURA_FILTERS and UUF.AURA_FILTERS.Debuffs)
336+
DebuffsDB.Filter = EncodeAuraFilterStringForStorage(debuffFilter)
337+
unitFrame.DebuffContainer.filter = debuffFilter
298338
unitFrame.DebuffContainer.createdButtons = unitFrame.Debuffs.createdButtons or 0
299339
unitFrame.DebuffContainer.anchoredButtons = unitFrame.Debuffs.anchoredButtons or 0
300340
unitFrame.DebuffContainer.PostCreateButton = function(_, button) StyleAuras(_, button, unit, "HARMFUL") end
301-
unitFrame.DebuffContainer.showType = DebuffsDB.ShowType
302-
unitFrame.DebuffContainer.showDebuffType = DebuffsDB.ShowType
341+
unitFrame.DebuffContainer.showType = false
342+
unitFrame.DebuffContainer.showDebuffType = false
303343
unitFrame.DebuffContainer:Show()
304344
else
305345
unitFrame.DebuffContainer:Hide()
@@ -532,4 +572,4 @@ function UUF:CreateTestAuras(unitFrame, unit)
532572
end
533573
end
534574
end
535-
end
575+
end

0 commit comments

Comments
 (0)