Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Serpentshrine Cavern boss timers #239

Merged
merged 7 commits into from
Jan 17, 2025
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions DBM-Serpentshrine/Hydross.lua
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
local mod = DBM:NewMod("Hydross", "DBM-Serpentshrine")
local L = mod:GetLocalizedStrings()

mod:SetRevision("20220811225006")
mod:SetRevision("20250115214650")
mod:SetCreatureID(21216)

--mod:SetModelID(20162)
Expand All @@ -11,7 +11,7 @@ mod:RegisterCombat("combat_yell", L.YellPull)
mod:RegisterEventsInCombat(
"SPELL_AURA_APPLIED 38235 38246 37935",
"SPELL_AURA_REMOVED 38246 37935",
"SPELL_CAST_SUCCESS 38215 38216 38217 38219 38220 38221 38218 38231 40584 38222 38230 40583 25035"
"SPELL_CAST_SUCCESS 38215 38216 38217 38219 38220 38221 38218 38231 40584 38222 38230 40583 25035 38235"
)

--[[
Expand All @@ -28,6 +28,7 @@ local specWarnMark = mod:NewSpecialWarning("SpecWarnMark")

local timerMark = mod:NewTimer(15, "TimerMark", 38215, nil, nil, 2)
local timerSludge = mod:NewTargetTimer(24, 38246, nil, nil, nil, 3)
local timerTomb = mod:NewVarTimer("v7-8", 38235, nil, nil, nil, 3)

local berserkTimer = mod:NewBerserkTimer(600)

Expand All @@ -46,6 +47,7 @@ local damageNext = {

function mod:OnCombatStart(delay)
timerMark:Start(14.5-delay, markOfH, "10%")
timerTomb:Start()
Zidras marked this conversation as resolved.
Show resolved Hide resolved
berserkTimer:Start(-delay)
if self.Options.RangeFrame then
DBM.RangeCheck:Show()
Expand Down Expand Up @@ -76,6 +78,7 @@ function mod:SPELL_AURA_REMOVED(args)
timerSludge:Stop(args.destName)
elseif spellId == 37935 and args:GetDestCreatureID() == 21216 then -- Cleansing Field - Poison form -
warnPhase:Show(L.Nature)
timerTomb:Cancel()
end
end

Expand All @@ -99,5 +102,7 @@ function mod:SPELL_CAST_SUCCESS(args)
warnPhase:Show(L.Nature)
timerMark:Start(15.4, markOfC, "10%")
end
elseif args.spellId == 38235 then
timerTomb:Start()
end
end
34 changes: 20 additions & 14 deletions DBM-Serpentshrine/TheLurkerBelow.lua
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
local mod = DBM:NewMod("LurkerBelow", "DBM-Serpentshrine")
local L = mod:GetLocalizedStrings()

mod:SetRevision("20220813110833")
mod:SetRevision("20250115214650")
mod:SetCreatureID(21217)

--mod:SetModelID(20216)
Expand All @@ -11,7 +11,7 @@ mod:RegisterCombat("combat")
mod:RegisterEventsInCombat(
"SPELL_CAST_START 20568",
"CHAT_MSG_RAID_BOSS_EMOTE",
"UNIT_DIED",
--"UNIT_DIED",
"UNIT_SPELLCAST_SUCCEEDED"
)

Expand All @@ -21,31 +21,33 @@ local warnWhirl = mod:NewSpellAnnounce(37363, 2)

local specWarnSpout = mod:NewSpecialWarningSpell(37433, nil, nil, nil, 2, 2)

local timerSubmerge = mod:NewTimer(105, "TimerSubmerge", "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendBurrow.blp", nil, nil, 6) -- REVIEW! no data to validate, but doesn't match wiki
local timerSubmerge = mod:NewTimer(120, "TimerSubmerge", "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendBurrow.blp", nil, nil, 6)
local timerEmerge = mod:NewTimer(60, "TimerEmerge", "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendUnBurrow.blp", nil, nil, 6)
local timerSpoutCD = mod:NewCDTimer(118.5, 37433, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON) -- REVIEW! variance? (25 man FM log 2022/08/11) - 118.5 (happened right after emerge)
local timerSpoutCD = mod:NewCDTimer(71, 37433, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON) -- REVIEW! variance? (25 man FM log 2022/08/11) - 118.5 (happened right after emerge)
local timerSpoutCast = mod:NewCastTimer(3, 37433, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON)
local timerSpout = mod:NewBuffActiveTimer(22, 37433, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON)
local timerWhirlCD = mod:NewCDTimer(18, 37363, nil, nil, nil, 2) -- REVIEW! variance? (25 man FM log 2022/08/11) - 18.0, (after emerge) 100.5
local timerWhirlCD = mod:NewCDTimer(18, 37363, nil, nil, nil, 2, nil, nil, true) -- REVIEW! variance? (25 man FM log 2022/08/11) - 18.0, (after emerge) 100.5

mod.vb.submerged = false
mod.vb.guardianKill = 0
mod.vb.ambusherKill = 0
--mod.vb.guardianKill = 0
--mod.vb.ambusherKill = 0

--[[
local function emerged(self)
self.vb.submerged = false
timerEmerge:Cancel()
warnEmerge:Show()
timerSubmerge:Start()
end
]]

local function submerged(self)
self:SetStage(2)
self.vb.submerged = true
self.vb.guardianKill = 0
self.vb.ambusherKill = 0
timerSubmerge:Cancel()
-- timerSpoutCD:Cancel()
timerSpoutCD:Cancel()
timerWhirlCD:Cancel()
warnSubmerge:Show()
timerEmerge:Start()
Expand All @@ -54,9 +56,10 @@ end
function mod:OnCombatStart(delay)
self:SetStage(1)
self.vb.submerged = false
timerWhirlCD:Start(62.5-delay) -- REVIEW! variance? (25 man FM log 2022/08/11) - 62.5
timerSpoutCD:Start(35.5-delay) -- REVIEW! variance? (25 man FM log 2022/08/11) - 35.5
timerWhirlCD:Start(-delay)
timerSpoutCD:Start(36-delay)
timerSubmerge:Start(90-delay)
self:Schedule(90-delay, submerged, self)
end

function mod:SPELL_CAST_START(args)
Expand All @@ -65,7 +68,7 @@ function mod:SPELL_CAST_START(args)
timerEmerge:Cancel()
warnEmerge:Show()
timerSubmerge:Start()
self:Schedule(60, submerged, self)
self:Schedule(120, submerged, self)
end
end

Expand All @@ -79,6 +82,8 @@ function mod:CHAT_MSG_RAID_BOSS_EMOTE(_, source)
end
end

-- Onyxia PTR as of 15.01.2025 it emerges after static 60s
--[[
function mod:UNIT_DIED(args)
local cId = self:GetCIDFromGUID(args.destGUID)
if cId == 21865 then
Expand All @@ -95,12 +100,13 @@ function mod:UNIT_DIED(args)
end
end
end
]]

function mod:UNIT_SPELLCAST_SUCCEEDED(_, spellName)
if spellName == GetSpellInfo(28819) and self:AntiSpam(2, 1) then--Submerge Visual
--[[if spellName == GetSpellInfo(28819) and self:AntiSpam(2, 1) then--Submerge Visual
DBM:AddMsg("Submerge Visual unhidden from event log. Notify Zidras on Discord or GitHub")
self:SendSync("Submerge")
elseif spellName == GetSpellInfo(37660) and self:AntiSpam(2, 2) then
self:SendSync("Submerge")]]
if spellName == GetSpellInfo(37660) and self:AntiSpam(2, 2) then
Zidras marked this conversation as resolved.
Show resolved Hide resolved
self:SendSync("Whirl")
end
end
Expand Down
8 changes: 4 additions & 4 deletions DBM-Serpentshrine/Tidewalker.lua
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
local mod = DBM:NewMod("Tidewalker", "DBM-Serpentshrine")
local L = mod:GetLocalizedStrings()

mod:SetRevision("20220812215520")
mod:SetRevision("20250115214650")
mod:SetCreatureID(21213)

--mod:SetModelID(20739)
Expand All @@ -24,7 +24,7 @@ local warnBubble = mod:NewSpellAnnounce(37854, 4)
local specWarnMurlocs = mod:NewSpecialWarning("SpecWarnMurlocs", nil, nil, nil, nil, nil, nil, 24984, 37764)

local timerGraveCD = mod:NewCDTimer(30, 38049, nil, nil, nil, 3) -- REVIEW! variance? (25 man FM log 2022/07/27 || 25 man FM log 2022/08/11) - 30.1, 30.0, 30.0, 30.0, 30.0 || 32.0, 30.1, 30.1
local timerMurlocs = mod:NewTimer(51, "TimerMurlocs", 39088, nil, nil, 1, nil, nil, nil, nil, nil, nil, nil, 37764)
local timerMurlocs = mod:NewTimer(45, "TimerMurlocs", 39088, nil, nil, 1, nil, nil, nil, nil, nil, nil, nil, 37764)
local timerBubble = mod:NewBuffActiveTimer(35, 37854, nil, nil, nil, 1)

mod:AddSetIconOption("GraveIcon", 38049, true, false, {5, 6, 7, 8})
Expand All @@ -40,8 +40,8 @@ end
function mod:OnCombatStart(delay)
self.vb.graveIcon = 8
table.wipe(warnGraveTargets)
timerGraveCD:Start(19.4-delay) -- REVIEW! variance? (25 man FM log 2022/07/27 || 25 man FM log 2022/08/11) - 19.4 || 19.5
timerMurlocs:Start(40.4-delay) -- REVIEW! variance? (25 man FM log 2022/07/27 || 25 man FM log 2022/08/11) - 40.5 || 40.4
timerGraveCD:Start(20-delay)
timerMurlocs:Start(-delay)
end

function mod:SPELL_CAST_START(args)
Expand Down
83 changes: 45 additions & 38 deletions DBM-Serpentshrine/Vashj.lua
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
local mod = DBM:NewMod("Vashj", "DBM-Serpentshrine")
local L = mod:GetLocalizedStrings()

mod:SetRevision("20220813164045")
mod:SetRevision("20250115214650")
mod:SetCreatureID(21212)
--mod:SetModelID(20748)
mod:SetUsedIcons(1)
Expand Down Expand Up @@ -33,15 +33,15 @@ local warnPhase3 = mod:NewPhaseAnnounce(3)
--local specWarnCore = mod:NewSpecialWarning("SpecWarnCore", nil, nil, nil, 1, 8)
local specWarnCharge = mod:NewSpecialWarningMoveAway(38280, nil, nil, nil, 1, 2)
local yellCharge = mod:NewYell(38280)
local specWarnElemental = mod:NewSpecialWarning("SpecWarnElemental")--Changed from soon to a now warning. the soon warning not accurate because of 11 second variation so not useful special warning.
local specWarnElemental = mod:NewSpecialWarning("SpecWarnElemental")
local specWarnToxic = mod:NewSpecialWarningMove(38575, nil, nil, nil, 1, 2)

local timerEntangleCD = mod:NewCDTimer(20.9, 38316, nil, nil, nil, 3, nil, nil, true) -- Added "keep" arg. 10s variance (25 man FM log 2022/07/27 || 25 man FM log 2022/08/11) - Stage 1/25.9, Stage 3/30.0, 22.9, 24.2, 27.8 || Stage 1/24.8, Stage 3/30.0, 21.4, 20.9, 29.0, 28.6
local timerEntangleCD = mod:NewVarTimer("v20-30", 38316, nil, nil, nil, 3) -- Appears to have 10s variance still as of 15.01.2025 on Onyxia PTR -- pull:29.99/[Stage 1/0.00] 29.99, Stage 2/22.77, Stage 3/270.67, 30.01/300.67/323.44, 25.93, 20.98, 20.12, 24.52"
local timerCharge = mod:NewTargetTimer(20, 38280, nil, nil, nil, 3)
local timerChargeCD = mod:NewCDTimer(10.2, 38280, nil, nil, nil, 3, nil, nil, true) -- Added "keep" arg. 10s variance (25 man FM log 2022/07/27 || 25 man FM log 2022/08/11) - Stage 1/20.0, 19.0, 17.8, Stage 3/15.5, 14.2, 18.7, 18.8, 19.1, 10.5, 17.5 || Stage 1/10.2, 15.9, 11.3, Stage 3/17.5, 12.7, 19.2, 19.9, 15.8, 12.0, 19.9
local timerShockBlastCD = mod:NewCDTimer(10.1, 38509, nil, nil, nil, 3, nil, nil, true) -- Added "keep" arg. 10s variance (25 man FM log 2022/07/27 || 25 man FM log 2022/08/11) - Stage 1/16.3, 17.8, 11.7, Stage 3/27.8, 11.0, 19.0, 11.3, 17.7, 17.2, 17.4 || Stage 1/16.2, 10.1, Stage 3/24.3, 19.8, 14.1, 10.7, 10.6, 19.3, 12.0, 14.7
local timerElemental = mod:NewTimer(22, "TimerElementalActive", 39088, nil, nil, 1)--Blizz says they are active 20 seconds per patch notes, but my logs don't match those results. 22 second up time.
local timerElementalCD = mod:NewTimer(45, "TimerElemental", 39088, nil, nil, 1)--46-57 variation. because of high variation the pre warning special warning not useful, fortunately we can detect spawns with precise timing.
local timerChargeCD = mod:NewVarTimer("v10-20", 38280, nil, nil, nil, 3) -- At least 10s variance as of 15.01.2025 on Onyxia PTR -- pull:15.65/[Stage 1/0.00] 15.65, 16.30, 16.68, Stage 2/4.14, Stage 3/270.67, 11.79/282.45/286.59, 11.26, 15.86, 12.87, 12.57, 14.43, 16.71, 11.34, 11.73"
local timerShockBlastCD = mod:NewVarTimer("v10-20", 38509, nil, nil, nil, 3) -- At least 10s variance as of 15.01.2025 on Onyxia PTR -- pull:18.32/[Stage 1/0.00] 18.32, 11.71, 12.37, Stage 2/10.37, Stage 3/270.67, 19.40/290.07/300.44, 14.63, 10.72, 13.05, 16.88, 10.91, 13.39
local timerElemental = mod:NewTimer(15, "TimerElementalActive", 39088, nil, nil, 1)
local timerElementalCD = mod:NewTimer(50, "TimerElemental", 39088, nil, nil, 1) -- Seems to be 50s flat as of 15.01.2025 on Onyxia PTR
local timerStrider = mod:NewTimer(63, "TimerStrider", 475, nil, nil, 1)
local timerNaga = mod:NewTimer(47.5, "TimerNaga", 2120, nil, nil, 1)
--local timerMC = mod:NewCDTimer(21, 38511, nil, nil, nil, 3) -- removed in patch 2.1.
Expand All @@ -51,36 +51,36 @@ mod:AddSetIconOption("ChargeIcon", 38280, false, false, {1})
--mod:AddBoolOption("AutoChangeLootToFFA", true)

mod.vb.shieldLeft = 4
mod.vb.nagaCount = 1
mod.vb.striderCount = 1
mod.vb.elementalCount = 1
mod.vb.nagaCount = 0
mod.vb.striderCount = 0
mod.vb.elementalCount = 0
--local lootmethod, masterlooterRaidID
local elementals = {}

local function StriderSpawn(self)
self.vb.striderCount = self.vb.striderCount + 1
warnStrider:Schedule(57, tostring(self.vb.striderCount))
timerStrider:Start(nil, tostring(self.vb.striderCount))
warnStrider:Schedule(57, tostring(self.vb.striderCount + 1))
timerStrider:Start(nil, tostring(self.vb.striderCount + 1))
self:Schedule(63, StriderSpawn, self)
end

local function NagaSpawn(self)
warnNaga:Schedule(42.5, tostring(self.vb.nagaCount))
self.vb.nagaCount = self.vb.nagaCount + 1
timerNaga:Start(nil, tostring(self.vb.nagaCount))
warnNaga:Schedule(42.5, tostring(self.vb.nagaCount + 1))
timerNaga:Start(nil, tostring(self.vb.nagaCount + 1))
self:Schedule(47.5, NagaSpawn, self)
end

function mod:OnCombatStart(delay)
table.wipe(elementals)
self:SetStage(1)
self.vb.shieldLeft = 4
self.vb.nagaCount = 1
self.vb.striderCount = 1
self.vb.elementalCount = 1
timerEntangleCD:Start(29.5-delay) -- REVIEW! variance? (25 man FM log 2022/07/27 || 25 man FM log 2022/08/11) - 29.5 || 29.5
timerChargeCD:Start(11.6-delay) -- REVIEW! 10s variance? (25 man FM log 2022/07/27 || 25 man FM log 2022/08/11) - 11.6 || 16.3
timerShockBlastCD:Start(15.2-delay) -- REVIEW! 10s variance? (25 man FM log 2022/07/27 || 25 man FM log 2022/08/11) - 25.2 || 15.2
self.vb.nagaCount = 0
self.vb.striderCount = 0
self.vb.elementalCount = 0
timerEntangleCD:Start(30-delay) -- Appears to be static 30s upon starting combat (As of 15.01.2025 on Onyxia PTR)
timerChargeCD:Start()
timerShockBlastCD:Start()
-- if DBM:IsInGroup() and DBM:GetRaidRank() == 2 then
-- lootmethod, _, masterlooterRaidID = GetLootMethod()
-- end
Expand Down Expand Up @@ -149,9 +149,12 @@ end

function mod:SPELL_CAST_START(args)
if args.spellId == 38253 and not elementals[args.sourceGUID] then
elementals[args.sourceGUID] = true
self.vb.elementalCount = self.vb.elementalCount + 1
specWarnElemental:Show()
timerElemental:Start()
elementals[args.sourceGUID] = true
warnElemental:Schedule(45, tostring(self.vb.elementalCount + 1))
timerElementalCD:Start(nil, tostring(self.vb.elementalCount + 1))
end
end

Expand All @@ -168,9 +171,7 @@ end
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 22009 then
self.vb.elementalCount = self.vb.elementalCount + 1
timerElementalCD:Start(nil, tostring(self.vb.elementalCount))
warnElemental:Schedule(45, tostring(self.vb.elementalCount))
timerElemental:Cancel()
end
end

Expand All @@ -185,20 +186,24 @@ end
function mod:CHAT_MSG_MONSTER_YELL(msg)
if msg == L.DBM_VASHJ_YELL_PHASE2 or msg:find(L.DBM_VASHJ_YELL_PHASE2) then
self:SetStage(2)
self.vb.nagaCount = 1
self.vb.striderCount = 1
self.vb.elementalCount = 1
self.vb.nagaCount = 0
self.vb.striderCount = 0
self.vb.elementalCount = 0
self.vb.shieldLeft = 4
warnPhase2:Show()
-- Cancel P1 timers
timerEntangleCD:Cancel()
timerChargeCD:Cancel()
timerNaga:Start(nil, tostring(self.vb.nagaCount))
warnNaga:Schedule(42.5, tostring(self.vb.elementalCount))
timerShockBlastCD:Cancel()
-- Start P2 timers
warnNaga:Schedule(42.5, tostring(self.vb.nagaCount + 1))
timerNaga:Start(nil, tostring(self.vb.nagaCount + 1))
self:Schedule(47.5, NagaSpawn, self)
timerElementalCD:Start(nil, tostring(self.vb.elementalCount))
warnElemental:Schedule(45, tostring(self.vb.elementalCount))
timerStrider:Start(nil, tostring(self.vb.striderCount))
warnStrider:Schedule(57, tostring(self.vb.striderCount))
warnStrider:Schedule(57, tostring(self.vb.striderCount + 1))
timerStrider:Start(nil, tostring(self.vb.striderCount + 1))
self:Schedule(63, StriderSpawn, self)
warnElemental:Schedule(45, tostring(self.vb.elementalCount + 1))
timerElementalCD:Start(nil, tostring(self.vb.elementalCount + 1))
-- if DBM:IsInGroup() and self.Options.AutoChangeLootToFFA and DBM:GetRaidRank() == 2 then
-- SetLootMethod("freeforall")
-- end
Expand All @@ -208,16 +213,18 @@ function mod:CHAT_MSG_MONSTER_YELL(msg)
elseif msg == L.DBM_VASHJ_YELL_PHASE3 or msg:find(L.DBM_VASHJ_YELL_PHASE3) then
self:SetStage(3)
warnPhase3:Show()
timerNaga:Cancel()
warnNaga:Cancel()
timerElementalCD:Cancel()
warnElemental:Cancel()
timerStrider:Cancel()
warnStrider:Cancel()
timerNaga:Cancel()
self:Unschedule(NagaSpawn)
warnStrider:Cancel()
timerStrider:Cancel()
self:Unschedule(StriderSpawn)
warnElemental:Cancel()
timerElementalCD:Cancel()
self:UnregisterShortTermEvents()
timerEntangleCD:Start(30) -- Appears to be static 30s upon entering P3 (As of 15.01.2025 on Onyxia PTR)
timerChargeCD:Start()
timerShockBlastCD:Start()
-- if DBM:IsInGroup() and self.Options.AutoChangeLootToFFA and DBM:GetRaidRank() == 2 then
-- if masterlooterRaidID then
-- SetLootMethod(lootmethod, "raid"..masterlooterRaidID)
Expand Down
Loading