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.

153 lines
3.9 KiB

--------------------------------------------------------------------------------
-- Module Declaration
--
local mod, CL = BigWigs:NewBoss("Tussle Tonks", 2097, 2336)
if not mod then return end
-- Enable on trash before boss for warmup
mod:RegisterEnableMob(
144244, -- The Platinum Pummeler
145185, -- Gnomercy 4.U.
151657, -- Bomb Tonk
151658, -- Strider Tonk
151659 -- Rocket Tonk
)
mod.engageId = 2257
--------------------------------------------------------------------------------
-- Locals
--
local platingStacks = 3
--------------------------------------------------------------------------------
-- Localization
--
local L = mod:GetLocale()
if L then
L.warmup_trigger = "Now this is a statistical anomaly! Our visitors are still alive!"
end
--------------------------------------------------------------------------------
-- Initialization
--
function mod:GetOptions()
return {
-- General
"warmup",
-- The Platinum Pummeler
282801, -- Platinum Plating
285020, -- Whirling Edge
285344, -- Lay Mine
-- Gnomercy 4.U.
{285152, "SAY", "FLASH"}, -- Foe Flipper
285388, -- Vent Jets
{283422, "SAY", "FLASH"}, -- Maximum Thrust
}, {
["warmup"] = "general",
[282801] = -19237,
[285152] = -19236,
}
end
function mod:OnBossEnable()
self:RegisterEvent("CHAT_MSG_MONSTER_YELL", "Warmup")
self:Log("SPELL_AURA_REMOVED", "PlatinumPlatingRemoved", 282801)
self:Log("SPELL_CAST_START", "WhirlingEdge", 285020)
self:Log("SPELL_CAST_SUCCESS", "LayMine", 285344)
self:Log("SPELL_CAST_SUCCESS", "FoeFlipper", 285152)
self:Log("SPELL_CAST_START", "VentJets", 285388)
self:Log("SPELL_CAST_SUCCESS", "VentJetsSuccess", 285388)
self:Log("SPELL_CAST_START", "MaximumThrust", 283422)
self:Death("PlatinumPummelerDeath", 144244)
self:Death("GnomercyDeath", 145185)
end
function mod:OnEngage()
platingStacks = 3
self:Bar(285020, 8.2) -- Whirling Edge
self:Bar(285388, 22) -- Vent Jets
end
--------------------------------------------------------------------------------
-- Event Handlers
--
function mod:Warmup(event, msg)
if msg == L.warmup_trigger then
self:UnregisterEvent(event)
self:Bar("warmup", 23, CL.active, "inv_engineering_autohammer")
end
end
function mod:PlatinumPlatingRemoved(args)
-- Manually track stacks since every time a stack is removed, the entire aura is removed and reapplied
platingStacks = platingStacks - 1
self:StackMessage(args.spellId, args.destName, platingStacks, "green")
self:PlaySound(args.spellId, "long")
end
function mod:WhirlingEdge(args)
self:Message(args.spellId, "red")
self:PlaySound(args.spellId, "alert")
self:Bar(args.spellId, 32.8)
end
function mod:LayMine(args)
self:Message(args.spellId, "orange")
self:PlaySound(args.spellId, "info")
end
do
local function printTarget(self, name, guid)
self:TargetMessage(285152, "yellow", name)
self:PlaySound(285152, "alert", nil, name)
if self:Me(guid) then
self:Say(285152)
self:Flash(285152)
end
end
function mod:FoeFlipper(args)
self:GetBossTarget(printTarget, 0.4, args.sourceGUID)
end
end
function mod:VentJets(args)
self:Message(args.spellId, "red")
self:PlaySound(args.spellId, "alarm")
self:Bar(args.spellId, 43.7)
end
function mod:VentJetsSuccess(args)
self:CastBar(args.spellId, 10)
end
do
local function printTarget(self, name, guid)
self:TargetMessage(283422, "yellow", name)
self:PlaySound(283422, "alert", nil, name)
if self:Me(guid) then
self:Say(283422)
self:Flash(283422)
end
end
function mod:MaximumThrust(args)
self:GetBossTarget(printTarget, 0.4, args.sourceGUID)
self:Bar(args.spellId, 43.7)
end
end
function mod:PlatinumPummelerDeath()
self:StopBar(285020) -- Whirling Edge
end
function mod:GnomercyDeath()
self:StopBar(285388) -- Vent Jets
self:StopBar(283422) -- Maximum Thrust
end