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.
98 lines
3.2 KiB
98 lines
3.2 KiB
|
|
--------------------------------------------------------------------------------
|
|
-- Module Declaration
|
|
--
|
|
|
|
local mod, CL = BigWigs:NewBoss("The Violet Hold Trash", 608)
|
|
if not mod then return end
|
|
mod.displayName = CL.trash
|
|
mod:RegisterEnableMob(
|
|
30658, -- Lieutenant Sinclari
|
|
-- Bosses
|
|
29315, -- Erekem
|
|
29316, -- Moragg
|
|
29313, -- Ichoron
|
|
29266, -- Xevozz
|
|
29312, -- Lavanthor
|
|
29314, -- Zuramat the Obliterator
|
|
-- Replacements mobs for above bosses.
|
|
-- They spawn if you kill the above bosses but fail the encounter afterwards.
|
|
-- You don't get to kill the same bosses again.
|
|
32226, -- Arakkoa Windwalker (Erekem)
|
|
32235, -- Chaos Watcher (Moragg)
|
|
32234, -- Swirling Water Revenant (Ichoron)
|
|
32231, -- Ethereal Wind Trader (Xevozz)
|
|
32237, -- Lava Hound (Lavanthor)
|
|
32230 -- Void Lord (Zuramat the Obliterator)
|
|
)
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Locals
|
|
--
|
|
|
|
local prevWave = 0
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Localization
|
|
--
|
|
|
|
local L = mod:GetLocale()
|
|
if L then
|
|
L.portals = "Portals"
|
|
L.portals_desc = "Information about portals."
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Initialization
|
|
--
|
|
|
|
function mod:GetOptions()
|
|
return {
|
|
"portals",
|
|
}
|
|
end
|
|
|
|
function mod:OnBossEnable()
|
|
self:RegisterWidgetEvent(566, "UpdateWaveTimers")
|
|
self:Death("BossDeaths", 29315, 29316, 29313, 29266, 29312, 29314, 32226, 32230, 32231, 32234, 32235, 32237)
|
|
self:Death("Disable", 31134)
|
|
end
|
|
|
|
function mod:OnDisable()
|
|
prevWave = 0
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Event Handlers
|
|
--
|
|
|
|
function mod:UpdateWaveTimers(id, text)
|
|
local wave = text:match("(%d+).+18")
|
|
if wave then
|
|
local currentWave = tonumber(wave)
|
|
if currentWave and currentWave ~= prevWave then
|
|
prevWave = currentWave
|
|
local portal = self:SpellName(216299) -- Portal
|
|
if currentWave == 6 or currentWave == 12 then
|
|
self:MessageOld("portals", "yellow", "info", CL.incoming:format(_G.BOSS), false)
|
|
self:StopBar(CL.count:format(portal, currentWave))
|
|
elseif currentWave == 18 then
|
|
self:UnregisterWidgetEvent(id)
|
|
local cyanigosa = self:BossName(632) -- Cyanigosa
|
|
self:MessageOld("portals", "yellow", "info", CL.custom_sec:format(cyanigosa, 17), false)
|
|
self:Bar("portals", 17, CL.count:format(portal, currentWave), "spell_arcane_portaldalaran")
|
|
else
|
|
-- The single mobs (Guardian/Keeper) are 15s, the groups are about 12s. The spawn in random so stick to 15s.
|
|
self:Bar("portals", 15, CL.count:format(portal, currentWave), "spell_arcane_portaldalaran")
|
|
self:MessageOld("portals", "yellow", "info", CL.custom_sec:format(CL.count:format(portal, currentWave), 15), false)
|
|
self:Bar("portals", 134, CL.count:format(portal, currentWave+1), "spell_arcane_portaldalaran") -- 119s + 15s depending on spawn, sometimes it's 101s + 15s if the spawn is a group. Stick with 134s.
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:BossDeaths()
|
|
local count = prevWave+1
|
|
self:Bar("portals", count == 7 and 35 or 30, CL.count:format(self:SpellName(216299), count), "spell_arcane_portaldalaran") -- (20s or 15s) + 15s
|
|
end
|
|
|
|
|