Files
Szyler dc8afd6584 5.19b (#4)
Co-authored-by: Szyler <Szyler@Szyler.com>
2024-03-03 11:23:13 -07:00

104 lines
3.0 KiB
Lua

local mod = DBM:NewMod("LurkerBelow", "DBM-Serpentshrine")
local L = mod:GetLocalizedStrings()
mod:SetRevision(("$Revision: 183 $"):sub(12, -3))
mod:SetCreatureID(21217)
mod:RegisterCombat("combat", 21217)
mod:RegisterEvents(
"CHAT_MSG_RAID_BOSS_EMOTE",
"SPELL_AURA_APPLIED",
"SPELL_CAST_START",
"SPELL_DAMAGE",
"SPELL_MISSED"
)
local warnSubmerge = mod:NewAnnounce("WarnSubmerge", 2, "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendBurrow.blp")
local warnEmerge = mod:NewAnnounce("WarnEmerge", 1, "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendUnBurrow.blp")
local warnWhirl = mod:NewSpellAnnounce(2137605, 2)
local warnFocusedFire = mod:NewTargetAnnounce(2137622, 2)
local warnFocusedYou = mod:NewSpecialWarningYou(2137622)
local specWarnSpout = mod:NewSpecialWarningSpell(2137607)
local timerSubmerge = mod:NewTimer(135, "TimerSubmerge", "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendBurrow.blp")
local timerEmerge = mod:NewTimer(60, "TimerEmerge", "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendUnBurrow.blp")
local timerNextSpout = mod:NewNextTimer(70, 2137607)
local timerSpout = mod:NewBuffActiveTimer(22, 2137607)
local timerNextWhirl = mod:NewNextTimer(20, 2137605) --Whirl has 20s next timer, but pushed back by other casts. Need "GetTimer" to push it back (see maiden/mag)
local timerGeyser = mod:NewNextTimer(20, 2137611)
--Ascended mechanics:
local timerTentacle = mod:NewNextTimer(10, 26391)
local warnSmash = mod:NewSpecialWarningSpell(2137626)
function mod:OnCombatStart(delay)
submerged = false
timerNextWhirl:Start(6-delay)
timerNextSpout:Start(32-delay)
timerSubmerge:Start(60-delay)
timerGeyser:Start(10)
end
function mod:SPELL_AURA_APPLIED(args)
-- if args:IsSpellID(7731) then
-- DBM:AddMsg("Fishing applied - Pull inc")
-- else
if args:IsSpellID(2137622) then
if args:IsPlayer() then
warnFocusedYou:Show()
else
warnFocusedFire:Show(args.destName)
end
end
end
function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg, src)
if src == L.name and not self:IsInCombat() then
DBM:StartCombat(self, 0)
elseif msg:find(L.EmoteEmerge) then
timerEmerge:Stop()
timerSubmerge:Start()
timerNextSpout:Start(8)
timerNextWhirl:Start(6)
timerGeyser:Start(30)
elseif msg:find(L.EmoteSubmerge) then
timerEmerge:Start()
timerTentacle:Start()
timerSubmerge:Stop()
timerNextSpout:Stop()
timerGeyser:Stop()
timerNextWhirl:Stop()
elseif msg:find(L.EmoteBreath) then
timerNextWhirl:Start(25)
specWarnSpout:Show()
timerSpout:Start()
timerNextSpout:Start()
if timerGeyser:GetTime() < 25 then
timerGeyser:Stop()
end
end
end
function mod:SPELL_CAST_START(args)
if args:IsSpellID(2137626) then
warnSmash:Show()
end
end
function mod:SPELL_DAMAGE(args)
if args:IsSpellID(2137611, 2137612, 2137613, 2137614) then
timerGeyser:Start()
elseif args:IsSpellID(2137605) then
timerNextWhirl:Start()
end
end
function mod:SPELL_MISSED(args)
if args:IsSpellID(2137611, 2137612, 2137613, 2137614) then
timerGeyser:Start()
elseif args:IsSpellID(2137605) then
timerNextWhirl:Start()
end
end