Files
wow-weakauras/Complete Projects/Legion/RaidCDs.lua
2024-08-24 22:43:07 +02:00

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