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.
176 lines
5.5 KiB
176 lines
5.5 KiB
|
|
--------------------------------------------------------------------------------
|
|
-- Module Declaration
|
|
--
|
|
|
|
local mod, CL = BigWigs:NewBoss("The Council of Tribes", 1762, 2170)
|
|
if not mod then return end
|
|
mod:RegisterEnableMob(135475, 135470, 135472) -- Kula the Butcher, Aka'ali the Conqueror, Zanazal the Wise
|
|
mod.engageId = 2140
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Locals
|
|
--
|
|
|
|
local stage = 0
|
|
local bossOrder = {}
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Initialization
|
|
--
|
|
|
|
function mod:GetOptions()
|
|
return {
|
|
"stages",
|
|
-- Kula the Butcher
|
|
266206, -- Whirling Axes
|
|
266231, -- Severing Axe
|
|
-- Aka'ali the Conqueror
|
|
{266951, "SAY", "SAY_COUNTDOWN"}, -- Barrel Through
|
|
{266237, "TANK"}, -- Debilitating Backhand
|
|
-- Zanazal the Wise
|
|
267273, -- Poison Nova
|
|
267060, -- Call of the Elements
|
|
}, {
|
|
[266206] = -18261, -- Kula the Butcher
|
|
[266951] = -18264, -- Aka'ali the Conqueror
|
|
[267273] = -18267, -- Zanazal the Wise
|
|
}
|
|
end
|
|
|
|
function mod:OnBossEnable()
|
|
self:RegisterEvent("CHAT_MSG_RAID_BOSS_EMOTE") -- Barrel Through
|
|
|
|
self:Log("SPELL_CAST_START", "PoisonNova", 267273)
|
|
self:Log("SPELL_CAST_START", "CalloftheElements", 267060)
|
|
|
|
self:Log("SPELL_CAST_START", "WhirlingAxes", 266206)
|
|
self:Log("SPELL_CAST_SUCCESS", "SeveringAxeSuccess", 266231)
|
|
self:Log("SPELL_AURA_APPLIED", "SeveringAxeApplied", 266231)
|
|
|
|
self:Log("SPELL_CAST_START", "DebilitatingBackhand", 266237)
|
|
end
|
|
|
|
function mod:OnEngage()
|
|
stage = 0
|
|
bossOrder = {}
|
|
self:RegisterEvent("INSTANCE_ENCOUNTER_ENGAGE_UNIT")
|
|
-- IEEU engages the boss module, so the first time the event fires, it is not yet registered here.
|
|
self:INSTANCE_ENCOUNTER_ENGAGE_UNIT()
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Event Handlers
|
|
--
|
|
|
|
do
|
|
local function startTimer(mobId, time)
|
|
if mobId == 135475 then -- Kula the Butcher
|
|
mod:Bar(266206, time) -- Whirling Axes
|
|
elseif mobId == 135470 then -- Aka'ali the Conqueror
|
|
mod:Bar(266951, time) -- Barrel Through
|
|
elseif mobId == 135472 then -- Zanazal the Wise
|
|
mod:Bar(267273, time) -- Poison Nova
|
|
end
|
|
end
|
|
|
|
function mod:INSTANCE_ENCOUNTER_ENGAGE_UNIT()
|
|
-- IEEU fires on living boss spawn and death
|
|
-- mobId will be nil if the boss died
|
|
local guid = self:UnitGUID("boss1")
|
|
if guid then -- Boss spawned
|
|
stage = stage + 1
|
|
local mobId = self:MobId(guid)
|
|
bossOrder[stage] = mobId
|
|
-- Start timers
|
|
if mobId == 135475 then -- Kula the Butcher
|
|
self:Bar(266206, 8) -- Whirling Axes
|
|
self:Bar(266231, 24) -- Severing Axe
|
|
elseif mobId == 135470 then -- Aka'ali the Conqueror
|
|
self:Bar(266951, 5.5) -- Barrel Through
|
|
elseif mobId == 135472 then -- Zanazal the Wise
|
|
self:Bar(267273, 16) -- Poison Nova
|
|
self:Bar(267060, 20) -- Call of the Elements
|
|
end
|
|
|
|
if stage == 2 or stage == 3 then
|
|
self:Message("stages", "cyan", CL.stage:format(stage), false)
|
|
self:PlaySound("stages", "long")
|
|
-- The dead bosses use their abilities a number of seconds after the current living one spawns
|
|
startTimer(bossOrder[1], 15.8)
|
|
if stage == 3 then
|
|
startTimer(bossOrder[2], 48.1)
|
|
end
|
|
end
|
|
else -- Boss killed
|
|
-- Kula the Butcher
|
|
self:StopBar(266231) -- Severing Axe
|
|
self:StopBar(266206) -- Whirling Axes
|
|
-- Aka'ali the Conqueror
|
|
self:StopBar(266951) -- Barrel Through
|
|
self:CancelSayCountdown(266951) -- Barrel Through
|
|
self:StopBar(266237) -- Debilitating Backhan
|
|
-- Zanazal the Wise
|
|
self:StopBar(267060) -- Call of the Elements
|
|
self:StopBar(267273) -- Poison Nova
|
|
if stage == 1 or stage == 2 then
|
|
self:Bar("stages", 6, CL.stage:format(stage + 1), "achievement_dungeon_kingsrest")
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:CHAT_MSG_RAID_BOSS_EMOTE(_, msg, _, _, _, destName)
|
|
if msg:find("266951") then -- Barrel Through
|
|
self:TargetMessage(266951, "red", destName)
|
|
self:PlaySound(266951, "warning", nil, destName)
|
|
local guid = self:UnitGUID(destName)
|
|
if self:Me(guid) then
|
|
self:Say(266951)
|
|
self:SayCountdown(266951, 8)
|
|
end
|
|
local mobId = self:MobId(self:UnitGUID("boss1"))
|
|
if mobId == 135470 then -- Aka'ali the Conqueror
|
|
self:Bar(266951, 23.1) -- Barrel Through
|
|
self:Bar(266237, 9) -- Debilitating Backhand
|
|
else
|
|
self:Bar(266951, 51) -- Barrel Through
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:PoisonNova(args)
|
|
self:Message(args.spellId, "orange")
|
|
self:PlaySound(args.spellId, "alarm")
|
|
local mobId = self:MobId(self:UnitGUID("boss1"))
|
|
self:Bar(args.spellId, mobId == 135472 and 29.2 or 51) -- Zanazal the Wise
|
|
end
|
|
|
|
function mod:CalloftheElements(args)
|
|
self:Message(args.spellId, "yellow")
|
|
self:PlaySound(args.spellId, "long")
|
|
self:CDBar(args.spellId, 53.5) -- Can be delayed if the boss is casting Poison Nova
|
|
end
|
|
|
|
function mod:WhirlingAxes(args)
|
|
self:Message(args.spellId, "yellow")
|
|
self:PlaySound(args.spellId, "alert")
|
|
local mobId = self:MobId(self:UnitGUID("boss1"))
|
|
self:Bar(args.spellId, mobId == 135475 and 10.9 or 50) -- Kula the Butcher
|
|
end
|
|
|
|
function mod:SeveringAxeSuccess(args)
|
|
self:Bar(args.spellId, 21.9)
|
|
end
|
|
|
|
function mod:SeveringAxeApplied(args)
|
|
self:TargetMessage(args.spellId, "orange", args.destName)
|
|
if self:Me(args.destGUID) or self:Healer() then
|
|
self:PlaySound(args.spellId, "alarm", nil, args.destName)
|
|
end
|
|
end
|
|
|
|
function mod:DebilitatingBackhand(args)
|
|
self:Message(args.spellId, "purple")
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
|