You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
181 lines
9.0 KiB
181 lines
9.0 KiB
local mod = DBM:NewMod(2593, "DBM-Party-WarWithin", 5, 1270)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20240825075851")
|
|
mod:SetCreatureID(213937)
|
|
mod:SetEncounterID(2839)
|
|
mod:SetHotfixNoticeRev(20240706000000)
|
|
mod:SetMinSyncRevision(20240706000000)
|
|
--mod.respawnTime = 29
|
|
mod.sendMainBossGUID = true
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_CAST_START 434407 448213 448888 434089",
|
|
"SPELL_AURA_APPLIED 449042",
|
|
"SPELL_INTERRUPT",
|
|
"SPELL_DAMAGE 434726"
|
|
-- "SPELL_PERIODIC_DAMAGE",
|
|
-- "SPELL_PERIODIC_MISSED"
|
|
)
|
|
|
|
--https://www.warcraftlogs.com/reports/a1Dz7jN4xKWLbHvC#fight=last&pins=2%24Off%24%23244F4B%24expression%24(ability.id%20%3D%20434407%20or%20ability.id%20%3D%20448213%20or%20ability.id%20%3D%20448888%20or%20ability.id%20%3D%20439784%20or%20ability.id%20%3D%20434089)%20and%20type%20%3D%20%22begincast%22%0A%20or%20ability.id%20%3D%20438875%20and%20type%20%3D%20%22cast%22%0A%20or%20ability.id%20%3D%20449734%20and%20(type%20%3D%20%22begincast%22%20or%20type%20%3D%20%22removebuff%22)%20or%20stoppedAbility.id%20%3D%20449734%0A%20or%20ability.id%20%3D%20434726%20and%20type%20%3D%20%22damage%22%0A%20or%20type%20%3D%20%22dungeonencounterstart%22%20or%20type%20%3D%20%22dungeonencounterend%22&view=events
|
|
--NOTE, some spellIds might be mixed up with raid version (and viceversa). Both are included for safety.
|
|
--NOTE, throw bomb is inaccurate for tracking actual bombs hitting boss. Have at least one log where one bomb missed, so spell damage event is more accurate
|
|
--[[
|
|
(ability.id = 434407 or ability.id = 448213 or ability.id = 448888 or ability.id = 439784 or ability.id = 434089) and type = "begincast"
|
|
or ability.id = 449734 and (type = "begincast" or type = "removebuff") or stoppedAbility.id = 449734
|
|
or type = "dungeonencounterstart" or type = "dungeonencounterend"
|
|
or ability.id = 438875 and type = "cast"
|
|
or ability.id = 434726 and type = "damage"
|
|
--]]
|
|
local warnBlazing = mod:NewCountAnnounce(434726, 1)
|
|
local warnRollingAcid = mod:NewIncomingCountAnnounce(434407, 2)--General announce, private aura sound will be personal emphasis
|
|
local warnRadiantLight = mod:NewYouAnnounce(449042, 1)
|
|
local warnSpinneretsStrands = mod:NewIncomingCountAnnounce(434089, 3)--General announce, private aura sound will be personal emphasis
|
|
|
|
local specWarnExpelWebs = mod:NewSpecialWarningDodgeCount(448213, nil, nil, nil, 1, 2, 4)
|
|
local specWarnErosiveSpray = mod:NewSpecialWarningCount(448888, nil, nil, nil, 2, 2)
|
|
--local specWarnGTFO = mod:NewSpecialWarningGTFO(372820, nil, nil, nil, 1, 8)
|
|
|
|
--most timers actual value not known, due to fact that they are ICD impacted. Lowest seen on mythic is 15.2, lowest seen on non mythic is 20
|
|
local timerRollingAcidCD = mod:NewCDCountTimer(15.2, 434407, nil, nil, nil, 3)
|
|
local timerExpelWebsCD = mod:NewCDCountTimer(15.2, 448213, nil, nil, nil, 3, nil, DBM_COMMON_L.MYTHIC_ICON)
|
|
local timerErosiveSprayCD = mod:NewCDCountTimer(15.2, 448888, nil, nil, nil, 2, nil, DBM_COMMON_L.HEALER_ICON)
|
|
local timerAcidicEruptionCD = mod:NewNextTimer(60, 449734, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)
|
|
local timerSpinneretsStrandsCD = mod:NewCDCountTimer(15.2, 434089, nil, nil, nil, 3)--16 lowest seen, takes a REALLY long p2 pull for it to avoid ICD queuing to 22
|
|
|
|
mod:AddPrivateAuraSoundOption(434406, true, 434407, 1)--Rolling Acid target
|
|
mod:AddPrivateAuraSoundOption(439783, true, 434089, 1)--Spineret's Strands target
|
|
|
|
mod.vb.bombCount = 0
|
|
mod.vb.rollingCount = 0
|
|
mod.vb.expelCount = 0
|
|
mod.vb.sprayCount = 0
|
|
mod.vb.strandsCount = 0
|
|
|
|
--Explosive spray triggers 6.66 ICD in stage 1 and 7.4 ICD in stage 2
|
|
--Rolling Acid triggers 6 second ICD in stage 1 and 6.66 ICD stage 2
|
|
--Expel Webs triggers 4 second ICD??
|
|
--Spinneret's Strands triggers 5.9 second ICD now (formerly 5.3)
|
|
--Results in most timers followinga 18-20 second cadaence in stage 1 and 22-24 second cadence in stage 2
|
|
local function updateAllTimers(self, ICD)
|
|
DBM:Debug("updateAllTimers running", 3)
|
|
if timerRollingAcidCD:GetRemaining(self.vb.rollingCount+1) < ICD then
|
|
local elapsed, total = timerRollingAcidCD:GetTime(self.vb.rollingCount+1)
|
|
local extend = ICD - (total-elapsed)
|
|
DBM:Debug("timerRollingAcidCD extended by: "..extend, 2)
|
|
timerRollingAcidCD:Update(elapsed, total+extend, self.vb.rollingCount+1)
|
|
end
|
|
if timerExpelWebsCD:GetRemaining(self.vb.expelCount+1) < ICD then
|
|
local elapsed, total = timerExpelWebsCD:GetTime(self.vb.expelCount+1)
|
|
local extend = ICD - (total-elapsed)
|
|
DBM:Debug("timerExpelWebsCD extended by: "..extend, 2)
|
|
timerExpelWebsCD:Update(elapsed, total+extend, self.vb.expelCount+1)
|
|
end
|
|
if timerErosiveSprayCD:GetRemaining(self.vb.sprayCount+1) < ICD then
|
|
local elapsed, total = timerErosiveSprayCD:GetTime(self.vb.sprayCount+1)
|
|
local extend = ICD - (total-elapsed)
|
|
DBM:Debug("timerErosiveSprayCD extended by: "..extend, 2)
|
|
timerErosiveSprayCD:Update(elapsed, total+extend, self.vb.sprayCount+1)
|
|
end
|
|
if self:GetStage(2) and timerSpinneretsStrandsCD:GetRemaining(self.vb.strandsCount+1) < ICD then
|
|
local elapsed, total = timerSpinneretsStrandsCD:GetTime(self.vb.strandsCount+1)
|
|
local extend = ICD - (total-elapsed)
|
|
DBM:Debug("timerSpinneretsStrandsCD extended by: "..extend, 2)
|
|
timerSpinneretsStrandsCD:Update(elapsed, total+extend, self.vb.strandsCount+1)
|
|
end
|
|
end
|
|
|
|
function mod:OnCombatStart(delay)
|
|
self:SetStage(1)
|
|
self.vb.bombCount = 0
|
|
self.vb.rollingCount = 0
|
|
self.vb.expelCount = 0
|
|
self.vb.sprayCount = 0
|
|
self.vb.strandsCount = 0
|
|
if self:IsMythic() then
|
|
timerExpelWebsCD:Start(6.6-delay, 1)
|
|
end
|
|
timerRollingAcidCD:Start(9.3-delay, 1)
|
|
timerErosiveSprayCD:Start(20-delay, 1)
|
|
self:EnablePrivateAuraSound(434406, "targetyou", 2)--Likely dungeon version of Rolling Acid
|
|
self:EnablePrivateAuraSound(439790, "targetyou", 2, 434406)--Likely the raid version of Rolling Acid
|
|
self:EnablePrivateAuraSound(439783, "pullin", 12)--Likely the dungeon version of Spinneret's Strands
|
|
self:EnablePrivateAuraSound(434090, "pullin", 12, 439783)--Likely the raid version of Spinneret's Strands
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
local spellId = args.spellId
|
|
if spellId == 434407 then
|
|
self.vb.rollingCount = self.vb.rollingCount + 1
|
|
warnRollingAcid:Show(self.vb.rollingCount)
|
|
timerRollingAcidCD:Start(self:IsMythic() and 15.2 or (self:GetStage(2) and 25 or 18.6), self.vb.rollingCount+1)
|
|
updateAllTimers(self, self:GetStage(1) and 6 or 6.6)
|
|
elseif spellId == 448213 then
|
|
self.vb.expelCount = self.vb.expelCount + 1
|
|
specWarnExpelWebs:Show(self.vb.expelCount)
|
|
specWarnExpelWebs:Play("watchstep")
|
|
timerExpelWebsCD:Start(self:IsMythic() and 15.2 or (self:GetStage(2) and 25 or 20), self.vb.expelCount+1)
|
|
updateAllTimers(self, 4)
|
|
elseif spellId == 448888 then
|
|
self.vb.sprayCount = self.vb.sprayCount + 1
|
|
specWarnErosiveSpray:Show(self.vb.sprayCount)
|
|
specWarnErosiveSpray:Play("aesoon")
|
|
timerErosiveSprayCD:Start(self:IsMythic() and 15.2 or (self:GetStage(2) and 25 or 20), self.vb.sprayCount+1)--Could be even shorter, hard to say since it's always ICD impacted
|
|
updateAllTimers(self, self:GetStage(1) and 6.6 or 7.4)
|
|
elseif spellId == 434089 then
|
|
self.vb.strandsCount = self.vb.strandsCount + 1
|
|
warnSpinneretsStrands:Show(self.vb.strandsCount)
|
|
timerSpinneretsStrandsCD:Start(self:IsMythic() and 15.2 or (self:GetStage(2) and 25 or 20), self.vb.strandsCount+1)
|
|
updateAllTimers(self, 5.9)
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 449042 and args:IsPlayer() then
|
|
warnRadiantLight:Show()
|
|
end
|
|
end
|
|
--mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
|
|
|
|
function mod:SPELL_INTERRUPT(args)
|
|
if type(args.extraSpellId) == "number" and args.extraSpellId == 449734 then
|
|
self:SetStage(2)
|
|
timerRollingAcidCD:Start(4, self.vb.rollingCount+1)
|
|
timerSpinneretsStrandsCD:Start(12, 1)
|
|
if self:IsMythic() then
|
|
timerExpelWebsCD:Start(17.3, self.vb.expelCount+1)
|
|
timerErosiveSprayCD:Start(21.3, self.vb.sprayCount+1)--Affected by expel webs 4 second ICD
|
|
else
|
|
timerErosiveSprayCD:Start(20, self.vb.sprayCount+1)--Not affected by expel webs ICD
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_DAMAGE(_, _, _, _, _, _, _, _, spellId)
|
|
if spellId == 434726 then
|
|
self.vb.bombCount = self.vb.bombCount + 1
|
|
warnBlazing:Show(self.vb.bombCount)
|
|
if self.vb.bombCount == 5 then--Journal says 6, but 5 is pushing boss in all logs (including mythic)
|
|
self:SetStage(1.5)
|
|
--Maybe cancel timers on a later event if one found, damage events suck
|
|
timerRollingAcidCD:Stop()
|
|
timerErosiveSprayCD:Stop()
|
|
timerExpelWebsCD:Stop()
|
|
timerAcidicEruptionCD:Start(60)--60-63, give or take for boss position for lift off
|
|
end
|
|
end
|
|
end
|
|
|
|
--[[
|
|
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName)
|
|
if spellId == 372820 and destGUID == UnitGUID("player") and self:AntiSpam(3, 2) then
|
|
specWarnGTFO:Show(spellName)
|
|
specWarnGTFO:Play("watchfeet")
|
|
end
|
|
end
|
|
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
|
|
--]]
|
|
|