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.
427 lines
13 KiB
427 lines
13 KiB
|
|
--------------------------------------------------------------------------------
|
|
-- Module Declaration
|
|
--
|
|
|
|
local mod, CL = BigWigs:NewBoss("The MOTHERLODE!! Trash", 1594)
|
|
if not mod then return end
|
|
mod.displayName = CL.trash
|
|
mod:RegisterEnableMob(
|
|
136934, -- Weapons Tester
|
|
134232, -- Hired Assassin
|
|
130488, -- Mech Jockey
|
|
130661, -- Venture Co. Earthshaper
|
|
130635, -- Stonefury
|
|
133345, -- Feckless Assistant
|
|
133593, -- Expert Technician
|
|
133430, -- Venture Co. Mastermind
|
|
133432, -- Venture Co. Alchemist
|
|
130653, -- Wanton Sapper
|
|
136470, -- Refreshment Vendor
|
|
130435, -- Addled Thug
|
|
137029, -- Ordnance Specialist
|
|
134012, -- Taskmaster Askari
|
|
133463, -- Venture Co. War Machine
|
|
136643, -- Azerite Extractor
|
|
136139, -- Mechanized Peacekeeper
|
|
130485 -- Mechanized Peacekeeper
|
|
)
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Localization
|
|
--
|
|
|
|
local L = mod:GetLocale()
|
|
if L then
|
|
L.tester = "Weapons Tester"
|
|
L.assassin = "Hired Assassin"
|
|
L.jockey = "Mech Jockey"
|
|
L.earthshaper = "Venture Co. Earthshaper"
|
|
L.stonefury = "Stonefury"
|
|
L.assistant = "Feckless Assistant"
|
|
L.technician = "Expert Technician"
|
|
L.mastermind = "Venture Co. Mastermind"
|
|
L.alchemist = "Venture Co. Alchemist"
|
|
L.sapper = "Wanton Sapper"
|
|
L.vendor = "Refreshment Vendor"
|
|
L.extractor = "Azerite Extractor"
|
|
L.thug = "Addled Thug"
|
|
L.specialist = "Ordnance Specialist"
|
|
L.taskmaster = "Taskmaster Askari"
|
|
L.warmachine = "Venture Co. War Machine"
|
|
L.peacekeeper = "Mechanized Peacekeeper"
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Initialization
|
|
--
|
|
|
|
function mod:GetOptions()
|
|
return {
|
|
-- Weapons Tester
|
|
{268846, "TANK"}, -- Echo Blade
|
|
268865, -- Force Cannon
|
|
-- Hired Assassin
|
|
269302, -- Toxic Blades
|
|
-- Mech Jockey
|
|
267433, -- Activate Mech
|
|
281621, -- Concussion Charge
|
|
-- Venture Co. Earthshaper
|
|
268709, -- Earth Shield
|
|
263202, -- Rock Lance
|
|
-- Stonefury
|
|
268702, -- Furious Quake
|
|
263215, -- Tectonic Barrier
|
|
-- Feckless Assistant
|
|
263066, -- Transfiguration Serum
|
|
263103, -- Blowtorch
|
|
-- Expert Technician
|
|
262540, -- Overcharge
|
|
262554, -- Repair
|
|
-- Venture Co. Mastermind
|
|
262947, -- Azerite Injection
|
|
-- Venture Co. Alchemist
|
|
268797, -- Transmute: Enemy to Goo
|
|
-- Wanton Sapper
|
|
269313, -- Final Blast
|
|
268362, -- Mining Charge
|
|
-- Refreshment Vendor
|
|
{280605, "SAY"}, -- Brain Freeze
|
|
280604, -- Iced Spritzer
|
|
268129, -- Kaja'Cola Refresher
|
|
-- Azerite Extractor
|
|
{268415, "TANK"}, -- Power Through
|
|
-- Addled Thug
|
|
262092, -- Inhale Vapors
|
|
-- Ordnance Specialist
|
|
269090, -- Artillery Barrage
|
|
-- Taskmaster Askari
|
|
{263601, "TANK"}, -- Desperate Measures
|
|
-- Venture Co. War Machine
|
|
{269429, "TANK"}, -- Charged Shot
|
|
-- Mechanized Peacekeeper
|
|
{262412, "NAMEPLATEBAR"}, -- Energy Shield
|
|
263628, -- Charged Claw
|
|
}, {
|
|
[268846] = L.tester,
|
|
[269302] = L.assassin,
|
|
[267433] = L.jockey,
|
|
[268709] = L.earthshaper,
|
|
[268702] = L.stonefury,
|
|
[263066] = L.assistant,
|
|
[262540] = L.technician,
|
|
[262947] = L.mastermind,
|
|
[268797] = L.alchemist,
|
|
[269313] = L.sapper,
|
|
[280605] = L.vendor,
|
|
[268415] = L.extractor,
|
|
[262092] = L.thug,
|
|
[269090] = L.specialist,
|
|
[263601] = L.taskmaster,
|
|
[269429] = L.warmachine,
|
|
[262412] = L.peacekeeper,
|
|
}
|
|
end
|
|
|
|
function mod:OnBossEnable()
|
|
self:Log("SPELL_CAST_START", "EchoBlade", 268846)
|
|
self:Log("SPELL_CAST_START", "ForceCannon", 268865)
|
|
self:Log("SPELL_CAST_START", "ToxicBlades", 269302)
|
|
self:Log("SPELL_CAST_START", "ActivateMech", 267433)
|
|
self:Log("SPELL_CAST_START", "ConcussionCharge", 281621)
|
|
self:Log("SPELL_CAST_START", "EarthShield", 268709)
|
|
self:Log("SPELL_AURA_APPLIED", "EarthShieldApplied", 268709)
|
|
self:Log("SPELL_CAST_START", "RockLance", 263202)
|
|
self:Log("SPELL_CAST_START", "FuriousQuake", 268702)
|
|
self:Log("SPELL_CAST_START", "TectonicBarrier", 263215)
|
|
self:Log("SPELL_AURA_APPLIED", "TectonicBarrierApplied", 263215)
|
|
self:Log("SPELL_CAST_START", "TransfigurationSerum", 263066)
|
|
self:Log("SPELL_CAST_START", "Blowtorch", 263103)
|
|
self:Log("SPELL_CAST_START", "Overcharge", 262540)
|
|
self:Log("SPELL_AURA_APPLIED", "OverchargeApplied", 262540)
|
|
self:Log("SPELL_CAST_START", "Repair", 262554)
|
|
self:Log("SPELL_AURA_APPLIED", "AzeriteInjectionApplied", 262947)
|
|
self:Log("SPELL_CAST_START", "TransmuteEnemyToGoo", 268797)
|
|
self:Log("SPELL_AURA_APPLIED", "TransmuteEnemyToGooApplied", 268797)
|
|
self:Log("SPELL_AURA_REMOVED", "TransmuteEnemyToGooRemoved", 268797)
|
|
self:Log("SPELL_CAST_START", "FinalBlast", 269313)
|
|
self:Log("SPELL_CAST_SUCCESS", "MiningCharge", 268362)
|
|
self:Log("SPELL_CAST_START", "IcedSpritzer", 280604)
|
|
self:Log("SPELL_CAST_START", "KajacolaRefresher", 268129)
|
|
self:Log("SPELL_AURA_APPLIED", "BrainFreezeApplied", 280605)
|
|
self:Log("SPELL_AURA_REMOVED", "BrainFreezeRemoved", 280605)
|
|
self:Log("SPELL_CAST_SUCCESS", "PowerThrough", 268415)
|
|
self:Log("SPELL_CAST_START", "InhaleVapors", 262092)
|
|
self:Log("SPELL_CAST_START", "ArtilleryBarrage", 269090)
|
|
self:Log("SPELL_AURA_APPLIED", "DesperateMeasuresApplied", 263601)
|
|
self:Log("SPELL_CAST_START", "ChargedShot", 269429)
|
|
self:Log("SPELL_CAST_START", "EnergyShield", 262412)
|
|
self:Log("SPELL_CAST_START", "ChargedClaw", 263628)
|
|
self:Log("SPELL_CAST_SUCCESS", "ChargedClawSuccess", 263628)
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Event Handlers
|
|
--
|
|
|
|
-- Weapons Tester
|
|
function mod:EchoBlade(args)
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alert", "watchstep")
|
|
end
|
|
|
|
function mod:ForceCannon(args)
|
|
local unit = self:GetUnitIdByGUID(args.sourceGUID)
|
|
if unit and UnitAffectingCombat(unit) then
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alert", "watchstep")
|
|
end
|
|
end
|
|
|
|
-- Hired Assassin
|
|
function mod:ToxicBlades(args)
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "warning", "interrupt")
|
|
end
|
|
|
|
-- Mech Jockey
|
|
do
|
|
local prev = 0
|
|
function mod:ActivateMech(args)
|
|
local t = args.time
|
|
if t-prev > 1.5 then
|
|
prev = t
|
|
self:Message(args.spellId, "red", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "warning")
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:ConcussionCharge(args)
|
|
self:Message(args.spellId, "yellow", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "info", "watchstep")
|
|
end
|
|
|
|
-- Venture Co. Earthshaper
|
|
do
|
|
local prev = 0
|
|
function mod:EarthShield(args)
|
|
local t = args.time
|
|
if t-prev > 1.5 then
|
|
prev = t
|
|
self:Message(args.spellId, "yellow", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
end
|
|
end
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:EarthShieldApplied(args)
|
|
local t = args.time
|
|
if t-prev > 1.5 and not UnitIsPlayer(args.destName) and self:Dispeller("magic", true) then
|
|
prev = t
|
|
self:Message(args.spellId, "yellow", CL.other:format(args.spellName, args.destName))
|
|
self:PlaySound(args.spellId, "info")
|
|
end
|
|
end
|
|
end
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:RockLance(args)
|
|
local t = args.time
|
|
if t-prev > 1.5 then
|
|
prev = t
|
|
self:Message(args.spellId, "red", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alert", "interrupt")
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Stonefury
|
|
function mod:FuriousQuake(args)
|
|
local unit = self:GetUnitIdByGUID(args.sourceGUID)
|
|
if unit and UnitAffectingCombat(unit) then
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "warning", "interrupt")
|
|
end
|
|
end
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:TectonicBarrier(args)
|
|
local t = args.time
|
|
if t-prev > 1.5 then
|
|
prev = t
|
|
self:Message(args.spellId, "yellow", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "warning", "interrupt")
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:TectonicBarrierApplied(args)
|
|
if not UnitIsPlayer(args.destName) then
|
|
self:Message(args.spellId, "red", CL.other:format(args.spellName, args.destName))
|
|
if self:Dispeller("magic", true) then
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Feckless Assistant
|
|
function mod:TransfigurationSerum(args)
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "warning", "interrupt")
|
|
end
|
|
|
|
function mod:Blowtorch(args)
|
|
self:Message(args.spellId, "yellow", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alert", "interrupt")
|
|
end
|
|
|
|
-- Expert Technician
|
|
function mod:Overcharge(args)
|
|
self:Message(args.spellId, "red", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "warning", "interrupt")
|
|
end
|
|
|
|
function mod:Repair(args)
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alert", "interrupt")
|
|
end
|
|
|
|
function mod:OverchargeApplied(args)
|
|
if not UnitIsPlayer(args.destName) then
|
|
self:Message(args.spellId, "yellow", CL.other:format(args.spellName, args.destName))
|
|
if self:Dispeller("magic", true) then
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Venture Co. Mastermind
|
|
function mod:AzeriteInjectionApplied(args)
|
|
if not UnitIsPlayer(args.destName) then
|
|
self:Message(args.spellId, "red", CL.other:format(args.spellName, args.destName))
|
|
if self:Dispeller("magic", true) then
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Venture Co. Alchemist
|
|
function mod:TransmuteEnemyToGoo(args)
|
|
self:Message(args.spellId, "red", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "warning", "interrupt")
|
|
end
|
|
|
|
function mod:TransmuteEnemyToGooApplied(args)
|
|
if self:Me(args.destGUID) or self:Dispeller("magic") then
|
|
self:TargetMessage(args.spellId, "orange", args.destName)
|
|
self:PlaySound(args.spellId, "alarm", nil, args.destName)
|
|
end
|
|
end
|
|
|
|
function mod:TransmuteEnemyToGooRemoved(args)
|
|
self:StopBar(args.spellName, args.destName)
|
|
end
|
|
|
|
-- Wanton Sapper
|
|
do
|
|
local prev = 0
|
|
function mod:FinalBlast(args)
|
|
local t = args.time
|
|
if t-prev > 1.5 then
|
|
prev = t
|
|
self:Message(args.spellId, "red", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
end
|
|
end
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:MiningCharge(args)
|
|
local t = args.time
|
|
if t-prev > 1.5 then
|
|
local unit = self:GetUnitIdByGUID(args.sourceGUID)
|
|
if unit and UnitAffectingCombat(unit) then
|
|
prev = t
|
|
self:Message(args.spellId, "yellow")
|
|
self:PlaySound(args.spellId, "info", "watchstep")
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Refreshment Vendor
|
|
function mod:BrainFreezeApplied(args)
|
|
if self:Me(args.destGUID) or self:Dispeller("magic") then
|
|
self:TargetMessage(args.spellId, "yellow", args.destName)
|
|
self:PlaySound(args.spellId, "info", nil, args.destName)
|
|
self:TargetBar(args.spellId, 6, args.destName)
|
|
if self:Me(args.destGUID) then
|
|
self:Say(args.spellId)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:BrainFreezeRemoved(args)
|
|
self:StopBar(args.spellName, args.destName)
|
|
end
|
|
|
|
function mod:IcedSpritzer(args)
|
|
self:Message(args.spellId, "yellow")
|
|
self:PlaySound(args.spellId, "info", "interrupt")
|
|
end
|
|
|
|
function mod:KajacolaRefresher(args)
|
|
self:Message(args.spellId, "red", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "warning", "interrupt")
|
|
end
|
|
|
|
-- Azerite Extractor
|
|
function mod:PowerThrough(args)
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alarm", "watchstep")
|
|
end
|
|
|
|
-- Addled Thug
|
|
function mod:InhaleVapors(args)
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alarm", "interrupt")
|
|
end
|
|
|
|
-- Ordnance Specialist
|
|
function mod:ArtilleryBarrage(args)
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alarm", "interrupt")
|
|
end
|
|
|
|
-- Taskmaster Askari
|
|
function mod:DesperateMeasuresApplied(args)
|
|
if not UnitIsPlayer(args.destName) then
|
|
self:Message(args.spellId, "red", CL.other:format(args.spellName, args.destName))
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
end
|
|
|
|
-- Venture Co. War Machine
|
|
function mod:ChargedShot(args)
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
|
|
function mod:EnergyShield(args)
|
|
self:NameplateBar(args.spellId, 22.5, args.sourceGUID)
|
|
end
|
|
|
|
function mod:ChargedClaw(args)
|
|
self:Message(args.spellId, "red")
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
|
|
function mod:ChargedClawSuccess(args)
|
|
self:TargetBar(args.spellId, 10, args.sourceName)
|
|
end
|
|
|