Files
2023-11-25 17:31:26 -07:00

87 lines
2.2 KiB
Lua

local mod = DBM:NewMod("Anub'Rekhan", "DBM-Naxx", 1)
local L = mod:GetLocalizedStrings()
mod:SetRevision(("$Revision: 2943 $"):sub(12, -3))
mod:SetCreatureID(15956)
mod:RegisterCombat("combat")
mod:EnableModel()
mod:RegisterEvents(
"SPELL_AURA_APPLIED",
"SPELL_CAST_START",
"PLAYER_ALIVE",
"UNIT_DIED"
)
-----LOCUST SWARM-----
local prewarnLocust = mod:NewSoonAnnounce(2123004, 2)
local warnLocust = mod:NewCastAnnounce(2123004, 3)
local timerLocust = mod:NewNextTimer(90, 2123004)
local specWarnLocust = mod:NewSpecialWarningSpell(2123004)
local timerLocustRemaining = mod:NewBuffActiveTimer(17, 2123004)
-----DARK GAZE-----
local specWarnDarkGaze = mod:NewSpecialWarningYou(1003011)
-----IMPALE------
local timerImpale = mod:NewCDTimer(15, 2123001)
local warnImpale = mod:NewTargetAnnounce(2123001, 2)
-----MISC-----
local berserkTimer = mod:NewBerserkTimer(600)
local tankName = ''
-----BOSS FUNCTIONS-----
function mod:OnCombatStart(delay)
berserkTimer:Start(-delay)
timerLocust:Start(-delay)
prewarnLocust:Schedule(85-delay)
timerImpale:Start(10-delay)
end
function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(1003011) then
if args:IsPlayer() then
specWarnDarkGaze:Show();
SendChatMessage(L.YellDarkGaze, "YELL")
end
end
end
function mod:SPELL_CAST_START(args)
if args:IsSpellID(2123003) then
timerLocust:Start()
specWarnLocust:Show()
prewarnLocust:Schedule(85)
timerLocustRemaining:Schedule(3)
timerImpale:Stop()
timerImpale:Start(30)
elseif args:IsSpellID(2123001) then
timerImpale:Start()
tankName = mod:GetBossTarget(15956)
self:ScheduleMethod(0.1, "anubImpale")
end
end
function mod:anubImpale()
local target = mod:GetBossTarget(15956) or mod:GetBossTarget(26614)
if target ~= tankName then
warnImpale:Show(target)
elseif target == tankName then
self:ScheduleMethod(0.1, "anubImpale")
end
end
function mod:OnCombatEnd()
timerLocust:Stop()
warnLocust:Cancel()
timerImpale:Stop()
warnImpale:Cancel()
end
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 15956 or cid == 26614 then
timerLocust:Stop()
warnLocust:Cancel()
timerImpale:Stop()
warnImpale:Cancel()
end
end