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.

77 lines
2.2 KiB

local mod = DBM:NewMod("PT", "DBM-Party-BC", 12)
local L = mod:GetLocalizedStrings()
mod.statTypes = "normal,heroic,timewalker"
mod:SetRevision("20200912133955")
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 then
timerNextPortal:Start(30, lastPortal + 1)
warnWavePortalSoon:Schedule(25)
elseif cid == 17880 then
timerNextPortal:Start(30, lastPortal + 1)
warnWavePortalSoon:Schedule(25)
end
end
function mod:UPDATE_UI_WIDGET(table)
local id = table.widgetID
if id ~= 527 then return end
local widgetInfo = C_UIWidgetManager.GetIconAndTextWidgetVisualizationInfo(id)
local text = widgetInfo.text
if not text then return end
local currentPortal = text:match("(%d+).+18")
if not currentPortal then
currentPortal = 0
end
currentPortal = tonumber(currentPortal)
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 then
timerNextPortal:Start(122, currentPortal + 1)--requires complete overhaul I haven't patience to do.
warnWavePortalSoon:Schedule(112)--because portals spawn faster and faster each time.
end--]]
end
lastPortal = currentPortal
elseif currentPortal < lastPortal then
lastPortal = 0
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