This commit is contained in:
1344
Heimdall.lua
1344
Heimdall.lua
File diff suppressed because it is too large
Load Diff
2
Meta
2
Meta
Submodule Meta updated: 5fe685d4c6...859955aa36
@@ -248,9 +248,7 @@ function shared.AchievementSniffer.Init()
|
||||
if Heimdall_Data.config.achievementSniffer.debug then
|
||||
print(string.format("[%s] Event triggered: %s for unit: %s", ModuleName, event, unit))
|
||||
end
|
||||
if event == "NAME_PLATE_UNIT_ADDED" then
|
||||
TryInspect(unit)
|
||||
end
|
||||
if event == "NAME_PLATE_UNIT_ADDED" then TryInspect(unit) end
|
||||
--UpdateFrames()
|
||||
end)
|
||||
|
||||
@@ -271,7 +269,6 @@ function shared.AchievementSniffer.Init()
|
||||
Scan(name)
|
||||
end)
|
||||
|
||||
|
||||
local function Tick()
|
||||
C_Timer.NewTimer(Heimdall_Data.config.achievementSniffer.scanInterval, Tick)
|
||||
if not Heimdall_Data.config.achievementSniffer.enabled then return end
|
||||
|
@@ -41,12 +41,16 @@ function shared.AgentTracker.Init()
|
||||
if name then
|
||||
local isNewAgent = not Heimdall_Data.config.agents[name]
|
||||
Heimdall_Data.config.agents[name] = date("%Y-%m-%dT%H:%M:%S")
|
||||
if isNewAgent then
|
||||
newAgents = newAgents + 1
|
||||
end
|
||||
if isNewAgent then newAgents = newAgents + 1 end
|
||||
if Heimdall_Data.config.agentTracker.debug then
|
||||
print(string.format("[%s] %s agent: %s", ModuleName, isNewAgent and "Added new" or "Updated existing",
|
||||
name))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] %s agent: %s",
|
||||
ModuleName,
|
||||
isNewAgent and "Added new" or "Updated existing",
|
||||
name
|
||||
)
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -89,20 +93,27 @@ function shared.AgentTracker.Init()
|
||||
shared.dumpTable(Heimdall_Data.config.agentTracker)
|
||||
end
|
||||
|
||||
|
||||
sender = string.match(sender, "^[^-]+")
|
||||
local isNewAgent = not Heimdall_Data.config.agents[sender]
|
||||
Heimdall_Data.config.agents[sender] = date("%Y-%m-%dT%H:%M:%S")
|
||||
|
||||
if Heimdall_Data.config.agentTracker.debug then
|
||||
print(string.format("[%s] %s agent from message: %s", ModuleName,
|
||||
isNewAgent and "Added new" or "Updated existing", sender))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] %s agent from message: %s",
|
||||
ModuleName,
|
||||
isNewAgent and "Added new" or "Updated existing",
|
||||
sender
|
||||
)
|
||||
)
|
||||
end
|
||||
end)
|
||||
|
||||
if Heimdall_Data.config.agentTracker.debug then
|
||||
local count = 0
|
||||
for _ in pairs(Heimdall_Data.config.agents) do count = count + 1 end
|
||||
for _ in pairs(Heimdall_Data.config.agents) do
|
||||
count = count + 1
|
||||
end
|
||||
print(string.format("[%s] Module initialized - Tracking %d agents", ModuleName, count))
|
||||
end
|
||||
print("[Heimdall] AgentTracker loaded")
|
||||
|
@@ -73,8 +73,14 @@ function shared.BonkDetector.Init()
|
||||
if lastReportTime[source] and (currentTime - lastReportTime[source]) < throttle then
|
||||
if Heimdall_Data.config.bonkDetector.debug then
|
||||
local timeLeft = throttle - (currentTime - lastReportTime[source])
|
||||
print(string.format("[%s] Damage report throttled for %s (%.1f seconds remaining)",
|
||||
ModuleName, source, timeLeft))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Damage report throttled for %s (%.1f seconds remaining)",
|
||||
ModuleName,
|
||||
source,
|
||||
timeLeft
|
||||
)
|
||||
)
|
||||
end
|
||||
return
|
||||
end
|
||||
@@ -82,8 +88,15 @@ function shared.BonkDetector.Init()
|
||||
lastReportTime[source] = currentTime
|
||||
|
||||
if Heimdall_Data.config.bonkDetector.debug then
|
||||
print(string.format("[%s] Processing damage event - Source: %s, Target: %s, Type: %s",
|
||||
ModuleName, source, destination, subevent))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Processing damage event - Source: %s, Target: %s, Type: %s",
|
||||
ModuleName,
|
||||
source,
|
||||
destination,
|
||||
subevent
|
||||
)
|
||||
)
|
||||
end
|
||||
|
||||
for _, channel in pairs(Heimdall_Data.config.bonkDetector.channels) do
|
||||
|
@@ -6,8 +6,6 @@ local ModuleName = "Bully"
|
||||
---@diagnostic disable-next-line: missing-fields
|
||||
shared.Bully = {}
|
||||
function shared.Bully.Init()
|
||||
if Heimdall_Data.config.bully.debug then
|
||||
print(string.format("[%s] Module initialized", ModuleName))
|
||||
end
|
||||
if Heimdall_Data.config.bully.debug then print(string.format("[%s] Module initialized", ModuleName)) end
|
||||
print("[Heimdall] Bully loaded")
|
||||
end
|
||||
|
@@ -12,12 +12,12 @@ local function Init()
|
||||
["destGUID"] = 8,
|
||||
["destName"] = 9,
|
||||
["destFlags"] = 10,
|
||||
["destRaidFlags"] = 11
|
||||
["destRaidFlags"] = 11,
|
||||
},
|
||||
["GENERIC_SPELL"] = {
|
||||
["spellId"] = 12,
|
||||
["spellName"] = 13,
|
||||
["spellSchool"] = 14
|
||||
["spellSchool"] = 14,
|
||||
},
|
||||
["GENERIC_DAMAGE"] = {
|
||||
["amount"] = 15,
|
||||
@@ -29,19 +29,19 @@ local function Init()
|
||||
["critical"] = 21,
|
||||
["glancing"] = 22,
|
||||
["crushing"] = 23,
|
||||
["isOffHand"] = 24
|
||||
["isOffHand"] = 24,
|
||||
},
|
||||
["GENERIC_MISSED"] = {
|
||||
["missType"] = 15,
|
||||
["isOffHand"] = 16,
|
||||
["amountMissed"] = 17,
|
||||
["critical"] = 18
|
||||
["critical"] = 18,
|
||||
},
|
||||
["GENERIC_HEAL"] = {
|
||||
["amount"] = 15,
|
||||
["overhealing"] = 16,
|
||||
["absorbed"] = 17,
|
||||
["critical"] = 18
|
||||
["critical"] = 18,
|
||||
},
|
||||
["GENERIC_HEAL_ABSORBED"] = {
|
||||
["extraGUID"] = 15,
|
||||
@@ -52,44 +52,44 @@ local function Init()
|
||||
["extraSpellName"] = 20,
|
||||
["extraSchool"] = 21,
|
||||
["absorbedAmount"] = 22,
|
||||
["totalAmount"] = 23
|
||||
["totalAmount"] = 23,
|
||||
},
|
||||
["GENERIC_ENERGIZE"] = {
|
||||
["amount"] = 15,
|
||||
["overEnergize"] = 16,
|
||||
["powerType"] = 17
|
||||
["powerType"] = 17,
|
||||
},
|
||||
["GENERIC_DRAIN"] = {
|
||||
["amount"] = 15,
|
||||
["powerType"] = 16,
|
||||
["extraAmount"] = 17
|
||||
["extraAmount"] = 17,
|
||||
},
|
||||
["GENERIC_LEECH"] = {
|
||||
["amount"] = 15,
|
||||
["powerType"] = 16,
|
||||
["extraAmount"] = 17
|
||||
["extraAmount"] = 17,
|
||||
},
|
||||
["GENERIC_INTERRUPT"] = {
|
||||
["extraSpellId"] = 15,
|
||||
["extraSpellName"] = 16,
|
||||
["extraSchool"] = 17
|
||||
["extraSchool"] = 17,
|
||||
},
|
||||
["GENERIC_DISPEL"] = {
|
||||
["extraSpellId"] = 15,
|
||||
["extraSpellName"] = 16,
|
||||
["extraSchool"] = 17,
|
||||
["auraType"] = 18
|
||||
["auraType"] = 18,
|
||||
},
|
||||
["GENERIC_DISPEL_FAILED"] = {
|
||||
["extraSpellId"] = 15,
|
||||
["extraSpellName"] = 16,
|
||||
["extraSchool"] = 17
|
||||
["extraSchool"] = 17,
|
||||
},
|
||||
["GENERIC_STOLEN"] = {
|
||||
["extraSpellId"] = 15,
|
||||
["extraSpellName"] = 16,
|
||||
["extraSchool"] = 17,
|
||||
["auraType"] = 18
|
||||
["auraType"] = 18,
|
||||
},
|
||||
["GENERIC_EXTRA_ATTACKS"] = { ["amount"] = 15 },
|
||||
["GENERIC_AURA_APPLIED"] = { ["auraType"] = 15, ["amount"] = 16 },
|
||||
@@ -102,38 +102,32 @@ local function Init()
|
||||
["extraSpellId"] = 15,
|
||||
["extraSpellName"] = 16,
|
||||
["extraSchool"] = 17,
|
||||
["auraType"] = 18
|
||||
["auraType"] = 18,
|
||||
},
|
||||
["GENERIC_CAST_START"] = {},
|
||||
["GENERIC_CAST_SUCCESS"] = {},
|
||||
["GENERIC_CAST_FAILED"] = {}
|
||||
["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_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_DISPEL_FAILED"] = CLEUEventInfo["GENERIC_DISPEL_FAILED"]
|
||||
CLEUEventInfo["SWING_STOLEN"] = CLEUEventInfo["GENERIC_STOLEN"]
|
||||
CLEUEventInfo["SWING_EXTRA_ATTACKS"] =
|
||||
CLEUEventInfo["GENERIC_EXTRA_ATTACKS"]
|
||||
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_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_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"]
|
||||
@@ -141,28 +135,22 @@ local function Init()
|
||||
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_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_DISPEL_FAILED"] = CLEUEventInfo["GENERIC_DISPEL_FAILED"]
|
||||
CLEUEventInfo["RANGE_STOLEN"] = CLEUEventInfo["GENERIC_STOLEN"]
|
||||
CLEUEventInfo["RANGE_EXTRA_ATTACKS"] =
|
||||
CLEUEventInfo["GENERIC_EXTRA_ATTACKS"]
|
||||
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_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_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"]
|
||||
@@ -170,28 +158,22 @@ local function Init()
|
||||
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_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_DISPEL_FAILED"] = CLEUEventInfo["GENERIC_DISPEL_FAILED"]
|
||||
CLEUEventInfo["SPELL_STOLEN"] = CLEUEventInfo["GENERIC_STOLEN"]
|
||||
CLEUEventInfo["SPELL_EXTRA_ATTACKS"] =
|
||||
CLEUEventInfo["GENERIC_EXTRA_ATTACKS"]
|
||||
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_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_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"]
|
||||
@@ -199,39 +181,25 @@ local function Init()
|
||||
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_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_INTERRUPT"] = CLEUEventInfo["GENERIC_INTERRUPT"]
|
||||
CLEUEventInfo["SPELL_PERIODIC_DISPEL"] = CLEUEventInfo["GENERIC_DISPEL"]
|
||||
CLEUEventInfo["SPELL_PERIODIC_DISPEL_FAILED"] =
|
||||
CLEUEventInfo["GENERIC_DISPEL_FAILED"]
|
||||
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"]
|
||||
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 = {
|
||||
@@ -239,132 +207,88 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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,
|
||||
|
||||
@@ -380,9 +304,7 @@ local function Init()
|
||||
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
|
||||
if type(val) ~= "number" then return 0, "SpellId is not a number" end
|
||||
return val, nil
|
||||
end,
|
||||
--- Specific to subevents prefixed by:
|
||||
@@ -396,12 +318,8 @@ local function Init()
|
||||
---@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
|
||||
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:
|
||||
@@ -414,14 +332,9 @@ local function Init()
|
||||
---@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
|
||||
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,
|
||||
|
||||
@@ -451,15 +364,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
if type(val) ~= "number" then return 0, "Amount is not a number" end
|
||||
return val, nil
|
||||
end,
|
||||
--- Specific to subevents prefixed by:
|
||||
@@ -479,21 +387,12 @@ local function Init()
|
||||
---@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
|
||||
if not CLEUEventInfo[subevent] then
|
||||
return 0, "Subevent is not a valid event"
|
||||
end
|
||||
if not CLEUEventInfo[subevent]["overkill"] then
|
||||
return 0, "Overkill is nil or missing"
|
||||
end
|
||||
if err then return 0, string.format("Failed getting subevent due to: %s", err) end
|
||||
if not CLEUEventInfo[subevent] then return 0, "Subevent is not a valid event" end
|
||||
if not CLEUEventInfo[subevent]["overkill"] then return 0, "Overkill is nil or missing" 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
|
||||
if type(val) ~= "number" then return 0, "Overkill is not a number" end
|
||||
return val, nil
|
||||
end,
|
||||
--- Specific to subevents prefixed by:
|
||||
@@ -513,15 +412,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
if type(val) ~= "number" then return 0, "School is not a number" end
|
||||
return val, nil
|
||||
end,
|
||||
--- Specific to subevents prefixed by:
|
||||
@@ -543,17 +437,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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:
|
||||
@@ -575,17 +462,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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:
|
||||
@@ -608,17 +488,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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:
|
||||
@@ -640,17 +513,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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:
|
||||
@@ -670,17 +536,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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:
|
||||
@@ -700,17 +559,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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:
|
||||
@@ -731,17 +583,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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,
|
||||
|
||||
@@ -764,17 +609,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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,
|
||||
|
||||
@@ -797,17 +635,10 @@ local function Init()
|
||||
--- 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
|
||||
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
|
||||
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,
|
||||
|
||||
@@ -830,17 +661,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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,
|
||||
|
||||
@@ -861,17 +685,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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,
|
||||
|
||||
@@ -892,17 +709,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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,
|
||||
|
||||
@@ -923,17 +733,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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,
|
||||
|
||||
@@ -954,17 +757,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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,
|
||||
|
||||
@@ -989,17 +785,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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,
|
||||
|
||||
@@ -1025,17 +814,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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,
|
||||
|
||||
@@ -1061,17 +843,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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,
|
||||
|
||||
@@ -1092,17 +867,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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,
|
||||
|
||||
@@ -1123,17 +891,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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,
|
||||
|
||||
@@ -1158,17 +919,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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,
|
||||
|
||||
@@ -1190,17 +944,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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,
|
||||
|
||||
@@ -1229,17 +976,10 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
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,
|
||||
|
||||
@@ -1268,17 +1008,12 @@ local function Init()
|
||||
---@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
|
||||
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
|
||||
if type(val) ~= "number" then return 0, "AuraType is not a number" end
|
||||
return val, nil
|
||||
end
|
||||
end,
|
||||
}
|
||||
end
|
||||
|
||||
@@ -1286,7 +1021,5 @@ local frame = CreateFrame("Frame")
|
||||
frame:RegisterEvent("PLAYER_LOGIN")
|
||||
frame:RegisterEvent("PLAYER_ENTERING_WORLD")
|
||||
frame:RegisterEvent("GUILD_ROSTER_UPDATE")
|
||||
frame:SetScript("OnEvent", function(self, event, ...)
|
||||
Init()
|
||||
end)
|
||||
frame:SetScript("OnEvent", function(self, event, ...) Init() end)
|
||||
Init()
|
||||
|
@@ -53,8 +53,14 @@ function shared.CombatAlerter.Init()
|
||||
|
||||
if shared.stinkyTracker.stinkies and shared.stinkyTracker.stinkies[source] then
|
||||
if Heimdall_Data.config.combatAlerter.debug then
|
||||
print(string.format("[%s] Source is tracked stinky: %s (Already alerted: %s)", ModuleName, source,
|
||||
tostring(alerted[source] or false)))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Source is tracked stinky: %s (Already alerted: %s)",
|
||||
ModuleName,
|
||||
source,
|
||||
tostring(alerted[source] or false)
|
||||
)
|
||||
)
|
||||
end
|
||||
if alerted[source] then return end
|
||||
|
||||
@@ -63,8 +69,16 @@ function shared.CombatAlerter.Init()
|
||||
local zone, subZone = GetZoneText(), GetSubZoneText()
|
||||
|
||||
if Heimdall_Data.config.combatAlerter.debug then
|
||||
print(string.format("[%s] Player location: %s/%s at %.2f,%.2f", ModuleName, zone, subZone, x * 100,
|
||||
y * 100))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Player location: %s/%s at %.2f,%.2f",
|
||||
ModuleName,
|
||||
zone,
|
||||
subZone,
|
||||
x * 100,
|
||||
y * 100
|
||||
)
|
||||
)
|
||||
end
|
||||
|
||||
SetMapToCurrentZone()
|
||||
@@ -73,11 +87,14 @@ function shared.CombatAlerter.Init()
|
||||
|
||||
for _, channel in pairs(Heimdall_Data.config.combatAlerter.channels) do
|
||||
local locale = shared.GetLocaleForChannel(channel)
|
||||
local text = string.format(shared._L("combatAlerterInCombat", locale),
|
||||
local text = string.format(
|
||||
shared._L("combatAlerterInCombat", locale),
|
||||
source,
|
||||
shared._L("zone", locale), shared._L("subZone", locale),
|
||||
shared._L("zone", locale),
|
||||
shared._L("subZone", locale),
|
||||
tostring(areaId),
|
||||
x * 100, y * 100
|
||||
x * 100,
|
||||
y * 100
|
||||
)
|
||||
---@type Message
|
||||
local msg = {
|
||||
@@ -111,8 +128,6 @@ function shared.CombatAlerter.Init()
|
||||
alerted = {}
|
||||
end)
|
||||
|
||||
if Heimdall_Data.config.combatAlerter.debug then
|
||||
print(string.format("[%s] Module initialized", ModuleName))
|
||||
end
|
||||
if Heimdall_Data.config.combatAlerter.debug then print(string.format("[%s] Module initialized", ModuleName)) end
|
||||
print("[Heimdall] CombatAlerter loaded")
|
||||
end
|
||||
|
@@ -29,7 +29,7 @@ local helpMessages = {
|
||||
"9) note <name> i..j - lists notes from i to j for the character.",
|
||||
"10) note <name> delete i - deletes the i-th note for the character.",
|
||||
"11) note <name> delete i..j - deletes notes from i to j for the character.",
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
---@diagnostic disable-next-line: missing-fields
|
||||
@@ -51,16 +51,12 @@ function shared.Commander.Init()
|
||||
if #currentChunk + #word + 1 <= size then
|
||||
currentChunk = currentChunk .. (currentChunk == "" and word or " " .. word)
|
||||
else
|
||||
if #currentChunk > 0 then
|
||||
ret[#ret + 1] = currentChunk
|
||||
end
|
||||
if #currentChunk > 0 then ret[#ret + 1] = currentChunk end
|
||||
currentChunk = word
|
||||
end
|
||||
end
|
||||
|
||||
if #currentChunk > 0 then
|
||||
ret[#ret + 1] = currentChunk
|
||||
end
|
||||
if #currentChunk > 0 then ret[#ret + 1] = currentChunk end
|
||||
|
||||
return ret
|
||||
end
|
||||
@@ -69,9 +65,7 @@ function shared.Commander.Init()
|
||||
local function Count(arr)
|
||||
local ret = {}
|
||||
for _, player in pairs(arr) do
|
||||
if shared.Whoer.ShouldNotifyForZone(player.zone) then
|
||||
ret[player.zone] = (ret[player.zone] or 0) + 1
|
||||
end
|
||||
if shared.Whoer.ShouldNotifyForZone(player.zone) then ret[player.zone] = (ret[player.zone] or 0) + 1 end
|
||||
end
|
||||
local text = {}
|
||||
for zone, count in pairs(ret) do
|
||||
@@ -95,8 +89,13 @@ function shared.Commander.Init()
|
||||
local ret = {}
|
||||
for _, player in pairs(arr) do
|
||||
if shared.Whoer.ShouldNotifyForZone(player.zone) then
|
||||
ret[#ret + 1] = string.format("%s/%s (%s) %s", player.name, player.class, player.zone,
|
||||
player.stinky and "(!!!!)" or "")
|
||||
ret[#ret + 1] = string.format(
|
||||
"%s/%s (%s) %s",
|
||||
player.name,
|
||||
player.class,
|
||||
player.zone,
|
||||
player.stinky and "(!!!!)" or ""
|
||||
)
|
||||
end
|
||||
end
|
||||
if Heimdall_Data.config.commander.debug then
|
||||
@@ -119,9 +118,7 @@ function shared.Commander.Init()
|
||||
local function CountClass(arr)
|
||||
local ret = {}
|
||||
for _, player in pairs(arr) do
|
||||
if shared.Whoer.ShouldNotifyForZone(player.zone) then
|
||||
ret[player.class] = (ret[player.class] or 0) + 1
|
||||
end
|
||||
if shared.Whoer.ShouldNotifyForZone(player.zone) then ret[player.class] = (ret[player.class] or 0) + 1 end
|
||||
end
|
||||
local text = {}
|
||||
for class, count in pairs(ret) do
|
||||
@@ -144,36 +141,27 @@ function shared.Commander.Init()
|
||||
end
|
||||
local function CountClassPartitionedStinkies()
|
||||
if Heimdall_Data.config.commander.debug then
|
||||
print(string.format("[%s] Executing: CountClassPartitionedStinkies",
|
||||
ModuleName))
|
||||
print(string.format("[%s] Executing: CountClassPartitionedStinkies", ModuleName))
|
||||
end
|
||||
local res = CountClassPartitioned(HeimdallStinkies)
|
||||
if #res == 0 then
|
||||
return { "No stinkies found" }
|
||||
end
|
||||
if #res == 0 then return { "No stinkies found" } end
|
||||
return res
|
||||
end
|
||||
local function WhoPartitionedStinkies()
|
||||
if Heimdall_Data.config.commander.debug then
|
||||
print(string.format("[%s] Executing: WhoPartitionedStinkies",
|
||||
ModuleName))
|
||||
print(string.format("[%s] Executing: WhoPartitionedStinkies", ModuleName))
|
||||
shared.dumpTable(HeimdallStinkies)
|
||||
end
|
||||
local res = WhoPartitioned(HeimdallStinkies)
|
||||
if #res == 0 then
|
||||
return { "No stinkies found" }
|
||||
end
|
||||
if #res == 0 then return { "No stinkies found" } end
|
||||
return res
|
||||
end
|
||||
local function CountPartitionedStinkies()
|
||||
if Heimdall_Data.config.commander.debug then
|
||||
print(string.format("[%s] Executing: CountPartitionedStinkies",
|
||||
ModuleName))
|
||||
print(string.format("[%s] Executing: CountPartitionedStinkies", ModuleName))
|
||||
end
|
||||
local res = CountPartitioned(HeimdallStinkies)
|
||||
if #res == 0 then
|
||||
return { "No stinkies found" }
|
||||
end
|
||||
if #res == 0 then return { "No stinkies found" } end
|
||||
return res
|
||||
end
|
||||
local function HelpRu()
|
||||
@@ -190,26 +178,32 @@ function shared.Commander.Init()
|
||||
AcceptGroup()
|
||||
groupInviteFrame:UnregisterEvent("PARTY_INVITE_REQUEST")
|
||||
C_Timer.NewTimer(0.1, function()
|
||||
if Heimdall_Data.config.commander.debug then print(string.format("[%s] Click event triggered", ModuleName)) end
|
||||
if Heimdall_Data.config.commander.debug then
|
||||
print(string.format("[%s] Click event triggered", ModuleName))
|
||||
end
|
||||
_G["StaticPopup1Button1"]:Click()
|
||||
end, 1)
|
||||
end)
|
||||
local function JoinGroup()
|
||||
if Heimdall_Data.config.commander.debug then print(string.format("[%s] JoinGroup command received", ModuleName)) end
|
||||
if Heimdall_Data.config.commander.debug then
|
||||
print(string.format("[%s] JoinGroup command received", ModuleName))
|
||||
end
|
||||
groupInviteFrame:RegisterEvent("PARTY_INVITE_REQUEST")
|
||||
C_Timer.NewTimer(10, function()
|
||||
groupInviteFrame:UnregisterEvent("PARTY_INVITE_REQUEST")
|
||||
end, 1)
|
||||
C_Timer.NewTimer(10, function() groupInviteFrame:UnregisterEvent("PARTY_INVITE_REQUEST") end, 1)
|
||||
return { "+" }
|
||||
end
|
||||
local function LeaveGroup()
|
||||
if Heimdall_Data.config.commander.debug then print(string.format("[%s] LeaveGroup command received", ModuleName)) end
|
||||
if Heimdall_Data.config.commander.debug then
|
||||
print(string.format("[%s] LeaveGroup command received", ModuleName))
|
||||
end
|
||||
LeaveParty()
|
||||
return {}
|
||||
end
|
||||
---@param target string
|
||||
local function FollowTarget(target)
|
||||
if Heimdall_Data.config.commander.debug then print(string.format("[%s] Following target: %s", ModuleName, target)) end
|
||||
if Heimdall_Data.config.commander.debug then
|
||||
print(string.format("[%s] Following target: %s", ModuleName, target))
|
||||
end
|
||||
if not target then return end
|
||||
FollowUnit(target)
|
||||
return {}
|
||||
@@ -218,14 +212,12 @@ function shared.Commander.Init()
|
||||
---@param args string[]
|
||||
local function MacroTarget(args)
|
||||
if Heimdall_Data.config.commander.debug then
|
||||
print(string.format("[%s] Macroing: %s", ModuleName,
|
||||
strjoin(" ", unpack(args))))
|
||||
print(string.format("[%s] Macroing: %s", ModuleName, strjoin(" ", unpack(args))))
|
||||
end
|
||||
if #args < 2 or #args % 2 ~= 0 then
|
||||
if #args < 2 or #args % 2 ~= 0 then
|
||||
if Heimdall_Data.config.commander.debug then
|
||||
print(string.format(
|
||||
"[%s] Invalid number of arguments for MacroTarget", ModuleName))
|
||||
print(string.format("[%s] Invalid number of arguments for MacroTarget", ModuleName))
|
||||
end
|
||||
return {}
|
||||
end
|
||||
@@ -243,7 +235,7 @@ function shared.Commander.Init()
|
||||
name = name,
|
||||
class = class or "unknown",
|
||||
seenAt = GetTime(),
|
||||
hostile = true
|
||||
hostile = true,
|
||||
}
|
||||
end
|
||||
return {}
|
||||
@@ -255,15 +247,15 @@ function shared.Commander.Init()
|
||||
---@field callback fun(...: any): string[]
|
||||
|
||||
local commands = {
|
||||
{ keywordRe = "^who$", commanderOnly = false, callback = WhoPartitionedStinkies },
|
||||
{ keywordRe = "^howmany$", commanderOnly = false, callback = CountPartitionedStinkies },
|
||||
{ keywordRe = "^classes$", commanderOnly = false, callback = CountClassPartitionedStinkies },
|
||||
{ keywordRe = "^help$", commanderOnly = false, callback = HelpRu },
|
||||
{ keywordRe = "^helpen$", commanderOnly = false, callback = HelpEn },
|
||||
{ keywordRe = "^joingroup$", commanderOnly = false, callback = JoinGroup },
|
||||
{ keywordRe = "^who$", commanderOnly = false, callback = WhoPartitionedStinkies },
|
||||
{ keywordRe = "^howmany$", commanderOnly = false, callback = CountPartitionedStinkies },
|
||||
{ keywordRe = "^classes$", commanderOnly = false, callback = CountClassPartitionedStinkies },
|
||||
{ keywordRe = "^help$", commanderOnly = false, callback = HelpRu },
|
||||
{ keywordRe = "^helpen$", commanderOnly = false, callback = HelpEn },
|
||||
{ keywordRe = "^joingroup$", commanderOnly = false, callback = JoinGroup },
|
||||
{ keywordRe = "^leavegroup$", commanderOnly = false, callback = LeaveGroup },
|
||||
{ keywordRe = "^follow$", commanderOnly = false, callback = FollowTarget },
|
||||
{ keywordRe = "^macro", commanderOnly = false, callback = MacroTarget },
|
||||
{ keywordRe = "^follow$", commanderOnly = false, callback = FollowTarget },
|
||||
{ keywordRe = "^macro", commanderOnly = false, callback = MacroTarget },
|
||||
}
|
||||
|
||||
local commanderChannelFrame = CreateFrame("Frame")
|
||||
@@ -290,8 +282,14 @@ function shared.Commander.Init()
|
||||
end
|
||||
if not ok then
|
||||
if Heimdall_Data.config.commander.debug then
|
||||
print(string.format("[%s] Channel name '%s' does not match any of the channels '%s'", ModuleName,
|
||||
channelname, table.concat(Heimdall_Data.config.commander.channels, ", ")))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Channel name '%s' does not match any of the channels '%s'",
|
||||
ModuleName,
|
||||
channelname,
|
||||
table.concat(Heimdall_Data.config.commander.channels, ", ")
|
||||
)
|
||||
)
|
||||
end
|
||||
return
|
||||
end
|
||||
@@ -307,10 +305,13 @@ function shared.Commander.Init()
|
||||
if Heimdall_Data.config.commander.debug then
|
||||
print(string.format("[%s] Command match: %s = %s", ModuleName, command.keywordRe, tostring(enabled)))
|
||||
end
|
||||
if enabled and
|
||||
(not command.commanderOnly
|
||||
or (command.commanderOnly
|
||||
and sender == Heimdall_Data.config.commander.commander)) then
|
||||
if
|
||||
enabled
|
||||
and (
|
||||
not command.commanderOnly
|
||||
or (command.commanderOnly and sender == Heimdall_Data.config.commander.commander)
|
||||
)
|
||||
then
|
||||
if msg:match(command.keywordRe) then
|
||||
local messages = command.callback({ strsplit(",", msg) })
|
||||
if Heimdall_Data.config.commander.debug then
|
||||
@@ -321,7 +322,7 @@ function shared.Commander.Init()
|
||||
local msg = {
|
||||
channel = "C",
|
||||
data = channelname,
|
||||
message = message
|
||||
message = message,
|
||||
}
|
||||
if Heimdall_Data.config.commander.debug then
|
||||
print(string.format("[%s] Queuing message", ModuleName))
|
||||
|
4632
Modules/Config.lua
4632
Modules/Config.lua
File diff suppressed because it is too large
Load Diff
@@ -5,6 +5,4 @@ local ModuleName = "Configurator"
|
||||
|
||||
---@diagnostic disable-next-line: missing-fields
|
||||
shared.Configurator = {}
|
||||
function shared.Configurator.Init()
|
||||
print("[Heimdall] Configurator module loaded")
|
||||
end
|
||||
function shared.Configurator.Init() print("[Heimdall] Configurator module loaded") end
|
||||
|
@@ -16,8 +16,15 @@ function shared.DeathReporter.Init()
|
||||
---@param spellName string
|
||||
local function RegisterDeath(source, destination, spellName)
|
||||
if Heimdall_Data.config.deathReporter.debug then
|
||||
print(string.format("[%s] Processing death event - Source: %s, Target: %s, Spell: %s",
|
||||
ModuleName, source, destination, spellName))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Processing death event - Source: %s, Target: %s, Spell: %s",
|
||||
ModuleName,
|
||||
source,
|
||||
destination,
|
||||
spellName
|
||||
)
|
||||
)
|
||||
end
|
||||
|
||||
if not Heimdall_Data.config.deathReporter.enabled then
|
||||
@@ -27,27 +34,52 @@ function shared.DeathReporter.Init()
|
||||
return
|
||||
end
|
||||
|
||||
if recentDeaths[destination] and GetTime() - recentDeaths[destination] < Heimdall_Data.config.deathReporter.throttle then
|
||||
if
|
||||
recentDeaths[destination]
|
||||
and GetTime() - recentDeaths[destination] < Heimdall_Data.config.deathReporter.throttle
|
||||
then
|
||||
if Heimdall_Data.config.deathReporter.debug then
|
||||
local timeLeft = Heimdall_Data.config.deathReporter.throttle - (GetTime() - recentDeaths[destination])
|
||||
print(string.format("[%s] Death report throttled for %s (%.1f seconds remaining)",
|
||||
ModuleName, destination, timeLeft))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Death report throttled for %s (%.1f seconds remaining)",
|
||||
ModuleName,
|
||||
destination,
|
||||
timeLeft
|
||||
)
|
||||
)
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
if recentDuels[destination] and GetTime() - recentDuels[destination] < Heimdall_Data.config.deathReporter.duelThrottle then
|
||||
if
|
||||
recentDuels[destination]
|
||||
and GetTime() - recentDuels[destination] < Heimdall_Data.config.deathReporter.duelThrottle
|
||||
then
|
||||
if Heimdall_Data.config.deathReporter.debug then
|
||||
print(string.format("[%s] Ignoring death report - Recent duel detected for target: %s", ModuleName,
|
||||
destination))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Ignoring death report - Recent duel detected for target: %s",
|
||||
ModuleName,
|
||||
destination
|
||||
)
|
||||
)
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
if recentDuels[source] and GetTime() - recentDuels[source] < Heimdall_Data.config.deathReporter.duelThrottle then
|
||||
if
|
||||
recentDuels[source]
|
||||
and GetTime() - recentDuels[source] < Heimdall_Data.config.deathReporter.duelThrottle
|
||||
then
|
||||
if Heimdall_Data.config.deathReporter.debug then
|
||||
print(string.format("[%s] Ignoring death report - Recent duel detected for source: %s", ModuleName,
|
||||
source))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Ignoring death report - Recent duel detected for source: %s",
|
||||
ModuleName,
|
||||
source
|
||||
)
|
||||
)
|
||||
end
|
||||
return
|
||||
end
|
||||
@@ -58,25 +90,48 @@ function shared.DeathReporter.Init()
|
||||
recentDeaths[destination] = GetTime()
|
||||
|
||||
C_Timer.NewTimer(3, function()
|
||||
if recentDuels[destination] and GetTime() - recentDuels[destination] < Heimdall_Data.config.deathReporter.duelThrottle then
|
||||
if
|
||||
recentDuels[destination]
|
||||
and GetTime() - recentDuels[destination] < Heimdall_Data.config.deathReporter.duelThrottle
|
||||
then
|
||||
if Heimdall_Data.config.deathReporter.debug then
|
||||
print(string.format("[%s] Cancelling delayed death report - Recent duel detected for: %s", ModuleName,
|
||||
destination))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Cancelling delayed death report - Recent duel detected for: %s",
|
||||
ModuleName,
|
||||
destination
|
||||
)
|
||||
)
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
if recentDuels[source] and GetTime() - recentDuels[source] < Heimdall_Data.config.deathReporter.duelThrottle then
|
||||
if
|
||||
recentDuels[source]
|
||||
and GetTime() - recentDuels[source] < Heimdall_Data.config.deathReporter.duelThrottle
|
||||
then
|
||||
if Heimdall_Data.config.deathReporter.debug then
|
||||
print(string.format("[%s] Cancelling delayed death report - Recent duel detected for: %s", ModuleName,
|
||||
source))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Cancelling delayed death report - Recent duel detected for: %s",
|
||||
ModuleName,
|
||||
source
|
||||
)
|
||||
)
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
if Heimdall_Data.config.deathReporter.debug then
|
||||
print(string.format("[%s] Sending death report - %s killed %s with %s",
|
||||
ModuleName, source, destination, spellName))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Sending death report - %s killed %s with %s",
|
||||
ModuleName,
|
||||
source,
|
||||
destination,
|
||||
spellName
|
||||
)
|
||||
)
|
||||
end
|
||||
|
||||
local zone, subzone = GetZoneText() or "Unknown", GetSubZoneText() or "Unknown"
|
||||
@@ -95,18 +150,22 @@ function shared.DeathReporter.Init()
|
||||
|
||||
for _, channel in pairs(Heimdall_Data.config.deathReporter.channels) do
|
||||
local locale = shared.GetLocaleForChannel(channel)
|
||||
local text = string.format(shared._L("killed", locale),
|
||||
local text = string.format(
|
||||
shared._L("killed", locale),
|
||||
source,
|
||||
destination,
|
||||
shared._L(spellName, locale),
|
||||
shared._L(zone, locale), shared._L(subzone, locale),
|
||||
shared._L(zone, locale),
|
||||
shared._L(subzone, locale),
|
||||
zoneId,
|
||||
x * 100, y * 100)
|
||||
x * 100,
|
||||
y * 100
|
||||
)
|
||||
---@type Message
|
||||
local msg = {
|
||||
channel = "C",
|
||||
data = channel,
|
||||
message = text
|
||||
message = text,
|
||||
}
|
||||
if Heimdall_Data.config.deathReporter.debug then
|
||||
print(string.format("[%s] Queuing death report message", ModuleName))
|
||||
@@ -162,7 +221,9 @@ function shared.DeathReporter.Init()
|
||||
local source, destination = string.match(msg, "([^ ]+) has defeated ([^ ]+) in a duel")
|
||||
if Heimdall_Data.config.deathReporter.debug then
|
||||
print(string.format("[%s] Received system message: %s", ModuleName, msg))
|
||||
print(string.format("[%s] Source: %s, Destination: %s", ModuleName, tostring(source), tostring(destination)))
|
||||
print(
|
||||
string.format("[%s] Source: %s, Destination: %s", ModuleName, tostring(source), tostring(destination))
|
||||
)
|
||||
end
|
||||
if not source or not destination then return end
|
||||
source = string.match(source, "([^-]+)")
|
||||
@@ -178,8 +239,14 @@ function shared.DeathReporter.Init()
|
||||
end)
|
||||
|
||||
if Heimdall_Data.config.deathReporter.debug then
|
||||
print(string.format("[%s] Module initialized with throttle: %.1fs, duel throttle: %.1fs",
|
||||
ModuleName, Heimdall_Data.config.deathReporter.throttle, Heimdall_Data.config.deathReporter.duelThrottle))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Module initialized with throttle: %.1fs, duel throttle: %.1fs",
|
||||
ModuleName,
|
||||
Heimdall_Data.config.deathReporter.throttle,
|
||||
Heimdall_Data.config.deathReporter.duelThrottle
|
||||
)
|
||||
)
|
||||
end
|
||||
print("[Heimdall] DeathReporter loaded")
|
||||
end
|
||||
|
@@ -44,8 +44,13 @@ function shared.Dueler.Init()
|
||||
end)
|
||||
|
||||
if Heimdall_Data.config.dueler.debug then
|
||||
print(string.format("[%s] Module initialized with auto-decline: %s", ModuleName,
|
||||
tostring(Heimdall_Data.config.dueler.declineOther)))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Module initialized with auto-decline: %s",
|
||||
ModuleName,
|
||||
tostring(Heimdall_Data.config.dueler.declineOther)
|
||||
)
|
||||
)
|
||||
end
|
||||
print("[Heimdall] Dueler loaded")
|
||||
end
|
||||
|
@@ -10,15 +10,13 @@ if not shared.dumpTable then
|
||||
print(tostring(table))
|
||||
return
|
||||
end
|
||||
if depth == nil then
|
||||
depth = 0
|
||||
end
|
||||
if (depth > 200) then
|
||||
if depth == nil then depth = 0 end
|
||||
if depth > 200 then
|
||||
print("Error: Depth > 200 in dumpTable()")
|
||||
return
|
||||
end
|
||||
for k, v in pairs(table) do
|
||||
if (type(v) == "table") then
|
||||
if type(v) == "table" then
|
||||
print(string.rep(" ", depth) .. k .. ":")
|
||||
shared.dumpTable(v, depth + 1)
|
||||
else
|
||||
|
@@ -54,8 +54,6 @@ function shared.Echoer.Init()
|
||||
end
|
||||
end)
|
||||
|
||||
if Heimdall_Data.config.echoer.debug then
|
||||
print(string.format("[%s] Module initialized", ModuleName))
|
||||
end
|
||||
if Heimdall_Data.config.echoer.debug then print(string.format("[%s] Module initialized", ModuleName)) end
|
||||
print("[Heimdall] Echoer loaded")
|
||||
end
|
||||
|
@@ -55,8 +55,6 @@ function shared.Emoter.Init()
|
||||
end
|
||||
end)
|
||||
|
||||
if Heimdall_Data.config.emoter.debug then
|
||||
print(string.format("[%s] Module initialized", ModuleName))
|
||||
end
|
||||
if Heimdall_Data.config.emoter.debug then print(string.format("[%s] Module initialized", ModuleName)) end
|
||||
print("[Heimdall] Emoter loaded")
|
||||
end
|
||||
|
@@ -8,7 +8,7 @@ shared.Inviter = {}
|
||||
function shared.Inviter.Init()
|
||||
if type(Heimdall_Data.config.inviter.listeningChannel) == "string" then
|
||||
Heimdall_Data.config.inviter.listeningChannel = {
|
||||
[Heimdall_Data.config.inviter.listeningChannel] = true
|
||||
[Heimdall_Data.config.inviter.listeningChannel] = true,
|
||||
}
|
||||
end
|
||||
---@type Timer
|
||||
@@ -36,7 +36,9 @@ function shared.Inviter.Init()
|
||||
if Heimdall_Data.config.inviter.agentsAssist then
|
||||
if Heimdall_Data.config.inviter.debug then
|
||||
local agentCount = 0
|
||||
for _ in pairs(Heimdall_Data.config.agents) do agentCount = agentCount + 1 end
|
||||
for _ in pairs(Heimdall_Data.config.agents) do
|
||||
agentCount = agentCount + 1
|
||||
end
|
||||
print(string.format("[%s] Processing %d agents for assistant promotion", ModuleName, agentCount))
|
||||
end
|
||||
|
||||
@@ -100,8 +102,11 @@ function shared.Inviter.Init()
|
||||
local frame = FindPlayerRaidFrame(name)
|
||||
if frame then
|
||||
playerButtons[name] = frame
|
||||
local button = framePool[frame.unit] or CreateFrame("Button",
|
||||
string.format("HeimdallKickButton%s", frame.unit, frame, "SecureActionButtonTemplate"))
|
||||
local button = framePool[frame.unit]
|
||||
or CreateFrame(
|
||||
"Button",
|
||||
string.format("HeimdallKickButton%s", frame.unit, frame, "SecureActionButtonTemplate")
|
||||
)
|
||||
framePool[frame.unit] = button
|
||||
|
||||
button:SetSize(frame.UNIT_WIDTH / 2, frame.UNIT_HEIGHT / 2)
|
||||
@@ -142,9 +147,7 @@ function shared.Inviter.Init()
|
||||
groupMembers[name] = now
|
||||
else
|
||||
local online = UnitIsConnected(unit)
|
||||
if online then
|
||||
groupMembers[name] = now
|
||||
end
|
||||
if online then groupMembers[name] = now end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -221,9 +224,7 @@ function shared.Inviter.Init()
|
||||
return
|
||||
end
|
||||
if msg == Heimdall_Data.config.inviter.keyword then
|
||||
if Heimdall_Data.config.inviter.debug then
|
||||
print(string.format("[%s] Inviting %s", ModuleName, sender))
|
||||
end
|
||||
if Heimdall_Data.config.inviter.debug then print(string.format("[%s] Inviting %s", ModuleName, sender)) end
|
||||
InviteUnit(sender)
|
||||
else
|
||||
if Heimdall_Data.config.inviter.debug then
|
||||
@@ -233,17 +234,25 @@ function shared.Inviter.Init()
|
||||
end)
|
||||
|
||||
if Heimdall_Data.config.inviter.debug then
|
||||
print(string.format("[%s] Module initialized - All assist: %s, Agents assist: %s",
|
||||
ModuleName,
|
||||
tostring(Heimdall_Data.config.inviter.allAssist),
|
||||
tostring(Heimdall_Data.config.inviter.agentsAssist)))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Module initialized - All assist: %s, Agents assist: %s",
|
||||
ModuleName,
|
||||
tostring(Heimdall_Data.config.inviter.allAssist),
|
||||
tostring(Heimdall_Data.config.inviter.agentsAssist)
|
||||
)
|
||||
)
|
||||
end
|
||||
|
||||
if Heimdall_Data.config.inviter.debug then
|
||||
print(string.format("[%s] Module initialized - All assist: %s, Agents assist: %s",
|
||||
ModuleName,
|
||||
tostring(Heimdall_Data.config.inviter.allAssist),
|
||||
tostring(Heimdall_Data.config.inviter.agentsAssist)))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Module initialized - All assist: %s, Agents assist: %s",
|
||||
ModuleName,
|
||||
tostring(Heimdall_Data.config.inviter.allAssist),
|
||||
tostring(Heimdall_Data.config.inviter.agentsAssist)
|
||||
)
|
||||
)
|
||||
end
|
||||
print("[Heimdall] Inviter loaded")
|
||||
end
|
||||
|
@@ -6,102 +6,96 @@ local ModuleName = "Macroer"
|
||||
---@diagnostic disable-next-line: missing-fields
|
||||
shared.Macroer = {}
|
||||
function shared.Macroer.Init()
|
||||
---@class stinky
|
||||
---@field name string
|
||||
---@field class string
|
||||
---@field seenAt number
|
||||
---@field hostile boolean
|
||||
---@class stinky
|
||||
---@field name string
|
||||
---@field class string
|
||||
---@field seenAt number
|
||||
---@field hostile boolean
|
||||
|
||||
local function FindOrCreateMacro(macroName)
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] Finding or creating macro: %s", ModuleName, macroName))
|
||||
end
|
||||
local idx = GetMacroIndexByName(macroName)
|
||||
if idx == 0 then
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] Creating new macro: %s", ModuleName, macroName))
|
||||
end
|
||||
CreateMacro(macroName, "INV_Misc_QuestionMark", "")
|
||||
end
|
||||
idx = GetMacroIndexByName(macroName)
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] Macro index: %d", ModuleName, idx))
|
||||
end
|
||||
return idx
|
||||
end
|
||||
local function FindOrCreateMacro(macroName)
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] Finding or creating macro: %s", ModuleName, macroName))
|
||||
end
|
||||
local idx = GetMacroIndexByName(macroName)
|
||||
if idx == 0 then
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] Creating new macro: %s", ModuleName, macroName))
|
||||
end
|
||||
CreateMacro(macroName, "INV_Misc_QuestionMark", "")
|
||||
end
|
||||
idx = GetMacroIndexByName(macroName)
|
||||
if Heimdall_Data.config.macroer.debug then print(string.format("[%s] Macro index: %d", ModuleName, idx)) end
|
||||
return idx
|
||||
end
|
||||
|
||||
---@param stinkies table<string, stinky>
|
||||
local function FixMacro(stinkies)
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] Fixing macro with %d stinkies", ModuleName, #stinkies))
|
||||
end
|
||||
if not Heimdall_Data.config.macroer.enabled then
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] Module disabled, skipping macro update", ModuleName))
|
||||
end
|
||||
return
|
||||
end
|
||||
if InCombatLockdown() then
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] In combat, skipping macro update", ModuleName))
|
||||
end
|
||||
return
|
||||
end
|
||||
---@param stinkies table<string, stinky>
|
||||
local function FixMacro(stinkies)
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] Fixing macro with %d stinkies", ModuleName, #stinkies))
|
||||
end
|
||||
if not Heimdall_Data.config.macroer.enabled then
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] Module disabled, skipping macro update", ModuleName))
|
||||
end
|
||||
return
|
||||
end
|
||||
if InCombatLockdown() then
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] In combat, skipping macro update", ModuleName))
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
local priorityMap = {}
|
||||
for priority, className in ipairs(Heimdall_Data.config.macroer.priority) do
|
||||
priorityMap[className] = priority
|
||||
end
|
||||
local minPriority = #Heimdall_Data.config.macroer.priority + 1
|
||||
local priorityMap = {}
|
||||
for priority, className in ipairs(Heimdall_Data.config.macroer.priority) do
|
||||
priorityMap[className] = priority
|
||||
end
|
||||
local minPriority = #Heimdall_Data.config.macroer.priority + 1
|
||||
|
||||
local sortedStinkies = {}
|
||||
for _, stinky in pairs(stinkies) do
|
||||
if not Heimdall_Data.config.agents[stinky.name] then
|
||||
sortedStinkies[#sortedStinkies + 1] = stinky
|
||||
end
|
||||
end
|
||||
local sortedStinkies = {}
|
||||
for _, stinky in pairs(stinkies) do
|
||||
if not Heimdall_Data.config.agents[stinky.name] then sortedStinkies[#sortedStinkies + 1] = stinky end
|
||||
end
|
||||
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] Processing %d non-agent stinkies", ModuleName, #sortedStinkies))
|
||||
end
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] Processing %d non-agent stinkies", ModuleName, #sortedStinkies))
|
||||
end
|
||||
|
||||
table.sort(sortedStinkies, function(a, b)
|
||||
local aPriority = priorityMap[a.class] or minPriority
|
||||
local bPriority = priorityMap[b.class] or minPriority
|
||||
return aPriority > bPriority
|
||||
end)
|
||||
table.sort(sortedStinkies, function(a, b)
|
||||
local aPriority = priorityMap[a.class] or minPriority
|
||||
local bPriority = priorityMap[b.class] or minPriority
|
||||
return aPriority > bPriority
|
||||
end)
|
||||
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] Sorted stinkies: %d", ModuleName, #sortedStinkies))
|
||||
shared.dumpTable(sortedStinkies)
|
||||
end
|
||||
local lines = { "/targetenemy" }
|
||||
for _, stinky in pairs(sortedStinkies) do
|
||||
if stinky.seenAt > GetTime() - 600 then
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] Adding target macro for: %s", ModuleName, stinky.name))
|
||||
end
|
||||
lines[#lines + 1] = string.format("/tar %s", stinky.name)
|
||||
end
|
||||
end
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] Sorted stinkies: %d", ModuleName, #sortedStinkies))
|
||||
shared.dumpTable(sortedStinkies)
|
||||
end
|
||||
local lines = { "/targetenemy" }
|
||||
for _, stinky in pairs(sortedStinkies) do
|
||||
if stinky.seenAt > GetTime() - 600 then
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] Adding target macro for: %s", ModuleName, stinky.name))
|
||||
end
|
||||
lines[#lines + 1] = string.format("/tar %s", stinky.name)
|
||||
end
|
||||
end
|
||||
|
||||
local idx = FindOrCreateMacro("HeimdallTarget")
|
||||
local body = strjoin("\n", unpack(lines))
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] Updating macro with %d lines", ModuleName, #lines))
|
||||
end
|
||||
EditMacro(idx, "HeimdallTarget", "INV_Misc_QuestionMark", body)
|
||||
end
|
||||
local idx = FindOrCreateMacro("HeimdallTarget")
|
||||
local body = strjoin("\n", unpack(lines))
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] Updating macro with %d lines", ModuleName, #lines))
|
||||
end
|
||||
EditMacro(idx, "HeimdallTarget", "INV_Misc_QuestionMark", body)
|
||||
end
|
||||
|
||||
shared.stinkyTracker.stinkies:onChange(function(value)
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] Stinkies changed, updating macro", ModuleName))
|
||||
end
|
||||
FixMacro(value)
|
||||
end)
|
||||
shared.stinkyTracker.stinkies:onChange(function(value)
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] Stinkies changed, updating macro", ModuleName))
|
||||
end
|
||||
FixMacro(value)
|
||||
end)
|
||||
|
||||
if Heimdall_Data.config.macroer.debug then
|
||||
print(string.format("[%s] Module initialized", ModuleName))
|
||||
end
|
||||
print("[Heimdall] Macroer loaded")
|
||||
if Heimdall_Data.config.macroer.debug then print(string.format("[%s] Module initialized", ModuleName)) end
|
||||
print("[Heimdall] Macroer loaded")
|
||||
end
|
||||
|
@@ -56,8 +56,14 @@ function shared.Messenger.Init()
|
||||
end
|
||||
|
||||
if Heimdall_Data.config.messenger.debug then
|
||||
print(string.format("[%s] Processing message - Channel: %s, Data: %s", ModuleName,
|
||||
message.channel or "nil", message.data or "nil"))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Processing message - Channel: %s, Data: %s",
|
||||
ModuleName,
|
||||
message.channel or "nil",
|
||||
message.data or "nil"
|
||||
)
|
||||
)
|
||||
print(string.format("[%s] Message content: %s", ModuleName, message.message or "nil"))
|
||||
end
|
||||
|
||||
@@ -89,8 +95,14 @@ function shared.Messenger.Init()
|
||||
|
||||
if message.channel == "CHANNEL" and message.data and string.match(message.data, "%D") then
|
||||
if Heimdall_Data.config.messenger.debug then
|
||||
print(string.format("[%s] Processing channel message: '%s' to '%s'", ModuleName, message.message,
|
||||
message.data))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Processing channel message: '%s' to '%s'",
|
||||
ModuleName,
|
||||
message.message,
|
||||
message.data
|
||||
)
|
||||
)
|
||||
end
|
||||
local channelId = GetChannelName(message.data)
|
||||
if channelId == 0 then
|
||||
@@ -126,8 +138,15 @@ function shared.Messenger.Init()
|
||||
end
|
||||
|
||||
if Heimdall_Data.config.messenger.debug then
|
||||
print(string.format("[%s] Sending message: '%s' to %s:%s", ModuleName, message.message, message.channel,
|
||||
message.data))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Sending message: '%s' to %s:%s",
|
||||
ModuleName,
|
||||
message.message,
|
||||
message.channel,
|
||||
message.data
|
||||
)
|
||||
)
|
||||
end
|
||||
if string.len(message.message) > 255 then
|
||||
print(string.format("[%s] Message too long!!!!: %s", ModuleName, message.message))
|
||||
@@ -146,8 +165,13 @@ function shared.Messenger.Init()
|
||||
end
|
||||
|
||||
if Heimdall_Data.config.messenger.debug then
|
||||
print(string.format("[%s] Module initialized with interval: %s", ModuleName,
|
||||
Heimdall_Data.config.messenger.interval))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Module initialized with interval: %s",
|
||||
ModuleName,
|
||||
Heimdall_Data.config.messenger.interval
|
||||
)
|
||||
)
|
||||
end
|
||||
print("[Heimdall] Messenger loaded")
|
||||
end
|
||||
|
@@ -110,8 +110,13 @@ function shared.MinimapTagger.Init()
|
||||
end
|
||||
if Heimdall_Data.config.minimapTagger.alertSound then
|
||||
if Heimdall_Data.config.minimapTagger.debug then
|
||||
print(string.format("[%s] Playing alert sound: %s", ModuleName,
|
||||
Heimdall_Data.config.minimapTagger.alertSoundFile))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Playing alert sound: %s",
|
||||
ModuleName,
|
||||
Heimdall_Data.config.minimapTagger.alertSoundFile
|
||||
)
|
||||
)
|
||||
end
|
||||
if muteAlertUntil > GetTime() then
|
||||
if Heimdall_Data.config.minimapTagger.debug then
|
||||
@@ -121,14 +126,17 @@ function shared.MinimapTagger.Init()
|
||||
muteAlertUntil = GetTime() + Heimdall_Data.config.minimapTagger.alertSoundThrottle
|
||||
local ok = PlaySoundFile(SoundRoot .. Heimdall_Data.config.minimapTagger.alertSoundFile, "Master")
|
||||
if not ok and Heimdall_Data.config.minimapTagger.debug then
|
||||
print(string.format("[%s] Failed to play alert sound: %s", ModuleName,
|
||||
Heimdall_Data.config.minimapTagger.alertSoundFile))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Failed to play alert sound: %s",
|
||||
ModuleName,
|
||||
Heimdall_Data.config.minimapTagger.alertSoundFile
|
||||
)
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
if doTag then
|
||||
PlantFrame(x, y, frame, scale, Heimdall_Data.config.minimapTagger.alertTTL)
|
||||
end
|
||||
if doTag then PlantFrame(x, y, frame, scale, Heimdall_Data.config.minimapTagger.alertTTL) end
|
||||
end
|
||||
--endregion
|
||||
|
||||
@@ -166,8 +174,13 @@ function shared.MinimapTagger.Init()
|
||||
end
|
||||
if Heimdall_Data.config.minimapTagger.tagSound then
|
||||
if Heimdall_Data.config.minimapTagger.debug then
|
||||
print(string.format("[%s] Playing tag sound: %s", ModuleName,
|
||||
Heimdall_Data.config.minimapTagger.tagSoundFile))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Playing tag sound: %s",
|
||||
ModuleName,
|
||||
Heimdall_Data.config.minimapTagger.tagSoundFile
|
||||
)
|
||||
)
|
||||
end
|
||||
if muteTagUntil > GetTime() then
|
||||
if Heimdall_Data.config.minimapTagger.debug then
|
||||
@@ -177,14 +190,17 @@ function shared.MinimapTagger.Init()
|
||||
muteTagUntil = GetTime() + Heimdall_Data.config.minimapTagger.tagSoundThrottle
|
||||
local ok = PlaySoundFile(SoundRoot .. Heimdall_Data.config.minimapTagger.tagSoundFile, "Master")
|
||||
if not ok and Heimdall_Data.config.minimapTagger.debug then
|
||||
print(string.format("[%s] Failed to play tag sound: %s", ModuleName,
|
||||
Heimdall_Data.config.minimapTagger.tagSoundFile))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Failed to play tag sound: %s",
|
||||
ModuleName,
|
||||
Heimdall_Data.config.minimapTagger.tagSoundFile
|
||||
)
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
if doTag then
|
||||
PlantFrame(x, y, frame, scale, Heimdall_Data.config.minimapTagger.tagTTL)
|
||||
end
|
||||
if doTag then PlantFrame(x, y, frame, scale, Heimdall_Data.config.minimapTagger.tagTTL) end
|
||||
end
|
||||
--endregion
|
||||
|
||||
@@ -222,8 +238,13 @@ function shared.MinimapTagger.Init()
|
||||
end
|
||||
if Heimdall_Data.config.minimapTagger.combatSound then
|
||||
if Heimdall_Data.config.minimapTagger.debug then
|
||||
print(string.format("[%s] Playing combat sound: %s", ModuleName,
|
||||
Heimdall_Data.config.minimapTagger.combatSoundFile))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Playing combat sound: %s",
|
||||
ModuleName,
|
||||
Heimdall_Data.config.minimapTagger.combatSoundFile
|
||||
)
|
||||
)
|
||||
end
|
||||
if muteCombatUntil > GetTime() then
|
||||
if Heimdall_Data.config.minimapTagger.debug then
|
||||
@@ -233,14 +254,17 @@ function shared.MinimapTagger.Init()
|
||||
muteCombatUntil = GetTime() + Heimdall_Data.config.minimapTagger.combatSoundThrottle
|
||||
local ok = PlaySoundFile(SoundRoot .. Heimdall_Data.config.minimapTagger.combatSoundFile, "Master")
|
||||
if not ok and Heimdall_Data.config.minimapTagger.debug then
|
||||
print(string.format("[%s] Failed to play combat sound: %s", ModuleName,
|
||||
Heimdall_Data.config.minimapTagger.combatSoundFile))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Failed to play combat sound: %s",
|
||||
ModuleName,
|
||||
Heimdall_Data.config.minimapTagger.combatSoundFile
|
||||
)
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
if doTag then
|
||||
PlantFrame(x, y, frame, scale, Heimdall_Data.config.minimapTagger.combatTTL)
|
||||
end
|
||||
if doTag then PlantFrame(x, y, frame, scale, Heimdall_Data.config.minimapTagger.combatTTL) end
|
||||
end
|
||||
--endregion
|
||||
|
||||
@@ -278,8 +302,13 @@ function shared.MinimapTagger.Init()
|
||||
end
|
||||
if Heimdall_Data.config.minimapTagger.helpSound then
|
||||
if Heimdall_Data.config.minimapTagger.debug then
|
||||
print(string.format("[%s] Playing help sound: %s", ModuleName,
|
||||
Heimdall_Data.config.minimapTagger.helpSoundFile))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Playing help sound: %s",
|
||||
ModuleName,
|
||||
Heimdall_Data.config.minimapTagger.helpSoundFile
|
||||
)
|
||||
)
|
||||
end
|
||||
if muteHelpUntil > GetTime() then
|
||||
if Heimdall_Data.config.minimapTagger.debug then
|
||||
@@ -289,14 +318,17 @@ function shared.MinimapTagger.Init()
|
||||
muteHelpUntil = GetTime() + Heimdall_Data.config.minimapTagger.helpSoundThrottle
|
||||
local ok = PlaySoundFile(SoundRoot .. Heimdall_Data.config.minimapTagger.helpSoundFile, "Master")
|
||||
if not ok and Heimdall_Data.config.minimapTagger.debug then
|
||||
print(string.format("[%s] Failed to play help sound: %s", ModuleName,
|
||||
Heimdall_Data.config.minimapTagger.helpSoundFile))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Failed to play help sound: %s",
|
||||
ModuleName,
|
||||
Heimdall_Data.config.minimapTagger.helpSoundFile
|
||||
)
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
if doTag then
|
||||
PlantFrame(x, y, frame, scale, Heimdall_Data.config.minimapTagger.helpTTL)
|
||||
end
|
||||
if doTag then PlantFrame(x, y, frame, scale, Heimdall_Data.config.minimapTagger.helpTTL) end
|
||||
end
|
||||
--endregion
|
||||
|
||||
@@ -370,8 +402,14 @@ function shared.MinimapTagger.Init()
|
||||
|
||||
if not ok then
|
||||
if Heimdall_Data.config.minimapTagger.debug then
|
||||
print(string.format("[%s] Ignoring message from non-master channel: %s, need %s", ModuleName, channelname,
|
||||
Heimdall_Data.config.minimapTagger.masterChannel))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Ignoring message from non-master channel: %s, need %s",
|
||||
ModuleName,
|
||||
channelname,
|
||||
Heimdall_Data.config.minimapTagger.masterChannel
|
||||
)
|
||||
)
|
||||
end
|
||||
return
|
||||
end
|
||||
@@ -387,8 +425,14 @@ function shared.MinimapTagger.Init()
|
||||
local currentMapId = GetCurrentMapAreaID()
|
||||
if currentMapId ~= messageMapId then
|
||||
if Heimdall_Data.config.minimapTagger.debug then
|
||||
print(string.format("[%s] Current map ID (%d) does not match message map ID (%d), ignoring message",
|
||||
ModuleName, currentMapId, messageMapId))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Current map ID (%d) does not match message map ID (%d), ignoring message",
|
||||
ModuleName,
|
||||
currentMapId,
|
||||
messageMapId
|
||||
)
|
||||
)
|
||||
end
|
||||
doTag = false
|
||||
end
|
||||
@@ -405,9 +449,7 @@ function shared.MinimapTagger.Init()
|
||||
if Heimdall_Data.config.minimapTagger.debug then
|
||||
print(string.format("[%s] Found alert position: %s, %s", ModuleName, tostring(x), tostring(y)))
|
||||
end
|
||||
if x and y then
|
||||
PlantTag(tonumber(x), tonumber(y), 2, doTag)
|
||||
end
|
||||
if x and y then PlantTag(tonumber(x), tonumber(y), 2, doTag) end
|
||||
end
|
||||
--endregion
|
||||
--region Combat
|
||||
@@ -425,9 +467,7 @@ function shared.MinimapTagger.Init()
|
||||
if Heimdall_Data.config.minimapTagger.debug then
|
||||
print(string.format("[%s] Found combat position: %s, %s", ModuleName, tostring(x), tostring(y)))
|
||||
end
|
||||
if x and y then
|
||||
PlantCombat(tonumber(x), tonumber(y), 2, doTag)
|
||||
end
|
||||
if x and y then PlantCombat(tonumber(x), tonumber(y), 2, doTag) end
|
||||
end
|
||||
--endregion
|
||||
--region Death
|
||||
@@ -445,9 +485,7 @@ function shared.MinimapTagger.Init()
|
||||
if Heimdall_Data.config.minimapTagger.debug then
|
||||
print(string.format("[%s] Found death position: %s, %s", ModuleName, tostring(x), tostring(y)))
|
||||
end
|
||||
if x and y then
|
||||
PlantAlert(tonumber(x), tonumber(y), 2, doTag)
|
||||
end
|
||||
if x and y then PlantAlert(tonumber(x), tonumber(y), 2, doTag) end
|
||||
end
|
||||
--endregion
|
||||
--region Help
|
||||
@@ -497,7 +535,5 @@ function shared.MinimapTagger.Init()
|
||||
print("[Heimdall] MinimapTagger loaded")
|
||||
end
|
||||
|
||||
SlashCmdList["HEIMDALL_MINIMAPTAGGER"] = function(args)
|
||||
shared.MinimapTagger.Init()
|
||||
end
|
||||
SlashCmdList["HEIMDALL_MINIMAPTAGGER"] = function(args) shared.MinimapTagger.Init() end
|
||||
SLASH_HEIMDALL_MINIMAPTAGGER1 = "/mf"
|
||||
|
@@ -56,13 +56,10 @@ function shared.Network.Init()
|
||||
|
||||
local friendsFrame = CreateFrame("Frame")
|
||||
friendsFrame:RegisterEvent("FRIENDLIST_UPDATE")
|
||||
friendsFrame:SetScript("OnEvent", function(self, event, ...)
|
||||
end)
|
||||
friendsFrame:SetScript("OnEvent", function(self, event, ...) end)
|
||||
|
||||
local function NetworkTick()
|
||||
if Heimdall_Data.config.network.debug then
|
||||
print("Network module is updating.")
|
||||
end
|
||||
if Heimdall_Data.config.network.debug then print("Network module is updating.") end
|
||||
ShowFriends()
|
||||
updatePending = true
|
||||
C_Timer.After(1, function()
|
||||
|
@@ -63,9 +63,15 @@ function shared.NetworkMessenger.Init()
|
||||
end
|
||||
|
||||
if Heimdall_Data.config.networkMessenger.debug then
|
||||
print(string.format("[%s] Sending network message: '%s' to %s:%s", ModuleName, message.message,
|
||||
message.channel,
|
||||
message.data))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Sending network message: '%s' to %s:%s",
|
||||
ModuleName,
|
||||
message.message,
|
||||
message.channel,
|
||||
message.data
|
||||
)
|
||||
)
|
||||
end
|
||||
local payload = string.format("dmessage|%s|%s|%s", message.message, message.channel, message.data)
|
||||
if Heimdall_Data.config.networkMessenger.debug then
|
||||
@@ -140,7 +146,7 @@ function shared.NetworkMessenger.Init()
|
||||
local msg = {
|
||||
channel = channel,
|
||||
message = message,
|
||||
data = target
|
||||
data = target,
|
||||
}
|
||||
table.insert(shared.messenger.queue, msg)
|
||||
elseif command == "dmessage" then
|
||||
@@ -150,9 +156,7 @@ function shared.NetworkMessenger.Init()
|
||||
parts[1] = "message"
|
||||
local message = table.concat(parts, "|")
|
||||
|
||||
if nextIdx > #shared.networkNodes then
|
||||
nextIdx = 1
|
||||
end
|
||||
if nextIdx > #shared.networkNodes then nextIdx = 1 end
|
||||
local recipient = shared.networkNodes[nextIdx]
|
||||
nextIdx = nextIdx + 1
|
||||
if Heimdall_Data.config.networkMessenger.debug then
|
||||
@@ -167,7 +171,7 @@ function shared.NetworkMessenger.Init()
|
||||
local testmsg = {
|
||||
channel = "W",
|
||||
message = "Hi, mom!",
|
||||
data = "Secundus"
|
||||
data = "Secundus",
|
||||
}
|
||||
for i = 1, 36 do
|
||||
table.insert(shared.networkMessenger.queue, testmsg)
|
||||
|
@@ -29,16 +29,12 @@ function shared.Noter.Init()
|
||||
if #currentChunk + #word + 1 <= size then
|
||||
currentChunk = currentChunk .. (currentChunk == "" and word or " " .. word)
|
||||
else
|
||||
if #currentChunk > 0 then
|
||||
ret[#ret + 1] = currentChunk
|
||||
end
|
||||
if #currentChunk > 0 then ret[#ret + 1] = currentChunk end
|
||||
currentChunk = word
|
||||
end
|
||||
end
|
||||
|
||||
if #currentChunk > 0 then
|
||||
ret[#ret + 1] = currentChunk
|
||||
end
|
||||
if #currentChunk > 0 then ret[#ret + 1] = currentChunk end
|
||||
|
||||
return ret
|
||||
end
|
||||
@@ -65,8 +61,7 @@ function shared.Noter.Init()
|
||||
end
|
||||
local indices = shared.Split(range, "..")
|
||||
if Heimdall_Data.config.noter.debug then
|
||||
print(string.format("[%s] Indices for range deletion: %s", ModuleName,
|
||||
table.concat(indices, ", ")))
|
||||
print(string.format("[%s] Indices for range deletion: %s", ModuleName, table.concat(indices, ", ")))
|
||||
shared.dumpTable(indices)
|
||||
end
|
||||
local start = tonumber(indices[1])
|
||||
@@ -74,8 +69,7 @@ function shared.Noter.Init()
|
||||
|
||||
if not start then
|
||||
if Heimdall_Data.config.noter.debug then
|
||||
print(string.format("[%s] Invalid start range for delete note: %s", ModuleName,
|
||||
tostring(start)))
|
||||
print(string.format("[%s] Invalid start range for delete note: %s", ModuleName, tostring(start)))
|
||||
end
|
||||
return
|
||||
end
|
||||
@@ -118,7 +112,7 @@ function shared.Noter.Init()
|
||||
local msg = {
|
||||
channel = "C",
|
||||
data = channel,
|
||||
message = string.format("[%s][%d] %s: %s", note.source, index, note.date, note.note)
|
||||
message = string.format("[%s][%d] %s: %s", note.source, index, note.date, note.note),
|
||||
}
|
||||
--table.insert(shared.messenger.queue, msg)
|
||||
table.insert(shared.networkMessenger.queue, msg)
|
||||
@@ -132,8 +126,13 @@ function shared.Noter.Init()
|
||||
local range = args[3]
|
||||
if not range then
|
||||
if Heimdall_Data.config.noter.debug then
|
||||
print(string.format("[%s] No range specified for print note, defaulting to last %d notes", ModuleName,
|
||||
Heimdall_Data.config.noter.lastNotes))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] No range specified for print note, defaulting to last %d notes",
|
||||
ModuleName,
|
||||
Heimdall_Data.config.noter.lastNotes
|
||||
)
|
||||
)
|
||||
end
|
||||
local notes = Heimdall_Data.config.notes[name] or {}
|
||||
local start = math.max(1, #notes - Heimdall_Data.config.noter.lastNotes + 1)
|
||||
@@ -152,8 +151,7 @@ function shared.Noter.Init()
|
||||
end
|
||||
local indices = shared.Split(range, "..")
|
||||
if Heimdall_Data.config.noter.debug then
|
||||
print(string.format("[%s] Indices for range printing: %s", ModuleName,
|
||||
table.concat(indices, ", ")))
|
||||
print(string.format("[%s] Indices for range printing: %s", ModuleName, table.concat(indices, ", ")))
|
||||
shared.dumpTable(indices)
|
||||
end
|
||||
local start = tonumber(indices[1])
|
||||
@@ -161,8 +159,7 @@ function shared.Noter.Init()
|
||||
|
||||
if not start then
|
||||
if Heimdall_Data.config.noter.debug then
|
||||
print(string.format("[%s] Invalid start range for print note: %s", ModuleName,
|
||||
tostring(start)))
|
||||
print(string.format("[%s] Invalid start range for print note: %s", ModuleName, tostring(start)))
|
||||
end
|
||||
return
|
||||
end
|
||||
@@ -212,7 +209,7 @@ function shared.Noter.Init()
|
||||
local note = {
|
||||
source = sender,
|
||||
date = date("%Y-%m-%dT%H:%M:%S"),
|
||||
note = msg
|
||||
note = msg,
|
||||
}
|
||||
|
||||
if Heimdall_Data.config.noter.debug then
|
||||
@@ -284,9 +281,7 @@ function shared.Noter.Init()
|
||||
print(string.format("[%s] Note command received for: %s", ModuleName, name))
|
||||
end
|
||||
local note = strtrim(args[3] or "")
|
||||
if Heimdall_Data.config.noter.debug then
|
||||
print(string.format("[%s] Note: %s", ModuleName, note))
|
||||
end
|
||||
if Heimdall_Data.config.noter.debug then print(string.format("[%s] Note: %s", ModuleName, note)) end
|
||||
if note == "delete" then
|
||||
DeleteNotes(name, args)
|
||||
elseif string.find(note, "^[%d%.]*$") then
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -6,9 +6,7 @@ local ModuleName = "Sniffer"
|
||||
---@diagnostic disable-next-line: missing-fields
|
||||
shared.Sniffer = {}
|
||||
function shared.Sniffer.Init()
|
||||
if Heimdall_Data.config.sniffer.debug then
|
||||
print(string.format("[%s] Module initializing", ModuleName))
|
||||
end
|
||||
if Heimdall_Data.config.sniffer.debug then print(string.format("[%s] Module initializing", ModuleName)) end
|
||||
local smellThrottle = {}
|
||||
local SmellStinky = function(stinky)
|
||||
if Heimdall_Data.config.sniffer.debug then
|
||||
@@ -16,17 +14,14 @@ function shared.Sniffer.Init()
|
||||
shared.dumpTable(Heimdall_Data.config.sniffer)
|
||||
end
|
||||
if not Heimdall_Data.config.sniffer.enabled then return end
|
||||
if Heimdall_Data.config.sniffer.stinky and
|
||||
not shared.IsStinky(stinky) then
|
||||
if Heimdall_Data.config.sniffer.stinky and not shared.IsStinky(stinky) then
|
||||
if Heimdall_Data.config.sniffer.debug then
|
||||
print(string.format("%s: Stinky not found in config", ModuleName))
|
||||
end
|
||||
return
|
||||
end
|
||||
if smellThrottle[stinky] and GetTime() - smellThrottle[stinky] < Heimdall_Data.config.sniffer.throttleTime then
|
||||
if Heimdall_Data.config.sniffer.debug then
|
||||
print(string.format("%s: Throttled", ModuleName))
|
||||
end
|
||||
if Heimdall_Data.config.sniffer.debug then print(string.format("%s: Throttled", ModuleName)) end
|
||||
return
|
||||
end
|
||||
smellThrottle[stinky] = GetTime()
|
||||
@@ -83,8 +78,6 @@ function shared.Sniffer.Init()
|
||||
end
|
||||
SmellStinky(destination)
|
||||
end)
|
||||
if Heimdall_Data.config.sniffer.debug then
|
||||
print(string.format("[%s] Module initialized", ModuleName))
|
||||
end
|
||||
if Heimdall_Data.config.sniffer.debug then print(string.format("[%s] Module initialized", ModuleName)) end
|
||||
print("[Heimdall] Sniffer loaded")
|
||||
end
|
||||
|
@@ -67,8 +67,13 @@ function shared.Spotter.Init()
|
||||
end
|
||||
|
||||
if Heimdall_Data.config.spotter.debug then
|
||||
print(string.format("[%s] Using everyone setting: %s", ModuleName,
|
||||
tostring(Heimdall_Data.config.spotter.everyone)))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Using everyone setting: %s",
|
||||
ModuleName,
|
||||
tostring(Heimdall_Data.config.spotter.everyone)
|
||||
)
|
||||
)
|
||||
end
|
||||
return Heimdall_Data.config.spotter.everyone
|
||||
end
|
||||
@@ -158,7 +163,8 @@ function shared.Spotter.Init()
|
||||
print(string.format("[%s] Processing channel: %s", ModuleName, channel))
|
||||
end
|
||||
local locale = shared.GetLocaleForChannel(channel)
|
||||
local text = string.format(shared._L("spotterSpotted", locale),
|
||||
local text = string.format(
|
||||
shared._L("spotterSpotted", locale),
|
||||
hostile and shared._L("hostile", locale) or shared._L("friendly", locale),
|
||||
name,
|
||||
shared._L(class, locale),
|
||||
@@ -168,15 +174,18 @@ function shared.Spotter.Init()
|
||||
pvpOn and shared._L("pvpOn", locale) or shared._L("pvpOff", locale),
|
||||
string.gsub(FormatHP(hp), "M", "kk"),
|
||||
string.gsub(FormatHP(maxHp), "M", "kk"),
|
||||
shared._L(zone, locale), shared._L(subzone, locale),
|
||||
shared._L(zone, locale),
|
||||
shared._L(subzone, locale),
|
||||
areaId,
|
||||
x * 100, y * 100)
|
||||
x * 100,
|
||||
y * 100
|
||||
)
|
||||
|
||||
---@type Message
|
||||
local msg = {
|
||||
channel = "C",
|
||||
data = channel,
|
||||
message = text
|
||||
message = text,
|
||||
}
|
||||
if Heimdall_Data.config.spotter.debug then
|
||||
print(string.format("[%s] Queuing spotter message", ModuleName))
|
||||
@@ -201,9 +210,7 @@ function shared.Spotter.Init()
|
||||
return
|
||||
end
|
||||
|
||||
if event == "UNIT_TARGET" then
|
||||
unit = "target"
|
||||
end
|
||||
if event == "UNIT_TARGET" then unit = "target" end
|
||||
|
||||
local err = NotifySpotted(unit)
|
||||
if err then
|
||||
@@ -213,8 +220,6 @@ function shared.Spotter.Init()
|
||||
end
|
||||
end)
|
||||
|
||||
if Heimdall_Data.config.spotter.debug then
|
||||
print(string.format("[%s] Module initialized", ModuleName))
|
||||
end
|
||||
if Heimdall_Data.config.spotter.debug then print(string.format("[%s] Module initialized", ModuleName)) end
|
||||
print("[Heimdall] Spotter loaded")
|
||||
end
|
||||
|
@@ -13,14 +13,23 @@ function shared.StinkyCache.Init()
|
||||
---@param name string
|
||||
local function AskCommander(name)
|
||||
if Heimdall_Data.config.stinkyCache.debug then
|
||||
print(string.format("[%s] Asking commander %s about %s", ModuleName,
|
||||
Heimdall_Data.config.stinkyCache.commander, name))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Asking commander %s about %s",
|
||||
ModuleName,
|
||||
Heimdall_Data.config.stinkyCache.commander,
|
||||
name
|
||||
)
|
||||
)
|
||||
end
|
||||
local messageParts = { "isstinky", name }
|
||||
local message = table.concat(messageParts, "|")
|
||||
SendAddonMessage(Heimdall_Data.config.addonPrefix,
|
||||
message, "WHISPER",
|
||||
Heimdall_Data.config.stinkyCache.commander)
|
||||
SendAddonMessage(
|
||||
Heimdall_Data.config.addonPrefix,
|
||||
message,
|
||||
"WHISPER",
|
||||
Heimdall_Data.config.stinkyCache.commander
|
||||
)
|
||||
return
|
||||
end
|
||||
|
||||
@@ -29,20 +38,24 @@ function shared.StinkyCache.Init()
|
||||
addonMessageFrame:SetScript("OnEvent", function(self, event, msg, sender, ...)
|
||||
if sender == Heimdall_Data.config.stinkyCache.commander then
|
||||
if Heimdall_Data.config.stinkyCache.debug then
|
||||
print(string.format("[%s] Received stinky from commander %s: %s", ModuleName,
|
||||
Heimdall_Data.config.stinkyCache.commander, msg))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Received stinky from commander %s: %s",
|
||||
ModuleName,
|
||||
Heimdall_Data.config.stinkyCache.commander,
|
||||
msg
|
||||
)
|
||||
)
|
||||
end
|
||||
local name, value = {strsplit("|", msg)}
|
||||
local name, value = { strsplit("|", msg) }
|
||||
shared.stinkyCache.stinkies[name] = { value = value, timestamp = time() }
|
||||
else
|
||||
if Heimdall_Data.config.stinkyCache.debug then
|
||||
print(string.format("[%s] Received stinky from non-commander %s: %s", ModuleName, sender, msg))
|
||||
end
|
||||
local parts = {strsplit("|", msg)}
|
||||
local parts = { strsplit("|", msg) }
|
||||
local command, name = parts[1], parts[2]
|
||||
if parts[1] == "isstinky" then
|
||||
local res = Heimdall_Data.config.stinkies[parts[2]]
|
||||
end
|
||||
if parts[1] == "isstinky" then local res = Heimdall_Data.config.stinkies[parts[2]] end
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -50,11 +63,9 @@ function shared.StinkyCache.Init()
|
||||
__index = function(self, key)
|
||||
local value = rawget(self, key)
|
||||
local now = GetTime()
|
||||
if value == nil or now - value.timestamp > Heimdall_Data.config.stinkyCache.ttl then
|
||||
AskCommander(key)
|
||||
end
|
||||
if value == nil or now - value.timestamp > Heimdall_Data.config.stinkyCache.ttl then AskCommander(key) end
|
||||
return rawget(self, key)
|
||||
end
|
||||
end,
|
||||
})
|
||||
print("[Heimdall] StinkyCache module loaded")
|
||||
end
|
||||
|
@@ -7,7 +7,7 @@ local ModuleName = "StinkyTracker"
|
||||
shared.StinkyTracker = {}
|
||||
function shared.StinkyTracker.Init()
|
||||
shared.stinkyTracker = {
|
||||
stinkies = ReactiveValue.new({})
|
||||
stinkies = ReactiveValue.new({}),
|
||||
}
|
||||
|
||||
local whoRegex = "([^ -/]+)-?%w*/(%w+)"
|
||||
@@ -23,11 +23,18 @@ function shared.StinkyTracker.Init()
|
||||
name = name,
|
||||
class = class,
|
||||
seenAt = GetTime(),
|
||||
hostile = true
|
||||
hostile = true,
|
||||
}
|
||||
if Heimdall_Data.config.stinkyTracker.debug then
|
||||
print(string.format("[%s] Found hostile player: %s (%s) at %s", ModuleName, name, class,
|
||||
date("%H:%M:%S", time())))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Found hostile player: %s (%s) at %s",
|
||||
ModuleName,
|
||||
name,
|
||||
class,
|
||||
date("%H:%M:%S", time())
|
||||
)
|
||||
)
|
||||
shared.dumpTable(stinkies)
|
||||
end
|
||||
end
|
||||
@@ -53,12 +60,20 @@ function shared.StinkyTracker.Init()
|
||||
name = name,
|
||||
class = class,
|
||||
seenAt = GetTime(),
|
||||
hostile = aggression == "hostile"
|
||||
hostile = aggression == "hostile",
|
||||
}
|
||||
stinkies[name] = stinky
|
||||
if Heimdall_Data.config.stinkyTracker.debug then
|
||||
print(string.format("[%s] Found stinky in SEE: %s (%s) - %s at %s", ModuleName, name, class, aggression,
|
||||
date("%H:%M:%S", time())))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Found stinky in SEE: %s (%s) - %s at %s",
|
||||
ModuleName,
|
||||
name,
|
||||
class,
|
||||
aggression,
|
||||
date("%H:%M:%S", time())
|
||||
)
|
||||
)
|
||||
shared.dumpTable(stinkies)
|
||||
end
|
||||
return stinkies
|
||||
@@ -87,7 +102,7 @@ function shared.StinkyTracker.Init()
|
||||
name = name,
|
||||
class = class,
|
||||
seenAt = GetTime(),
|
||||
hostile = true
|
||||
hostile = true,
|
||||
}
|
||||
stinkies[name] = stinky
|
||||
if Heimdall_Data.config.stinkyTracker.debug then
|
||||
@@ -141,8 +156,9 @@ function shared.StinkyTracker.Init()
|
||||
if stinky.hostile then
|
||||
shared.stinkyTracker.stinkies[name] = stinky
|
||||
if Heimdall_Data.config.stinkyTracker.debug then
|
||||
print(string.format("[%s] Added hostile stinky from WHO: %s (%s)", ModuleName, name, stinky
|
||||
.class))
|
||||
print(
|
||||
string.format("[%s] Added hostile stinky from WHO: %s (%s)", ModuleName, name, stinky.class)
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -159,8 +175,9 @@ function shared.StinkyTracker.Init()
|
||||
if stinky.hostile then
|
||||
shared.stinkyTracker.stinkies[name] = stinky
|
||||
if Heimdall_Data.config.stinkyTracker.debug then
|
||||
print(string.format("[%s] Added hostile stinky from SEE: %s (%s)", ModuleName, name, stinky
|
||||
.class))
|
||||
print(
|
||||
string.format("[%s] Added hostile stinky from SEE: %s (%s)", ModuleName, name, stinky.class)
|
||||
)
|
||||
end
|
||||
end
|
||||
if not stinky.hostile then
|
||||
@@ -190,7 +207,9 @@ function shared.StinkyTracker.Init()
|
||||
-- Log total stinky count after processing
|
||||
if Heimdall_Data.config.stinkyTracker.debug then
|
||||
local count = 0
|
||||
for _ in pairs(shared.stinkyTracker.stinkies:get()) do count = count + 1 end
|
||||
for _ in pairs(shared.stinkyTracker.stinkies:get()) do
|
||||
count = count + 1
|
||||
end
|
||||
print(string.format("[%s] Current total stinkies tracked: %d", ModuleName, count))
|
||||
end
|
||||
|
||||
@@ -236,7 +255,7 @@ function shared.StinkyTracker.Init()
|
||||
name = name,
|
||||
class = UnitClass(unit),
|
||||
seenAt = GetTime(),
|
||||
hostile = true
|
||||
hostile = true,
|
||||
}
|
||||
return
|
||||
end
|
||||
@@ -254,8 +273,6 @@ function shared.StinkyTracker.Init()
|
||||
shared.stinkyTracker.stinkies[name] = nil
|
||||
end)
|
||||
|
||||
if Heimdall_Data.config.stinkyTracker.debug then
|
||||
print(string.format("[%s] Module initialized", ModuleName))
|
||||
end
|
||||
if Heimdall_Data.config.stinkyTracker.debug then print(string.format("[%s] Module initialized", ModuleName)) end
|
||||
print("[Heimdall] StinkyTracker loaded")
|
||||
end
|
||||
|
@@ -32,7 +32,7 @@ function shared.Whoer.Init()
|
||||
---@return Player
|
||||
new = function(name, guild, race, class, zone)
|
||||
local self = setmetatable({}, {
|
||||
__index = Player
|
||||
__index = Player,
|
||||
})
|
||||
self.name = name
|
||||
self.guild = guild
|
||||
@@ -47,13 +47,15 @@ function shared.Whoer.Init()
|
||||
end,
|
||||
---@return string
|
||||
ToString = function(self)
|
||||
local out = string.format("%s %s %s\nFirst: %s Last: %s Seen: %3d",
|
||||
local out = string.format(
|
||||
"%s %s %s\nFirst: %s Last: %s Seen: %3d",
|
||||
shared.padString(self.name, 16, true),
|
||||
shared.padString(self.guild, 26, false),
|
||||
shared.padString(self.zone, 26, false),
|
||||
shared.padString(self.firstSeen, 10, true),
|
||||
shared.padString(self.lastSeen, 10, true),
|
||||
self.seenCount)
|
||||
self.seenCount
|
||||
)
|
||||
return string.format("|cFF%s%s|r", shared.classColors[self.class], out)
|
||||
end,
|
||||
}
|
||||
@@ -67,12 +69,12 @@ function shared.Whoer.Init()
|
||||
---@return WHOQuery
|
||||
new = function(query, filters)
|
||||
local self = setmetatable({}, {
|
||||
__index = WHOQuery
|
||||
__index = WHOQuery,
|
||||
})
|
||||
self.query = query
|
||||
self.filters = filters
|
||||
return self
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
||||
---@class WHOFilter
|
||||
@@ -81,12 +83,10 @@ function shared.Whoer.Init()
|
||||
---@type WHOFilter
|
||||
local NotSiegeOfOrgrimmarFilter = {
|
||||
Run = function(name, guild, level, race, class, zone)
|
||||
if not zone then
|
||||
return false
|
||||
end
|
||||
if not zone then return false end
|
||||
return zone ~= "Siege of Orgrimmar"
|
||||
end,
|
||||
key = "notsoo"
|
||||
key = "notsoo",
|
||||
}
|
||||
---@type WHOFilter
|
||||
local AllianceFilter = {
|
||||
@@ -95,7 +95,7 @@ function shared.Whoer.Init()
|
||||
if not shared.raceMap[race] then return false end
|
||||
return shared.raceMap[race] == "Alliance"
|
||||
end,
|
||||
key = "ally"
|
||||
key = "ally",
|
||||
}
|
||||
|
||||
---@class WhoQueryService
|
||||
@@ -110,15 +110,13 @@ function shared.Whoer.Init()
|
||||
queries = {},
|
||||
filters = {
|
||||
NotSiegeOfOrgrimmarFilter,
|
||||
AllianceFilter
|
||||
AllianceFilter,
|
||||
},
|
||||
---@param key string
|
||||
---@return WHOFilter?
|
||||
getFilter = function(key)
|
||||
for _, filter in pairs(shared.WhoQueryService.filters) do
|
||||
if filter.key == key then
|
||||
return filter
|
||||
end
|
||||
if filter.key == key then return filter end
|
||||
end
|
||||
return nil
|
||||
end,
|
||||
@@ -176,7 +174,7 @@ function shared.Whoer.Init()
|
||||
table.insert(ret, shared.WhoQueryService.WhoQueryFromString(query))
|
||||
end
|
||||
return ret
|
||||
end
|
||||
end,
|
||||
}
|
||||
shared.WhoQueryService.queries = shared.WhoQueryService.WhoQueriesFromString(Heimdall_Data.config.who.queries)
|
||||
|
||||
@@ -187,15 +185,13 @@ function shared.Whoer.Init()
|
||||
print(string.format("[%s] ShouldNotifyForZone %s", ModuleName, inputZone))
|
||||
end
|
||||
for zone, _ in pairs(Heimdall_Data.config.who.zoneNotifyFor) do
|
||||
if Heimdall_Data.config.who.debug then
|
||||
print(string.format("[%s] Checking zone %s", ModuleName, zone))
|
||||
end
|
||||
if zone == "*" then
|
||||
return true
|
||||
end
|
||||
if Heimdall_Data.config.who.debug then print(string.format("[%s] Checking zone %s", ModuleName, zone)) end
|
||||
if zone == "*" then return true end
|
||||
if string.find(inputZone, zone) then
|
||||
if not Heimdall_Data.config.who.debug then
|
||||
print(string.format("[%s] ShouldNotifyForZone %s is true thanks to %s", ModuleName, inputZone, zone))
|
||||
print(
|
||||
string.format("[%s] ShouldNotifyForZone %s is true thanks to %s", ModuleName, inputZone, zone)
|
||||
)
|
||||
end
|
||||
return true
|
||||
end
|
||||
@@ -235,10 +231,25 @@ function shared.Whoer.Init()
|
||||
local function Notify(player)
|
||||
if Heimdall_Data.config.who.debug then
|
||||
print(string.format("[%s] Processing notification for player: %s", ModuleName, player.name))
|
||||
print(string.format("[%s] Player details - Guild: %s, Race: %s, Class: %s, Zone: %s", ModuleName,
|
||||
player.guild, player.race, player.class, player.zone))
|
||||
print(string.format("[%s] Player history - First seen: %s, Last seen: %s, Seen count: %d", ModuleName,
|
||||
player.firstSeen, player.lastSeen, player.seenCount))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Player details - Guild: %s, Race: %s, Class: %s, Zone: %s",
|
||||
ModuleName,
|
||||
player.guild,
|
||||
player.race,
|
||||
player.class,
|
||||
player.zone
|
||||
)
|
||||
)
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Player history - First seen: %s, Last seen: %s, Seen count: %d",
|
||||
ModuleName,
|
||||
player.firstSeen,
|
||||
player.lastSeen,
|
||||
player.seenCount
|
||||
)
|
||||
)
|
||||
end
|
||||
|
||||
if not Heimdall_Data.config.who.enabled then
|
||||
@@ -258,26 +269,30 @@ function shared.Whoer.Init()
|
||||
if not shared.Whoer.ShouldNotifyForZone(player.zone) then
|
||||
--if not Heimdall_Data.config.who.zoneNotifyFor[player.zone] then
|
||||
if Heimdall_Data.config.who.debug then
|
||||
print(string.format("[%s] Skipping notification - Zone '%s' not in notify list", ModuleName, player.zone))
|
||||
print(
|
||||
string.format("[%s] Skipping notification - Zone '%s' not in notify list", ModuleName, player.zone)
|
||||
)
|
||||
end
|
||||
return string.format("Not notifying for zone %s", tostring(player.zone))
|
||||
end
|
||||
|
||||
for _, channel in pairs(Heimdall_Data.config.who.channels) do
|
||||
local locale = shared.GetLocaleForChannel(channel)
|
||||
local text = string.format(shared._L("whoerNew", locale),
|
||||
local text = string.format(
|
||||
shared._L("whoerNew", locale),
|
||||
player.name,
|
||||
player.stinky and "(!!!!)" or "",
|
||||
shared._L(player.class, locale),
|
||||
--shared._L(player.race, locale),
|
||||
shared._L(shared.raceMap[player.race] or "unknown", locale),
|
||||
player.guild,
|
||||
shared._L(player.zone, locale))
|
||||
shared._L(player.zone, locale)
|
||||
)
|
||||
---@type Message
|
||||
local msg = {
|
||||
channel = "C",
|
||||
data = channel,
|
||||
message = text
|
||||
message = text,
|
||||
}
|
||||
if Heimdall_Data.config.who.debug then
|
||||
print(string.format("[%s] Queuing channel notification", ModuleName))
|
||||
@@ -321,20 +336,22 @@ function shared.Whoer.Init()
|
||||
end
|
||||
for _, channel in pairs(Heimdall_Data.config.who.channels) do
|
||||
local locale = shared.GetLocaleForChannel(channel)
|
||||
local text = string.format(shared._L("whoerMoved", locale),
|
||||
local text = string.format(
|
||||
shared._L("whoerMoved", locale),
|
||||
player.name,
|
||||
player.stinky and "(!!!!)" or "",
|
||||
shared._L(player.class, locale),
|
||||
--shared._L(player.race, locale),
|
||||
shared._L(shared.raceMap[player.race] or "unknown", locale),
|
||||
player.guild,
|
||||
shared._L(zone, locale))
|
||||
shared._L(zone, locale)
|
||||
)
|
||||
|
||||
---@type Message
|
||||
local msg = {
|
||||
channel = "C",
|
||||
data = channel,
|
||||
message = text
|
||||
message = text,
|
||||
}
|
||||
if Heimdall_Data.config.who.debug then
|
||||
print(string.format("[%s] Queuing channel notification", ModuleName))
|
||||
@@ -370,20 +387,22 @@ function shared.Whoer.Init()
|
||||
|
||||
for _, channel in pairs(Heimdall_Data.config.who.channels) do
|
||||
local locale = shared.GetLocaleForChannel(channel)
|
||||
local text = string.format(shared._L("whoerGone", locale),
|
||||
local text = string.format(
|
||||
shared._L("whoerGone", locale),
|
||||
player.name,
|
||||
player.stinky and "(!!!!)" or "",
|
||||
shared._L(player.class, locale),
|
||||
--shared._L(player.race, locale),
|
||||
shared._L(shared.raceMap[player.race] or "unknown", locale),
|
||||
player.guild,
|
||||
shared._L(player.zone, locale))
|
||||
shared._L(player.zone, locale)
|
||||
)
|
||||
|
||||
---@type Message
|
||||
local msg = {
|
||||
channel = "C",
|
||||
data = channel,
|
||||
message = text
|
||||
message = text,
|
||||
}
|
||||
if Heimdall_Data.config.who.debug then
|
||||
print(string.format("[%s] Queuing channel notification", ModuleName))
|
||||
@@ -441,7 +460,9 @@ function shared.Whoer.Init()
|
||||
for i = 1, results do
|
||||
local name, guild, level, race, class, zone = GetWhoInfo(i)
|
||||
if Heimdall_Data.config.who.debug then
|
||||
print(string.format("[%s] Processing result %d/%d: %s/%s/%s", ModuleName, i, results, name, class, zone))
|
||||
print(
|
||||
string.format("[%s] Processing result %d/%d: %s/%s/%s", ModuleName, i, results, name, class, zone)
|
||||
)
|
||||
end
|
||||
|
||||
local continue = false
|
||||
@@ -449,11 +470,15 @@ function shared.Whoer.Init()
|
||||
local filters = query.filters
|
||||
for _, filter in pairs(filters) do
|
||||
if Heimdall_Data.config.who.debug then
|
||||
print(string.format("[%s] Running filter %s on %s/%s/%s", ModuleName, filter.key, name, class, zone))
|
||||
print(
|
||||
string.format("[%s] Running filter %s on %s/%s/%s", ModuleName, filter.key, name, class, zone)
|
||||
)
|
||||
end
|
||||
if not filter.Run(name, guild, level, race, class, zone) then
|
||||
if Heimdall_Data.config.who.debug then
|
||||
print(string.format("[%s] Player %s filtered out by WHO filter %s", ModuleName, name, filter.key))
|
||||
print(
|
||||
string.format("[%s] Player %s filtered out by WHO filter %s", ModuleName, name, filter.key)
|
||||
)
|
||||
end
|
||||
continue = true
|
||||
break
|
||||
@@ -488,8 +513,15 @@ function shared.Whoer.Init()
|
||||
|
||||
if existing then
|
||||
if Heimdall_Data.config.who.debug then
|
||||
print(string.format("[%s] Found existing data for %s - Last seen: %s, Count: %d",
|
||||
ModuleName, name, existing.lastSeen or "never", existing.seenCount or 0))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Found existing data for %s - Last seen: %s, Count: %d",
|
||||
ModuleName,
|
||||
name,
|
||||
existing.lastSeen or "never",
|
||||
existing.seenCount or 0
|
||||
)
|
||||
)
|
||||
end
|
||||
player.lastSeen = existing.lastSeen or "never"
|
||||
player.firstSeen = existing.firstSeen or "never"
|
||||
@@ -516,7 +548,9 @@ function shared.Whoer.Init()
|
||||
|
||||
local err = Notify(player)
|
||||
if err then
|
||||
print(string.format("[%s] Error notifying for %s: %s", ModuleName, tostring(name), tostring(err)))
|
||||
print(
|
||||
string.format("[%s] Error notifying for %s: %s", ModuleName, tostring(name), tostring(err))
|
||||
)
|
||||
end
|
||||
|
||||
player.lastSeen = timestamp
|
||||
@@ -527,13 +561,18 @@ function shared.Whoer.Init()
|
||||
player.lastSeenInternal = GetTime()
|
||||
if player.zone ~= zone then
|
||||
if Heimdall_Data.config.who.debug then
|
||||
print(string.format("[%s] Player %s zone changed from %s to %s", ModuleName, name, player.zone,
|
||||
zone))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Player %s zone changed from %s to %s",
|
||||
ModuleName,
|
||||
name,
|
||||
player.zone,
|
||||
zone
|
||||
)
|
||||
)
|
||||
end
|
||||
local err = NotifyZoneChanged(player, zone)
|
||||
if err then
|
||||
print(string.format("Error notifying for %s: %s", tostring(name), tostring(err)))
|
||||
end
|
||||
if err then print(string.format("Error notifying for %s: %s", tostring(name), tostring(err))) end
|
||||
end
|
||||
player.zone = zone
|
||||
player.lastSeen = timestamp
|
||||
@@ -578,17 +617,22 @@ function shared.Whoer.Init()
|
||||
end
|
||||
|
||||
if Heimdall_Data.config.who.debug then
|
||||
print(string.format("[%s] Running WHO query %d/%d: %s", ModuleName, whoQueryIdx,
|
||||
#shared.WhoQueryService.queries, query.query))
|
||||
print(
|
||||
string.format(
|
||||
"[%s] Running WHO query %d/%d: %s",
|
||||
ModuleName,
|
||||
whoQueryIdx,
|
||||
#shared.WhoQueryService.queries,
|
||||
query.query
|
||||
)
|
||||
)
|
||||
print(string.format("[%s] Query has %d filters", ModuleName, #query.filters))
|
||||
for i, filter in ipairs(query.filters) do
|
||||
print(string.format("[%s] Filter %d: %s", ModuleName, i, filter.key))
|
||||
end
|
||||
end
|
||||
whoQueryIdx = whoQueryIdx + 1
|
||||
if whoQueryIdx > #shared.WhoQueryService.queries then
|
||||
whoQueryIdx = 1
|
||||
end
|
||||
if whoQueryIdx > #shared.WhoQueryService.queries then whoQueryIdx = 1 end
|
||||
lastQuery = query
|
||||
---@diagnostic disable-next-line: param-type-mismatch
|
||||
SetWhoToUI(1)
|
||||
|
@@ -6,9 +6,7 @@ local function StringToMap(str, deliminer)
|
||||
local parts = { strsplit(deliminer, str) }
|
||||
for _, line in ipairs(parts) do
|
||||
line = strtrim(line)
|
||||
if line ~= "" then
|
||||
map[line] = true
|
||||
end
|
||||
if line ~= "" then map[line] = true end
|
||||
end
|
||||
return map
|
||||
end
|
||||
@@ -21,9 +19,7 @@ local function StringToArray(str, deliminer)
|
||||
local array = { strsplit(deliminer, str) }
|
||||
for i, line in ipairs(array) do
|
||||
line = strtrim(line)
|
||||
if line ~= "" then
|
||||
ret[i] = line
|
||||
end
|
||||
if line ~= "" then ret[i] = line end
|
||||
end
|
||||
return ret
|
||||
end
|
||||
@@ -39,7 +35,7 @@ local config = {
|
||||
stinky = aura_env.config.spotter.stinky,
|
||||
notifyChannel = aura_env.config.spotter.notifyChannel,
|
||||
zoneOverride = aura_env.config.spotter.zoneOverride,
|
||||
throttleTime = aura_env.config.spotter.throttleTime
|
||||
throttleTime = aura_env.config.spotter.throttleTime,
|
||||
},
|
||||
who = {
|
||||
enabled = aura_env.config.who.enabled,
|
||||
|
Reference in New Issue
Block a user