Files
wow-weakauras/FreshShit/RaiderlosSA/init.lua

1326 lines
43 KiB
Lua

CLEUEventInfo = {
["GENERIC"] = {
["timestamp"] = 1,
["subevent"] = 2,
["hideCaster"] = 3,
["sourceGUID"] = 4,
["sourceName"] = 5,
["sourceFlags"] = 6,
["sourceRaidFlags"] = 7,
["destGUID"] = 8,
["destName"] = 9,
["destFlags"] = 10,
["destRaidFlags"] = 11,
},
["GENERIC_SPELL"] = {
["spellId"] = 12,
["spellName"] = 13,
["spellSchool"] = 14,
},
["GENERIC_DAMAGE"] = {
["amount"] = 15,
["overkill"] = 16,
["school"] = 17,
["resisted"] = 18,
["blocked"] = 19,
["absorbed"] = 20,
["critical"] = 21,
["glancing"] = 22,
["crushing"] = 23,
["isOffHand"] = 24,
},
["GENERIC_MISSED"] = {
["missType"] = 15,
["isOffHand"] = 16,
["amountMissed"] = 17,
["critical"] = 18,
},
["GENERIC_HEAL"] = {
["amount"] = 15,
["overhealing"] = 16,
["absorbed"] = 17,
["critical"] = 18,
},
["GENERIC_HEAL_ABSORBED"] = {
["extraGUID"] = 15,
["extraName"] = 16,
["extraFlags"] = 17,
["extraRaidFlags"] = 18,
["extraSpellID"] = 19,
["extraSpellName"] = 20,
["extraSchool"] = 21,
["absorbedAmount"] = 22,
["totalAmount"] = 23,
},
["GENERIC_ENERGIZE"] = {
["amount"] = 15,
["overEnergize"] = 16,
["powerType"] = 17,
},
["GENERIC_DRAIN"] = {
["amount"] = 15,
["powerType"] = 16,
["extraAmount"] = 17,
},
["GENERIC_LEECH"] = {
["amount"] = 15,
["powerType"] = 16,
["extraAmount"] = 17,
},
["GENERIC_INTERRUPT"] = {
["extraSpellId"] = 15,
["extraSpellName"] = 16,
["extraSchool"] = 17,
},
["GENERIC_DISPEL"] = {
["extraSpellId"] = 15,
["extraSpellName"] = 16,
["extraSchool"] = 17,
["auraType"] = 18,
},
["GENERIC_DISPEL_FAILED"] = {
["extraSpellId"] = 15,
["extraSpellName"] = 16,
["extraSchool"] = 17,
},
["GENERIC_STOLEN"] = {
["extraSpellId"] = 15,
["extraSpellName"] = 16,
["extraSchool"] = 17,
["auraType"] = 18,
},
["GENERIC_EXTRA_ATTACKS"] = {
["amount"] = 15,
},
["GENERIC_AURA_APPLIED"] = {
["auraType"] = 15,
["amount"] = 16,
},
["GENERIC_AURA_REMOVED"] = {
["auraType"] = 15,
["amount"] = 16,
},
["GENERIC_AURA_APPLIED_DOSE"] = {
["auraType"] = 15,
["amount"] = 16,
},
["GENERIC_AURA_REMOVED_DOSE"] = {
["auraType"] = 15,
["amount"] = 16,
},
["GENERIC_AURA_REFRESH"] = {
["auraType"] = 15,
},
["GENERIC_AURA_BROKEN"] = {
["auraType"] = 15,
},
["GENERIC_AURA_BROKEN_SPELL"] = {
["extraSpellId"] = 15,
["extraSpellName"] = 16,
["extraSchool"] = 17,
["auraType"] = 18,
},
["GENERIC_CAST_START"] = {
},
["GENERIC_CAST_SUCCESS"] = {
},
["GENERIC_CAST_FAILED"] = {
},
}
CLEUEventInfo["SWING_DAMAGE"] = CLEUEventInfo["GENERIC_DAMAGE"]
CLEUEventInfo["SWING_MISSED"] = CLEUEventInfo["GENERIC_MISSED"]
CLEUEventInfo["SWING_HEAL"] = CLEUEventInfo["GENERIC_HEAL"]
CLEUEventInfo["SWING_HEAL_ABSORBED"] = CLEUEventInfo["GENERIC_HEAL_ABSORBED"]
CLEUEventInfo["SWING_ENERGIZE"] = CLEUEventInfo["GENERIC_ENERGIZE"]
CLEUEventInfo["SWING_DRAIN"] = CLEUEventInfo["GENERIC_DRAIN"]
CLEUEventInfo["SWING_LEECH"] = CLEUEventInfo["GENERIC_LEECH"]
CLEUEventInfo["SWING_INTERRUPT"] = CLEUEventInfo["GENERIC_INTERRUPT"]
CLEUEventInfo["SWING_DISPEL"] = CLEUEventInfo["GENERIC_DISPEL"]
CLEUEventInfo["SWING_DISPEL_FAILED"] = CLEUEventInfo["GENERIC_DISPEL_FAILED"]
CLEUEventInfo["SWING_STOLEN"] = CLEUEventInfo["GENERIC_STOLEN"]
CLEUEventInfo["SWING_EXTRA_ATTACKS"] = CLEUEventInfo["GENERIC_EXTRA_ATTACKS"]
CLEUEventInfo["SWING_AURA_APPLIED"] = CLEUEventInfo["GENERIC_AURA_APPLIED"]
CLEUEventInfo["SWING_AURA_REMOVED"] = CLEUEventInfo["GENERIC_AURA_REMOVED"]
CLEUEventInfo["SWING_AURA_APPLIED_DOSE"] = CLEUEventInfo["GENERIC_AURA_APPLIED_DOSE"]
CLEUEventInfo["SWING_AURA_REMOVED_DOSE"] = CLEUEventInfo["GENERIC_AURA_REMOVED_DOSE"]
CLEUEventInfo["SWING_AURA_REFRESH"] = CLEUEventInfo["GENERIC_AURA_REFRESH"]
CLEUEventInfo["SWING_AURA_BROKEN"] = CLEUEventInfo["GENERIC_AURA_BROKEN"]
CLEUEventInfo["SWING_AURA_BROKEN_SPELL"] = CLEUEventInfo["GENERIC_AURA_BROKEN_SPELL"]
CLEUEventInfo["SWING_CAST_START"] = CLEUEventInfo["GENERIC_CAST_START"]
CLEUEventInfo["SWING_CAST_SUCCESS"] = CLEUEventInfo["GENERIC_CAST_SUCCESS"]
CLEUEventInfo["SWING_CAST_FAILED"] = CLEUEventInfo["GENERIC_CAST_FAILED"]
CLEUEventInfo["RANGE_DAMAGE"] = CLEUEventInfo["GENERIC_DAMAGE"]
CLEUEventInfo["RANGE_MISSED"] = CLEUEventInfo["GENERIC_MISSED"]
CLEUEventInfo["RANGE_HEAL"] = CLEUEventInfo["GENERIC_HEAL"]
CLEUEventInfo["RANGE_HEAL_ABSORBED"] = CLEUEventInfo["GENERIC_HEAL_ABSORBED"]
CLEUEventInfo["RANGE_ENERGIZE"] = CLEUEventInfo["GENERIC_ENERGIZE"]
CLEUEventInfo["RANGE_DRAIN"] = CLEUEventInfo["GENERIC_DRAIN"]
CLEUEventInfo["RANGE_LEECH"] = CLEUEventInfo["GENERIC_LEECH"]
CLEUEventInfo["RANGE_INTERRUPT"] = CLEUEventInfo["GENERIC_INTERRUPT"]
CLEUEventInfo["RANGE_DISPEL"] = CLEUEventInfo["GENERIC_DISPEL"]
CLEUEventInfo["RANGE_DISPEL_FAILED"] = CLEUEventInfo["GENERIC_DISPEL_FAILED"]
CLEUEventInfo["RANGE_STOLEN"] = CLEUEventInfo["GENERIC_STOLEN"]
CLEUEventInfo["RANGE_EXTRA_ATTACKS"] = CLEUEventInfo["GENERIC_EXTRA_ATTACKS"]
CLEUEventInfo["RANGE_AURA_APPLIED"] = CLEUEventInfo["GENERIC_AURA_APPLIED"]
CLEUEventInfo["RANGE_AURA_REMOVED"] = CLEUEventInfo["GENERIC_AURA_REMOVED"]
CLEUEventInfo["RANGE_AURA_APPLIED_DOSE"] = CLEUEventInfo["GENERIC_AURA_APPLIED_DOSE"]
CLEUEventInfo["RANGE_AURA_REMOVED_DOSE"] = CLEUEventInfo["GENERIC_AURA_REMOVED_DOSE"]
CLEUEventInfo["RANGE_AURA_REFRESH"] = CLEUEventInfo["GENERIC_AURA_REFRESH"]
CLEUEventInfo["RANGE_AURA_BROKEN"] = CLEUEventInfo["GENERIC_AURA_BROKEN"]
CLEUEventInfo["RANGE_AURA_BROKEN_SPELL"] = CLEUEventInfo["GENERIC_AURA_BROKEN_SPELL"]
CLEUEventInfo["RANGE_CAST_START"] = CLEUEventInfo["GENERIC_CAST_START"]
CLEUEventInfo["RANGE_CAST_SUCCESS"] = CLEUEventInfo["GENERIC_CAST_SUCCESS"]
CLEUEventInfo["RANGE_CAST_FAILED"] = CLEUEventInfo["GENERIC_CAST_FAILED"]
CLEUEventInfo["SPELL_DAMAGE"] = CLEUEventInfo["GENERIC_DAMAGE"]
CLEUEventInfo["SPELL_MISSED"] = CLEUEventInfo["GENERIC_MISSED"]
CLEUEventInfo["SPELL_HEAL"] = CLEUEventInfo["GENERIC_HEAL"]
CLEUEventInfo["SPELL_HEAL_ABSORBED"] = CLEUEventInfo["GENERIC_HEAL_ABSORBED"]
CLEUEventInfo["SPELL_ENERGIZE"] = CLEUEventInfo["GENERIC_ENERGIZE"]
CLEUEventInfo["SPELL_DRAIN"] = CLEUEventInfo["GENERIC_DRAIN"]
CLEUEventInfo["SPELL_LEECH"] = CLEUEventInfo["GENERIC_LEECH"]
CLEUEventInfo["SPELL_INTERRUPT"] = CLEUEventInfo["GENERIC_INTERRUPT"]
CLEUEventInfo["SPELL_DISPEL"] = CLEUEventInfo["GENERIC_DISPEL"]
CLEUEventInfo["SPELL_DISPEL_FAILED"] = CLEUEventInfo["GENERIC_DISPEL_FAILED"]
CLEUEventInfo["SPELL_STOLEN"] = CLEUEventInfo["GENERIC_STOLEN"]
CLEUEventInfo["SPELL_EXTRA_ATTACKS"] = CLEUEventInfo["GENERIC_EXTRA_ATTACKS"]
CLEUEventInfo["SPELL_AURA_APPLIED"] = CLEUEventInfo["GENERIC_AURA_APPLIED"]
CLEUEventInfo["SPELL_AURA_REMOVED"] = CLEUEventInfo["GENERIC_AURA_REMOVED"]
CLEUEventInfo["SPELL_AURA_APPLIED_DOSE"] = CLEUEventInfo["GENERIC_AURA_APPLIED_DOSE"]
CLEUEventInfo["SPELL_AURA_REMOVED_DOSE"] = CLEUEventInfo["GENERIC_AURA_REMOVED_DOSE"]
CLEUEventInfo["SPELL_AURA_REFRESH"] = CLEUEventInfo["GENERIC_AURA_REFRESH"]
CLEUEventInfo["SPELL_AURA_BROKEN"] = CLEUEventInfo["GENERIC_AURA_BROKEN"]
CLEUEventInfo["SPELL_AURA_BROKEN_SPELL"] = CLEUEventInfo["GENERIC_AURA_BROKEN_SPELL"]
CLEUEventInfo["SPELL_CAST_START"] = CLEUEventInfo["GENERIC_CAST_START"]
CLEUEventInfo["SPELL_CAST_SUCCESS"] = CLEUEventInfo["GENERIC_CAST_SUCCESS"]
CLEUEventInfo["SPELL_CAST_FAILED"] = CLEUEventInfo["GENERIC_CAST_FAILED"]
CLEUEventInfo["SPELL_PERIODIC_DAMAGE"] = CLEUEventInfo["GENERIC_DAMAGE"]
CLEUEventInfo["SPELL_PERIODIC_MISSED"] = CLEUEventInfo["GENERIC_MISSED"]
CLEUEventInfo["SPELL_PERIODIC_HEAL"] = CLEUEventInfo["GENERIC_HEAL"]
CLEUEventInfo["SPELL_PERIODIC_HEAL_ABSORBED"] = CLEUEventInfo["GENERIC_HEAL_ABSORBED"]
CLEUEventInfo["SPELL_PERIODIC_ENERGIZE"] = CLEUEventInfo["GENERIC_ENERGIZE"]
CLEUEventInfo["SPELL_PERIODIC_DRAIN"] = CLEUEventInfo["GENERIC_DRAIN"]
CLEUEventInfo["SPELL_PERIODIC_LEECH"] = CLEUEventInfo["GENERIC_LEECH"]
CLEUEventInfo["SPELL_PERIODIC_INTERRUPT"] = CLEUEventInfo["GENERIC_INTERRUPT"]
CLEUEventInfo["SPELL_PERIODIC_DISPEL"] = CLEUEventInfo["GENERIC_DISPEL"]
CLEUEventInfo["SPELL_PERIODIC_DISPEL_FAILED"] = CLEUEventInfo["GENERIC_DISPEL_FAILED"]
CLEUEventInfo["SPELL_PERIODIC_STOLEN"] = CLEUEventInfo["GENERIC_STOLEN"]
CLEUEventInfo["SPELL_PERIODIC_EXTRA_ATTACKS"] = CLEUEventInfo["GENERIC_EXTRA_ATTACKS"]
CLEUEventInfo["SPELL_PERIODIC_AURA_APPLIED"] = CLEUEventInfo["GENERIC_AURA_APPLIED"]
CLEUEventInfo["SPELL_PERIODIC_AURA_REMOVED"] = CLEUEventInfo["GENERIC_AURA_REMOVED"]
CLEUEventInfo["SPELL_PERIODIC_AURA_APPLIED_DOSE"] = CLEUEventInfo["GENERIC_AURA_APPLIED_DOSE"]
CLEUEventInfo["SPELL_PERIODIC_AURA_REMOVED_DOSE"] = CLEUEventInfo["GENERIC_AURA_REMOVED_DOSE"]
CLEUEventInfo["SPELL_PERIODIC_AURA_REFRESH"] = CLEUEventInfo["GENERIC_AURA_REFRESH"]
CLEUEventInfo["SPELL_PERIODIC_AURA_BROKEN"] = CLEUEventInfo["GENERIC_AURA_BROKEN"]
CLEUEventInfo["SPELL_PERIODIC_AURA_BROKEN_SPELL"] = CLEUEventInfo["GENERIC_AURA_BROKEN_SPELL"]
CLEUEventInfo["SPELL_PERIODIC_CAST_START"] = CLEUEventInfo["GENERIC_CAST_START"]
CLEUEventInfo["SPELL_PERIODIC_CAST_SUCCESS"] = CLEUEventInfo["GENERIC_CAST_SUCCESS"]
CLEUEventInfo["SPELL_PERIODIC_CAST_FAILED"] = CLEUEventInfo["GENERIC_CAST_FAILED"]
---@class CLEUParser
CLEUParser = {
---@param ... any
---@return number, nil|string
GetTimestamp = function(...)
local val = select(CLEUEventInfo["GENERIC"]["timestamp"], ...)
if val == nil then return 0, "Timestamp is nil or missing" end
if type(val) ~= "number" then return 0, "Timestamp is not a number" end
return val, nil
end,
---@param ... any
---@return string, nil|string
GetSubevent = function(...)
local val = select(CLEUEventInfo["GENERIC"]["subevent"], ...)
if val == nil then return "", "Subevent is nil or missing" end
if type(val) ~= "string" then return "", "Subevent is not a string" end
return val, nil
end,
---@param ... any
---@return boolean, nil|string
GetHideCaster = function(...)
local val = select(CLEUEventInfo["GENERIC"]["hideCaster"], ...)
if val == nil then return false, "HideCaster is nil or missing" end
if type(val) ~= "boolean" then return false, "HideCaster is not a boolean" end
return val, nil
end,
---@param ... any
---@return string, nil|string
GetSourceGUID = function(...)
local val = select(CLEUEventInfo["GENERIC"]["sourceGUID"], ...)
if val == nil then return "", "SourceGUID is nil or missing" end
if type(val) ~= "string" then return "", "SourceGUID is not a string" end
return val, nil
end,
---@param ... any
---@return string, nil|string
GetSourceName = function(...)
local val = select(CLEUEventInfo["GENERIC"]["sourceName"], ...)
if val == nil then return "", "SourceName is nil or missing" end
if type(val) ~= "string" then return "", "SourceName is not a string" end
return val, nil
end,
---@param ... any
---@return number, nil|string
GetSourceFlags = function(...)
local val = select(CLEUEventInfo["GENERIC"]["sourceFlags"], ...)
if val == nil then return 0, "SourceFlags is nil or missing" end
if type(val) ~= "number" then return 0, "SourceFlags is not a number" end
return val, nil
end,
---@param ... any
---@return number, nil|string
GetSourceRaidFlags = function(...)
local val = select(CLEUEventInfo["GENERIC"]["sourceRaidFlags"], ...)
if val == nil then return 0, "SourceRaidFlags is nil or missing" end
if type(val) ~= "number" then return 0, "SourceRaidFlags is not a number" end
return val, nil
end,
---@param ... any
---@return string, nil|string
GetDestGUID = function(...)
local val = select(CLEUEventInfo["GENERIC"]["destGUID"], ...)
if val == nil then return "", "DestGUID is nil or missing" end
if type(val) ~= "string" then return "", "DestGUID is not a string" end
return val, nil
end,
---@param ... any
---@return string, nil|string
GetDestName = function(...)
local val = select(CLEUEventInfo["GENERIC"]["destName"], ...)
if val == nil then return "", "DestName is nil or missing" end
if type(val) ~= "string" then return "", "DestName is not a string" end
return val, nil
end,
---@param ... any
---@return number, nil|string
GetDestFlags = function(...)
local val = select(CLEUEventInfo["GENERIC"]["destFlags"], ...)
if val == nil then return 0, "DestFlags is nil or missing" end
if type(val) ~= "number" then return 0, "DestFlags is not a number" end
return val, nil
end,
---@param ... any
---@return number, nil|string
GetDestRaidFlags = function(...)
local val = select(CLEUEventInfo["GENERIC"]["destRaidFlags"], ...)
if val == nil then return 0, "DestRaidFlags is nil or missing" end
if type(val) ~= "number" then return 0, "DestRaidFlags is not a number" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---@param ... any
---@return number, nil|string
GetSpellId = function(...)
local val = select(CLEUEventInfo["GENERIC_SPELL"]["spellId"], ...)
if val == nil then return 0, "SpellId is nil or missing" end
if type(val) ~= "number" then return 0, "SpellId is not a number" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---@param ... any
---@return string, nil|string
GetSpellName = function(...)
local val = select(CLEUEventInfo["GENERIC_SPELL"]["spellName"], ...)
if val == nil then return "", "SpellName is nil or missing" end
if type(val) ~= "string" then return "", "SpellName is not a string" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---@param ... any
---@return number, nil|string
GetSpellSchool = function(...)
local val = select(CLEUEventInfo["GENERIC_SPELL"]["spellSchool"], ...)
if val == nil then return 0, "SpellSchool is nil or missing" end
if type(val) ~= "number" then return 0, "SpellSchool is not a number" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_DAMAGE|
--- |_HEAL|
--- |_ENERGIZE|
--- |_DRAIN|
--- |_LEECH|
--- |_EXTRA_ATTACKS|
--- |_AURA_APPLIED|
--- |_AURA_REMOVED|
--- |_AURA_APPLIED_DOSE|
--- |_AURA_REMOVED_DOSE|
---@param ... any
---@return number, nil|string
GetAmount = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return 0, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["amount"], ...)
if val == nil then return 0, "Amount is nil or missing" end
if type(val) ~= "number" then return 0, "Amount is not a number" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_DAMAGE|
---@param ... any
---@return number, nil|string
GetOverkill = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return 0, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["overkill"], ...)
if val == nil then return 0, "Overkill is nil or missing" end
if type(val) ~= "number" then return 0, "Overkill is not a number" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_DAMAGE|
---@param ... any
---@return number, nil|string
GetSchool = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return 0, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["school"], ...)
if val == nil then return 0, "School is nil or missing" end
if type(val) ~= "number" then return 0, "School is not a number" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_DAMAGE|
---
--- Apparently this is allowed to be nil?
---@param ... any
---@return boolean, nil|string
GetResisted = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return false, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["resisted"], ...)
if val == nil then return false, "Resisted is nil or missing" end
if type(val) ~= "boolean" then return false, "Resisted is not a boolean" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_DAMAGE|
---
--- Apparently this is allowed to be nil?
---@param ... any
---@return boolean, nil|string
GetBlocked = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return false, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["blocked"], ...)
if val == nil then return false, "Blocked is nil or missing" end
if type(val) ~= "boolean" then return false, "Blocked is not a boolean" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_DAMAGE|
--- |_HEAL|
---
--- Apparently this is allowed to be nil?
---@param ... any
---@return boolean, nil|string
GetAbsorbed = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return false, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["absorbed"], ...)
if val == nil then return false, "Absorbed is nil or missing" end
if type(val) ~= "boolean" then return false, "Absorbed is not a boolean" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_DAMAGE|
--- |_MISSED|
--- |_HEAL|
---@param ... any
---@return boolean, nil|string
GetCritical = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return false, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["critical"], ...)
if val == nil then return false, "Critical is nil or missing" end
if type(val) ~= "boolean" then return false, "Critical is not a boolean" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_DAMAGE|
---@param ... any
---@return boolean, nil|string
GetGlancing = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return false, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["glancing"], ...)
if val == nil then return false, "Glancing is nil or missing" end
if type(val) ~= "boolean" then return false, "Glancing is not a boolean" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_DAMAGE|
---@param ... any
---@return boolean, nil|string
GetCrushing = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return false, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["crushing"], ...)
if val == nil then return false, "Crushing is nil or missing" end
if type(val) ~= "boolean" then return false, "Crushing is not a boolean" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_DAMAGE|
--- |_MISSED|
---@param ... any
---@return boolean, nil|string
GetIsOffHand = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return false, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["isOffHand"], ...)
if val == nil then return false, "IsOffHand is nil or missing" end
if type(val) ~= "boolean" then return false, "IsOffHand is not a boolean" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_MISSED|
---
--- return type is unconfirmed!
---@param ... any
---@return string, nil|string
GetMissType = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return "", string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["missType"], ...)
if val == nil then return "", "MissType is nil or missing" end
if type(val) ~= "string" then return "", "MissType is not a string" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_MISSED|
---@param ... any
---@return number, nil|string
---
--- return type is unconfirmed!
GetAmountMissed = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return 0, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["amountMissed"], ...)
if val == nil then return 0, "AmountMissed is nil or missing" end
if type(val) ~= "number" then return 0, "AmountMissed is not a number" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_HEAL|
---
--- return type is unconfirmed!
---@param ... any
---@return number, nil|string
GetOverhealing = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return 0, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["overhealing"], ...)
if val == nil then return 0, "Overhealing is nil or missing" end
if type(val) ~= "number" then return 0, "Overhealing is not a number" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_HEAL_ABSORBED|
---@param ... any
---@return string, nil|string
GetExtraGUID = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return "", string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["extraGUID"], ...)
if val == nil then return "", "ExtraGUID is nil or missing" end
if type(val) ~= "string" then return "", "ExtraGUID is not a string" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_HEAL_ABSORBED|
---@param ... any
---@return string, nil|string
GetExtraName = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return "", string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["extraName"], ...)
if val == nil then return "", "ExtraName is nil or missing" end
if type(val) ~= "string" then return "", "ExtraName is not a string" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_HEAL_ABSORBED|
---@param ... any
---@return number, nil|string
GetExtraFlags = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return 0, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["extraFlags"], ...)
if val == nil then return 0, "ExtraFlags is nil or missing" end
if type(val) ~= "number" then return 0, "ExtraFlags is not a number" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_HEAL_ABSORBED|
---@param ... any
---@return number, nil|string
GetExtraRaidFlags = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return 0, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["extraRaidFlags"], ...)
if val == nil then return 0, "ExtraRaidFlags is nil or missing" end
if type(val) ~= "number" then return 0, "ExtraRaidFlags is not a number" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_HEAL_ABSORBED|
---
--- WARNING! Different from "GetExtraSpellId" (capital ID!)<br>
--- This is the doing of Blizzard, not me.<br>
---@see CLEUParser.GetExtraSpellId
---@param ... any
---@return number, nil|string
GetExtraSpellID = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return 0, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["extraSpellID"], ...)
if val == nil then return 0, "ExtraSpellID is nil or missing" end
if type(val) ~= "number" then return 0, "ExtraSpellID is not a number" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_HEAL_ABSORBED|
--- |_INTERRUPT|
--- |_DISPEL|
--- |_DISPEL_FAILED|
--- |_STOLEN|
--- |_AURA_BROKEN_SPELL|
---@param ... any
---@return string, nil|string
GetExtraSpellName = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return "", string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["extraSpellName"], ...)
if val == nil then return "", "extraSpellName is nil or missing" end
if type(val) ~= "string" then return "", "extraSpellName is not a string" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_HEAL_ABSORBED|
--- |_INTERRUPT|
--- |_DISPEL|
--- |_DISPEL_FAILED|
--- |_STOLEN|
--- |_AURA_BROKEN_SPELL|
---@param ... any
---@return number, nil|string
GetExtraSchool = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return 0, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["extraSchool"], ...)
if val == nil then return 0, "ExtraSchool is nil or missing" end
if type(val) ~= "number" then return 0, "ExtraSchool is not a number" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_HEAL_ABSORBED|
---@param ... any
---@return number, nil|string
GetAbsorbedAmount = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return 0, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["absorbedAmount"], ...)
if val == nil then return 0, "AbsorbedAmount is nil or missing" end
if type(val) ~= "number" then return 0, "AbsorbedAmount is not a number" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_ENERGIZE|
---@param ... any
---@return number, nil|string
GetOverEnergize = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return 0, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["overEnergize"], ...)
if val == nil then return 0, "OverEnergize is nil or missing" end
if type(val) ~= "number" then return 0, "OverEnergize is not a number" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_ENERGIZE|
--- |_DRAIN|
--- |_LEECH|
---
--- return type is unconfirmed!
---@param ... any
---@return number, nil|string
GetPowerType = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return 0, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["powerType"], ...)
if val == nil then return 0, "PowerType is nil or missing" end
if type(val) ~= "number" then return 0, "PowerType is not a number" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_DRAIN|
--- |_LEECH|
---@param ... any
---@return number, nil|string
GetExtraAmount = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return 0, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["extraAmount"], ...)
if val == nil then return 0, "ExtraAmount is nil or missing" end
if type(val) ~= "number" then return 0, "ExtraAmount is not a number" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_INTERRUPT|
--- |_DISPEL|
--- |_DISPEL_FAILED|
--- |_STOLEN|
--- |_AURA_BROKEN_SPELL|
---
--- WARNING! Different from "GetExtraSpellID" (capital ID!)<br>
--- This is the doing of Blizzard, not me.<br>
---@see CLEUParser.GetExtraSpellID
---@param ... any
---@return number, nil|string
GetExtraSpellId = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return 0, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["extraSpellId"], ...)
if val == nil then return 0, "ExtraSpellId is nil or missing" end
if type(val) ~= "number" then return 0, "ExtraSpellId is not a number" end
return val, nil
end,
--- Specific to subevents prefixed by:
--- |Prefix|
--- |-----|
--- |RANGE|
--- |SWING|
--- |SPELL|
--- |SPELL_PERIODIC|
--- |SPELL_BUILDING|
---
--- And suffixed by:
--- |Suffix|
--- |------|
--- |_DISPEL|
--- |_STOLEN|
--- |_AURA_APPLIED|
--- |_AURA_REMOVED|
--- |_AURA_APPLIED_DOSE|
--- |_AURA_REMOVED_DOSE|
--- |_AURA_REFRESH|
--- |_AURA_BROKEN|
--- |_AURA_BROKEN_SPELL|
---@param ... any
---@return number, nil|string
GetExtraAuraType = function(...)
local subevent, err = CLEUParser.GetSubevent(...)
if err then return 0, string.format("Failed getting subevent due to: %s", err) end
local val = select(CLEUEventInfo[subevent]["auraType"], ...)
if val == nil then return 0, "AuraType is nil or missing" end
if type(val) ~= "number" then return 0, "AuraType is not a number" end
return val, nil
end,
}
local function varargToString(...)
local output = {}
for i = 1, select("#", ...) do
table.insert(output, tostring(select(i, ...)))
end
return table.concat(output, ", ")
end
-- C:\Users\Administrator\Seafile\Backup-WoW\Ruski\WTF\Account\phatphuckdave\SavedVariables\WeakAuras.lua
-- /dump WeakAurasSaved.Cyka.CLEUExample
if not WeakAurasSaved then WeakAurasSaved = {} end
if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end
if not WeakAurasSaved.Cyka.CLEUExample then WeakAurasSaved.Cyka.CLEUExample = {} end
---@param spellName string
---@param spellId number
---@param subevent string
---@param ... any
aura_env.LogSpell = function(spellName, spellId, subevent, ...)
local slug = string.format("%d-%s", spellId, subevent)
if not WeakAurasSaved.Cyka.CLEUExample[slug] then
WeakAurasSaved.Cyka.CLEUExample[slug] = varargToString(spellName, spellId, subevent, ...)
end
end
local SoundFileRoot = "Interface\\Sounds\\spellAlert\\"
---@class SpellAlert
---@field id number
---@field soundFile string
SpellAlert = {
---@param id number
---@param name string
---@return SpellAlert
new = function(id, name)
local self = setmetatable({}, {
__index = SpellAlert
})
self.id = id
name = string.gsub(name, " ", "_")
name = string.lower(name)
self.soundFile = string.format("%s%s.ogg", SoundFileRoot, name)
return self
end
}
-- [230094] = "Nullification, 230094, SPELL_CAST_SUCCESS, 1709744064.211, SPELL_CAST_SUCCESS, false, Creature-0-67-1651-0-115765-000039BF96, Abstract Nullifier, 68168, 0, Player-67-00341022, Lanarhodess, 1298, 0, 230094, Nullification, 1",
-- [230083] = "Nullification, 230083, SPELL_AURA_REMOVED, 1709744064.303, SPELL_AURA_REMOVED, false, Creature-0-67-1651-0-115765-000039BF96, Abstract Nullifier, 68168, 0, Player-67-003521C2, Bonkleta, 1297, 0, 230083, Nullification, 1, DEBUFF",
-- [227267] = "Summon Volatile Energy, 227267, SPELL_SUMMON, 1709744153.649, SPELL_SUMMON, false, Creature-0-67-1651-0-114247-000039BF70, The Curator, 68168, 0, Creature-0-67-1651-0-114249-00003A1923, Volatile Energy, 2632, 0, 227267, Summon Volatile Energy, 64",
local alerts = {
-- Garothi
SpellAlert.new(244410, "Decimation"),
SpellAlert.new(246220, "Fel Bombardment"),
SpellAlert.new(244969, "Eradication"),
SpellAlert.new(244106, "Carnage"),
-- Felhounds
SpellAlert.new(244086, "Molten Touch"),
SpellAlert.new(244768, "Desolate Gaze"),
SpellAlert.new(244057, "Enflame Corruption"),
SpellAlert.new(244131, "Consuming Sphere"),
SpellAlert.new(244056, "Siphon Corruption"),
-- Antoran High Command
SpellAlert.new(245161, "Entropic Mine"),
SpellAlert.new(245546, "Summon Reinforcements"),
-- Portal Keeper Hasabel
SpellAlert.new(244016, "Reality Tear"),
SpellAlert.new(243983, "Collapsing World"),
SpellAlert.new(244000, "Felstorm Barrage"),
-- Imonar
SpellAlert.new(247552, "Sleep Canister"),
SpellAlert.new(247367, "Shock Lance"),
SpellAlert.new(248068, "Empowered Pulse Grenade"),
SpellAlert.new(247376, "Pulse Grenade"),
SpellAlert.new(247716, "Charged Blasts"),
SpellAlert.new(247687, "Sever"),
SpellAlert.new(248070, "Empowered Shrapnel Blast"),
SpellAlert.new(250255, "Empowered Shock Lance"),
-- Kin'garoth
SpellAlert.new(254919, "Forging Strike"),
SpellAlert.new(254926, "Reverberating Strike"),
SpellAlert.new(246840, "Ruiner"),
SpellAlert.new(246779, "Diabolic Bomb"),
SpellAlert.new(246706, "Demolish"),
SpellAlert.new(246664, "Annihilation"),
-- Varimathras
SpellAlert.new(243960, "Shadow Strike"),
SpellAlert.new(243961, "Misery"),
SpellAlert.new(244042, "Marked Prey"),
SpellAlert.new(244093, "Necrotic Embrace"),
SpellAlert.new(248732, "Echoes of Doom"),
SpellAlert.new(243999, "Dark Fissure"),
-- Coven
SpellAlert.new(253189, "Shivan Pact"),
SpellAlert.new(244899, "Fiery Strike"),
SpellAlert.new(245627, "Whirling Saber"),
SpellAlert.new(245281, "Shadow Blades"),
SpellAlert.new(245586, "Chilled Blood"),
-- Aggramar
SpellAlert.new(254452, "Ravenous Blaze"),
SpellAlert.new(244693, "Wake of Flame"),
SpellAlert.new(244291, "Foe Braker"),
SpellAlert.new(244033, "Flame Rend"),
SpellAlert.new(247079, "Empowered Flame Rend"),
SpellAlert.new(245983, "Flare"),
SpellAlert.new(246037, "Empowered Flare"),
-- Argus
SpellAlert.new(256457, "Cone of Death"),
SpellAlert.new(248396, "Soulblight"),
SpellAlert.new(257296, "Tortured Rage"),
SpellAlert.new(251570, "Soulbomb"),
-- Mythic+
-- Black Rook Hold
SpellAlert.new(225573, "Dark Mending"),
SpellAlert.new(200105, "Sacrifice Soul"),
SpellAlert.new(225732, "Strike Down"),
SpellAlert.new(194996, "Soul Echoes"),
SpellAlert.new(195254, "Swirling Scythe"),
SpellAlert.new(194956, "Reap Soul"),
SpellAlert.new(200248, "Arcane Blitz"),
SpellAlert.new(200345, "Arrow Barrage"),
SpellAlert.new(200291, "Knife Dance"),
SpellAlert.new(200261, "Bonebreaking Strike"),
SpellAlert.new(197418, "Vengeful Shear"),
SpellAlert.new(201139, "Brutal Assault"),
SpellAlert.new(198245, "Brutal Haymaker"),
SpellAlert.new(198079, "Hateful Gaze"),
-- Cathedral of Eternal Night
SpellAlert.new(241937, "Shadow Wall"),
SpellAlert.new(238543, "Demonic Mending"),
SpellAlert.new(242792, "Vile Roots"),
SpellAlert.new(236627, "Floral Fulmination"),
SpellAlert.new(239217, "Blinding Glare"),
SpellAlert.new(237726, "Scornful Gaze"),
SpellAlert.new(190620, "Felblaze Orb"),
SpellAlert.new(239268, "Venom Storm"),
SpellAlert.new(234107, "Chaotic Energy"),
SpellAlert.new(236543, "Felsoul Cleave"),
SpellAlert.new(238315, "Shadow Sweep"),
SpellAlert.new(243168, "Demonic Upheaval"),
-- Court of Stars
SpellAlert.new(210261, "Sound Alarm"),
SpellAlert.new(215204, "Hinder"),
SpellAlert.new(209027, "Quelling Strike"),
SpellAlert.new(209516, "Mana Fang"),
SpellAlert.new(209485, "Drain Magic"),
SpellAlert.new(209404, "Seal Magic"),
SpellAlert.new(209495, "Charged Smash"),
SpellAlert.new(225100, "Charging Station"),
SpellAlert.new(219488, "Streetsweeper"),
SpellAlert.new(212784, "Eye Storm"),
SpellAlert.new(211464, "Fel Detonation"),
SpellAlert.new(207980, "Disintegration Beam"),
SpellAlert.new(207979, "Shockwave"),
SpellAlert.new(209628, "Piercing Gale"),
SpellAlert.new(209676, "Slicing Maelstrom"),
-- Darkheart Thicket
SpellAlert.new(200631, "Unnerving Screech"),
SpellAlert.new(200580, "Maddening Roar"),
SpellAlert.new(191326, "Breath of Corruption"),
SpellAlert.new(201400, "Dread Inferno"),
SpellAlert.new(200238, "Feed on the Weak"),
-- Eye of Azshara
SpellAlert.new(195172, "Mighty Slam"),
SpellAlert.new(195129, "Thundering Stomp"),
SpellAlert.new(195046, "Rejuvenating Waters"),
SpellAlert.new(162135, "Bellowing Roar"),
SpellAlert.new(197105, "Polymorh Fish"),
SpellAlert.new(193597, "Static Nova"),
SpellAlert.new(193611, "Focused Lightning"),
SpellAlert.new(196129, "Spray Sand"),
SpellAlert.new(196144, "Sandstorm"),
SpellAlert.new(196296, "Roiling Storm"),
SpellAlert.new(196290, "Chaotic Tempest"),
SpellAlert.new(191848, "Rampage"),
-- Halls of Valor
SpellAlert.new(198605, "Thunderstrike"),
SpellAlert.new(198888, "Lightning Breath"),
SpellAlert.new(191284, "Horn of Valor"),
SpellAlert.new(198934, "Rune of Healing"),
SpellAlert.new(215433, "Holy Radiance"),
SpellAlert.new(199210, "Penetrating Shot"),
SpellAlert.new(191976, "Arcing Bolt"),
SpellAlert.new(192305, "Eye of the Storm"),
SpellAlert.new(192307, "Sanctify"),
SpellAlert.new(192048, "Expel Light"),
SpellAlert.new(192018, "Shield of Light"),
SpellAlert.new(196512, "Claw Frenzy"),
SpellAlert.new(199652, "Sever"),
SpellAlert.new(199726, "Unruly Yell"),
SpellAlert.new(199674, "Wicked Dagger"),
SpellAlert.new(193826, "Ragnarok"),
SpellAlert.new(198263, "Radiant Tempest"),
SpellAlert.new(198072, "Spear of Light"),
SpellAlert.new(197961, "Runic Band"),
SpellAlert.new(198750, "Surge"),
-- Maw of Souls
SpellAlert.new(193364, "Screams of the Dead"),
SpellAlert.new(194442, "Six Pound Barrel"),
SpellAlert.new(194615, "Sea Legs"),
SpellAlert.new(192019, "Lantern of Darkness"),
SpellAlert.new(194099, "Bile Breath"),
SpellAlert.new(198405, "Bone Chilling Scream"),
SpellAlert.new(194325, "Fragment"),
SpellAlert.new(194216, "Cosmic Scythe"),
SpellAlert.new(195293, "Debilitating Shout"),
SpellAlert.new(185539, "Rapid Rupture"),
SpellAlert.new(198495, "Torrent"),
SpellAlert.new(202098, "Brackwater Barrage"),
-- Neltharion's Lair
SpellAlert.new(202181, "Stone Gaze"),
SpellAlert.new(226296, "Piercing Shards"),
SpellAlert.new(188169, "Razor Shards"),
SpellAlert.new(198496, "Sunder"),
SpellAlert.new(199176, "Spiked Tongue"),
SpellAlert.new(193585, "Bound"),
SpellAlert.new(200700, "Landslide"),
SpellAlert.new(200732, "Molten Crash"),
-- The Arcway
SpellAlert.new(211771, "Prophecies of Doom"),
SpellAlert.new(211037, "Celerity Zone"),
SpellAlert.new(195791, "Quarantine"),
SpellAlert.new(226285, "Demonic Ascension"),
SpellAlert.new(197810, "Wicked Slam"),
SpellAlert.new(211217, "Arcane Slicer"),
SpellAlert.new(211115, "Phase Breach"),
SpellAlert.new(196392, "Overcharge Mana"),
SpellAlert.new(200040, "Nether Venom"),
SpellAlert.new(200227, "Tangled Web"),
SpellAlert.new(220871, "Unstable Mana"),
-- Vault of the Wardens
SpellAlert.new(193069, "Nightmares"),
SpellAlert.new(197799, "Unleash Fury"),
SpellAlert.new(191735, "Deafening Screech"),
SpellAlert.new(190836, "Hatred"),
SpellAlert.new(202913, "Fel Mortar"),
SpellAlert.new(200898, "Teleport"),
SpellAlert.new(199917, "Shadow Crash"),
SpellAlert.new(202658, "Drain"),
SpellAlert.new(194945, "Lingering Gaze"),
SpellAlert.new(196249, "Meteor"),
SpellAlert.new(192631, "Lava Wreath"),
SpellAlert.new(197513, "Detonating Moonglaive"),
SpellAlert.new(189469, "Turn Kick"),
-- Upper Karazhan
SpellAlert.new(230083, "Nullification"),
SpellAlert.new(227267, "Summon Volatile Energy"),
SpellAlert.new(227254, "Evocation"),
SpellAlert.new(229662, "Fel Breath"),
SpellAlert.new(36247, "Fel Fireball"),
SpellAlert.new(227628, "Piercing Missiles"),
SpellAlert.new(227615, "Inferno Bolt"),
SpellAlert.new(227592, "Frostbite"),
SpellAlert.new(228269, "Flame Wreath"),
SpellAlert.new(227779, "Ceaseless Winter"),
SpellAlert.new(229706, "Leech Life"),
SpellAlert.new(229714, "Consume Magic"),
SpellAlert.new(229159, "Chaotic Shadows"),
SpellAlert.new(229083, "Burning Blast"),
SpellAlert.new(229151, "Disintegrate"),
-- Lower Karazhan
SpellAlert.new(228221, "Severe Dusting"),
SpellAlert.new(228225, "Sultry Heat"),
SpellAlert.new(232153, "Kara Kazham"),
SpellAlert.new(227987, "Dinner Bell"),
SpellAlert.new(228025, "Heat Wave"),
SpellAlert.new(227568, "Burning Leg Sweep"),
SpellAlert.new(227776, "Magic Magnificent"),
SpellAlert.new(227966, "Flashlight"),
SpellAlert.new(228279, "Shadow Rejuvenation"),
SpellAlert.new(228278, "Demoralizing Shout"),
SpellAlert.new(228277, "Shackles of Servitude"),
SpellAlert.new(226316, "Shadow Bolt Volley"),
SpellAlert.new(227508, "Mass Repentance"),
SpellAlert.new(227793, "Sacred Ground"),
SpellAlert.new(227463, "Whirling Edge"),
SpellAlert.new(227646, "Iron Whirlwind"),
SpellAlert.new(227672, "Will Breaker"),
SpellAlert.new(227404, "Intangible Presence"),
SpellAlert.new(227493, "Mortal Strike"),
SpellAlert.new(228852, "Shared Suffering"),
SpellAlert.new(228837, "Bellowing Roar"),
}
aura_env.EventMap = {
["SPELL_CAST_SUCCESS"] = {
alerts[230094], -- Nullification
}
}