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.
257 lines
7.1 KiB
257 lines
7.1 KiB
|
4 years ago
|
--------------------------------------------------------------------------------
|
||
|
|
-- 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
|