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
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
|