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.
101 lines
2.6 KiB
101 lines
2.6 KiB
local mod = DBM:NewMod("StratWaves", "DBM-Party-WotLK", 3)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20240412191704")
|
|
|
|
mod:RegisterEvents(
|
|
"UPDATE_UI_WIDGET",
|
|
"UNIT_DIED",
|
|
"CHAT_MSG_MONSTER_SAY"
|
|
)
|
|
mod.noStatistics = true
|
|
|
|
local warningWaveNow = mod:NewAnnounce("WarningWaveNow", 3)
|
|
|
|
local timerWaveIn = mod:NewTimer(20, "TimerWaveIn", 57687, nil, nil, 1)
|
|
local timerRoleplay = mod:NewTimer(162, "TimerRoleplay")
|
|
|
|
--TODO, fix waves
|
|
local wavesNormal = {
|
|
{2, L.Devouring},
|
|
{2, L.Devouring},
|
|
{2, L.Devouring},
|
|
{2, L.Devouring},
|
|
{DBM_COMMON_L.BOSS},
|
|
{2, L.Devouring},
|
|
{2, L.Devouring},
|
|
{2, L.Devouring},
|
|
{2, L.Devouring},
|
|
{DBM_COMMON_L.BOSS},
|
|
}
|
|
|
|
local wavesHeroic = {
|
|
{3, L.Devouring},
|
|
{1, L.Devouring, 1, L.Enraged, 1, L.Necro},
|
|
{1, L.Devouring, 1, L.Enraged, 1, L.Necro, 1, L.Fiend},
|
|
{1, L.Necro, 4, L.Acolyte, 1, L.Fiend},
|
|
{DBM_COMMON_L.BOSS},
|
|
{1, L.Devouring, 1, L.Necro, 1, L.Fiend, 1, L.Stalker},
|
|
{1, L.Devouring, 2, L.Enraged, 1, L.Abom},
|
|
{1, L.Devouring, 1, L.Enraged, 1, L.Necro, 1, L.Abom},
|
|
{1, L.Devouring, 1, L.Necro, 1, L.Fiend, 1, L.Abom},
|
|
{DBM_COMMON_L.BOSS},
|
|
}
|
|
|
|
local lastWave = 0
|
|
|
|
local function getWaveString(self, wave)
|
|
local waveInfo
|
|
if self:IsDifficulty("heroic5") then
|
|
waveInfo = wavesHeroic[wave]
|
|
else
|
|
waveInfo = wavesNormal[wave]
|
|
end
|
|
if #waveInfo == 1 then
|
|
return L.WaveBoss:format(unpack(waveInfo))
|
|
elseif #waveInfo == 2 then
|
|
return L.Wave1:format(unpack(waveInfo))
|
|
elseif #waveInfo == 4 then
|
|
return L.Wave2:format(unpack(waveInfo))
|
|
elseif #waveInfo == 6 then
|
|
return L.Wave3:format(unpack(waveInfo))
|
|
elseif #waveInfo == 8 then
|
|
return L.Wave4:format(unpack(waveInfo))
|
|
end
|
|
end
|
|
|
|
function mod:UPDATE_UI_WIDGET(table)
|
|
local id = table.widgetID
|
|
if id ~= 541 and id ~= 3870 then return end
|
|
local widgetInfo = C_UIWidgetManager.GetIconAndTextWidgetVisualizationInfo(id)
|
|
if widgetInfo and widgetInfo.text then
|
|
local text = widgetInfo.text
|
|
local wave = text:match("(%d+).+10")
|
|
if not wave then
|
|
wave = 0
|
|
end
|
|
wave = tonumber(wave) or 0
|
|
if wave < lastWave then
|
|
lastWave = 0
|
|
end
|
|
if wave > lastWave then
|
|
warningWaveNow:Show(wave, getWaveString(self, wave))
|
|
lastWave = wave
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_DIED(args)
|
|
local cid = self:GetCIDFromGUID(args.destGUID)
|
|
if cid == 26529 then
|
|
timerWaveIn:Start()
|
|
end
|
|
end
|
|
|
|
function mod:CHAT_MSG_MONSTER_SAY(msg)
|
|
if msg == L.Roleplay or msg:find(L.Roleplay) then
|
|
timerRoleplay:Start()--Arthas preaches to uther and jaina
|
|
elseif msg == L.Roleplay2 or msg:find(L.Roleplay2) then
|
|
timerRoleplay:Start(106)--Arthas prances around blabbing with malganis
|
|
end
|
|
end
|
|
|