150 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			150 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
--DISPLAY
 | 
						|
function()
 | 
						|
    if aura_env.statee then
 | 
						|
        return aura_env.statee.string
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
--COMBAT_LOG_EVENT_UNFILTERED GROUP_ROSTER_UPDATE COOLDOWN_TICKER PLAYER_REGEN_DISABLED PLAYER_REGEN_ENABLED COMBAT_TICK
 | 
						|
function(allstates, e, ...)
 | 
						|
    --if not aura_env.ticker then
 | 
						|
    --    aura_env.ticker = C_Timer.NewTicker(0.05, function() WeakAuras.ScanEvents("COOLDOWN_TICKER") end)
 | 
						|
    --end
 | 
						|
    --if e == "COOLDOWN_TICKER" then
 | 
						|
    --    if allstates[1] then
 | 
						|
    --        if allstates[1].time + 2 < GetTime() then
 | 
						|
    --            allstates[1].show = false
 | 
						|
    --            allstates[1].changed = true
 | 
						|
    --            table.remove(allstates, 1)
 | 
						|
    --            WeakAuras.ScanEvents("COOLDOWN_TICKER")
 | 
						|
    --            return true
 | 
						|
    --        end
 | 
						|
    --    end
 | 
						|
    if e == "COMBAT_LOG_EVENT_UNFILTERED" then
 | 
						|
        local se = select(2, ...)
 | 
						|
        if not allstates[1] or not allstates[1].string then
 | 
						|
            allstates[1] = {
 | 
						|
                string = "[" .. aura_env.formatTime(aura_env.combatTime) .. "]",
 | 
						|
                show = true,
 | 
						|
                changed = true,
 | 
						|
            }
 | 
						|
        end
 | 
						|
        if se == "SPELL_CAST_SUCCESS" then
 | 
						|
            local caster = select(5, ...) or 0
 | 
						|
            if aura_env.raid[caster] then
 | 
						|
                local spell = select(13, ...)
 | 
						|
                if aura_env.spells[spell] then
 | 
						|
                    allstates[#allstates + 1] = {
 | 
						|
                        caster = caster,
 | 
						|
                        spell = spell,
 | 
						|
                        string = "[" .. aura_env.formatTime(aura_env.combatTime) .. "] " .. caster .. " - " .. spell,
 | 
						|
                        class = aura_env.raid[caster],
 | 
						|
                        time = GetTime(),
 | 
						|
                        show = true,
 | 
						|
                        changed = true,
 | 
						|
                    }
 | 
						|
                    if #allstates > 8 then
 | 
						|
                        allstates[2].show = false
 | 
						|
                        allstates[2].changed = true
 | 
						|
                        table.remove(allstates, 2)
 | 
						|
                    end
 | 
						|
                    return true
 | 
						|
                end
 | 
						|
            end
 | 
						|
        end
 | 
						|
    elseif e == "GROUP_ROSTER_UPDATE" then
 | 
						|
        local prefix = "party"
 | 
						|
        if IsInRaid() == true then
 | 
						|
            prefix = "raid"
 | 
						|
        end
 | 
						|
        aura_env.raid = {}
 | 
						|
        aura_env.raid[UnitName("player")] = select(3, UnitClass("player"))
 | 
						|
        for i = 1, GetNumGroupMembers() do
 | 
						|
            if UnitName(prefix .. i) and not aura_env.raid[UnitName(prefix .. i)] then
 | 
						|
                aura_env.raid[UnitName(prefix .. i)] = select(3, UnitClass(prefix .. i))
 | 
						|
                print("YEET", UnitName(prefix .. i), select(3, UnitClass(prefix .. i)))
 | 
						|
            end
 | 
						|
        end
 | 
						|
    elseif e == "COMBAT_TICK" then
 | 
						|
        aura_env.combatTime = aura_env.combatTime + 1
 | 
						|
        if allstates[1] then
 | 
						|
            allstates[1].string = "[" .. aura_env.formatTime(aura_env.combatTime) .. "]"
 | 
						|
            allstates[1].changed = true
 | 
						|
            allstates[1].show = true
 | 
						|
        end
 | 
						|
    elseif e == "PLAYER_REGEN_DISABLED" then
 | 
						|
        aura_env.combatTime = 0
 | 
						|
        for i = 2, 10 do
 | 
						|
            if allstates[i] then
 | 
						|
                allstates[i].show = false
 | 
						|
                allstates[i].changed = true
 | 
						|
            end
 | 
						|
        end
 | 
						|
        if not aura_env.combatTicker then
 | 
						|
            aura_env.combatTicker = C_Timer.NewTicker(1, function() WeakAuras.ScanEvents("COMBAT_TICK") end)
 | 
						|
        end
 | 
						|
    elseif e == "PLAYER_REGEN_ENABLED" then
 | 
						|
        if aura_env.combatTicker then
 | 
						|
            aura_env.combatTicker:Cancel()
 | 
						|
            aura_env.combatTicker = nil
 | 
						|
        end
 | 
						|
    end
 | 
						|
    --DevTools_Dump(aura_env.raid)
 | 
						|
    return true
 | 
						|
end
 | 
						|
 | 
						|
--INIT
 | 
						|
aura_env.raid = {}
 | 
						|
aura_env.combatTime = 0
 | 
						|
aura_env.spells = {
 | 
						|
    ["Divine Shield"] = true,
 | 
						|
    ["Blessing of Spellwarding"] = true,
 | 
						|
    ["Blessing of Protection"] = true,
 | 
						|
    ["Blessing of Sacrifice"] = true,
 | 
						|
    ["Avenging Wrath"] = true,
 | 
						|
    ["Aura Mastery"] = true,
 | 
						|
    ["Guardian Spirit"] = true,
 | 
						|
    ["Divine Hymn"] = true,
 | 
						|
    ["Raise Ally"] = true,
 | 
						|
    ["Tranquility"] = true,
 | 
						|
    ["Stampeding Roar"] = true,
 | 
						|
    ["Rebirth"] = true,
 | 
						|
    ["Ice Block"] = true,
 | 
						|
    ["Deterrence"] = true,
 | 
						|
    ["Survival Instincts"] = true,
 | 
						|
    ["Anti-Magic Shell"] = true,
 | 
						|
    ["Vampiric Blood"] = true,
 | 
						|
    ["Revival"] = true,
 | 
						|
    ["Life Cocoon"] = true,
 | 
						|
    ["Diffuse Magic"] = true,
 | 
						|
    ["Lay on Hands"] = true,
 | 
						|
    ["Dispersion"] = true,
 | 
						|
    ["Evasion"] = true,
 | 
						|
    ["Cloak of Shadows"] = true,
 | 
						|
    ["Bloodlust"] = true,
 | 
						|
    ["Healing Tide Totem"] = true,
 | 
						|
    ["Soulstone"] = true,
 | 
						|
    ["Rallying Cry"] = true,
 | 
						|
    ["Power Word: Barrier"] = true,
 | 
						|
    ["Spirit Link Totem"] = true,
 | 
						|
    ["Wind Rush Totem"] = true,
 | 
						|
    ["Ancestral Guidance"] = true,
 | 
						|
    --["Hand of the Protector"] = true,
 | 
						|
    --["Healing Rain"] = true,
 | 
						|
    --["Shimmer"] = true,
 | 
						|
    --["Death and Decay"] = true,
 | 
						|
}
 | 
						|
aura_env.formatTime = function(time)
 | 
						|
    local res, m, s = time, 0, 0
 | 
						|
    while res >= 60 do
 | 
						|
        m = m + 1
 | 
						|
        res = res - 60
 | 
						|
    end
 | 
						|
    s = res
 | 
						|
    if s < 10 then
 | 
						|
        s = string.format("0%d", s)
 | 
						|
    end
 | 
						|
    if type(s) ~= "string" then tostring(s) end
 | 
						|
    return string.format("%d:%s", m, s)
 | 
						|
end
 |