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.

344 lines
9.6 KiB

--------------------------------------------------------------------------------
-- Module Declaration
--
local mod, CL = BigWigs:NewBoss("Siege of Boralus Trash", 1822)
if not mod then return end
mod.displayName = CL.trash
mod:RegisterEnableMob(
138465, -- Ashvane Cannoneer
128969, -- Ashvane Commander
135263, -- Ashvane Spotter
138255, -- Ashvane Spotter
135245, -- Bilge Rat Demolisher
135241, -- Bilge Rat Pillager
129367, -- Bilge Rat Tempest
129369, -- Irontide Raider
141284, -- Kul Tiran Wavetender
141283, -- Kul Tiran Halberd
138019, -- Kul Tiran Vanguard
141285, -- Kul Tiran Marksman
129366, -- Bilge Rat Buccaneer
137516, -- Ashvane Invader
129370, -- Irontide Waveshaper
137521, -- Irontide Powdershot
129374, -- Scrimshaw Enforcer (Alliance)
129371, -- Riptide Shredder (Alliance)
129640, -- Snarling Dockhound (Alliance)
129373, -- Dockhound Packmaster (Alliance)
129372 -- Blacktar Bomber (Alliance)
)
--------------------------------------------------------------------------------
-- Localization
--
local L = mod:GetLocale()
if L then
L.cannoneer = "Ashvane Cannoneer"
L.commander = "Ashvane Commander"
L.spotter = "Ashvane Spotter"
L.demolisher = "Bilge Rat Demolisher"
L.pillager = "Bilge Rat Pillager"
L.tempest = "Bilge Rat Tempest"
L.wavetender = "Kul Tiran Wavetender"
L.halberd = "Kul Tiran Halberd"
L.raider = "Irontide Raider"
L.vanguard = "Kul Tiran Vanguard"
L.marksman = "Kul Tiran Marksman"
L.buccaneer = "Bilge Rat Buccaneer"
L.invader = "Ashvane Invader"
L.dockhound = "Snarling Dockhound"
L.shredder = "Riptide Shredder"
L.packmaster = "Dockhound Packmaster"
L.bomber = "Blackar Bomber"
end
--------------------------------------------------------------------------------
-- Initialization
--
function mod:GetOptions()
return {
-- Ashvane Cannoneer
268260, -- Broadside
-- Ashvane Commander
272874, -- Trample
275826, -- Bolstering Shout
-- Ashvane Invader
275835, -- Stinging Venom Coating
-- Ashvane Spotter
{272421, "SAY"}, -- Sighted Artillery
-- Bilge Rat Demolisher
257169, -- Terrifying Roar
272711, -- Crushing Slam
-- Bilge Rat Pillager
272827, -- Viscous Slobber
-- Bilge Rat Tempest
274569, -- Revitalizing Mist
-- Bilge Rat Buccaneer
272546, -- Banana Rampage
-- Irontide Raider
257170, -- Savage Tempest
-- Kul Tiran Wavetender
256957, -- Watertight Shell
-- Kul Tiran Halberd
256627, -- Slobber Knocker
-- Kul Tiran Vanguard
257288, -- Heavy Slash
-- Kul Tiran Marksman
257641, -- Molten Slug
-- Snarling Dockhound
256897, -- Clamping Jaws
-- Riptide Shredder
256866, -- Iron Ambush
-- Dockhound Packmaster
{257036, "SAY"}, -- Feral Charge
-- Blacktar Bomber
256640, -- Burning Tar
256673, -- Immolation
}, {
[268260] = L.cannoneer,
[272874] = L.commander,
[275835] = L.invader,
[272421] = L.spotter,
[257169] = L.demolisher,
[272827] = L.pillager,
[274569] = L.tempest,
[272546] = L.buccaneer,
[257170] = L.raider,
[256957] = L.wavetender,
[256627] = L.halberd,
[257288] = L.vanguard,
[257641] = L.marksman,
[256897] = L.dockhound,
[256866] = L.shredder,
[257036] = L.packmaster,
[256640] = L.bomber,
}
end
function mod:OnBossEnable()
-- Ashvane Commander
self:Log("SPELL_CAST_START", "BolsteringShout", 275826)
self:Log("SPELL_CAST_SUCCESS", "BolsteringShoutSuccess", 275826)
-- Ashvane Invader
self:Log("SPELL_CAST_START", "StingingVenomCoating", 275835)
-- Ashvane Spotter
self:Log("SPELL_AURA_APPLIED", "SightedArtillery", 272421)
-- Bilge Rat Demolisher
self:Log("SPELL_CAST_START", "TerrifyingRoar", 257169)
-- Bilge Rat Pillager
self:Log("SPELL_CAST_START", "ViscousSlobber", 272827)
-- Bilge Rat Tempest
self:Log("SPELL_CAST_START", "RevitalizingMist", 274569)
-- Bilge Rat Buccaneer
self:Log("SPELL_CAST_START", "BananaRampage", 272546)
-- Irontide Raider
self:Log("SPELL_CAST_START", "SavageTempest", 257170)
self:Log("SPELL_CAST_SUCCESS", "SavageTempestSuccess", 257170)
self:Death("IrontideRaiderDeath", 129369)
-- Kul Tiran Wavetender
self:Log("SPELL_CAST_START", "WatertightShell", 256957)
self:Log("SPELL_AURA_APPLIED", "WatertightShellApplied", 256957)
-- Kul Tiran Halberd
self:Log("SPELL_CAST_START", "SlobberKnocker", 256627)
-- Kul Tiran Marksman
self:Log("SPELL_CAST_START", "MoltenSlug", 257641)
-- Snarling Dockhound
self:Log("SPELL_CAST_SUCCESS", "ClampingJaws", 256897)
-- Riptide Shredder
self:Log("SPELL_CAST_START", "IronAmbush", 256866)
-- Dockhound Packmaster
self:Log("SPELL_CAST_START", "FeralCharge", 257036)
-- Blacktar Bomber
self:Log("SPELL_CAST_SUCCESS", "BurningTar", 256640)
self:Log("SPELL_CAST_START", "Immolation", 256673)
-- Ashvane Cannoneer's Broadside
-- Ashvane Commander's Trample
-- Bilge Rat Demolisher's Crushing Slam
-- Kul Tiran Vanguard's Heavy Slash
self:RegisterEvent("UNIT_SPELLCAST_START")
-- Bilge Rat Demolisher's Crushing Slam
self:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
end
--------------------------------------------------------------------------------
-- Event Handlers
--
function mod:BolsteringShout(args)
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
self:PlaySound(args.spellId, "info")
end
function mod:BolsteringShoutSuccess(args)
self:Message(args.spellId, "red")
self:PlaySound(args.spellId, "alarm")
end
do
local prev = 0
function mod:StingingVenomCoating(args)
local t = args.time
if t-prev > 1.5 then
prev = t
self:Message(args.spellId, "red")
self:PlaySound(args.spellId, "alert")
end
end
end
function mod:SightedArtillery(args)
self:TargetMessage(args.spellId, "yellow", args.destName)
self:PlaySound(args.spellId, "info")
self:TargetBar(args.spellId, 6, args.destName)
if self:Me(args.destGUID) then
self:Say(args.spellId)
end
end
function mod:TerrifyingRoar(args)
self:Message(args.spellId, "red")
self:PlaySound(args.spellId, "alarm")
self:CastBar(args.spellId, 3)
end
function mod:ViscousSlobber(args)
self:Message(args.spellId, "orange")
self:PlaySound(args.spellId, "alert")
end
function mod:RevitalizingMist(args)
self:Message(args.spellId, "orange")
self:PlaySound(args.spellId, "alert")
end
function mod:BananaRampage(args)
self:Message(args.spellId, "orange")
self:PlaySound(args.spellId, "alert")
end
function mod:SavageTempest(args)
self:Message(args.spellId, "yellow")
self:PlaySound(args.spellId, "long")
end
function mod:SavageTempestSuccess(args)
self:CDBar(args.spellId, 14)
end
function mod:IrontideRaiderDeath(args)
self:StopBar(257170) -- Savage Tempest
end
function mod:WatertightShell(args)
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
self:PlaySound(args.spellId, "alert")
end
function mod:WatertightShellApplied(args)
if not UnitIsPlayer(args.destName) then
self:Message(args.spellId, "red", CL.on:format(args.spellName, args.destName))
self:PlaySound(args.spellId, "warning")
end
end
function mod:SlobberKnocker(args)
self:Message(args.spellId, "orange")
self:PlaySound(args.spellId, "alert")
end
do
local prev = 0
local function printTarget(self, name, guid)
if self:Me(guid) then
local t = GetTime()
if t-prev > 2 then
prev = t
self:PersonalMessage(257641) -- Molten Slug
self:PlaySound(257641, "info") -- Molten Slug
end
end
end
function mod:MoltenSlug(args)
self:GetUnitTarget(printTarget, 0.4, args.sourceGUID)
end
end
function mod:ClampingJaws(args)
self:TargetMessage(args.spellId, "yellow", args.destName)
self:PlaySound(args.spellId, "info", nil, args.destName)
end
function mod:IronAmbush(args)
self:Message(args.spellId, "orange")
self:PlaySound(args.spellId, "alert")
end
do
local function printTarget(self, name, guid)
self:TargetMessage(257036, "orange", name)
self:PlaySound(257036, "alert", nil, name)
if self:Me(guid) then
self:Say(257036)
end
end
function mod:FeralCharge(args)
self:GetUnitTarget(printTarget, 0.4, args.sourceGUID)
end
end
function mod:BurningTar(args)
self:Message(args.spellId, "orange")
self:PlaySound(args.spellId, "alarm")
end
function mod:Immolation(args)
self:Message(args.spellId, "red", CL.casting:format(args.spellName))
self:PlaySound(args.spellId, "alert")
end
do
local prev = nil
function mod:UNIT_SPELLCAST_START(_, unit, castGUID, spellId)
if spellId == 272711 and castGUID ~= prev then -- Crushing Slam
prev = castGUID
self:Message(spellId, "orange")
self:PlaySound(spellId, "alert")
self:CastBar(spellId, 3.5)
elseif spellId == 268260 and castGUID ~= prev then -- Broadside
local guid = self:UnitGUID(unit)
if self:MobId(guid) == 138465 then -- Trash cannoneer, Lockwood cannoneers have a different id
prev = castGUID
self:Message(spellId, "orange")
self:PlaySound(spellId, "alarm")
self:CastBar(spellId, 3)
end
elseif spellId == 272874 and castGUID ~= prev then -- Trample
prev = castGUID
self:Message(spellId, "orange")
self:PlaySound(spellId, "info")
self:CastBar(spellId, 3)
elseif spellId == 257288 and castGUID ~= prev then -- Heavy Slash
prev = castGUID
self:Message(spellId, "orange")
self:PlaySound(spellId, "alert")
self:CastBar(spellId, 2.8)
end
end
end
do
local prev = nil
function mod:UNIT_SPELLCAST_SUCCEEDED(_, _, castGUID, spellId)
if spellId == 272711 and castGUID ~= prev then -- Crushing Slam
prev = castGUID
self:CDBar(257169, 6) -- Terrifying Roar
end
end
end