Files
coa-dbm/DBM-Naxx/ArachnidQuarter/Maexxna.lua
T
Szyler dc8afd6584 5.19b (#4)
Co-authored-by: Szyler <Szyler@Szyler.com>
2024-03-03 11:23:13 -07:00

124 lines
3.8 KiB
Lua

local mod = DBM:NewMod("Maexxna", "DBM-Naxx", 1)
local L = mod:GetLocalizedStrings()
mod:SetRevision(("$Revision: 2943 $"):sub(12, -3))
mod:SetCreatureID(15952)
mod:RegisterCombat("combat")
mod:EnableModel()
mod:RegisterEvents(
"SPELL_AURA_APPLIED",
"SPELL_AURA_APPLIED_DOSE",
"SPELL_CAST_SUCCESS",
"PLAYER_ALIVE",
"CHAT_MSG_RAID_BOSS_EMOTE",
"UNIT_HEALTH",
"UNIT_DIED"
)
-----Necrotic Poison-----
local warnNecrotic = mod:NewAnnounce("%s on >%s< (%d)",3 ,2123201)
local specWarnNecrotic = mod:NewSpecialWarningStack(2123201, 3)
----DIGESTIVE ACID----
local warnDigestive = mod:NewAnnounce("%s on >%s< (%d)",3 ,2123202)
local specWarnDigestive = mod:NewSpecialWarningStack(2123202, 1)
-----WEB WRAP-----
local warnWebWrap = mod:NewTargetAnnounce(2123211, 2)
local timerWebWrap = mod:NewNextTimer(40, 2123211)
-----WEB SPRAY-----
local warnWebSpraySoon = mod:NewSoonAnnounce(2123206, 1)
local warnWebSprayNow = mod:NewSpecialWarningSpell(2123206, 3)
local timerWebSpray = mod:NewNextTimer(50, 2123206)
local timerWebStunSoon = mod:NewTimer(4,"Stun incoming!", 2123210)
local timerWebStun = mod:NewTimer(4, "WRAPPED!", 2123210)
-----SPIDERLINGS-----
local timerSpider = mod:NewNextTimer(16, 43134)
-----SOFT ENRAGE-----
local warnSoftEnrageSoon = mod:NewSpellAnnounce(54123, 3)
local warnSoftEnrageNow = mod:NewSoonAnnounce(54123, 2)
local phase
local webSpam = 0
local necroticSpam = 0
-----BOSS FUNCTIONS-----
function mod:OnCombatStart(delay)
webSpam = 0
necroticSpam = 0
warnWebSpraySoon:Schedule(35 - delay)
timerWebSpray:Start(40 - delay)
timerWebWrap:Start(20-delay)
timerSpider:Start(8 - delay)
self:ScheduleMethod(8-delay, "Spiders")
end
-- "Kel'Thuzad strikes!"
function mod:Spiders()
timerSpider:Start()
self:ScheduleMethod(16, "Spiders")
end
function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(2123201) then
warnNecrotic:Show(args.spellName, args.destName, args.amount or 1)
elseif args:IsSpellID(2123206, 2123207, 2123208, 2123209) and DBM:AntiSpam() then
warnWebSprayNow:Show()
timerWebStunSoon:Start()
timerWebSpray:Start()
elseif args:IsSpellID(2123211,2123212,2123216,2123217) and (GetTime() - webSpam) > 5 then -- Web Wrap
webSpam = GetTime()
warnWebWrap:Show(args.destName)
timerWebWrap:Start()
if args:IsPlayer() then
SendChatMessage(L.YellWebWrap, "YELL")
end
elseif args:IsSpellID(2123210) then
timerWebStun:Start()
end
end
function mod:SPELL_AURA_APPLIED_DOSE(args)
if args:IsSpellID(2123201) then
if args:IsPlayer() and args.amount >= 1 and (GetTime() - necroticSpam) > 5 then
necroticSpam = GetTime()
specWarnNecrotic:Show(args.amount)
elseif args:IsPlayer() == false and args.amount >= 5 and (GetTime() - necroticSpam) > 5 then
necroticSpam = GetTime()
warnNecrotic:Show(args.spellName, args.destName, args.amount or 1)
end
elseif args:IsSpellID(2123202) then
if args:IsPlayer() and args.amount >= 1 then
specWarnDigestive:Show(args.amount)
elseif args:IsPlayer() == false and args.amount >= 4 and args.amount <=10 then
warnDigestive:Show(args.spellName, args.destName, args.amount or 1)
end
end
end
function mod:UNIT_HEALTH(uId)
if self:GetUnitCreatureId(uId) == 15952 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.25 and phase == 1 then
phase = 2
warnSoftEnrageSoon:Show()
elseif self:GetUnitCreatureId(uId) == 15952 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.20 and phase == 2 then
phase = 3
warnSoftEnrageNow:Show()
end
end
function mod:OnCombatEnd()
timerWebSpray:Stop()
warnWebSpraySoon:Cancel()
timerSpider:Stop()
timerWebWrap:Stop()
self:UnscheduleMethod("Spiders")
end
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 15952 or cid == 26616 then
timerWebSpray:Stop()
warnWebSpraySoon:Cancel()
timerSpider:Stop()
timerWebWrap:Stop()
self:UnscheduleMethod("Spiders")
end
end