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.

440 lines
11 KiB

--------------------------------------------------------------------------------
-- Module Declaration
--
local mod, CL = BigWigs:NewBoss("Waycrest Manor Trash", 1862)
if not mod then return end
mod.displayName = CL.trash
mod:RegisterEnableMob(
131586, -- Banquet Steward
137830, -- Pallid Gorger
131849, -- Crazed Marksman
131677, -- Heartsbane Runeweaver
131670, -- Heartsbane Vinetwister
131850, -- Maddened Survivalist
135329, -- Matron Bryndle
131666, -- Coven Thornshaper
131858, -- Thornguard
135052, -- Blight Toad
135049, -- Dreadwing Raven
131812, -- Heartsbane Soulcharmer
131587, -- Bewitched Captain
131685, -- Runic Disciple
131818, -- Marked Sister
135365 -- Matron Alma
)
--------------------------------------------------------------------------------
-- Localization
--
local L = mod:GetLocale()
if L then
L.steward = "Banquet Steward"
L.gorger = "Pallid Gorger"
L.marksman = "Crazed Marksman"
L.runeweaver = "Heartsbane Runeweaver"
L.vinetwister = "Heartsbane Vinetwister"
L.survivalist = "Maddened Survivalist"
L.bryndle = "Matron Bryndle"
L.thornshaper = "Coven Thornshaper"
L.thornguard = "Thornguard"
L.toad = "Blight Toad"
L.raven = "Dreadwing Raven"
L.soulcharmer = "Heartsbane Soulcharmer"
L.captain = "Bewitched Captain"
L.disciple = "Runic Disciple"
L.sister = "Marked Sister"
L.alma = "Matron Alma"
end
--------------------------------------------------------------------------------
-- Initialization
--
function mod:GetOptions()
return {
-- Banquet Steward
265407, -- Dinner Bell
-- Pallid Gorger
271174, -- Retch
-- Crazed Marksman
264456, -- Tracking Explosive
-- Heartsbane Runeweaver
263943, -- Etch
263905, -- Marking Cleave
-- Heartsbane Vinetwister
263891, -- Grasping Thorns
-- Maddened Survivalist
264525, -- Shrapnel Trap
264520, -- Severing Serpent
-- Matron Bryndle
265759, -- Splinter Spike
265760, -- Thorned Barrage
265741, -- Drain Soul Essence
-- Coven Thornshaper
264050, -- Infected Thorn
278474, -- Effigy Reconstruction
{264038, "SAY"}, -- Uproot
-- Thornguard
264556, -- Tearing Strike
264150, -- Shatter
-- Blight Toad
265352, -- Toad Blight
-- Dreadwing Raven
265346, -- Pallid Glare
-- Heartsbane Soulcharmer
263959, -- Soul Volley
263961, -- Warding Candles
-- Bewitched Captain
265368, -- Spirited Defense
-- Runic Disciple
264396, -- Spectral Talisman
264390, -- Spellbind
-- Marked Sister
{264105, "SAY", "SAY_COUNTDOWN"}, -- Runic Mark
-- Matron Alma
265876, -- Ruinous Volley
{265880, "SAY", "SAY_COUNTDOWN"}, -- Dread Mark
265881, -- Decaying Touch
}, {
[265407] = L.steward,
[271174] = L.gorger,
[264456] = L.marksman,
[263943] = L.runeweaver,
[263891] = L.vinetwister,
[264525] = L.survivalist,
[265759] = L.bryndle,
[264050] = L.thornshaper,
[264556] = L.thornguard,
[265352] = L.toad,
[265346] = L.raven,
[263959] = L.soulcharmer,
[265368] = L.captain,
[264396] = L.disciple,
[264105] = L.sister,
[265876] = L.alma,
}
end
function mod:OnBossEnable()
-- Banquet Steward
self:Log("SPELL_CAST_START", "DinnerBell", 265407)
-- Pallid Gorger
self:Log("SPELL_CAST_START", "Retch", 271174)
-- Crazed Marksman
self:Log("SPELL_CAST_START", "TrackingExplosive", 264456)
-- Heartsbane Runeweaver
self:Log("SPELL_CAST_SUCCESS", "Etch", 263943)
self:Log("SPELL_CAST_START", "MarkingCleave", 263905)
-- Heartsbane Vinetwister
self:Log("SPELL_CAST_START", "GraspingThorns", 263891)
self:Log("SPELL_AURA_APPLIED", "GraspingThornsApplied", 263891)
self:Log("SPELL_AURA_REMOVED", "GraspingThornsRemoved", 263891)
-- Maddened Survivalist
self:Log("SPELL_CAST_START", "ShrapnelTrap", 264525)
self:Log("SPELL_CAST_START", "SeveringSerpent", 264520)
-- Matron Bryndle
self:Log("SPELL_CAST_SUCCESS", "SplinterSpike", 265759)
self:Log("SPELL_CAST_START", "ThornedBarrage", 265760)
self:Log("SPELL_CAST_START", "DrainSoulEssence", 265741)
-- Coven Thornshaper
self:Log("SPELL_CAST_START", "InfectedThorn", 264050)
self:Log("SPELL_CAST_START", "EffigyReconstruction", 278474)
self:Log("SPELL_CAST_START", "Uproot", 264038)
-- Thornguard
self:Log("SPELL_AURA_APPLIED", "TearingStrike", 264556)
self:Log("SPELL_CAST_START", "Shatter", 264150)
-- Blight Toad
self:Log("SPELL_CAST_START", "ToadBlight", 265352)
-- Dreadwing Raven
self:Log("SPELL_CAST_START", "PallidGlare", 265346)
-- Heartsbane Soulcharmer
self:Log("SPELL_CAST_START", "SoulVolley", 263959)
self:Log("SPELL_CAST_START", "WardingCandles", 263961)
-- Bewitched Captain
self:Log("SPELL_CAST_START", "SpiritedDefense", 265368)
-- Runic Disciple
self:Log("SPELL_CAST_START", "SpectralTalisman", 264396)
self:Log("SPELL_CAST_START", "Spellbind", 264390)
-- Marked Sister
self:Log("SPELL_CAST_START", "RunicMark", 264105)
self:Log("SPELL_AURA_APPLIED", "RunicMarkApplied", 264105)
self:Log("SPELL_AURA_REMOVED", "RunicMarkRemoved", 264105)
-- Matron Alma
self:Log("SPELL_CAST_START", "RuinousVolley", 265876)
self:Log("SPELL_CAST_SUCCESS", "DreadMark", 265880)
self:Log("SPELL_AURA_APPLIED", "DreadMarkApplied", 265880)
self:Log("SPELL_AURA_REMOVED", "DreadMarkRemoved", 265880)
self:Log("SPELL_CAST_START", "DecayingTouch", 265881)
end
--------------------------------------------------------------------------------
-- Event Handlers
--
-- Banquet Steward
do
local prev = 0
function mod:DinnerBell(args)
local t = args.time
if t-prev > 1.5 then
prev = t
self:Message(args.spellId, "orange")
self:PlaySound(args.spellId, "warning")
end
end
end
-- Pallid Gorger
do
local prev = 0
function mod:Retch(args)
local t = args.time
if t-prev > 1.5 then
prev = t
self:Message(args.spellId, "yellow")
self:PlaySound(args.spellId, "alert")
end
end
end
-- Crazed Marksman
function mod:TrackingExplosive(args)
self:Message(args.spellId, "yellow")
self:PlaySound(args.spellId, "alert")
end
-- Heartsbane Runeweaver
function mod:Etch(args)
self:TargetMessage(args.spellId, "orange", args.destName)
if self:Me(args.destGUID) or self:Healer() then
self:PlaySound(args.spellId, "warning", nil, args.destName)
end
end
function mod:MarkingCleave(args)
self:Message(args.spellId, "yellow")
self:PlaySound(args.spellId, "alert")
end
-- Heartsbane Vinetwister
function mod:GraspingThorns(args)
self:Message(args.spellId, "yellow", CL.casting:format(args.spellName))
local _, interruptReady = self:Interrupter()
if interruptReady then
self:PlaySound(args.spellId, "alarm")
end
end
function mod:GraspingThornsApplied(args)
if self:Dispeller("magic") then
self:TargetMessage(args.spellId, "red", args.destName)
self:PlaySound(args.spellId, "warning", nil, args.destName)
self:TargetBar(args.spellId, 4, args.destName)
end
end
function mod:GraspingThornsRemoved(args)
self:StopBar(args.spellName, args.destName)
end
-- Maddened Survivalist
do
local prev = 0
function mod:ShrapnelTrap(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:SeveringSerpent(args)
local t = args.time
if t-prev > 1.5 then
prev = t
self:Message(args.spellId, "yellow")
self:PlaySound(args.spellId, "alert")
end
end
end
-- Matron Bryndle
function mod:SplinterSpike(args)
self:Message(args.spellId, "orange")
self:PlaySound(args.spellId, "warning")
end
function mod:ThornedBarrage(args)
self:Message(args.spellId, "red")
self:PlaySound(args.spellId, "alarm")
end
function mod:DrainSoulEssence(args)
self:Message(args.spellId, "yellow")
self:PlaySound(args.spellId, "alert")
end
-- Coven Thornshaper
do
local prev = 0
function mod:InfectedThorn(args)
local t = args.time
if t-prev > 1.5 then
prev = t
self:Message(args.spellId, "yellow")
self:PlaySound(args.spellId, "alert")
end
end
end
function mod:EffigyReconstruction(args)
self:Message(args.spellId, "red")
self:PlaySound(args.spellId, "alert")
end
do
local function printTarget(self, name, guid)
self:TargetMessage(264038, "orange", name) -- Uproot
self:PlaySound(264038, "alarm", nil, name) -- Uproot
if self:Me(guid) then
self:Say(264038) -- Uproot
end
end
function mod:Uproot(args)
self:GetUnitTarget(printTarget, 0.4, args.sourceGUID)
end
end
-- Thornguard
do
local prev = 0
function mod:TearingStrike(args)
if self:Me(args.destGUID) then
local t = args.time
if t-prev > 1.5 then
prev = t
self:PersonalMessage(args.spellId)
self:PlaySound(args.spellId, "alarm")
end
end
end
end
do
local prev = 0
function mod:Shatter(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
-- Blight Toad
do
local prev = 0
function mod:ToadBlight(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
-- Dreadwing Raven
function mod:PallidGlare(args)
self:Message(args.spellId, "orange")
self:PlaySound(args.spellId, "alarm")
end
-- Heartsbane Soulcharmer
function mod:SoulVolley(args)
self:Message(args.spellId, "red")
self:PlaySound(args.spellId, "warning")
end
function mod:WardingCandles(args)
self:Message(args.spellId, "yellow")
self:PlaySound(args.spellId, "alert")
end
-- Bewitched Captain
function mod:SpiritedDefense(args)
self:Message(args.spellId, "cyan")
self:PlaySound(args.spellId, "alert")
end
-- Runic Disciple
function mod:SpectralTalisman(args)
self:Message(args.spellId, "yellow")
self:PlaySound(args.spellId, "alert")
end
function mod:Spellbind(args)
self:Message(args.spellId, "red")
self:PlaySound(args.spellId, "warning")
end
-- Marked Sister
function mod:RunicMark(args)
self:Message(args.spellId, "yellow")
self:PlaySound(args.spellId, "alert")
end
function mod:RunicMarkApplied(args)
self:TargetMessage(args.spellId, "orange", args.destName)
if self:Me(args.destGUID) then
self:PlaySound(args.spellId, "warning")
self:Say(args.spellId)
self:SayCountdown(args.spellId, 6)
end
end
function mod:RunicMarkRemoved(args)
if self:Me(args.destGUID) then
self:CancelSayCountdown(args.spellId)
end
end
-- Matron Alma
function mod:RuinousVolley(args)
self:Message(args.spellId, "red")
self:PlaySound(args.spellId, "warning")
end
function mod:DreadMark(args)
self:Message(args.spellId, "orange")
self:PlaySound(args.spellId, "alarm")
end
function mod:DreadMarkApplied(args)
if self:Me(args.destGUID) then
self:Say(args.spellId)
self:SayCountdown(args.spellId, 6)
end
end
function mod:DreadMarkRemoved(args)
if self:Me(args.destGUID) then
self:CancelSayCountdown(args.spellId)
end
end
function mod:DecayingTouch(args)
self:Message(args.spellId, "yellow")
self:PlaySound(args.spellId, "alert")
end