dc8afd6584
Co-authored-by: Szyler <Szyler@Szyler.com>
144 lines
4.1 KiB
Lua
144 lines
4.1 KiB
Lua
local mod = DBM:NewMod("Noth", "DBM-Naxx", 3)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision(("$Revision: 2248 $"):sub(12, -3))
|
|
mod:SetCreatureID(15954)
|
|
mod:RegisterCombat("combat")
|
|
mod:RegisterEvents(
|
|
"SPELL_CAST_SUCCESS",
|
|
"SPELL_CAST_START",
|
|
"SPELL_AURA_APPLIED",
|
|
"SPELL_AURA_APPLIED_DOSE",
|
|
"PLAYER_ALIVE",
|
|
"UNIT_HEALTH",
|
|
"UNIT_DIED",
|
|
"CHAT_MSG_RAID_BOSS_EMOTE"
|
|
)
|
|
|
|
-----TELEPORT-----
|
|
local warnIntermissionNow = mod:NewAnnounce("Intermission now", 2, 46573, nil, "Show warning for Noth teleporting to the balcony")
|
|
local warnIntermissionSoon = mod:NewAnnounce("Intermission soon", 2, 46573, nil, "Show pre-warning for Noth teleporting to the balcony")
|
|
local timerTeleportBack = mod:NewTimer(60, "Noth returns to the battlefield", 46573, nil, "Show timer for Noth teleporting from the balcony")
|
|
local warnNothReturn = mod:NewAnnounce("Noth has returned to the battlefield", 46573, nil, "Show warning for Noth returning from the balcony")
|
|
-----CURSE-----
|
|
local timerCurse = mod:NewNextTimer(30, 2123805)
|
|
local warnCurse = mod:NewSpellAnnounce(2123805, 2)
|
|
local specWarnCurse = mod:NewSpecialWarningYou(2123805)
|
|
-----Adds-----
|
|
local timerWarriorSkeletons = mod:NewTimer(30,"Wave of Warrior Skeletons", 52611)
|
|
local timerSkeletonWave = mod:NewTimer(26, "Wave of Skeletons", 52611)
|
|
local timerArcaneExplo = mod:NewNextTimer(30, 2123828)
|
|
--Rise, my soldiers! Rise and fight once more!
|
|
-----MISC-----
|
|
-- local berserkTimer = mod:NewBerserkTimer(375)
|
|
local phase = 0
|
|
local prePhase = 0
|
|
local curseSpam = 0
|
|
|
|
-----BOSS FUNCTIONS-----
|
|
function mod:OnCombatStart(delay)
|
|
phase = 0
|
|
prePhase = 0
|
|
curseSpam = 0
|
|
self:ScheduleMethod(0-delay,"NothFight")
|
|
end
|
|
|
|
function mod:Intermission()
|
|
warnIntermissionNow:Show()
|
|
timerCurse:Stop()
|
|
timerWarriorSkeletons:Stop()
|
|
timerArcaneExplo:Start(15)
|
|
timerSkeletonWave:Start(10)
|
|
self:UnscheduleMethod("WarriorSkeletons")
|
|
self:ScheduleMethod(15,"SkeletonWaves")
|
|
timerTeleportBack:Start()
|
|
self:ScheduleMethod(60, "NothFight")
|
|
end
|
|
|
|
function mod:NothFight()
|
|
timerWarriorSkeletons:Start(22)
|
|
timerCurse:Start()
|
|
self:ScheduleMethod(22,"WarriorSkeletons")
|
|
if phase >= 1 then
|
|
warnNothReturn:Show()
|
|
end
|
|
end
|
|
|
|
function mod:WarriorSkeletons()
|
|
timerWarriorSkeletons:Start()
|
|
self:ScheduleMethod(30,"WarriorSkeletons")
|
|
end
|
|
|
|
function mod:SkeletonWaves()
|
|
timerSkeletonWave:Start()
|
|
timerArcaneExplo:Start()
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
if args:IsSpellID(2123805) and DBM:AntiSpam(5,1) then
|
|
if args:IsPlayer() then
|
|
specWarnCurse:Show()
|
|
end
|
|
timerCurse:Start()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED_DOSE(args)
|
|
if args:IsSpellID(29213, 54835, 350288) then
|
|
if args:IsPlayer() then
|
|
specWarnCurse:Show();
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
function mod:UNIT_HEALTH(uId)
|
|
if self:GetUnitCreatureId(uId) == 15954 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.80 and prePhase ==0 then
|
|
warnIntermissionSoon:Show()
|
|
prePhase = 1
|
|
-- end
|
|
--if self:GetUnitCreatureId(uId) == 15954 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.753 and phase ==0 then
|
|
--self:ScheduleMethod(0,"Intermission")
|
|
--phase = 1
|
|
--end
|
|
elseif self:GetUnitCreatureId(uId) == 15954 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.55 and prePhase ==1 then
|
|
warnIntermissionSoon:Show()
|
|
prePhase = 2
|
|
-- end
|
|
--if self:GetUnitCreatureId(uId) == 15954 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.503 and phase ==1 then
|
|
-- self:ScheduleMethod(0,"Intermission")
|
|
-- phase = 2
|
|
--end
|
|
elseif self:GetUnitCreatureId(uId) == 15954 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.30 and prePhase ==2 then
|
|
warnIntermissionSoon:Show()
|
|
prePhase = 3
|
|
-- end
|
|
--if self:GetUnitCreatureId(uId) == 15954 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.253 and phase ==2 then
|
|
-- self:ScheduleMethod(0,"Intermission")
|
|
-- phase = 3
|
|
--end
|
|
end
|
|
end
|
|
|
|
function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
|
|
if msg == L.Teleport or msg:find(L.Teleport) then
|
|
self:ScheduleMethod(0,"Intermission")
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_DIED(args)
|
|
local cid = self:GetCIDFromGUID(args.destGUID)
|
|
if cid == 15954 or cid == 26617 then
|
|
timerCurse:Stop()
|
|
self:UnscheduleMethod("WarriorSkeletons")
|
|
end
|
|
end
|
|
|
|
function mod:OnCombatEnd()
|
|
self:UnscheduleMethod("WarriorSkeletons")
|
|
timerCurse:Stop()
|
|
timerWarriorSkeletons:Stop()
|
|
end
|
|
|
|
|