73 lines
1.9 KiB
Lua
73 lines
1.9 KiB
Lua
aura_env.trackedSpells = {
|
|
20271, -- Judgement
|
|
26573, -- Consecration
|
|
209202, -- Eye of Tyr
|
|
213652, -- Hand of the Protector
|
|
31935, -- Avenger's Shield
|
|
53600, -- Shield of the Righteous
|
|
1044, -- Hand of Freedom
|
|
155145, -- Arcane Torrent
|
|
853, -- Hammer of Justice
|
|
6940, -- Hand of Sacrifice
|
|
31850, -- Ardent Defender
|
|
86659, -- Guardian of Ancient Kings
|
|
204018, -- Blessing of Spellwarding
|
|
--
|
|
108416, -- Dark Pact
|
|
196447, -- Channel Demonfire
|
|
104773, -- Unending Resolve
|
|
196586, -- Dimensional Rift
|
|
}
|
|
local iconDisplayDuration = 0.4
|
|
local gcdDuration = 1.5
|
|
|
|
aura_env.cache = {}
|
|
for k, spellId in pairs(aura_env.trackedSpells) do
|
|
aura_env.cache[spellId] = {
|
|
ready = true,
|
|
hasCharges = false,
|
|
}
|
|
if GetSpellCharges(spellId) then
|
|
aura_env.cache[spellId].hasCharges = true
|
|
aura_env.cache[spellId].charges = select(1, GetSpellCharges(spellId))
|
|
end
|
|
end
|
|
|
|
aura_env.processEvent = function(allstates)
|
|
for k, spellId in pairs(aura_env.trackedSpells) do
|
|
-- Handle spells with charges
|
|
local isReady
|
|
if aura_env.cache[spellId].hasCharges then
|
|
local charges = select(1, GetSpellCharges(spellId))
|
|
if charges > aura_env.cache[spellId].charges then
|
|
isReady = true
|
|
aura_env.cache[spellId].charges = charges
|
|
else
|
|
isReady = false
|
|
aura_env.cache[spellId].charges = charges
|
|
end
|
|
else
|
|
isReady = select(2, GetSpellCooldown(spellId)) < gcdDuration
|
|
end
|
|
|
|
if not aura_env.cache[spellId].ready and isReady then
|
|
local icon = select(3, GetSpellInfo(spellId))
|
|
allstates[spellId] = {
|
|
show = true,
|
|
changed = true,
|
|
index = GetTime(),
|
|
resort = true,
|
|
|
|
icon = icon,
|
|
|
|
progressType = "timed",
|
|
expirationTime = GetTime() + iconDisplayDuration,
|
|
duration = iconDisplayDuration,
|
|
autoHide = true,
|
|
}
|
|
end
|
|
|
|
aura_env.cache[spellId].ready = isReady
|
|
end
|
|
end
|