Files
wow-weakauras/FreshShit/RaiderlosSA/init.lua
2024-03-14 23:18:18 +01:00

1339 lines
44 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
---@field events table<string, boolean>
---@field instruction string
---@field afflictedInstruction string
SpellAlert = {
---@param id number
---@param name string
---@param events table<string>
---@param instruction string
---@param afflictedInstruction string
---@return SpellAlert
new = function(id, name, events, instruction, afflictedInstruction)
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)
self.events = {}
for _, event in ipairs(events) do
self.events[event] = true
end
self.instruction = instruction
self.afflictedInstruction = afflictedInstruction
return self
end
}
local alerts = {
-- Garothi
SpellAlert.new(244410, "Decimation", { "SPELL_CAST_SUCCESS" }, "", "Move"),
SpellAlert.new(246220, "Fel Bombardment", { "SPELL_CAST_SUCCESS" }, "", "Move"),
SpellAlert.new(244969, "Eradication", { "SPELL_CAST_START" }, "Run away", ""),
SpellAlert.new(244106, "Carnage", { "SPELL_CAST_START" }, "Tank the boss", ""),
-- Felhounds
SpellAlert.new(244086, "Molten Touch", { "SPELL_CAST_SUCCESS" }, "", "Run away"),
SpellAlert.new(244768, "Desolate Gaze", { "SPELL_AURA_APPLIED" }, "", "Move away"),
SpellAlert.new(244057, "Enflame Corruption", { "SPELL_CAST_START", "SPELL_AURA_APPLIED" }, "Spread", "Spread!!"),
SpellAlert.new(244131, "Consuming Sphere", { "SPELL_AURA_APPLIED" }, "Move", ""),
SpellAlert.new(244056, "Siphon Corruption", { "SPELL_CAST_START", "SPELL_AURA_APPLIED" }, "Stack", "Stack!!"),
-- Antoran High Command
-- SpellAlert.new(245161, "Entropic Mine"), -- Need more info
-- SpellAlert.new(245546, "Summon Reinforcements"), -- Need more info
-- Portal Keeper Hasabel
SpellAlert.new(244016, "Reality Tear", { "SPELL_CAST_SUCCESS" }, "", ""),
SpellAlert.new(243983, "Collapsing World", { "SPELL_CAST_SUCCESS" }, "Dodge", ""),
SpellAlert.new(244000, "Felstorm Barrage", { "SPELL_CAST_START" }, "Dodge", ""),
-- Imonar
-- SpellAlert.new(247552, "Sleep Canister"), -- Need more info
SpellAlert.new(247367, "Shock Lance", { "SPELL_CAST_SUCCESS" }, "", ""),
SpellAlert.new(248068, "Empowered Pulse Grenade", { "SPELL_CAST_SUCCESS" }, "", ""), -- Need more info
SpellAlert.new(247376, "Pulse Grenade", { "SPELL_CAST_SUCCESS" }, "", ""), -- Need more info
SpellAlert.new(247716, "Charged Blasts", { "SPELL_AURA_APPLIED" }, "", "Move!!"),
SpellAlert.new(247687, "Sever", { "SPELL_CAST_SUCCESS" }, "", ""),
SpellAlert.new(248070, "Empowered Shrapnel Blast", { "SPELL_CAST_START" }, "Mines", ""),
SpellAlert.new(250255, "Empowered Shock Lance", { "SPELL_CAST_START" }, "", ""),
-- 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"),
}
EventMap = {}
for _, alert in ipairs(alerts) do
for event, _ in pairs(alert.events) do
if not EventMap[event] then
EventMap[event] = {}
end
EventMap[event][alert.id] = alert
end
end