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.
78 lines
2.2 KiB
78 lines
2.2 KiB
|
3 years ago
|
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
|