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.

256 lines
7.1 KiB

--------------------------------------------------------------------------------
-- TODO:
--
-- Turn to Stone applies a dispellable stun, might need a warning.
--------------------------------------------------------------------------------
-- Module Declaration
--
local mod, CL = BigWigs:NewBoss("Halls of Atonement Trash", 2287)
if not mod then return end
mod.displayName = CL.trash
mod:RegisterEnableMob(
164562, -- Depraved Houndmaster
164563, -- Vicious Gargon
174175, -- Loyal Stoneborn
165515, -- Depraved Darkblade
167615, -- Depraved Darkblade
165414, -- Depraved Obliterator
165529, -- Depraved Collector
164557, -- Shard of Halkias
167612, -- Stoneborn Reaver
167607, -- Stoneborn Slasher
167876 -- Inquisitor Sigar
)
--------------------------------------------------------------------------------
-- Localization
--
local L = mod:GetLocale()
if L then
L.houndmaster = "Depraved Houndmaster"
L.gargon = "Vicious Gargon"
L.loyalstoneborn = "Loyal Stoneborn"
L.darkblade = "Depraved Darkblade"
L.obliterator = "Depraved Obliterator"
L.collector = "Depraved Collector"
L.shard = "Shard of Halkias"
L.reaver = "Stoneborn Reaver"
L.slasher = "Stoneborn Slasher"
L.sigar = "Inquisitor Sigar"
end
--------------------------------------------------------------------------------
-- Initialization
--
function mod:GetOptions()
return {
326450, -- Loyal Beasts
325799, -- Rapid Fire
344993, -- Jagged Swipe
346866, -- Stone Breath
{325523, "TANK"}, -- Deadly Thrust
{325876, "SAY", "SAY_COUNTDOWN"}, -- Curse of Obliteration
325700, -- Collect Sins
325701, -- Siphon Life
326409, -- Thrash
326607, -- Turn to Stone
{326997, "TANK"}, -- Powerful Swipe
326891, -- Anguish
}, {
[326450] = L.houndmaster,
[344993] = L.gargon,
[346866] = L.loyalstoneborn,
[325523] = L.darkblade,
[325876] = L.obliterator,
[325700] = L.collector,
[326409] = L.shard,
[326607] = L.reaver,
[326997] = L.slasher,
[326891] = L.sigar,
}
end
function mod:OnBossEnable()
self:Log("SPELL_CAST_START", "LoyalBeasts", 326450)
self:Log("SPELL_AURA_APPLIED", "LoyalBeastsApplied", 326450)
self:Log("SPELL_DAMAGE", "RapidFire", 325799)
self:Log("SPELL_MISSED", "RapidFire", 325799)
self:Log("SPELL_AURA_APPLIED_DOSE", "JaggedSwipe", 344993)
self:Log("SPELL_CAST_START", "StoneBreath", 346866)
self:Log("SPELL_CAST_START", "DeadlyThrust", 325523)
self:Log("SPELL_CAST_START", "CurseOfObliteration", 325876)
self:Log("SPELL_AURA_APPLIED", "CurseOfObliterationApplied", 325876)
self:Log("SPELL_AURA_REMOVED", "CurseOfObliterationRemoved", 325876)
self:Log("SPELL_CAST_START", "CollectSins", 325700)
self:Log("SPELL_CAST_START", "SiphonLife", 325701)
self:Log("SPELL_CAST_START", "ThrashPreCast", 326409)
self:Log("SPELL_AURA_APPLIED", "Thrash", 326409)
self:Log("SPELL_AURA_REMOVED", "ThrashOver", 326409)
self:Log("SPELL_CAST_START", "TurnToStone", 326607)
self:Log("SPELL_CAST_START", "PowerfulSwipe", 326997)
self:Log("SPELL_AURA_APPLIED", "AnguishDamage", 326891)
self:Log("SPELL_PERIODIC_DAMAGE", "AnguishDamage", 326891)
self:Log("SPELL_PERIODIC_MISSED", "AnguishDamage", 326891)
end
--------------------------------------------------------------------------------
-- Event Handlers
--
-- Depraved Houndmaster
function mod:LoyalBeasts(args)
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
self:PlaySound(args.spellId, "alert")
end
do
-- This is an AoE cast that could affect 0 Gargons,
-- so SPELL_AURA_APPLIED with throttling it is.
local prev = 0
function mod:LoyalBeastsApplied(args)
if self:Tank() or self:Healer() or self:Dispeller("enrage", true) then
local t = args.time
if t - prev > 1.5 then
prev = t
self:Message(args.spellId, "red", CL.buff_other:format(args.destName, args.spellName))
self:PlaySound(args.spellId, "warning")
end
end
end
end
do
local prev = 0
function mod:RapidFire(args)
if self:Me(args.destGUID) then
local t = args.time
if t - prev > 1.5 then
prev = t
self:PersonalMessage(args.spellId, "near")
self:PlaySound(args.spellId, "alarm")
end
end
end
end
-- Vicious Gargon
function mod:JaggedSwipe(args)
local stacks = args.amount
if self:Me(args.destGUID) and stacks % 3 == 0 then
self:StackMessage(args.spellId, args.destName, stacks, "blue")
self:PlaySound(args.spellId, stacks > 5 and "warning" or "alert")
end
end
-- Loyal Stoneborn
function mod:StoneBreath(args)
if self:Friendly(args.sourceFlags) then return end
self:Message(args.spellId, "yellow", CL.casting:format(args.spellName))
self:PlaySound(args.spellId, "alarm")
end
-- Depraved Darkblade
do
local prev = 0
function mod:DeadlyThrust(args)
local t = args.time
if t - prev > 1.5 then
prev = t
self:Message(args.spellId, "purple", CL.casting:format(args.spellName))
self:PlaySound(args.spellId, "alert")
end
end
end
-- Depraved Obliterator
do
local prev = 0
function mod:CurseOfObliteration(args)
local t = args.time
if t - prev > 1.5 then
prev = t
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
self:PlaySound(args.spellId, "alert")
end
end
end
function mod:CurseOfObliterationApplied(args)
local isOnMe = self:Me(args.destGUID)
self:TargetMessage(args.spellId, "orange", args.destName)
self:TargetBar(args.spellId, 6, args.destName)
self:PlaySound(args.spellId, isOnMe and "alarm" or "info", nil, args.destName)
if isOnMe then
self:Say(args.spellId)
self:SayCountdown(args.spellId, 6)
end
end
function mod:CurseOfObliterationRemoved(args)
self:StopBar(args.spellName, args.destName)
if self:Me(args.destGUID) then
self:CancelSayCountdown(args.spellId)
end
end
-- Depraved Collector
function mod:CollectSins(args)
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
self:PlaySound(args.spellId, "alert")
end
function mod:SiphonLife(args)
self:Message(args.spellId, "yellow", CL.casting:format(args.spellName))
self:PlaySound(args.spellId, "alarm")
end
-- Shard of Halkias
function mod:ThrashPreCast(args)
self:Message(args.spellId, "red", CL.casting:format(args.spellName))
self:CastBar(args.spellId, 2)
self:PlaySound(args.spellId, "warning")
end
function mod:Thrash(args)
self:Bar(args.spellId, 8)
end
function mod:ThrashOver(args)
self:StopBar(args.spellName)
end
-- Stoneborn Reaver
function mod:TurnToStone(args)
self:Message(args.spellId, "red", CL.casting:format(args.spellName))
self:PlaySound(args.spellId, self:Interrupter() and "warning" or "alert")
end
-- Stoneborn Slasher
function mod:PowerfulSwipe(args)
self:Message(args.spellId, "purple", CL.casting:format(args.spellName))
self:PlaySound(args.spellId, "alert")
end
-- Inquisitor Sigar
do
local prev = 0
function mod:AnguishDamage(args)
if self:Me(args.destGUID) then
local t = args.time
if t-prev > 2 then
prev = t
self:PlaySound(args.spellId, "underyou")
self:PersonalMessage(args.spellId, "underyou")
end
end
end
end