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.

302 lines
8.7 KiB

4 years ago
--------------------------------------------------------------------------------
-- Module Declaration
--
local mod, CL = BigWigs:NewBoss("Plaguefall Trash", 2289)
if not mod then return end
mod.displayName = CL.trash
mod:RegisterEnableMob(
168580, -- Plagueborer
168361, -- Fen Hornet
163882, -- Decaying Flesh Giant
168153, -- Plagueroc
168393, -- Plaguebelcher
168396, -- Plaguebelcher
163892, -- Rotting Slimeclaw
163894, -- Blighted Spinebreaker
168627, -- Plaguebinder
164707, -- Congealed Slime
163862, -- Defender of Many Eyes
164737, -- Brood Ambusher
169861, -- Ickor Bileflesh
168578, -- Fungalmancer
168574, -- Pestilent Harvester
168572 -- Fungi Stormer
)
--------------------------------------------------------------------------------
-- Localization
--
local L = mod:GetLocale()
if L then
L.plagueborer = "Plagueborer"
L.fen_hornet = "Fen Hornet"
L.decaying_flesh_giant = "Decaying Flesh Giant"
L.plagueroc = "Plagueroc"
L.plaguebelcher = "Plaguebelcher"
L.rotting_slimeclaw = "Rotting Slimeclaw"
L.blighted_spinebreaker = "Blighted Spinebreaker"
L.plaguebinder = "Plaguebinder"
L.congealed_slime = "Congealed Slime"
L.defender_of_many_eyes = "Defender of Many Eyes"
L.brood_ambusher = "Brood Ambusher"
L.ickor_bileflesh = "Ickor Bileflesh"
L.fungalmancer = "Fungalmancer"
L.pestilent_harvester = "Pestilent Harvester"
L.fungi_stormer = "Fungi Stormer"
L.summon_stealthlings = 328400
L.summon_stealthlings_desc = "Show a warning when the Stealthlings spawn."
L.summon_stealthlings_icon = 328400
end
--------------------------------------------------------------------------------
-- Initialization
--
function mod:GetOptions()
return {
-- Plagueborer
323572, -- Rolling Plague
-- Fen Hornet
{327515, "DISPEL"}, -- Fen Stinger
-- Decaying Flesh Giant
329239, -- Creepy Crawlers
-- Plagueroc
330403, -- Wing Buffet
{327882, "DISPEL"}, -- Blightbeak
-- Plaguebelcher
327233, -- Belch Plague
327584, -- Beckon Slime
-- Rotting Slimeclaw
{320512, "DISPEL"}, -- Corroded Claws
-- Blighted Spinebreaker
318949, -- Festering Belch
320517, -- Jagged Spines
-- Plaguebinder
{328180, "DISPEL"}, -- Gripping Infection
-- Congealed Slime
{321935, "SAY"}, -- Withering Filth
-- Defender of Many Eyes
336451, -- Bulwark of Maldraxxus
-- Brood Ambusher
328475, -- Enveloping Webbing
"summon_stealthlings", -- Stealthlings
-- Ickor Bileflesh
330786, -- Oozing Carcass
330816, -- Ghost Step
-- Fungalmancer
328016, -- Wonder Grow
-- Pestilent Harvester
327995, -- Doom Shroom
-- Fungi Stormer
328177, -- Fungistorm
}, {
[323572] = L.plagueborer,
[327515] = L.fen_hornet,
[329239] = L.decaying_flesh_giant,
[330403] = L.plagueroc,
[327233] = L.plaguebelcher,
[320512] = L.rotting_slimeclaw,
[318949] = L.blighted_spinebreaker,
[328180] = L.plaguebinder,
[321935] = L.congealed_slime,
[336451] = L.defender_of_many_eyes,
[328475] = L.brood_ambusher,
[330786] = L.ickor_bileflesh,
[328016] = L.fungalmancer,
[327995] = L.pestilent_harvester,
[328177] = L.fungi_stormer,
}
end
function mod:OnBossEnable()
self:Log("SPELL_CAST_START", "RollingPlague", 323572)
self:Log("SPELL_AURA_APPLIED", "FenStingerApplied", 327515)
self:Log("SPELL_CAST_START", "CreepyCrawlers", 329239)
self:Log("SPELL_CAST_START", "WingBuffet", 330403)
self:Log("SPELL_AURA_APPLIED", "BlightbeakApplied", 327882)
self:Log("SPELL_AURA_APPLIED_DOSE", "BlightbeakApplied", 327882)
self:Log("SPELL_CAST_START", "BelchPlague", 327233)
self:Log("SPELL_CAST_START", "BeckonSlime", 327584)
self:Log("SPELL_AURA_APPLIED", "CorrodedClawsApplied", 320512)
self:Log("SPELL_AURA_APPLIED_DOSE", "CorrodedClawsApplied", 320512)
self:Log("SPELL_CAST_START", "FesteringBelch", 318949)
self:Log("SPELL_CAST_SUCCESS", "JaggedSpines", 320517)
self:Log("SPELL_CAST_START", "GrippingInfection", 328180)
self:Log("SPELL_AURA_APPLIED", "GrippingInfectionApplied", 328180)
self:Log("SPELL_CAST_START", "WitheringFilth", 321935)
self:Log("SPELL_CAST_SUCCESS", "BulwarkOfMaldraxxus", 336451)
self:Log("SPELL_CAST_START", "EnvelopingWebbing", 328475)
self:Log("SPELL_CAST_SUCCESS", "Stealthlings", 328400)
self:Log("SPELL_CAST_START", "OozingCarcass", 330786)
self:Log("SPELL_CAST_START", "GhostStep", 330816)
self:Log("SPELL_CAST_START", "WonderGrow", 328016)
self:Log("SPELL_CAST_SUCCESS", "DoomShroom", 327995)
self:Log("SPELL_CAST_SUCCESS", "Fungistorm", 328177)
end
--------------------------------------------------------------------------------
-- Event Handlers
--
do
local prev = 0
function mod:RollingPlague(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
function mod:FenStingerApplied(args)
if self:Dispeller("poison", nil, args.spellId) then
self:TargetMessage(args.spellId, "yellow", args.destName)
self:PlaySound(args.spellId, "alert", nil, args.destName)
end
end
function mod:CreepyCrawlers(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")
end
end
function mod:WingBuffet(args)
self:Message(args.spellId, "red")
self:PlaySound(args.spellId, "alarm")
end
function mod:BlightbeakApplied(args)
if self:Dispeller("disease", nil, args.spellId) then
self:StackMessage(args.spellId, args.destName, args.amount, "yellow")
self:PlaySound(args.spellId, "alert", nil, args.destName)
end
end
function mod:BelchPlague(args)
local unit = self:GetUnitIdByGUID(args.sourceGUID)
if unit and UnitAffectingCombat(unit) then
self:Message(args.spellId, "red")
self:PlaySound(args.spellId, "alarm")
end
end
function mod:BeckonSlime(args)
self:Message(args.spellId, "yellow", CL.casting:format(args.spellName))
self:PlaySound(args.spellId, "long")
end
function mod:CorrodedClawsApplied(args)
if self:Dispeller("disease", nil, args.spellId) then
self:StackMessage(args.spellId, args.destName, args.amount, "yellow")
self:PlaySound(args.spellId, "alert", nil, args.destName)
end
end
function mod:FesteringBelch(args)
self:Message(args.spellId, "red")
self:PlaySound(args.spellId, "alarm")
end
function mod:JaggedSpines(args)
self:Message(args.spellId, "yellow")
self:PlaySound(args.spellId, "alert")
end
function mod:GrippingInfection(args)
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
self:PlaySound(args.spellId, "alert")
end
function mod:GrippingInfectionApplied(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
do
local function printTarget(self, name, guid)
local isOnMe = self:Me(guid)
self:TargetMessage(321935, isOnMe and "red" or "yellow", name)
self:PlaySound(321935, isOnMe and "alarm" or "info", nil, name)
if isOnMe then
self:Say(321935)
end
end
function mod:WitheringFilth(args)
-- XXX check if the mob actually changes target
self:GetUnitTarget(printTarget, 0.6, args.sourceGUID)
end
end
do
local prev = 0
function mod:BulwarkOfMaldraxxus(args)
local t = args.time
local unit = self:GetUnitIdByGUID(args.sourceGUID)
if t-prev > 1.5 and unit and UnitAffectingCombat(unit) then
self:Message(args.spellId, "orange")
self:PlaySound(args.spellId, "alert")
end
end
end
function mod:EnvelopingWebbing(args)
self:Message(args.spellId, "red")
self:PlaySound(args.spellId, "alarm")
end
function mod:Stealthlings(args)
self:Message("summon_stealthlings", "red", CL.spawned:format(args.spellName), args.spellId)
self:PlaySound("summon_stealthlings", "warning")
end
function mod:OozingCarcass(args)
self:Message(args.spellId, "orange")
self:PlaySound(args.spellId, "alert")
end
function mod:GhostStep(args)
self:Message(args.spellId, "yellow")
self:PlaySound(args.spellId, "info")
end
function mod:WonderGrow(args)
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
self:PlaySound(args.spellId, "alert")
end
do
local prev = 0
function mod:DoomShroom(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
do
local prev = 0
function mod:Fungistorm(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