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.
310 lines
9.3 KiB
310 lines
9.3 KiB
--------------------------------------------------------------------------------
|
|
-- Module Declaration
|
|
--
|
|
|
|
local mod, CL = BigWigs:NewBoss("The Necrotic Wake Trash", 2286)
|
|
if not mod then return end
|
|
mod.displayName = CL.trash
|
|
mod:RegisterEnableMob(
|
|
166302, -- Corpse Harvester
|
|
163121, -- Stitched Vanguard
|
|
165137, -- Zolramus Gatekeeper
|
|
163126, -- Brittlebone Mage
|
|
165919, -- Skeletal Marauder
|
|
165222, -- Zolramus Bonemender
|
|
165824, -- Nar'zudah
|
|
165197, -- Skeletal Monstrosity
|
|
173016, -- Corpse Collector
|
|
172981, -- Kyrian Stitchwerk
|
|
163620, -- Rotspew
|
|
163621, -- Goregrind
|
|
165872, -- Flesh Crafter
|
|
167731 -- Separation Assistant
|
|
)
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Localization
|
|
--
|
|
|
|
local L = mod:GetLocale()
|
|
if L then
|
|
L.corpse_harvester = "Corpse Harvester"
|
|
L.stitched_vanguard = "Stitched Vanguard"
|
|
L.zolramus_gatekeeper = "Zolramus Gatekeeper"
|
|
L.brittlebone_mage = "Brittlebone Mage"
|
|
L.skeletal_marauder = "Skeletal Marauder"
|
|
L.zolramus_bonemender = "Zolramus Bonemender"
|
|
L.narzudah = "Nar'zudah"
|
|
L.skeletal_monstrosity = "Skeletal Monstrosity"
|
|
L.corpse_collector = "Corpse Collector"
|
|
L.kyrian_stitchwerk = "Kyrian Stitchwerk"
|
|
L.flesh_crafter = "Flesh Crafter"
|
|
L.separation_assistant = "Separation Assistant"
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Initialization
|
|
--
|
|
|
|
function mod:GetOptions()
|
|
return {
|
|
-- Corpse Harvester
|
|
334748, -- Drain Fluids
|
|
-- Stitched Vanguard
|
|
323190, -- Meat Shield
|
|
-- Zolramus Gatekeeper
|
|
323347, -- Clinging Darkness
|
|
{322756, "NAMEPLATEBAR"}, -- Wrath of Zolramus
|
|
-- Brittlebone Mage
|
|
328667, -- Frostbolt Volley
|
|
-- Skeletal Marauder
|
|
324293, -- Guttural Scream
|
|
-- Zolramus Bonemender
|
|
335143, -- Bonemend
|
|
-- Nar'zudah
|
|
335141, -- Dark Shroud
|
|
{327396, "SAY", "SAY_COUNTDOWN"}, -- Grim Fate
|
|
-- Skeletal Monstrosity
|
|
324394, -- Shatter
|
|
324387, -- Frigid Spikes
|
|
324372, -- Reaping Winds
|
|
-- Corpse Collector
|
|
338353, -- Goresplatter
|
|
-- Kyrian Stitchwerk
|
|
{338456, "TANK_HEALER"}, -- Mutilate
|
|
{338357, "NAMEPLATEBAR"}, -- Tenderize
|
|
-- Flesh Crafter
|
|
327130, -- Repair Flesh
|
|
{323496, "SAY"}, -- Throw Cleaver
|
|
-- Separation Assistant
|
|
338606, -- Morbid Fixation
|
|
}, {
|
|
[334748] = L.corpse_harvester,
|
|
[323190] = L.stitched_vanguard,
|
|
[323347] = L.zolramus_gatekeeper,
|
|
[328667] = L.brittlebone_mage,
|
|
[324293] = L.skeletal_marauder,
|
|
[335143] = L.zolramus_bonemender,
|
|
[335141] = L.narzudah,
|
|
[324394] = L.skeletal_monstrosity,
|
|
[338353] = L.corpse_collector,
|
|
[338456] = L.kyrian_stitchwerk,
|
|
[327130] = L.flesh_crafter,
|
|
[338606] = L.separation_assistant,
|
|
}
|
|
end
|
|
|
|
function mod:OnBossEnable()
|
|
self:Log("SPELL_CAST_START", "DrainFluids", 334748)
|
|
self:Log("SPELL_CAST_START", "MeatShield", 323190)
|
|
self:Log("SPELL_AURA_APPLIED", "ClingingDarkness", 323347)
|
|
self:Log("SPELL_CAST_START", "WrathOfZolramus", 322756)
|
|
self:Log("SPELL_CAST_START", "FrostboltVolley", 328667)
|
|
self:Log("SPELL_CAST_START", "GutturalScream", 324293)
|
|
self:Log("SPELL_CAST_START", "Bonemend", 335143)
|
|
self:Log("SPELL_CAST_START", "DarkShroud", 335141)
|
|
self:Log("SPELL_CAST_SUCCESS", "DarkShroudSuccess", 335141)
|
|
self:Log("SPELL_AURA_REMOVED", "DarkShroudRemoved", 335141)
|
|
self:Log("SPELL_AURA_APPLIED", "GrimFateApplied", 327396)
|
|
self:Log("SPELL_CAST_START", "Shatter", 324394)
|
|
self:Log("SPELL_CAST_START", "FrigidSpikes", 324387)
|
|
self:Log("SPELL_CAST_SUCCESS", "ReapingWinds", 324372)
|
|
self:Log("SPELL_CAST_START", "Goresplatter", 338353)
|
|
self:Log("SPELL_CAST_START", "Mutilate", 338456)
|
|
self:Log("SPELL_CAST_START", "Tenderize", 338357)
|
|
self:Log("SPELL_CAST_START", "RepairFlesh", 327130)
|
|
self:Log("SPELL_CAST_START", "ThrowCleaver", 323496)
|
|
self:Log("SPELL_CAST_START", "MorbidFixation", 338606)
|
|
self:Log("SPELL_AURA_APPLIED", "MorbidFixationApplied", 338606)
|
|
self:Log("SPELL_AURA_REMOVED", "MorbidFixationRemoved", 338606)
|
|
|
|
self:Death("SkeletalMonstrosityDeath", 165197)
|
|
self:Death("NarzudahDeath", 165824)
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Event Handlers
|
|
--
|
|
|
|
-- Corpse Harvester
|
|
do
|
|
local prev = 0
|
|
function mod:DrainFluids(args)
|
|
local t = args.time
|
|
if t-prev > 0.5 then
|
|
prev = t
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Stitched Vanguard
|
|
do
|
|
local prev = 0
|
|
function mod:MeatShield(args)
|
|
local t = args.time
|
|
if t-prev > 1 then
|
|
prev = t
|
|
self:Message(args.spellId, "yellow", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Zolramus Gatekeeper
|
|
function mod:ClingingDarkness(args)
|
|
if self:Me(args.destGUID) or self:Healer() then
|
|
self:TargetMessage(args.spellId, "yellow", args.destName)
|
|
self:PlaySound(args.spellId, "info", nil, args.destName)
|
|
end
|
|
end
|
|
|
|
function mod:WrathOfZolramus(args)
|
|
self:Message(args.spellId, "red", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alarm")
|
|
self:NameplateCDBar(args.spellId, 15.8, args.sourceGUID)
|
|
end
|
|
|
|
-- Brittlebone Mage
|
|
function mod:FrostboltVolley(args)
|
|
if self:MobId(args.sourceGUID) == 163126 then -- Brittlebone Mage, Amarth has adds that cast this spell
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
end
|
|
|
|
-- Skeletal Marauder
|
|
function mod:GutturalScream(args)
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
|
|
-- Zolramus Bonemender
|
|
function mod:Bonemend(args)
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
|
|
-- Nar'zudah
|
|
function mod:DarkShroud(args)
|
|
self:Message(args.spellId, "red", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
|
|
function mod:DarkShroudSuccess(args)
|
|
self:Bar(args.spellId, 23.5)
|
|
end
|
|
|
|
function mod:DarkShroudRemoved(args)
|
|
self:Message(args.spellId, "yellow", CL.removed:format(args.spellName))
|
|
self:PlaySound(args.spellId, "info")
|
|
end
|
|
|
|
function mod:GrimFateApplied(args)
|
|
self:TargetMessage(args.spellId, "yellow", args.destName)
|
|
self:PlaySound(args.spellId, "alert", nil, args.destName)
|
|
if self:MobId(args.sourceGUID) == 165824 then -- Nar'zudah
|
|
self:CDBar(args.spellId, 17.4)
|
|
end
|
|
if self:Me(args.destGUID) then
|
|
self:Say(args.spellId)
|
|
self:SayCountdown(args.spellId, 4)
|
|
end
|
|
end
|
|
|
|
function mod:NarzudahDeath(args)
|
|
self:StopBar(335141) -- Dark Shroud
|
|
self:StopBar(327396) -- Grim Fate
|
|
end
|
|
|
|
-- Skeletal Monstrosity
|
|
function mod:Shatter(args)
|
|
self:Message(args.spellId, "purple", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, self:Tank() and "alarm" or "info")
|
|
self:CDBar(args.spellId, 15.7)
|
|
end
|
|
|
|
function mod:FrigidSpikes(args)
|
|
self:Message(args.spellId, "yellow", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alert")
|
|
self:CDBar(args.spellId, 12.1)
|
|
end
|
|
|
|
function mod:ReapingWinds(args)
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alarm")
|
|
self:CDBar(args.spellId, 20)
|
|
self:CastBar(args.spellId, 4)
|
|
end
|
|
|
|
function mod:SkeletalMonstrosityDeath(args)
|
|
self:StopBar(324394) -- Shatter
|
|
self:StopBar(324387) -- Rigid Spikes
|
|
|
|
-- Reaping Winds
|
|
self:StopBar(324372)
|
|
self:StopBar(CL.cast:format(self:SpellName(324372)))
|
|
end
|
|
|
|
-- Corpse Collector
|
|
function mod:Goresplatter(args)
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
|
|
-- Kyrian Stitchwerk
|
|
function mod:Mutilate(args)
|
|
if self:MobId(args.sourceGUID) ~= 164578 then -- Stitchflesh's Creation, add on Surgeon Stitchflesh
|
|
self:Message(args.spellId, "purple", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alarm")
|
|
end
|
|
end
|
|
|
|
function mod:Tenderize(args)
|
|
self:Message(args.spellId, "purple", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, self:Tank() and "alert" or "info")
|
|
-- This bar is here in case dps/pets taunt to let the tank drop stacks
|
|
self:NameplateCDBar(args.spellId, 12.2, args.sourceGUID)
|
|
end
|
|
|
|
-- Flesh Crafter
|
|
function mod:RepairFlesh(args)
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
|
self:PlaySound(args.spellId, "alert")
|
|
end
|
|
|
|
do
|
|
local function printTarget(self, name, guid)
|
|
self:TargetMessage(323496, "yellow", name)
|
|
self:PlaySound(323496, "info", nil, name)
|
|
if self:Me(guid) then
|
|
self:Say(323496)
|
|
end
|
|
end
|
|
|
|
function mod:ThrowCleaver(args)
|
|
-- The mob takes a long time to actually target the player
|
|
self:GetUnitTarget(printTarget, 2, args.sourceGUID)
|
|
end
|
|
end
|
|
|
|
-- Separation Assistant
|
|
do
|
|
local function printTarget(self, name, guid)
|
|
self:TargetMessage(338606, "yellow", name) -- Morbid Fixation
|
|
self:PlaySound(338606, self:Me(guid) and "alarm" or "info", nil, name) -- Morbid Fixation
|
|
end
|
|
|
|
function mod:MorbidFixation(args)
|
|
self:GetUnitTarget(printTarget, 0.4, args.sourceGUID)
|
|
end
|
|
end
|
|
|
|
function mod:MorbidFixationApplied(args)
|
|
self:TargetBar(args.spellId, 8, args.destName)
|
|
end
|
|
|
|
function mod:MorbidFixationRemoved(args)
|
|
self:StopBar(args.spellId, args.destName)
|
|
end
|
|
|