1339 lines
44 KiB
Lua
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 |