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
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
|
|
|