5b5fee4a2d
Co-authored-by: Szyler <Szyler@Szyler.com>
147 lines
4.9 KiB
Lua
147 lines
4.9 KiB
Lua
local mod = DBM:NewMod("Janalai", "DBM-ZulAman")
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision(("$Revision: 5015 $"):sub(12, -3))
|
|
mod:SetCreatureID(23578)
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEvents(
|
|
"SPELL_CAST_START",
|
|
"SPELL_CAST_SUCCESS",
|
|
"SPELL_AURA_APPLIED",
|
|
"SPELL_DAMAGE",
|
|
"SPELL_MISSED",
|
|
"CHAT_MSG_MONSTER_YELL"
|
|
)
|
|
|
|
|
|
local warnAddsSoon = mod:NewSoonAnnounce(43962, 3)
|
|
|
|
local warnFlame = mod:NewSpecialWarningRun(2135924)
|
|
local specWarnAdds = mod:NewSpecialWarningSpell(43962)
|
|
local timerNextAdds = mod:NewNextTimer(57, 43962)
|
|
|
|
local specWarnBomb = mod:NewSpecialWarningSpell(2135915)
|
|
local timerNextBomb = mod:NewNextTimer(37, 2135915)--Cast bar? 2135913 summon, 2135914 filler, Damage: 2135915, 2135933, 2135934, 2135935
|
|
local timerBombCast = mod:NewCastTimer(6, 2135913) --2135913 summon, 2135914 filler, Damage: 2135915, 2135933, 2135934, 2135935
|
|
local timerNextBreath = mod:NewNextTimer(15, 2135901)
|
|
local timerNextFlameWhirl = mod:NewNextTimer(32, 2135908)
|
|
local timerFlameWhirlCast = mod:NewCastTimer(6, 2135908)
|
|
local timerNextPillar = mod:NewNextTimer(20, 2135923) --2135923, 2135924, 2135925, 2135926, 2135927
|
|
|
|
local WarnAddsCount = mod:NewAnnounce(L.Hatchlings, 2, 85178) --2135905, 2135906, 2135918
|
|
local specWarnAllAdds = mod:NewSpecialWarningSpell(2135906)
|
|
local timerAllAdds = mod:NewNextTimer(6, 2135906)
|
|
|
|
local berserkTimer = mod:NewBerserkTimer(600)
|
|
local pillarTimer = 0
|
|
local hatchlingsAlive = 0
|
|
local hathclingsSpawned = 0
|
|
local bombNextTimer = 0
|
|
|
|
mod:SetUsedIcons(1)
|
|
mod:AddBoolOption("FlameIcon")
|
|
|
|
function mod:OnCombatStart(delay)
|
|
timerNextAdds:Start(20)
|
|
timerNextBomb:Start(33)
|
|
timerNextBreath:Start(5)
|
|
berserkTimer:Start(-delay)
|
|
pillarTimer = 15
|
|
hatchlingsAlive = 0
|
|
hathclingsSpawned = 0
|
|
bombNextTimer = 25
|
|
self.vb.phase = 1
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
if args:IsSpellID(2135900) then
|
|
timerNextBreath:Start()
|
|
elseif args:IsSpellID(2135918) then
|
|
hatchlingsAlive = hatchlingsAlive + 1
|
|
hathclingsSpawned = hathclingsSpawned + 1
|
|
if hatchlingsAlive % 5 == 0 then
|
|
WarnAddsCount:Show(hatchlingsAlive or 5) --(args.amount or 5)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
if args:IsSpellID(2135908) then
|
|
timerNextFlameWhirl:Start()
|
|
timerFlameWhirlCast:Start()
|
|
elseif args:IsSpellID(2135905) then
|
|
specWarnAllAdds:Show()
|
|
timerAllAdds:Start()
|
|
elseif args:IsSpellID(2135913) then
|
|
timerBombCast:Start()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
if args:IsSpellID(2135907) then
|
|
self.vb.phase = 2
|
|
specWarnBomb:Schedule(bombNextTimer-6)
|
|
timerBombCast:Schedule(bombNextTimer-6)
|
|
timerNextBomb:Start(bombNextTimer-6)
|
|
bombNextTimer = 22
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
if args:IsSpellID(2135905) then
|
|
hatchlingsAlive = hatchlingsAlive + (40 - hathclingsSpawned) -- Spawns remaining number + lets you know how many
|
|
if hatchlingsAlive >= 5 then
|
|
WarnAddsCount:Show(hatchlingsAlive or 5)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_DAMAGE(args)
|
|
if args:IsSpellID(2135924, 2135925, 2135926, 2135927) and args:IsPlayer() then
|
|
warnFlame:Show()
|
|
elseif args:IsSpellID(2135924, 2135925, 2135926, 2135927) then
|
|
if DBM:AntiSpam(pillarTimer-0.1, 1) then -- AntiSpam at 20-0.1 seconds to not have other people walking into the pillar change the next timer.
|
|
pillarTimer = ((pillarTimer + 5) <= 20) and 20 or 15 -- Alternates between 20 and 15. If pillartimer + 5 is 20, then 20 otherwise (ie. if 20+5 is not 20, then) 15
|
|
timerNextPillar:Start(pillarTimer) --
|
|
end
|
|
elseif args:IsSpellID(2135915, 2135933, 2135934, 2135935) and DBM:AntiSpam(1, 2) and self.vb.phase == 2 then
|
|
specWarnBomb:Schedule(bombNextTimer-6)
|
|
timerBombCast:Schedule(bombNextTimer-6)
|
|
timerNextBomb:Start(bombNextTimer-6)
|
|
bombNextTimer = ((bombNextTimer + 6) <= 22) and 22 or 16
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_MISSED(args)
|
|
if args:IsSpellID(2135924, 2135925, 2135926, 2135927) then
|
|
if DBM:AntiSpam(pillarTimer-0.1, 1) then -- AntiSpam at 20-0.1 seconds to not have other people walking into the pillar change the next timer. AntiSpam(x,1) means AntiSpam ID1, so this would be the same antispam timer as the Spell_damage one.
|
|
pillarTimer = ((pillarTimer + 5) <= 20) and 20 or 15 -- Alternates between 20 and 15. If pillartimer + 5 is 20, then 20 otherwise (ie. if 20+5 is not 20, then) 15
|
|
timerNextPillar:Start(pillarTimer) --
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_DIED(args)
|
|
if args.destName == "Amani Dragonhawk Hatchling" then
|
|
hatchlingsAlive = hatchlingsAlive <= 1 and 0 or hatchlingsAlive - 1
|
|
end
|
|
end
|
|
|
|
-- function mod:SPELL_AURA_APPLIED(args)
|
|
-- if args:IsSpellID(2135924, 2135925, 2135926, 2135927) and args:IsPlayer() then -- This is not an aura on you
|
|
-- warnFlame:Show()
|
|
-- end
|
|
-- end
|
|
|
|
function mod:CHAT_MSG_MONSTER_YELL(msg)
|
|
if msg == L.YellAdds or msg:find(L.YellAdds) then
|
|
specWarnAdds:Show()
|
|
warnAddsSoon:Schedule(15)
|
|
timerNextAdds:Start()
|
|
elseif msg == L.YellBomb or msg:find(L.YellBomb) then
|
|
--local elapsed, total = timerNextBreath:GetTime();
|
|
timerNextBreath:AddTime(6)
|
|
end
|
|
end
|