-- auras.lua -- 2019 Aleksi Blinnikka local _, addon = ...; local CombatLogGetCurrentEventInfo = CombatLogGetCurrentEventInfo; local guids = addon.FrameGuids; local watchedAuras = { --[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 -- Tank defensives [6940] = {1, "tankcd"}, -- Blessing of Sacrifice [33206] = {1, "tankcd"}, -- Pain Suppression [47788] = {1, "tankcd"}, -- Guardian Spirit [102342] = {1, "tankcd"}, -- Ironbark [116849] = {1, "tankcd"}, -- Life Cocoon -- Uldir [265264] = {2, "alert"}, -- Void Lash (Zek'voz) -- Battle of Dazar'alor [285213] = {1, "alert"}, -- Caress of Death (Rastakhan) [288415] = {1, "alert"}, -- Caress of Death in Death realm (Rastakhan) [285195] = {8, "stacks"}, -- Deathly Withering (Rastakhan) [286646] = {1, "heal"}, -- Gigavolt Charge (Mekkatorque) [287891] = {1, "stacks"}, -- Sheep Shrapnel (Mekkatorque) [287993] = {1, "stacks"}, -- Chilling Touch (Jaina) }; local auraEvents = {}; auraEvents.SPELL_AURA_APPLIED = function(frame, id, _, _, _, amount) if (amount == nil and watchedAuras[id][1] == 1) or (amount ~= nil and amount >= watchedAuras[id][1]) then amount = amount or 1; frame[watchedAuras[id][2]][id] = amount; end end auraEvents.SPELL_AURA_APPLIED_DOSE = auraEvents.SPELL_AURA_APPLIED; auraEvents.SPELL_AURA_REFRESH = auraEvents.SPELL_AURA_APPLIED; auraEvents.SPELL_AURA_REMOVED = function(frame, id, _, _, _, amount) if amount == nil or amount == 0 then frame[watchedAuras[id][2]][id] = nil; end end auraEvents.SPELL_AURA_REMOVED_DOSE = auraEvents.SPELL_AURA_REMOVED; auraEvents.SPELL_AURA_BROKEN = function(frame, id) return auraEvents.SPELL_AURA_REMOVED(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] and guids[dest] then auraEvents[event](guids[dest], spellid, ...); 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");