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.
102 lines
2.9 KiB
102 lines
2.9 KiB
|
4 years ago
|
-------------------------------------------------------------------------------
|
||
|
|
-- Module Declaration
|
||
|
|
--
|
||
|
|
|
||
|
|
local mod, CL = BigWigs:NewBoss("Zanzil", 859, 184)
|
||
|
|
if not mod then return end
|
||
|
|
mod:RegisterEnableMob(52053)
|
||
|
|
--mod.engageId = 1181 -- no boss frames, also he consistently fires ENCOUNTER_END when his Graveyard Gas ends, without despawning
|
||
|
|
--mod.respawnTime = 30
|
||
|
|
|
||
|
|
-------------------------------------------------------------------------------
|
||
|
|
-- Initialization
|
||
|
|
--
|
||
|
|
|
||
|
|
function mod:GetOptions()
|
||
|
|
return {
|
||
|
|
96914, -- Zanzili Fire
|
||
|
|
{96316, "ICON", "FLASH"}, -- Zanzil's (Blue) Resurrection Elixir
|
||
|
|
96338, -- Zanzil's Graveyard Gas
|
||
|
|
}
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:OnBossEnable()
|
||
|
|
self:Log("SPELL_CAST_START", "ZanziliFire", 96914)
|
||
|
|
|
||
|
|
self:Log("SPELL_AURA_APPLIED", "BlueResurrectionElixir", 96316)
|
||
|
|
self:Log("SPELL_CAST_START", "PursuitCastStart", 96342)
|
||
|
|
self:Log("SPELL_CAST_SUCCESS", "PursuitCastSuccess", 96342)
|
||
|
|
self:Log("SPELL_AURA_REMOVED", "PursuitRemoved", 96306) -- this is applied to the mob, there are no SPELL_AURA_* events for the debuff his target gets
|
||
|
|
self:Death("AddDied", 52054)
|
||
|
|
|
||
|
|
self:Log("SPELL_AURA_APPLIED", "GraveyardGasCast", 96338)
|
||
|
|
self:Log("SPELL_AURA_REMOVED", "GraveyardGasCastOver", 96338)
|
||
|
|
|
||
|
|
self:RegisterEvent("PLAYER_REGEN_DISABLED", "CheckForEngage")
|
||
|
|
self:Death("Win", 52053)
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:OnEngage()
|
||
|
|
self:RegisterEvent("PLAYER_REGEN_ENABLED", "CheckForWipe")
|
||
|
|
end
|
||
|
|
|
||
|
|
-------------------------------------------------------------------------------
|
||
|
|
-- Event Handlers
|
||
|
|
--
|
||
|
|
|
||
|
|
function mod:ZanziliFire(args)
|
||
|
|
self:MessageOld(args.spellId, "yellow", "info", CL.casting:format(args.spellName))
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:BlueResurrectionElixir(args)
|
||
|
|
self:MessageOld(args.spellId, "yellow", "alert")
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:GraveyardGasCast(args)
|
||
|
|
self:MessageOld(args.spellId, "yellow", "alert", CL.casting:format(args.spellName))
|
||
|
|
self:CastBar(args.spellId, 7)
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:GraveyardGasCastOver(args)
|
||
|
|
self:Bar(args.spellId, 12) -- duration
|
||
|
|
end
|
||
|
|
|
||
|
|
do
|
||
|
|
local targetFound, scheduled = nil, nil
|
||
|
|
|
||
|
|
local function printTarget(self, player, guid)
|
||
|
|
targetFound = true
|
||
|
|
if self:Me(guid) then
|
||
|
|
self:Flash(96316, 96342)
|
||
|
|
end
|
||
|
|
self:TargetMessageOld(96316, player, "red", "alert", 96342)
|
||
|
|
self:PrimaryIcon(96316, player)
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:PursuitCastStart(args)
|
||
|
|
scheduled = self:ScheduleTimer("GetUnitTarget", 0.1, printTarget, 0.4, args.sourceGUID) -- the add recasts this the same moment he dies, I don't have a better idea
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:PursuitCastSuccess(args)
|
||
|
|
if not targetFound then
|
||
|
|
if self:Me(args.destGUID) then
|
||
|
|
self:Flash(96316, args.spellId)
|
||
|
|
end
|
||
|
|
self:TargetMessageOld(96316, args.destName, "red", "alert", args.spellId)
|
||
|
|
self:PrimaryIcon(96316, args.destName)
|
||
|
|
else
|
||
|
|
targetFound = nil
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:PursuitRemoved()
|
||
|
|
self:PrimaryIcon(96316)
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:AddDied()
|
||
|
|
if scheduled then
|
||
|
|
self:CancelTimer(scheduled)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|