+-- auras.lua
+-- 2019 Aleksi Blinnikka
+local _, addon = ...;
+local CombatLogGetCurrentEventInfo = CombatLogGetCurrentEventInfo;
+
+local watchedAuras = {
+ -- Battle of Dazar'alor
+ --[286988] = duration, -- Searing Embers
+ [257908] = {bar=false}, -- Oiled Blade
+ [268391] = {bar=false}, -- Mental Assault
+ [272571] = {bar=false}, -- Choking Waters
+ [268008] = {bar=false}, -- Snake Charm
+ [260741] = {bar=false}, -- Jagged Nettles
+ [280605] = {bar=false}, -- Brain Freeze
+ [268797] = {bar=false}, -- Transmute to Goo
+ [265889] = {bar=false}, -- Torch Strike
+ [266209] = {bar=false}, -- Wicked Frenzy
+ [258323] = {bar=false}, -- Infected Wound
+ [262513] = {bar=false}, -- Azerite Heartseeker
+ [53563] = "TOPRIGHT", -- Beacon of Light
+ [156910] = "TOPRIGHT", -- Beacon of Faith
+ [200025] = "TOPRIGHT", -- Beacon of Virtue
+ [33763] = "TOPLEFT", -- Lifebloom
+ [774] = "TR1", -- Rejuvenation
+ [102352] = "TR2", -- Cenarion Ward (102351 is the pre-buff)
+ [207386] = "TR3", -- Spring Blossoms (207385 is the talent)
+ [155777] = "TR3", -- Germination (either this or Spring Blossoms taken)
+ [8936] = "TR4", -- Regrowth
+ [200389] = "TR5", -- Cultivation
+};
+
+local auraEvents = {};
+auraEvents.SPELL_AURA_APPLIED = function(frame, id, _, _, _, amount)
+ if UnitDebuff(frame.unit, 1, "RAID") ~= nil then
+ -- update dispel indicator
+ frame:ColorOverlay("low", 1, 0.5, 0, 0.5);
+ end
+ if auras[id] then
+ if amount > 0 then
+ frame.auraStarts[id] = GetTime();
+ return updateApplication(frame, id, amount);
+ else
+ return updateRemoval(frame, id);
+ end
+ end
+end
+auraEvents.SPELL_AURA_APPLIED_DOSE = auraEvents.SPELL_AURA_APPLIED;
+auraEvents.SPELL_AURA_REFRESH = auraEvents.SPELL_AURA_APPLIED;
+auraEvents.SPELL_AURA_REMOVED = auraEvents.SPELL_AURA_APPLIED;
+auraEvents.SPELL_AURA_REMOVED_DOSE = auraEvents.SPELL_AURA_APPLIED;
+auraEvents.SPELL_AURA_BROKEN = function(frame, id)
+ return auraEvents.SPELL_AURA_APPLIED(frame, id, nil, nil, nil, 0);
+end
+auraEvents.SPELL_AURA_BROKEN_SPELL = auraEvents.SPELL_AURA_BROKEN;
+
+local counter = 0;
+local function clog(ts, event, _, _, _, _, _, dest, _, flags, _, spellid, ...)
+ if auraEvents[event] and watchedAuras[spellid] then
+ counter = counter + 1;
+ end
+end
+addon.Events.Clog = clog;
+
+local frame = CreateFrame("Frame");
+frame:Hide();
+frame:SetScript("OnEvent", function()
+ frame:UnregisterAllEvents();
+ frame:SetScript("OnEvent", function()
+ return clog(CombatLogGetCurrentEventInfo());
+ end);
+ frame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED");
+end);
+frame:RegisterEvent("PLAYER_LOGIN");