Add 1s timer to remove buffs

This commit is contained in:
2024-12-22 14:11:25 +01:00
parent c75700cb76
commit 85cb445e8e
2 changed files with 24 additions and 2 deletions

View File

@@ -1,6 +1,10 @@
local addonname, shared = ... local addonname, shared = ...
---@cast addonname string ---@cast addonname string
---@class shared
---@field timer number?
shared = { timer = nil }
---@class DechickenatorData ---@class DechickenatorData
---@field alerts table<string, Alert> ---@field alerts table<string, Alert>
@@ -12,7 +16,7 @@ local addonname, shared = ...
--/dechicken a:Greater Blessing of Kings;R;e:spit;m:cuntfucker --/dechicken a:Greater Blessing of Kings;R;e:spit;m:cuntfucker
--/dechicken a:Greater Blessing of Kings;R;e:spit;m:cuntfucker --/dechicken a:Greater Blessing of Kings;R;e:spit;m:cuntfucker
--/dechicken a:Greater Blessing of Kings;R;m:cuntfucker --/dechicken a:Greater Blessing of Kings;R;m:cuntfucker
--/dechicken a:Greater Blessing of Kings;R;e:laugh --/dechicken a:Turkey Feathers;R;e:laugh
---@class Alert ---@class Alert
---@field message string? ---@field message string?
---@field channel string? ---@field channel string?
@@ -25,6 +29,24 @@ local addonname, shared = ...
if not Dechickenator_Data then Dechickenator_Data = {} end if not Dechickenator_Data then Dechickenator_Data = {} end
if not Dechickenator_Data.alerts then Dechickenator_Data.alerts = {} end if not Dechickenator_Data.alerts then Dechickenator_Data.alerts = {} end
local function init() local function init()
local function RemoveBuff(buff)
if UnitAffectingCombat("player") then return end
CancelUnitBuff("player", buff)
end
local function RemoveBuffs()
if UnitAffectingCombat("player") then return end
for buff, enabled in pairs(Dechickenator_Data.alerts) do
if enabled then
RemoveBuff(buff)
end
end
end
if not shared.timer then
shared.timer = C_Timer.NewTicker(1, function()
RemoveBuffs()
end)
end
local cleuFrame = CreateFrame("Frame") local cleuFrame = CreateFrame("Frame")
cleuFrame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED") cleuFrame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
cleuFrame:SetScript("OnEvent", function(self, event, ...) cleuFrame:SetScript("OnEvent", function(self, event, ...)
@@ -50,7 +72,7 @@ local function init()
DoEmote(Dechickenator_Data.alerts[spellName].emote, source) DoEmote(Dechickenator_Data.alerts[spellName].emote, source)
end end
if Dechickenator_Data.alerts[spellName].remove then if Dechickenator_Data.alerts[spellName].remove then
CancelUnitBuff("player", spellName) RemoveBuff(spellName)
end end
end end
end) end)

Binary file not shown.