---@param str string ---@return table local function StringToMap(str, deliminer) if not str then return {} end local map = {} local parts = { strsplit(deliminer, str) } for _, line in ipairs(parts) do line = strtrim(line) if line ~= "" then map[line] = true end end return map end ---@param str string ---@return string[] local function StringToArray(str, deliminer) if not str then return {} end local ret = {} local array = { strsplit(deliminer, str) } for i, line in ipairs(array) do line = strtrim(line) if line ~= "" then ret[i] = line end end return ret end if not Heimdall_Data then Heimdall_Data = {} end local config = { spotter = { enabled = aura_env.config.spotter.enabled, everyone = aura_env.config.spotter.everyone, hostile = aura_env.config.spotter.hostile, alliance = aura_env.config.spotter.alliance, stinky = aura_env.config.spotter.stinky, notifyChannel = aura_env.config.spotter.notifyChannel, zoneOverride = aura_env.config.spotter.zoneOverride, throttleTime = aura_env.config.spotter.throttleTime, }, who = { enabled = aura_env.config.who.enabled, ignored = StringToMap(aura_env.config.who.ignored, "\n"), notifyChannel = aura_env.config.who.notifyChannel, ttl = aura_env.config.who.ttl, doWhisper = aura_env.config.who.doWhisper, zoneNotifyFor = StringToMap(aura_env.config.who.zoneNotifyFor, "\n"), }, messenger = { enabled = aura_env.config.messenger.enabled, interval = aura_env.config.messenger.interval, }, deathReporter = { enabled = aura_env.config.deathReporter.enabled, throttle = aura_env.config.deathReporter.throttle, doWhisper = aura_env.config.deathReporter.doWhisper, notifyChannel = aura_env.config.deathReporter.notifyChannel, zoneOverride = aura_env.config.deathReporter.zoneOverride, duelThrottle = aura_env.config.deathReporter.duelThrottle, }, whisperNotify = StringToArray(aura_env.config.whisperNotify, "\n"), stinkies = StringToMap(aura_env.config.stinkies, "\n"), inviter = { enabled = aura_env.config.inviter.enabled, listeningChannel = aura_env.config.inviter.listeningChannel, keyword = aura_env.config.inviter.keyword, allAssist = aura_env.config.inviter.allAssist, agentsAssist = aura_env.config.inviter.agentsAssist, throttle = aura_env.config.inviter.throttle, kickOffline = aura_env.config.inviter.kickOffline, cleanupInterval = aura_env.config.inviter.cleanupInterval, afkThreshold = aura_env.config.inviter.afkThreshold, }, dueler = { enabled = aura_env.config.dueler.enabled, declineOther = aura_env.config.dueler.declineOther, }, bully = { enabled = aura_env.config.bully.enabled, }, agentTracker = { enabled = aura_env.config.agentTracker.enabled, masterChannel = aura_env.config.agentTracker.masterChannel, }, emoter = { enabled = aura_env.config.emoter.enabled, masterChannel = aura_env.config.emoter.masterChannel, prefix = aura_env.config.emoter.prefix, }, echoer = { enabled = aura_env.config.echoer.enabled, masterChannel = aura_env.config.echoer.masterChannel, prefix = aura_env.config.echoer.prefix, }, macroer = { enabled = aura_env.config.macroer.enabled, priority = StringToArray(aura_env.config.macroer.priority, "\n"), }, commander = { enabled = aura_env.config.commander.enabled, masterChannel = aura_env.config.commander.masterChannel, commander = aura_env.config.commander.commander, commands = StringToMap(aura_env.config.commander.commands, ","), }, combatAlerter = { enabled = aura_env.config.combatAlerter.enabled, masterChannel = aura_env.config.combatAlerter.masterChannel, }, stinkyTracker = { enabled = aura_env.config.stinkyTracker.enabled, masterChannel = aura_env.config.stinkyTracker.masterChannel, }, } Heimdall_Data.config.spotter.enabled = config.spotter.enabled Heimdall_Data.config.spotter.everyone = config.spotter.everyone Heimdall_Data.config.spotter.hostile = config.spotter.hostile Heimdall_Data.config.spotter.alliance = config.spotter.alliance Heimdall_Data.config.spotter.stinky = config.spotter.stinky Heimdall_Data.config.spotter.notifyChannel = config.spotter.notifyChannel Heimdall_Data.config.spotter.zoneOverride = config.spotter.zoneOverride Heimdall_Data.config.spotter.throttleTime = config.spotter.throttleTime Heimdall_Data.config.who.enabled = config.who.enabled Heimdall_Data.config.who.ignored = config.who.ignored Heimdall_Data.config.who.notifyChannel = config.who.notifyChannel Heimdall_Data.config.who.ttl = config.who.ttl Heimdall_Data.config.who.doWhisper = config.who.doWhisper Heimdall_Data.config.who.zoneNotifyFor = config.who.zoneNotifyFor Heimdall_Data.config.messenger.enabled = config.messenger.enabled Heimdall_Data.config.messenger.interval = config.messenger.interval Heimdall_Data.config.deathReporter.enabled = config.deathReporter.enabled Heimdall_Data.config.deathReporter.throttle = config.deathReporter.throttle Heimdall_Data.config.deathReporter.doWhisper = config.deathReporter.doWhisper Heimdall_Data.config.deathReporter.notifyChannel = config.deathReporter.notifyChannel Heimdall_Data.config.deathReporter.zoneOverride = config.deathReporter.zoneOverride Heimdall_Data.config.deathReporter.duelThrottle = config.deathReporter.duelThrottle Heimdall_Data.config.inviter.enabled = config.inviter.enabled Heimdall_Data.config.inviter.listeningChannel = config.inviter.listeningChannel Heimdall_Data.config.inviter.keyword = config.inviter.keyword Heimdall_Data.config.inviter.allAssist = config.inviter.allAssist Heimdall_Data.config.inviter.agentsAssist = config.inviter.agentsAssist Heimdall_Data.config.inviter.throttle = config.inviter.throttle Heimdall_Data.config.inviter.kickOffline = config.inviter.kickOffline Heimdall_Data.config.inviter.cleanupInterval = config.inviter.cleanupInterval Heimdall_Data.config.inviter.afkThreshold = config.inviter.afkThreshold Heimdall_Data.config.dueler.enabled = config.dueler.enabled Heimdall_Data.config.dueler.declineOther = config.dueler.declineOther Heimdall_Data.config.bully.enabled = config.bully.enabled Heimdall_Data.config.agentTracker.enabled = config.agentTracker.enabled Heimdall_Data.config.agentTracker.masterChannel = config.agentTracker.masterChannel Heimdall_Data.config.emoter.enabled = config.emoter.enabled Heimdall_Data.config.emoter.masterChannel = config.emoter.masterChannel Heimdall_Data.config.emoter.prefix = config.emoter.prefix Heimdall_Data.config.echoer.enabled = config.echoer.enabled Heimdall_Data.config.echoer.masterChannel = config.echoer.masterChannel Heimdall_Data.config.echoer.prefix = config.echoer.prefix Heimdall_Data.config.macroer.enabled = config.macroer.enabled Heimdall_Data.config.macroer.priority = config.macroer.priority Heimdall_Data.config.commander.enabled = config.commander.enabled Heimdall_Data.config.commander.masterChannel = config.commander.masterChannel Heimdall_Data.config.commander.commander = config.commander.commander Heimdall_Data.config.commander.commands = config.commander.commands Heimdall_Data.config.combatAlerter.enabled = config.combatAlerter.enabled Heimdall_Data.config.combatAlerter.masterChannel = config.combatAlerter.masterChannel Heimdall_Data.config.stinkyTracker.enabled = config.stinkyTracker.enabled Heimdall_Data.config.stinkyTracker.masterChannel = config.stinkyTracker.masterChannel Heimdall_Data.config.whisperNotify = config.whisperNotify Heimdall_Data.config.stinkies = config.stinkies