--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