--COMBAT_LOG_EVENT_UNFILTERED PLAYER_REGEN_DISABLED PLAYER_REGEN_ENABLED UPDATE_DCPS TICK_TIMER
function(e, ...)
    if e == "COMBAT_LOG_EVENT_UNFILTERED" then
        local se = select(2, ...)
        if se == "SPELL_HEAL" then
            local source = select(5, ...)
            if source == UnitName("player") then
                local time, spell = GetTime(), select(13, ...)
                if spell == "Judgment of Light" then
                    aura_env.htable[#aura_env.htable + 1] = time
                    return true
                end
            end
        end
    elseif e == "PLAYER_REGEN_DISABLED" then
        aura_env.htable = {}
        aura_env.combatTimer = 0
    if not aura_env.ticker then print("No ticker found, starting new one"); aura_env.ticker = C_Timer.NewTicker(aura_env.interval, function() WeakAuras.ScanEvents("UPDATE_DCPS") end) end
elseif e == "PLAYER_REGEN_ENABLED" then
    if aura_env.ticker then print("Ticker found, killing it"); aura_env.ticker:Cancel(); aura_env.ticker = nil end
elseif e == "UPDATE_DCPS" then
    aura_env.tempcount = aura_env.tempcount + 1
    if aura_env.tempcount >= 1 / aura_env.interval then
        aura_env.tempcount = 0
        aura_env.combatTimer = aura_env.combatTimer + 1
    end
    return true
end
end

--DISPLAY
function()
    local dc = 0
    local timeinterval = 10
    for i = #aura_env.htable, 1, -1 do
        if aura_env.htable[i] > GetTime() - timeinterval then
            dc = dc + 1
        else
            break
        end
    end
    return string.format("%.1f\n%.1f", dc / timeinterval, #aura_env.htable / aura_env.combatTimer)
end

--INIT
if not aura_env.combatTimer then aura_env.combatTimer = 0 end
if not aura_env.htable then aura_env.htable = {} end
if not aura_env.interval then aura_env.interval = 0.1 end
if not aura_env.tempcount then aura_env.tempcount = 0 end
if WeakAuras.IsOptionsOpen() and aura_env.ticker then
    aura_env.ticker:Cancel()
end
