You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
2.4 KiB

local mod = DBM:NewMod("PT", "DBM-Party-BC", 12)
local L = mod:GetLocalizedStrings()
mod.noStatistics = true
mod:SetRevision("20240412191704")
mod:RegisterEvents(
"UPDATE_UI_WIDGET",
"UNIT_DIED",
"CHAT_MSG_MONSTER_YELL"
)
mod.noStatistics = true
-- Portals
local warnWavePortalSoon = mod:NewAnnounce("WarnWavePortalSoon", 2, 57687)
local warnWavePortal = mod:NewAnnounce("WarnWavePortal", 3, 57687)
local warnBossPortal = mod:NewAnnounce("WarnBossPortal", 4, 33341)
local timerNextPortal = mod:NewTimer(120, "TimerNextPortal", 57687, nil, nil, 6)
mod:AddBoolOption("ShowAllPortalTimers", false, "timer")
local lastPortal = 0
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 17879 or cid == 17880 then
if self:IsRetail() then
timerNextPortal:Start(30, lastPortal + 1)
warnWavePortalSoon:Schedule(20)
else
timerNextPortal:Start(122, lastPortal + 1)
warnWavePortalSoon:Schedule(112)
end
end
end
function mod:UPDATE_UI_WIDGET(table)
local id = table.widgetID
if id ~= (self:IsRetail() and 527 or 3120) then--TODO, confirm wrath classic still using custom ID from TBC classic of 3120
return
end
local widgetInfo = C_UIWidgetManager.GetIconAndTextWidgetVisualizationInfo(id)
if widgetInfo and widgetInfo.text then
local text = widgetInfo.text
local currentPortal = text:match("(%d+).+18")
if not currentPortal then
currentPortal = 0
end
currentPortal = tonumber(currentPortal) or 0
if currentPortal > lastPortal then
warnWavePortalSoon:Cancel()
timerNextPortal:Cancel()
if currentPortal == 6 or currentPortal == 12 or currentPortal == 18 then
warnBossPortal:Show()
else
warnWavePortal:Show(currentPortal)
if self.Options.ShowAllPortalTimers and not self:IsRetail() then
timerNextPortal:Start(122, currentPortal + 1)--requires complete overhaul I haven't patience to do on retail
warnWavePortalSoon:Schedule(112)--because portals spawn faster and faster each time with newer tech added in later years/TW versions
end
end
lastPortal = currentPortal
elseif currentPortal < lastPortal then
lastPortal = 0
end
end
end
function mod:CHAT_MSG_MONSTER_YELL(msg)
if msg == L.Shielddown or msg:find(L.Shielddown) then
self:SendSync("Wipe")
end
end
function mod:OnSync(msg, arg)
if msg == "Wipe" then
warnWavePortalSoon:Cancel()
timerNextPortal:Cancel()
end
end