Files
coa-dbm/DBM-ZulAman/Nalorakk.lua
T
Szyler 5b3b160e21 5.16 update (#1)
Co-authored-by: Szyler <Szyler@Szyler.com>
2022-12-01 14:16:16 -07:00

151 lines
4.3 KiB
Lua

local mod = DBM:NewMod("Nalorakk", "DBM-ZulAman")
local L = mod:GetLocalizedStrings()
mod:SetRevision(("$Revision: 5015 $"):sub(12, -3))
mod:SetCreatureID(23576)
mod:RegisterCombat("combat")
mod:RegisterEvents(
"SPELL_AURA_APPLIED",
"SPELL_AURA_APPLIED_DOSE",
"SPELL_AURA_REMOVED",
"SPELL_DAMAGE",
"SPELL_CAST_START",
"SPELL_SUMMON",
"CHAT_MSG_MONSTER_YELL"
)
local warnBear = mod:NewAnnounce("WarnBear", 4, 39414)
local warnBearSoon = mod:NewAnnounce("WarnBearSoon", 3, 39414)
local warnNormal = mod:NewAnnounce("WarnNormal", 4, 39414)
local warnNormalSoon = mod:NewAnnounce("WarnNormalSoon", 3, 39414)
local warnSilence = mod:NewSpellAnnounce(42398, 3)
local specWarnFury = mod:NewSpecialWarningSpell(2135837)
local specWarnFuryStacks= mod:NewSpecialWarningStack(2135838)
local specWarnRend = mod:NewSpecialWarningTarget(2135833)
local timerNextWhirling = mod:NewNextTimer(15, 2135814)
local timerNextImpale = mod:NewNextTimer(15, 2135823)
local warnImpale = mod:NewTargetAnnounce(2135824, 3) --2135823, 2135824, 2135825, 2135826, 2135827
local timerBear = mod:NewTimer(45, "TimerBear", 39414)
local timerNormal = mod:NewTimer(30, "TimerNormal", 39414)
local specWarnCharge = mod:NewSpecialWarningYou(2135805)
local timerCharge1 = mod:NewTimer(13, "Charge (1)", 2135805)
local timerCharge2 = mod:NewTimer(14, "Charge (2)", 2135805)
local timerCharge3 = mod:NewTimer(15, "Charge (3)", 2135805)
local timerNextFury = mod:NewNextTimer(45, 2135837)
local timerNextRoar = mod:NewNextTimer(2135829, 14) -- HC 2135830 , ASC 10Man 2135831, ASC25man 2135832 --2136323 is ZUL'JIN ROAR!!!
local timerNextRend = mod:NewNextTimer(10, 2135833) --timer seems to not be constant, need to find out
local timerSpirit = mod:NewTargetTimer(15, 2135881)
local warnSpiritYou = mod:NewSpecialWarningYou(2135881)
local berserkTimer = mod:NewBerserkTimer(600)
local roarSpam = 0
local roarCount = 0
local roarTimer = 0
-- local chargeCount = 0
function mod:OnCombatStart(delay)
berserkTimer:Start(-delay)
timerNextFury:Start()
timerCharge:Start(12)
-- timerCharge2:Start(13)
roarSpam = 0
roarCount = 0
roarTimer = 0
-- self:bearCharge()
end
-- function mod:bearCharge()
-- self:UnscheduleMethod("bearCharge")
-- timerCharge1:Start()
-- timerCharge2:Start()
-- timerCharge3:Start()
-- -- chargeCount = 0
-- end
function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(2135812) then
timerNextRoar:Start()
timerNextFury:Start()
elseif args:IsSpellID(2135837) then
specWarnFury:Show()
elseif args:IsSpellID(2135804, 2135805, 2135806, 2135807) and DBM:AntiSpam(5) then
timerCharge:Start()
-- timerCharge1:Start()
-- timerCharge2:Start()
-- timerCharge3:Start()
-- chargeCount = chargeCount+1
-- if chargeCount == 3 then
-- self:bearCharge()
-- end
if args:IsPlayer() and (args.amount and args.amount > 1) then
specWarnCharge:Show()
end
elseif args:IsSpellID(2135833, 2135834, 2135835, 2135836) then
specWarnRend:Show(args.destName)
timerNextRend:Start()
elseif args:IsSpellID(2135824, 2135825, 2135826, 2135827) then
warnImpale:Show(args.destName)
elseif args:IsSpellID(2135881) then
timerSpirit:Start(args.destName)
if args:IsPlayer() then
warnSpiritYou:Show()
end
end
end
function mod:SPELL_AURA_APPLIED_DOSE(args)
if args:IsSpellID(2135838) then
if args.amount == 25 or args.amount == 50 or args.amount == 75 or args.amount == 100 then
specWarnFuryStacks:Show(args.amount)
end
end
end
function mod:SPELL_AURA_REMOVED(args)
if args:IsSpellID(2135812) then
timerNextRoar:Stop()
timerNextFury:Start()
end
end
function mod:SPELL_DAMAGE(args)
if args:IsSpellID(2135829, 2135830, 2135831, 2135832) and DBM:AntiSpam() then
roarCount = roarCount + 1
roarTimer = math.max(3, 14-roarCount)
timerNextRoar:Start(roarTimer)
end
end
function mod:SPELL_CAST_START(args)
if args:IsSpellID(2135823) then
timerNextImpale:Start()
end
end
function mod:SPELL_SUMMON(args)
if args:IsSpellID(2135814) and DBM:AntiSpam() then
timerNextWhirling:Start()
end
end
function mod:CHAT_MSG_MONSTER_YELL(msg)
if msg == L.YellBear or msg:find(L.YellBear) then
timerBear:Cancel()
warnBearSoon:Cancel()
warnBear:Show()
timerNormal:Start()
warnNormalSoon:Schedule(25)
elseif msg == L.YellNormal or msg:find(L.YellNormal) then
timerNormal:Cancel()
warnNormalSoon:Cancel()
warnNormal:Show()
timerBear:Start()
warnBearSoon:Schedule(40)
end
end