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.
742 lines
21 KiB
742 lines
21 KiB
--------------------------------------------------------------------------------
|
|
-- TODO
|
|
-- Walkie Shockie X1 spawn warning and fixate nameplate icons
|
|
-- Scrapbone Grunter fixate nameplate icons
|
|
--
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Module Declaration
|
|
--
|
|
|
|
local mod, CL = BigWigs:NewBoss("Operation: Mechagon Trash", 2097)
|
|
if not mod then return end
|
|
mod.displayName = CL.trash
|
|
mod:RegisterEnableMob(
|
|
150146, -- Scrapbone Shaman
|
|
150160, -- Scrapbone Bully
|
|
150143, -- Scrapbone Grinder
|
|
150154, -- Saurolisk Bonenipper
|
|
152009, -- Malfunctioning Scrapbot
|
|
150276, -- Heavy Scrapbot
|
|
150250, -- Pistonhead Blaster
|
|
150249, -- Pistonhead Scrapper
|
|
150253, -- Weaponized Crawler
|
|
150165, -- Slime Elemental
|
|
150168, -- Toxic Monstrosity
|
|
154758, -- Toxic Monstrosity
|
|
154744, -- Toxic Monstrosity
|
|
150169, -- Toxic Lurker
|
|
150251, -- Pistonhead Mechanic
|
|
150254, -- Scraphound
|
|
150297, -- Mechagon Renormalizer
|
|
150292, -- Mechagon Cavalry
|
|
155094, -- Mechagon Trooper
|
|
155090, -- Anodized Coilbearer
|
|
151657, -- Bomb Tonk
|
|
151659, -- Rocket Tonk
|
|
144293, -- Waste Processing Unit
|
|
144301, -- Living Waste
|
|
144294, -- Mechagon Tinkerer
|
|
151613, -- Anti-Personnel Squirrel
|
|
144298, -- Defense Bot Mk III
|
|
151476, -- Blastatron X-80
|
|
144295, -- Mechagon Mechanic
|
|
144299, -- Workshop Defender
|
|
144296, -- Spider Tank
|
|
151773 -- Junkyard D.0.G.
|
|
)
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Localization
|
|
--
|
|
|
|
local L = mod:GetLocale()
|
|
if L then
|
|
L.scrapbone_shaman = "Scrapbone Shaman"
|
|
L.scrapbone_bully = "Scrapbone Bully"
|
|
L.scrapbone_grinder = "Scrapbone Grinder"
|
|
L.saurolisk_bonenipper = "Saurolisk Bonenipper"
|
|
L.malfunctioning_scrapbot = "Malfunctioning Scrapbot"
|
|
L.heavy_scrapbot = "Heavy Scrapbot"
|
|
L.pistonhead_blaster = "Pistonhead Blaster"
|
|
L.pistonhead_scrapper = "Pistonhead Scrapper"
|
|
L.weaponized_crawler = "Weaponized Crawler"
|
|
L.slime_elemental = "Slime Elemental"
|
|
L.toxic_monstrosity = "Toxic Monstrosity"
|
|
L.toxic_lurker = "Toxic Lurker"
|
|
L.pistonhead_mechanic = "Pistonhead Mechanic"
|
|
L.scraphound = "Scraphound"
|
|
L.mechagon_renormalizer = "Mechagon Renormalizer"
|
|
L.mechagon_cavalry = "Mechagon Cavalry"
|
|
L.mechagon_trooper = "Mechagon Trooper"
|
|
L.anodized_coilbearer = "Anodized Coilbearer"
|
|
L.bomb_tonk = "Bomb Tonk"
|
|
L.rocket_tonk = "Rocket Tonk"
|
|
L.waste_processing_unit = "Waste Processing Unit"
|
|
L.living_waste = "Living Waste"
|
|
L.mechagon_tinkerer = "Mechagon Tinkerer"
|
|
L.anti_personnel_squirrel = "Anti-Personnel Squirrel"
|
|
L.defense_bot_mk_iii = "Defense Bot Mk III"
|
|
L.blastatron_x80 = "Blastatron X-80"
|
|
L.mechagon_mechanic = "Mechagon Mechanic"
|
|
L.workshop_defender = "Workshop Defender"
|
|
L.junkyard_d0g = "Junkyard D.0.G."
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Initialization
|
|
--
|
|
|
|
function mod:GetOptions()
|
|
return {
|
|
-- Scrapbone Shaman
|
|
300436, -- Grasping Hex
|
|
{300514, "DISPEL"}, -- Stoneskin
|
|
-- Scrapbone Grinder
|
|
{300414, "DISPEL"}, -- Enrage
|
|
-- Scrapbone Bully
|
|
300424, -- Shockwave
|
|
-- Saurolisk Bonenipper
|
|
299474, -- Ripping Slash
|
|
-- Malfunctioning Scrapbot
|
|
300102, -- Exhaust
|
|
294884, -- Gyro-Scrap
|
|
300129, -- Self-Destruct Protocol
|
|
-- Heavy Scrapbot
|
|
300177, -- Exhaust
|
|
300159, -- Gyro-Scrap
|
|
300171, -- Repair Protocol
|
|
-- Pistonhead Blaster
|
|
299525, -- Scrap Grenade
|
|
-- Pistonhead Scrapper
|
|
{299438, "TANK_HEALER"}, -- Sledgehammer
|
|
-- Weaponized Crawler
|
|
{300188, "SAY", "FLASH"}, -- Scrap Cannon
|
|
300207, -- Shock Coil
|
|
-- Slime ELemental
|
|
300764, -- Slimebolt
|
|
300777, -- Slimewave
|
|
-- Toxic Monstrosity
|
|
300687, -- Consume
|
|
-- Toxic Lurker
|
|
{300650, "DISPEL"}, -- Suffocating Smog
|
|
-- Pistonhead Mechanic
|
|
{299588, "DISPEL"}, -- Overclock
|
|
300087, -- Repair
|
|
-- Scraphound
|
|
299475, -- B.O.R.K.
|
|
-- Mechagon Renormalizer
|
|
{284219, "SAY", "FLASH"}, -- Shrink
|
|
-- Mechagon Cavalry
|
|
301667, -- Rapid Fire
|
|
301681, -- Charge
|
|
-- Mechagon Trooper
|
|
299502, -- Nanoslicer
|
|
-- Anodized Coilbearer
|
|
{303941, "DISPEL"}, -- Defensive Countermeasure
|
|
-- Bomb Tonk
|
|
301088, -- Detonate
|
|
-- Rocket Tonk
|
|
294103, -- Rocket Barrage
|
|
-- Waste Processing Unit
|
|
294324, -- Mega Drill
|
|
294290, -- Process Waste
|
|
-- Living Waste
|
|
294349, -- Volatile Waste
|
|
-- Mechagon Tinkerer
|
|
293827, -- Giga-Wallop
|
|
-- Anti-Personnel Squirrel
|
|
293861, -- Anti-Personnel Squirrel (aoe effect)
|
|
-- Defense Bot Mk III
|
|
{294195, "DISPEL"}, -- Arcing Zap
|
|
{297133, "DISPEL"}, -- Defensive Countermeasure
|
|
297128, -- Short Out
|
|
-- Blastatron X-80
|
|
294015, -- Launch High-Explosive Rockets
|
|
293986, -- Sonic Pulse
|
|
295169, -- Capacitor Discharge
|
|
-- Mechagon Mechanic
|
|
293729, -- Tune Up
|
|
293930, -- Overclock
|
|
-- Workshop Defender
|
|
{293670, "TANK_HEALER"}, -- Chainblade
|
|
293683, -- Shield Generator
|
|
-- Junkyard D.0.G.
|
|
{294180, "DISPEL"}, -- Flaming Refuse
|
|
}, {
|
|
[300436] = L.scrapbone_shaman,
|
|
[300414] = L.scrapbone_grinder,
|
|
[300424] = L.scrapbone_bully,
|
|
[299474] = L.saurolisk_bonenipper,
|
|
[294884] = L.malfunctioning_scrapbot,
|
|
[300177] = L.heavy_scrapbot,
|
|
[299525] = L.pistonhead_blaster,
|
|
[299438] = L.pistonhead_scrapper,
|
|
[300764] = L.slime_elemental,
|
|
[300650] = L.toxic_lurker,
|
|
[299588] = L.pistonhead_mechanic,
|
|
[299475] = L.scraphound,
|
|
[284219] = L.mechagon_renormalizer,
|
|
[301667] = L.mechagon_cavalry,
|
|
[299502] = L.mechagon_trooper,
|
|
[303941] = L.anodized_coilbearer,
|
|
[301088] = L.bomb_tonk,
|
|
[294103] = L.rocket_tonk,
|
|
[294324] = L.waste_processing_unit,
|
|
[294349] = L.living_waste,
|
|
[293827] = L.mechagon_tinkerer,
|
|
[293861] = L.anti_personnel_squirrel,
|
|
[294195] = L.defense_bot_mk_iii,
|
|
[294015] = L.blastatron_x80,
|
|
[293729] = L.mechagon_mechanic,
|
|
[293670] = L.workshop_defender,
|
|
[294180] = L.junkyard_d0g,
|
|
}
|
|
end
|
|
|
|
function mod:OnBossEnable()
|
|
-- Scrapbone Shaman
|
|
self:Log("SPELL_CAST_START", "GraspingHex", 300436)
|
|
self:Log("SPELL_CAST_START", "Stoneskin", 300514)
|
|
self:Log("SPELL_AURA_APPLIED", "StoneskinApplied", 300514)
|
|
-- Scrapbone Grinder
|
|
self:Log("SPELL_CAST_START", "Enrage", 300414)
|
|
self:Log("SPELL_AURA_APPLIED", "EnrageApplied", 300414)
|
|
-- Scrapbone Bully
|
|
self:Log("SPELL_CAST_START", "Shockwave", 300424)
|
|
-- Saurolisk Bonenipper
|
|
self:Log("SPELL_AURA_APPLIED", "RippingSlashApplied", 299474)
|
|
-- Malfunctioning Scrapbot
|
|
self:Log("SPELL_CAST_START", "MalfunctioningExhaust", 300102)
|
|
self:Log("SPELL_CAST_START", "MalfunctioningGyroScrap", 294884)
|
|
self:Log("SPELL_CAST_START", "SelfDestructProtocol", 300129)
|
|
-- Heavy Scrapbot
|
|
self:Log("SPELL_CAST_START", "HeavyExhaust", 300177)
|
|
self:Log("SPELL_CAST_START", "HeavyGyroScrap", 300159)
|
|
self:Log("SPELL_CAST_START", "RepairProtocol", 300171)
|
|
-- Pistonhead Blaster
|
|
self:Log("SPELL_CAST_SUCCESS", "ScrapGrenade", 299525)
|
|
-- Pistonhead Scrapper
|
|
self:Log("SPELL_AURA_APPLIED", "SledgehammerApplied", 299438)
|
|
-- Weaponized Crawler
|
|
self:Log("SPELL_CAST_START", "ScrapCannon", 300188)
|
|
self:Log("SPELL_CAST_START", "ShockCoil", 300207)
|
|
self:Log("SPELL_AURA_APPLIED", "ShockCoilApplied", 300207)
|
|
self:Death("WeaponizedCrawlerDeath", 150253)
|
|
-- Slime ELemental
|
|
self:Log("SPELL_CAST_START", "SlimeBolt", 300764)
|
|
self:Log("SPELL_CAST_START", "Slimewave", 300777)
|
|
-- Toxic Monstrosity
|
|
self:Log("SPELL_CAST_START", "Consume", 300687)
|
|
self:Log("SPELL_CAST_SUCCESS", "ConsumeSuccess", 300687)
|
|
self:Death("ToxicMonstrosityDeath", 150168, 154758, 154744) -- Different mob ids with the same name and spells
|
|
-- Toxic Lurker
|
|
self:Log("SPELL_CAST_START", "SuffocatingSmog", 300650)
|
|
self:Log("SPELL_AURA_APPLIED", "SuffocatingSmogApplied", 300650)
|
|
-- Pistonhead Mechanic
|
|
self:Log("SPELL_CAST_START", "Overclock", 299588)
|
|
self:Log("SPELL_AURA_APPLIED", "PistonheadMechanicOverclockApplied", 299588)
|
|
self:Log("SPELL_CAST_START", "Repair", 300087)
|
|
-- Scraphound
|
|
self:Log("SPELL_CAST_START", "BORK", 299475)
|
|
-- Mechagon Renormalizer
|
|
self:Log("SPELL_CAST_START", "Shrink", 284219)
|
|
self:Log("SPELL_AURA_APPLIED", "ShrinkApplied", 284219)
|
|
self:Log("SPELL_AURA_REMOVED", "ShrinkRemoved", 284219)
|
|
-- Mechagon Cavalry
|
|
self:Log("SPELL_CAST_START", "RapidFire", 301667)
|
|
self:Log("SPELL_CAST_START", "Charge", 301681)
|
|
-- Mechagon Trooper
|
|
self:Log("SPELL_CAST_START", "Nanoslicer", 299502)
|
|
self:Log("SPELL_AURA_APPLIED", "NanoslicerApplied", 299502)
|
|
-- Anodized Coilbearer
|
|
self:Log("SPELL_AURA_APPLIED", "CoilbearerDefensiveCountermeasureApplied", 303941)
|
|
-- Bomb Tonk
|
|
self:Log("SPELL_CAST_START", "Detonate", 301088)
|
|
-- Rocket Tonk
|
|
self:Log("SPELL_CAST_SUCCESS", "RocketBarrage", 294103)
|
|
-- Waste Processing Unit
|
|
self:Log("SPELL_CAST_START", "MegaDrill", 294324)
|
|
self:Log("SPELL_CAST_START", "ProcessWaste", 294290)
|
|
-- Living Waste
|
|
self:Log("SPELL_CAST_START", "VolatileWaste", 294349)
|
|
-- Mechagon Tinkerer
|
|
self:Log("SPELL_CAST_START", "GigaWallop", 293827)
|
|
-- Anti-Personnel Squirrel
|
|
self:Log("SPELL_CAST_START", "AntiPersonnelSquirrel", 293861)
|
|
-- Defense Bot Mk III
|
|
self:Log("SPELL_AURA_APPLIED", "ArcingZapApplied", 294195)
|
|
self:Log("SPELL_AURA_APPLIED", "DefenseBotDefensiveCountermeasureApplied", 297133)
|
|
self:Log("SPELL_CAST_START", "ShortOut", 297128)
|
|
self:Log("SPELL_CAST_SUCCESS", "ShortOutSuccess", 297128)
|
|
-- Blastatron X-80
|
|
self:Log("SPELL_CAST_SUCCESS", "LaunchHighExplosiveRockets", 294015)
|
|
self:Log("SPELL_CAST_START", "SonicPulse", 293986)
|
|
self:Log("SPELL_CAST_SUCCESS", "CapacitorDischarge", 295169)
|
|
self:Death("BlastatronDeath", 151476)
|
|
-- Mechagon Mechanic
|
|
self:Log("SPELL_CAST_START", "TuneUp", 293729)
|
|
self:Log("SPELL_AURA_APPLIED", "MechagonMechanicOverclockApplied", 293930)
|
|
-- Workshop Defender
|
|
self:Log("SPELL_AURA_APPLIED", "ChainbladeApplied", 293670)
|
|
self:Log("SPELL_AURA_APPLIED_DOSE", "ChainbladeApplied", 293670)
|
|
-- Junkyard D.0.G.
|
|
self:Log("SPELL_AURA_APPLIED", "FlamingRefuseApplied", 294180)
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Event Handlers
|
|
--
|
|
|
|
do
|
|
local prev = nil
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(_, _, castGUID, spellId)
|
|
if castGUID == prev then return end
|
|
prev = castGUID
|
|
if spellId == 293683 then -- Workshop Defender, Shield Generator
|
|
self:Message(spellId, "green")
|
|
self:PlaySound(spellId, "info")
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Scrapbone Shaman
|
|
|
|
function mod:GraspingHex(args)
|
|
self:Message(args.spellId, "yellow")
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
|
|
function mod:Stoneskin(args)
|
|
if self:Interrupter() then
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
end
|
|
|
|
function mod:StoneskinApplied(args)
|
|
if self:Dispeller("magic", true, args.spellId) then
|
|
self:Message(args.spellId, "red", CL.on:format(args.spellName, args.destName))
|
|
self:PlaySound(args.spellId, "info")
|
|
end
|
|
end
|
|
|
|
-- Scrapbone Grinder
|
|
|
|
function mod:Enrage(args)
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
|
|
function mod:EnrageApplied(args)
|
|
if self:Dispeller("enrage", true, args.spellId) then
|
|
self:Message(args.spellId, "red", CL.on:format(args.spellName, args.destName))
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
end
|
|
|
|
-- Scrapbone Bully
|
|
|
|
function mod:Shockwave(args)
|
|
self:Message(args.spellId, "red")
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
|
|
-- Saurolisk Bonenipper
|
|
|
|
function mod:RippingSlashApplied(args)
|
|
if self:Healer() or self:Me(args.destGUID) then
|
|
self:TargetMessage(args.spellId, "red", args.destName)
|
|
self:PlaySound(args.spellId, "alert", nil, args.destName)
|
|
end
|
|
end
|
|
|
|
-- Malfunctioning Scrapbot
|
|
|
|
function mod:MalfunctioningExhaust(args)
|
|
self:Message(args.spellId, "yellow")
|
|
self:PlaySound(args.spellId, "info")
|
|
end
|
|
|
|
function mod:MalfunctioningGyroScrap(args)
|
|
self:Message(args.spellId, "orange")
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
|
|
function mod:SelfDestructProtocol(args)
|
|
self:Message(args.spellId, "red")
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
|
|
-- Heavy Scrapbot
|
|
|
|
function mod:HeavyExhaust(args)
|
|
self:Message(args.spellId, "yellow")
|
|
self:PlaySound(args.spellId, "info")
|
|
end
|
|
|
|
function mod:HeavyGyroScrap(args)
|
|
self:Message(args.spellId, "orange")
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:RepairProtocol(args)
|
|
local t = args.time
|
|
if t-prev > 1.5 then
|
|
prev = t
|
|
self:Message(args.spellId, "red")
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Pistonhead Blaster
|
|
|
|
function mod:ScrapGrenade(args)
|
|
self:Message(args.spellId, "orange")
|
|
self:PlaySound(args.spellId, "info")
|
|
end
|
|
|
|
-- Pistonhead Scrapper
|
|
|
|
function mod:SledgehammerApplied(args)
|
|
self:StackMessage(args.spellId, args.destName, args.amount, "purple")
|
|
self:PlaySound(args.spellId, "info", nil, args.destName)
|
|
end
|
|
|
|
-- Weaponized Crawler
|
|
|
|
do
|
|
local function printTarget(self, name, guid)
|
|
self:TargetMessage(300188, "red", name)
|
|
self:PlaySound(300188, "alarm", nil, name)
|
|
if self:Me(guid) then
|
|
self:Say(300188)
|
|
self:Flash(300188)
|
|
end
|
|
end
|
|
|
|
function mod:ScrapCannon(args)
|
|
self:GetUnitTarget(printTarget, 0.4, args.sourceGUID)
|
|
self:Bar(args.spellId, 12.1)
|
|
end
|
|
end
|
|
|
|
function mod:ShockCoil(args)
|
|
self:Message(args.spellId, "orange")
|
|
self:PlaySound(args.spellId, "info")
|
|
self:Bar(args.spellId, 19.4)
|
|
end
|
|
|
|
function mod:ShockCoilApplied(args)
|
|
self:CastBar(args.spellId, 6)
|
|
end
|
|
|
|
function mod:WeaponizedCrawlerDeath(args)
|
|
self:StopBar(300188) -- Scrap Cannon
|
|
self:StopBar(300207) -- Shock Coil
|
|
self:StopBar(CL.cast:format(self:SpellName(300207))) -- Shock Coil
|
|
end
|
|
|
|
-- Slime Elemental
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:SlimeBolt(args)
|
|
local t = args.time
|
|
if t-prev > 1.5 then
|
|
prev = t
|
|
self:Message(args.spellId, "orange")
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:Slimewave(args)
|
|
self:Message(args.spellId, "red")
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
|
|
-- Toxic Monstrosity
|
|
|
|
function mod:Consume(args)
|
|
self:Message(args.spellId, "orange")
|
|
self:PlaySound(args.spellId, "alarm")
|
|
self:CDBar(args.spellId, 19.5)
|
|
end
|
|
|
|
function mod:ConsumeSuccess(args)
|
|
self:CastBar(args.spellId, 6)
|
|
end
|
|
|
|
function mod:ToxicMonstrosityDeath(args)
|
|
self:StopBar(300687)
|
|
end
|
|
|
|
-- Toxic Lurker
|
|
|
|
function mod:SuffocatingSmog(args)
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
|
|
function mod:SuffocatingSmogApplied(args)
|
|
if self:Dispeller("disease", nil, args.spellId) then
|
|
self:TargetMessage(args.spellId, "yellow", args.destName)
|
|
self:PlaySound(args.spellId, "info", nil, args.destName)
|
|
end
|
|
end
|
|
|
|
-- Pistonhead Mechanic
|
|
|
|
function mod:Overclock(args)
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:PistonheadMechanicOverclockApplied(args)
|
|
local t = args.time
|
|
if self:Dispeller("magic", true, args.spellId) and t-prev > 1.5 then
|
|
prev = t
|
|
self:Message(args.spellId, "red")
|
|
self:PlaySound(args.spellId, "info")
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:Repair(args)
|
|
self:Message(args.spellId, "yellow", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
|
|
-- Scraphound
|
|
|
|
function mod:BORK(args)
|
|
self:Message(args.spellId, "red")
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
|
|
-- Mechagon Renormalizer
|
|
|
|
function mod:Shrink(args)
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
|
|
do
|
|
local timer = nil
|
|
function mod:ShrinkApplied(args)
|
|
local isOnMe = self:Me(args.destGUID)
|
|
if self:Dispeller("magic", nil, true) or isOnMe then
|
|
self:TargetMessage(args.spellId, "yellow", args.destName)
|
|
self:PlaySound(args.spellId, "info", nil, args.destName)
|
|
if isOnMe then
|
|
self:Say(args.spellId)
|
|
self:Flash(args.spellId)
|
|
timer = self:ScheduleRepeatingTimer("Say", 1.5, args.spellId)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:ShrinkRemoved(args)
|
|
if self:Me(args.destGUID) and timer then
|
|
self:CancelTimer(timer)
|
|
timer = nil
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Mechagon Cavalry
|
|
|
|
function mod:RapidFire(args)
|
|
self:Message(args.spellId, "red")
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
|
|
function mod:Charge(args)
|
|
self:Message(args.spellId, "orange")
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
|
|
-- Mechagon Trooper
|
|
|
|
function mod:Nanoslicer(args)
|
|
self:Message(args.spellId, "orange")
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
|
|
function mod:NanoslicerApplied(args)
|
|
if self:Me(args.destGUID) or self:Healer() then
|
|
self:TargetMessage(args.spellId, "red", args.destName)
|
|
self:PlaySound(args.spellId, "info", nil, args.destName)
|
|
end
|
|
end
|
|
|
|
-- Anodized Coilbearer
|
|
|
|
function mod:CoilbearerDefensiveCountermeasureApplied(args)
|
|
if self:Dispeller("magic", true, args.spellId) then
|
|
self:Message(args.spellId, "yellow", CL.on:format(args.spellName, args.destName))
|
|
self:PlaySound(args.spellId, "info")
|
|
end
|
|
end
|
|
|
|
-- Bomb Tonk
|
|
|
|
function mod:Detonate(args)
|
|
self:Message(args.spellId, "red")
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
|
|
-- Rocket Tonk
|
|
|
|
function mod:RocketBarrage(args)
|
|
self:Message(args.spellId, "orange")
|
|
self:PlaySound(args.spellId, "alarm")
|
|
self:CastBar(args.spellId, 5)
|
|
end
|
|
|
|
-- Waste Processing Unit
|
|
|
|
function mod:MegaDrill(args)
|
|
self:Message(args.spellId, "red")
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
|
|
function mod:ProcessWaste(args)
|
|
self:Message(args.spellId, "orange")
|
|
self:PlaySound(args.spellId, "info")
|
|
end
|
|
|
|
-- Living Waste
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:VolatileWaste(args)
|
|
local t = args.time
|
|
if t-prev > 5 then
|
|
prev = t
|
|
self:Message(args.spellId, "red")
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Mechagon Tinkerer
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:GigaWallop(args)
|
|
local t = args.time
|
|
if t-prev > 1.5 then
|
|
prev = t
|
|
self:Message(args.spellId, "orange")
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Anti-Personnel Squirrel
|
|
|
|
function mod:AntiPersonnelSquirrel(args)
|
|
local unit = self:GetUnitIdByGUID(args.sourceGUID)
|
|
if not unit or IsItemInRange(33278, unit) then -- Burning Torch, 11yd
|
|
-- Display mesage without "near YOU" if the unit is not found
|
|
self:Message(args.spellId, "yellow", unit and CL.near:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
end
|
|
|
|
-- Defense Bot Mk III
|
|
|
|
do
|
|
local playerList = mod:NewTargetList()
|
|
function mod:ArcingZapApplied(args)
|
|
if self:Dispeller("magic", nil, args.spellId) then
|
|
self:TargetsMessage(args.spellId, "yellow", playerList, 3) -- Three bots that can all cast at the same time
|
|
self:PlaySound(args.spellId, "alert", nil, playerList)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:DefenseBotDefensiveCountermeasureApplied(args)
|
|
if self:Dispeller("magic", true, args.spellId) then
|
|
self:Message(args.spellId, "yellow", CL.on:format(args.spellName, args.destName))
|
|
self:PlaySound(args.spellId, "info")
|
|
end
|
|
end
|
|
|
|
function mod:ShortOut(args)
|
|
self:Message(args.spellId, "orange")
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
|
|
function mod:ShortOutSuccess(args)
|
|
self:CastBar(args.spellId, 3)
|
|
end
|
|
|
|
-- Blastatron X-80
|
|
|
|
function mod:LaunchHighExplosiveRockets(args)
|
|
self:Message(args.spellId, "yellow")
|
|
self:PlaySound(args.spellId, "info")
|
|
end
|
|
|
|
function mod:SonicPulse(args)
|
|
self:Message(args.spellId, "red")
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
|
|
function mod:CapacitorDischarge(args)
|
|
self:Message(args.spellId, "orange")
|
|
self:PlaySound(args.spellId, "alert")
|
|
self:Bar(args.spellId, 4, CL.count:format(args.spellName, 1))
|
|
self:Bar(args.spellId, 8, CL.count:format(args.spellName, 2))
|
|
self:Bar(args.spellId, 12, CL.count:format(args.spellName, 3))
|
|
end
|
|
|
|
function mod:BlastatronDeath(args)
|
|
local capacitorDischarge = self:SpellName(295169)
|
|
self:StopBar(CL.count:format(capacitorDischarge, 1))
|
|
self:StopBar(CL.count:format(capacitorDischarge, 2))
|
|
self:StopBar(CL.count:format(capacitorDischarge, 3))
|
|
end
|
|
|
|
-- Mechagon Mechanic
|
|
|
|
function mod:TuneUp(args)
|
|
self:Message(args.spellId, "yellow")
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:MechagonMechanicOverclockApplied(args)
|
|
local t = args.time
|
|
if self:Dispeller("enrage", true, args.spellId) and t-prev > 1.5 then
|
|
prev = t
|
|
self:Message(args.spellId, "red")
|
|
self:PlaySound(args.spellId, "info")
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Workshop Defender
|
|
|
|
function mod:ChainbladeApplied(args)
|
|
self:StackMessage(args.spellId, args.destName, args.amount, "red")
|
|
self:PlaySound(args.spellId, "alert", nil, args.destName)
|
|
end
|
|
|
|
-- Junkyard D.0.G.
|
|
|
|
function mod:FlamingRefuseApplied(args)
|
|
if self:Dispeller("magic") then
|
|
self:TargetMessage(args.spellId, "orange", args.destName)
|
|
self:PlaySound(args.spellId, "alert", nil, args.destName)
|
|
end
|
|
end
|
|
|