Code:
function WA_Uberaura_Trigger(event, time, subevent, ...)
if not WA_Combat_Fader then
aura_env.spellID = select(7,GetSpellInfo(aura_env.spellName)) or aura_env.spellID or select(7,GetSpellInfo(aura_env.buffName))
--Usable check to see if weakaura even shows up
if aura_env.spellID then
aura_env.haveSpell = IsPlayerSpell(aura_env.spellID) or select(7,GetSpellInfo(aura_env.spellName)) or nil
if not aura_env.haveSpell then
aura_env.onlyAura = aura_env.onlyAura or AuraUtil.FindAuraByName(aura_env.spellName, "target", "PLAYER|HARMFUL") or AuraUtil.FindAuraByName(aura_env.spellName, "player")
end
end
if aura_env.haveSpell or aura_env.onlyAura then
aura_env.trigger = true
aura_env.formMatch = true
aura_env.static = false
aura_env.icon = nil
--Form check
if aura_env.requireForm then
aura_env.formIndex = GetShapeshiftForm()
if aura_env.formIndex and aura_env.formIndex >= 0 and aura_env.formIndex <= 10 then
if aura_env.formIndex and aura_env.formIndex == 5 then
aura_env.formName = "Tree of Life Form"
elseif aura_env.formIndex and aura_env.formIndex >= 1 then
aura_env.formName = select(2,GetShapeshiftFormInfo(aura_env.formIndex)) or "Humanoid Form"
if not aura_env.formName then
aura_env.formName = "Tree of Life Form"
end
elseif aura_env.formIndex and aura_env.formIndex == 0 then
aura_env.formName = "Humanoid Form"
end
aura_env.formMatch = false
for i=1,#aura_env.formRequired do
if aura_env.formRequired[i] == aura_env.formName then
aura_env.formMatch = true
end
end
else
aura_env.formMatch = true
end
end
if aura_env.formMatch then
--Usable check for color function
if select(7,GetSpellInfo(aura_env.spellName)) then
aura_env.usable, aura_env.noMana = IsUsableSpell(aura_env.spellName)
elseif select(7,GetSpellInfo(aura_env.buffName)) then
aura_env.usable, aura_env.noMana = IsUsableSpell(aura_env.buffName)
end
aura_env.charges, aura_env.maxCharges, aura_env.start,aura_env.duration = GetSpellCharges(aura_env.spellName)
if aura_env.charges and aura_env.maxCharges >=2 then
elseif GetSpellCooldown(aura_env.spellName) then
aura_env.start,aura_env.duration, _ = GetSpellCooldown(aura_env.spellName)
elseif aura_env.buffName and GetSpellCooldown(aura_env.buffName) then
aura_env.start,aura_env.duration, _ = GetSpellCooldown(aura_env.buffName)
elseif GetSpellCooldown(aura_env.spellID) then
aura_env.start,aura_env.duration, _ = GetSpellCooldown(aura_env.spellID)
end
if aura_env.trackAura then
_,aura_env.icon,aura_env.count,_,aura_env.durationAura,aura_env.expirationTime = AuraUtil.FindAuraByName(aura_env.spellName, "player")
if not aura_env.count and AuraUtil.FindAuraByName(aura_env.spellName, "player", "PLAYER|HARMFUL") then
_,aura_env.icon,aura_env.count,_,aura_env.durationAura,aura_env.expirationTime = AuraUtil.FindAuraByName(aura_env.spellName, "player", "PLAYER|HARMFUL")
elseif not aura_env.count and aura_env.buffName and AuraUtil.FindAuraByName(aura_env.buffName, "target", "PLAYER|HARMFUL") then
_,aura_env.icon,aura_env.count,_,aura_env.durationAura,aura_env.expirationTime = AuraUtil.FindAuraByName(aura_env.buffName, "target", "PLAYER|HARMFUL")
elseif not aura_env.count and aura_env.buffName and AuraUtil.FindAuraByName(aura_env.buffName, "player") then
_,aura_env.icon,aura_env.count,_,aura_env.durationAura,aura_env.expirationTime = AuraUtil.FindAuraByName(aura_env.buffName, "player")
end
end
-- If its a pet
if aura_env.trackPet == true and (not aura_env.petCDFirst or (aura_env.petCDFirst and aura_env.duration <= 1)) and ((aura_env.petName and (UnitName("pet") == aura_env.petName)) or (UnitName("pet") == aura_env.spellName)) then
if aura_env.petStartTime and aura_env.petStartTime < (GetTime() - aura_env.petDuration) then
aura_env.petStartTime = nil
elseif aura_env.petDuration and not aura_env.petStartTime then
aura_env.petStartTime = GetTime()
aura_env.duration = aura_env.petDuration
aura_env.expirationTime = aura_env.petStartTime + aura_env.duration
aura_env.static = false
elseif not aura_env.petDuration then
aura_env.petStartTime = nil
aura_env.duration = 0
aura_env.expirationTime = 0
aura_env.static = true
end
-- If its a totem
elseif aura_env.trackPet == true and (not aura_env.petCDFirst or (aura_env.petCDFirst and aura_env.duration <= 1)) and select(2,GetTotemInfo(1)) == aura_env.petName then
_, totemName, aura_env.start, aura_env.duration = GetTotemInfo(1)
aura_env.expirationTime = aura_env.start + aura_env.duration
-- If its an aura
elseif aura_env.trackAura and aura_env.durationAura and aura_env.durationAura >= 2 then
aura_env.duration = aura_env.durationAura
if aura_env.count >= 1 then
aura_env.charges = aura_env.count
else aura_env.charges = nil
end
-- If infinite duration buff
elseif aura_env.trackAura and aura_env.durationAura and aura_env.durationAura == 0 then
aura_env.duration = aura_env.durationAura
if aura_env.count >= 1 then
aura_env.charges = aura_env.count
else aura_env.charges = nil
end
-- Charge Cooldowns
elseif aura_env.maxCharges and aura_env.maxCharges >= 2 then
if aura_env.charges == aura_env.maxCharges then
aura_env.duration = 0
aura_env.expirationTime = 0
aura_env.static = true
if aura_env.onlyOnCD then
aura_env.trigger = false
end
else
_,_,aura_env.start,aura_env.duration = GetSpellCharges(aura_env.spellName)
aura_env.expirationTime = (select(3,GetSpellCharges(aura_env.spellName)) + select(4,GetSpellCharges(aura_env.spellName)))
end
-- Cooldown
elseif aura_env.duration and aura_env.duration > 2 then
aura_env.expirationTime = (aura_env.start + aura_env.duration)
-- Catchall
else
aura_env.duration = 0
aura_env.expirationTime = 0
aura_env.static = true
if aura_env.onlyOnCD then
aura_env.trigger = false
end
end
else
aura_env.trigger = false
end
else
aura_env.trigger = false
end
return aura_env.trigger
end
end