Rework chickenator command

This commit is contained in:
2024-12-21 10:53:21 +01:00
parent d064e8b64d
commit 01550ebb67

View File

@@ -2,21 +2,26 @@ local addonname, shared = ...
---@cast addonname string
---@class DechickenatorData
---@field blacklistedBuffs table<string, boolean>
---@field alerts table<string, Alert>
---@alias auraType
---| 'BUFF'
---| 'DEBUFF'
-- Lifebloom;B;R;e:spit;m:cuntfucker;c:YELL
--/dechicken a:Lifebloom;B;R;e:spit;m:cuntfucker;c:YELL
--/dechicken a:Lifebloom;B;R;e:spit;m:cuntfucker
--/dechicken a:Lifebloom;R;e:spit;m:cuntfucker
--/dechicken a:Lifebloom;B;R;m:cuntfucker
--/dechicken a:Lifebloom;B;R
---@class Alert
---@field message string?
---@field channel string?
---@field emote string?
---@field spellName string
---@field auraType string?
---@field remove boolean
---@field remove boolean?
--/run Dechickenator_Data = nil
if not Dechickenator_Data then Dechickenator_Data = {} end
if not Dechickenator_Data.alerts then Dechickenator_Data.alerts = {} end
local function init()
@@ -61,14 +66,56 @@ loadedFrame:SetScript("OnEvent", function(self, event, addonName)
end
end)
SlashCmdList["DECHICKENATOR_TOGGLE_BLACKLISTED_BUFF"] = function(input)
print("Toggling blacklisted buff: " .. tostring(input))
if Dechickenator_Data.blacklistedBuffs[input] then
Dechickenator_Data.blacklistedBuffs[input] = nil
else
Dechickenator_Data.blacklistedBuffs[input] = true
---@param table table
---@param depth number?
function DumpTable(table, depth)
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
print(string.rep(" ", depth) .. k .. ":")
DumpTable(v, depth + 1)
else
print(string.rep(" ", depth) .. k .. ": ", v)
end
end
end
SlashCmdList["DECHICKENATOR_TOGGLE_BLACKLISTED_BUFF"] = function(input)
local fields = { strsplit(";", input) }
---@type Alert
local aura = { spellName = "" }
for _, field in ipairs(fields) do
local data = { strsplit(":", field) }
local key = strtrim(data[1])
key = string.lower(key)
if key == "a" then
aura.spellName = strtrim(data[2])
elseif key == "b" then
aura.auraType = "BUFF"
elseif key == "d" then
aura.auraType = "DEBUFF"
elseif key == "e" then
aura.emote = strtrim(data[2])
elseif key == "m" then
aura.message = strtrim(data[2])
elseif key == "c" then
aura.channel = strtrim(data[2])
elseif key == "r" then
aura.remove = true
end
end
DumpTable(aura)
if aura.spellName ~= "" then
Dechickenator_Data.alerts[aura.spellName] = aura
end
print(Dechickenator_Data.blacklistedBuffs[input])
end
SLASH_DECHICKENATOR_TOGGLE_BLACKLISTED_BUFF1 = "/dechicken"