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.

107 lines
3.1 KiB

4 years ago
--------------------------------------------------------------------------------
-- Module declaration
--
local mod, CL = BigWigs:NewBoss("Wing Leader Ner'onok", 1011, 727)
if not mod then return end
mod:RegisterEnableMob(62205)
mod.engageId = 1464
mod.respawnTime = 30
--------------------------------------------------------------------------------
-- Locals
--
local nextWindsWarning = 75
--------------------------------------------------------------------------------
-- Initialization
--
function mod:GetOptions()
return {
"stages",
121443, -- Caustic Pitch
-6205, -- Quick-Dry Resin (EJ entry mentions Invigorated)
121284, -- Gusting Winds
}
end
function mod:OnBossEnable()
self:Log("SPELL_AURA_APPLIED", "CausticPitch", 121443)
self:Log("SPELL_PERIODIC_DAMAGE", "CausticPitch", 121443)
self:Log("SPELL_PERIODIC_MISSED", "CausticPitch", 121443)
self:Log("SPELL_AURA_APPLIED", "QuickDryResin", 121447)
self:Log("SPELL_AURA_APPLIED", "Invigorated", 121449)
self:Log("SPELL_AURA_APPLIED", "GustingWinds", 121282, 121284)
self:Log("SPELL_INTERRUPT", "GustingWindsInterrupted", "*")
self:RegisterUnitEvent("UNIT_HEALTH", nil, "boss1")
end
function mod:OnEngage()
nextWindsWarning = 75 -- casts it at 70% and 40%
end
--------------------------------------------------------------------------------
-- Event Handlers
--
do
local prev = 0
function mod:CausticPitch(args)
if self:Me(args.destGUID) then
local t = GetTime()
if t-prev > 1.5 then
prev = t
self:MessageOld(args.spellId, "blue", "alert", CL.underyou:format(args.spellName))
end
end
end
end
function mod:QuickDryResin(args)
if self:Me(args.destGUID) then
self:MessageOld(-6205, "blue", "alarm", CL.you:format(args.spellName))
end
end
function mod:Invigorated(args)
if self:Me(args.destGUID) then
self:MessageOld(-6205, "green", "info", CL.you:format(args.spellName), args.spellId)
end
end
do
local scheduledCooldownTimer = nil
function mod:GustingWinds(args)
self:MessageOld(121284, "orange", self:Interrupter() and "warning" or "long", CL.casting:format(args.spellName))
self:CastBar(121284, 4)
scheduledCooldownTimer = self:ScheduleTimer("CDBar", 4.1, 121284, 3.2) -- 7.3s CD
end
function mod:GustingWindsInterrupted(args)
if args.extraSpellId == 121282 or args.extraSpellId == 121284 then -- Gusting Winds
self:MessageOld(121284, "green", nil, CL.interrupted_by:format(args.extraSpellName, self:ColorName(args.sourceName)))
self:StopBar(CL.cast:format(args.extraSpellName))
if scheduledCooldownTimer then
self:CancelTimer(scheduledCooldownTimer)
scheduledCooldownTimer = nil
end
end
end
end
function mod:UNIT_HEALTH(event, unit)
local hp = UnitHealth(unit) / UnitHealthMax(unit) * 100
if hp < nextWindsWarning then
nextWindsWarning = nextWindsWarning - 30
self:MessageOld("stages", "yellow", nil, CL.soon:format(self:SpellName(-6297)), false) -- -6297 = Treacherous Winds
if nextWindsWarning < 40 then
self:UnregisterUnitEvent(event, unit)
end
end
end