Files
Szyler 5b3b160e21 5.16 update (#1)
Co-authored-by: Szyler <Szyler@Szyler.com>
2022-12-01 14:16:16 -07:00

145 lines
4.5 KiB
Lua

local mod = DBM:NewMod("Hydross", "DBM-Serpentshrine")
local L = mod:GetLocalizedStrings()
mod:SetRevision(("$Revision: 163 $"):sub(12, -3))
mod:SetCreatureID(21216)
mod:RegisterCombat("combat", 21216)
mod:RegisterEvents(
"SPELL_AURA_APPLIED",
"SPELL_AURA_APPLIED_DOSE",
"SPELL_AURA_REMOVED",
"SPELL_CAST_SUCCESS"
)
local warnMarkF = mod:NewAnnounce(L.WarnMark, 3, 351203)
local warnMarkN = mod:NewAnnounce(L.WarnMark, 3, 351204)
local warnPhase = mod:NewAnnounce("WarnPhase", 4)
local warnTomb = mod:NewTargetAnnounce(2137505, 3)
local specWarnTidal = mod:NewSpecialWarning("Tidalwave, stack!")
local warnSludge = mod:NewTargetAnnounce(2137509, 2)--Maybe filter it some if spammy?
local warnTidalPower = mod:NewAnnounce(L.WarnMark, 3, 351204)
-- local specWarnMark = mod:NewSpecialWarning("SpecWarnMark")
local timerNextTomb = mod:NewNextTimer(45, 2137505)
local timerNextSludge = mod:NewNextTimer(45, 2137509)
local timerNextTidal = mod:NewNextTimer(45, 2137514)
local timerTidal1 = mod:NewTimer(6, "Tidal Wave (1)", 2137514)
local timerTidal2 = mod:NewTimer(6, "Tidal Wave (2)", 2137514)
local timerTidal3 = mod:NewTimer(6, "Tidal Wave (3)", 2137514)
local timerSludge = mod:NewTargetTimer(12, 2137509)
-- local timerMark = mod:NewTimer(15, "TimerMark", 351203)
local berserkTimer = mod:NewTimer(600, "Berserk", 26662)
local lastMarkF = 0
local lastMarkN = 0
local lastTidalPower = 0
local LastTombSludge = 0
-- local markOfH, markOfC = DBM:GetSpellInfo(351203), DBM:GetSpellInfo(351204)
mod:AddBoolOption("RangeFrame", true)
function mod:tidalWave()
self:UnscheduleMethod("tidalWave")
specWarnTidal:Show()
timerNextTidal:Start()
timerTidal1:Start()
if mod:IsDifficulty("heroic10", "heroic25") then
timerTidal2:Schedule(3)
specWarnTidal:Schedule(3)
timerTidal3:Schedule(6)
specWarnTidal:Schedule(6)
end
self:ScheduleMethod(45, "tidalWave")
end
function mod:PhaseChangeAddTime()
local elapsed, total = timerNextTidal:GetTime();
local currentRemainingTidalTimer = total - elapsed
timerNextTidal:AddTime(2.5)
self:UnscheduleMethod("tidalWave")
self:ScheduleMethod(currentRemainingTidalTimer+2, "tidalWave")
berserkTimer:AddTime(2)
end
function mod:OnCombatStart(delay)
-- timerMark:Start(16-delay, markOfH, "10%")
berserkTimer:Start(-delay)
if self.Options.RangeFrame then
DBM.RangeCheck:Show()
end
timerNextTomb:Start(10-delay)
timerNextTidal:Start(30-delay)
self:ScheduleMethod(30-delay, "tidalWave")
end
function mod:OnCombatEnd()
if self.Options.RangeFrame then
DBM.RangeCheck:Hide()
end
end
function mod:SPELL_AURA_APPLIED(args)
-- elseif args.spellId == 351203 then
-- timerMark:Cancel()
-- timerMark:Start()
if args:IsSpellID(2137504) then -- Corruption transform on boss
warnPhase:Show(L.Nature)
timerNextTomb:Stop()
if GetTime() - LastTombSludge <= 32 then
timerNextSludge:Start(42)
else
timerNextSludge:Start(12)
end
self:PhaseChangeAddTime()
-- timerMark:Start(16, markOfC, "10%")
end
end
function mod:SPELL_AURA_REMOVED(args)
if args:IsSpellID(2137504) then -- Losing Corruption transform on boss
warnPhase:Show(L.Frost)
timerNextSludge:Stop()
if GetTime() - LastTombSludge <= 32 then
timerNextTomb:Start(42)
else
timerNextTomb:Start(12)
end
self:PhaseChangeAddTime()
-- timerMark:Start(16, markOfH, "10%")
end
end
function mod:SPELL_AURA_APPLIED_DOSE(args)
if args:IsSpellID(2137523, 2137524, 2137525, 2137526) then -- Mark of Hydross
if args.amount and (GetTime() - lastMarkF) > 2 and args.amount >= 10 and args.amount % 5 == 0 then
lastMarkF = GetTime()
warnMarkF:Show(args.amount, args.spellName)
end
elseif args:IsSpellID(2137527, 2137528, 2137529, 2137530) then -- Mark of Corruption
if args.amount and (GetTime() - lastMarkN) > 2 and args.amount >= 10 and args.amount % 5 == 0 then
lastMarkN = GetTime()
warnMarkN:Show(args.amount, args.spellName)
end
elseif args:IsSpellID(2137514) then -- Tidal Power
if args.amount and (GetTime() - lastTidalPower) > 2 and args.amount >= 75 and args.amount % 5 == 0 then
lastTidalPower = GetTime()
warnTidalPower:Show(args.amount, args.spellName)
end
end
end
function mod:SPELL_CAST_SUCCESS(args)
if args:IsSpellID(2137505, 2137506, 2137507, 2137508) then
warnTomb:Show(args.destName)
timerNextTomb:Start()
LastTombSludge = GetTime()
elseif args:IsSpellID(2137509, 2137510, 2137511, 2137512) then
warnSludge:Show(args.destName)
timerSludge:Start(args.destName)
timerNextSludge:Start()
LastTombSludge = GetTime()
end
end