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.

361 lines
13 KiB

4 years ago
local mod = DBM:NewMod(2467, "DBM-Sepulcher", nil, 1195)
local L = mod:GetLocalizedStrings()
4 years ago
mod:SetRevision("20220207235930")
4 years ago
mod:SetCreatureID(182777)
mod:SetEncounterID(2549)
4 years ago
mod:SetUsedIcons(1, 2, 3)
mod:SetHotfixNoticeRev(20220206000000)
--mod:SetMinSyncRevision(20220206000000)
4 years ago
--mod.respawnTime = 29
mod:RegisterCombat("combat")
mod:RegisterEventsInCombat(
4 years ago
"SPELL_CAST_START 362806 362275 362390 366379 362184 363533 366606 364114 364386",
"SPELL_CAST_SUCCESS 363108 363110",
"SPELL_AURA_APPLIED 361548 362273 362206 362088 362081 362207 363773",
"SPELL_AURA_APPLIED_DOSE 362273 362088 362081",
"SPELL_AURA_REMOVED 361548 362273 362206 362088 362081 362207 363773",
"SPELL_PERIODIC_DAMAGE 362798",
"SPELL_PERIODIC_MISSED 362798",
"UNIT_DIED"
4 years ago
-- "UNIT_SPELLCAST_SUCCEEDED boss1"
)
4 years ago
--TODO, number of dark eclipse targets. if only 1, kill the icon stuff
--TODO, https://ptr.wowhead.com/spell=362172/corrupted-wound is gonna need more evalulation to determine action. prob not taunt at stacks but at dot size?
--TODO, probably upgrade Terminator warning and fix it's triggers
--TODO, how to actuall warn unstable matter if it has fixed timed spawns etc or if unstable matter field should have 20 second "active" timer
--TODO, maybe personal https://ptr.wowhead.com/spell=362384/eternal-radiation stack warning?
--TODO, how to warn https://ptr.wowhead.com/spell=368080/dark-quasar? does it apply multiple stacks on boss then just warn as they deplete?
--TODO, reset/start timers on https://ptr.wowhead.com/spell=363773/the-singularity being applied or removed on boss accurate?
--General
local specWarnGTFO = mod:NewSpecialWarningGTFO(362798, nil, nil, nil, 1, 8)
4 years ago
4 years ago
--local berserkTimer = mod:NewBerserkTimer(600)
--Rygelon
mod:AddTimerLine(DBM:EJ_GetSectionInfo(24245))
local warnDarkEclipse = mod:NewTargetNoFilterAnnounce(361548, 3)
local warnCelestialCollapse = mod:NewCountAnnounce(362275, 3)
local warnQuasarRadiation = mod:NewStackAnnounce(362273, 4)
local warnEventHorizon = mod:NewTargetAnnounce(362206, 3)
local warnManifestCosmos = mod:NewCountAnnounce(362390, 2)
local warnCosmicCore = mod:NewAddsLeftAnnounce(362770, 2)
local warnCosmicIrregularity = mod:NewCountAnnounce(362088, 2)
local warnCelestialTerminator = mod:NewSpellAnnounce(363108, 3)
local warnRadiantPlasma = mod:NewSpellAnnounce(366606, 4)--No one is tanking him fail check
4 years ago
4 years ago
local specWarnDarkEclipse = mod:NewSpecialWarningYou(361548, nil, nil, nil, 1, 2)
local yellDarkEclipse = mod:NewShortPosYell(361548)
local yellDarkEclipseFades = mod:NewIconFadesYell(361548)
local specWarnCelestialCollapse = mod:NewSpecialWarningCount(362275, false, nil, nil, 1, 2)
local specWarnEventHorizon = mod:NewSpecialWarningYou(362206, nil, nil, nil, 1, 2)
local yellEventHorizonFades = mod:NewShortFadesYell(362206)
local specWarnCosmicIrregularity = mod:NewSpecialWarningStack(362088, nil, 4, nil, nil, 1, 6, 4)
local specWarnStellarShroud = mod:NewSpecialWarningCount(366379, nil, nil, nil, 2, 2, 4)
local specWarnCorruptedStrikes = mod:NewSpecialWarningDefensive(362184, nil, nil, nil, 1, 2)
local specWarnMassiveBang = mod:NewSpecialWarningCount(363533, nil, nil, nil, 2, 2)--First warn, begin cast
local specWarnMassiveBangEscape = mod:NewSpecialWarningMoveTo(363533, nil, nil, nil, 3, 2)--Second warn if not in singularity by 4 sec
4 years ago
4 years ago
local timerDarkEclipseCD = mod:NewAITimer(28.8, 361548, nil, nil, nil, 3)
local timerCelestialCollapseCD = mod:NewAITimer(28.8, 362275, nil, nil, nil, 5)
local timerQuasarRadiation = mod:NewBuffActiveTimer(21, 361548, nil, nil, nil, 2, nil, DBM_COMMON_L.DEADLY_ICON)
local timerManifestCosmosCD = mod:NewAITimer(28.8, 362390, nil, nil, nil, 1, nil, DBM_COMMON_L.HEROIC_ICON)
local timerStellarShroudCD = mod:NewAITimer(28.8, 366379, nil, nil, nil, 2, nil, DBM_COMMON_L.HEALER_ICON .. DBM_COMMON_L.MYTHIC_ICON)
local timerCorruptedStrikesCD = mod:NewAITimer(28.8, 362184, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON, nil, 2, 3)
local timerCelestialTerminatorCD = mod:NewAITimer(28.8, 363108, nil, nil, nil, 3)
local timerMassiveBangCD = mod:NewAITimer(28.8, 363533, nil, nil, nil, 2, nil, DBM_COMMON_L.DEADLY_ICON)
local timerMassiveBang = mod:NewCastTimer(10, 363533, nil, nil, nil, 5, nil, DBM_COMMON_L.DEADLY_ICON)
4 years ago
4 years ago
mod:AddRangeFrameOption(5, 362206)
mod:AddInfoFrameOption(362081, true)--Tracks just ejection on heroic but on mythic it tracks Irregularity
mod:AddSetIconOption("SetIconOnDarkEclipse", 361548, true, false, {1, 2, 3})
4 years ago
--mod:AddNamePlateOption("NPAuraOnBurdenofDestiny", 353432, true)
4 years ago
--The Singularity
local singularityName = DBM:GetSpellInfo(362207)
mod:AddTimerLine(singularityName)
local warnSingularity = mod:NewYouAnnounce(362207, 1)
local warnGravitationalCollapse = mod:NewCastAnnounce(364386, 4)
local specWarnShatterSphere = mod:NewSpecialWarningSpell(364114, nil, nil, nil, 2, 2)
local specWarnGravitationalCollapse = mod:NewSpecialWarningSoak(364386, "Tank", nil, nil, 3, 2)
local timerShatterSphereCD = mod:NewAITimer(28.8, 364114, nil, nil, nil, 6)
local cosmicStacks = {}
local playerInSingularity = false
mod.vb.debuffIcon = 1
mod.vb.collapseCount = 0
mod.vb.coreCastCount = 0
mod.vb.coreCount = 0
mod.vb.chaddCount = 0
mod.vb.bangCount = 0
local function bangDelay(self)
if not playerInSingularity then--TODO, maybe also check for Event Horizon if it doesn't also apply "The Singularity"
specWarnMassiveBangEscape:Show(singularityName)
specWarnMassiveBangEscape:Play("findshelter")
end
end
4 years ago
function mod:OnCombatStart(delay)
4 years ago
table.wipe(cosmicStacks)
playerInSingularity = false
self.vb.debuffIcon = 1
self.vb.collapseCount = 0
self.vb.coreCastCount = 0
self.vb.coreCount = 0
self.vb.chaddCount = 0
self.vb.bangCount = 0
timerDarkEclipseCD:Start(1)
timerCelestialCollapseCD:Start(1)
timerCorruptedStrikesCD:Start(1)
timerCelestialTerminatorCD:Start(1)
timerMassiveBangCD:Start(1)
if self:IsHard() then
timerManifestCosmosCD:Start(1)
if self:IsMythic() then
timerStellarShroudCD:Start(1)
if self.Options.InfoFrame then
--On mythic it's slightly more elaborate and involves coordinating a bunch of people around the new mechanic
DBM.InfoFrame:SetHeader(DBM:GetSpellInfo(362088))
DBM.InfoFrame:Show(20, "table", cosmicStacks, 1)
end
else
if self.Options.InfoFrame then
--On heroic it's fairly straight forward swaps tracking only some people
DBM.InfoFrame:SetHeader(DBM:GetSpellInfo(362081))
DBM.InfoFrame:Show(5, "table", cosmicStacks, 1)
end
end
end
4 years ago
-- if self.Options.NPAuraOnBurdenofDestiny then
-- DBM:FireEvent("BossMod_EnableHostileNameplates")
-- end
end
function mod:OnCombatEnd()
4 years ago
if self.Options.RangeFrame then
DBM.RangeCheck:Hide()
end
if self.Options.InfoFrame then
DBM.InfoFrame:Hide()
end
4 years ago
-- if self.Options.NPAuraOnBurdenofDestiny then
-- DBM.Nameplate:Hide(true, nil, nil, nil, true, true)
-- end
end
function mod:OnTimerRecovery()
4 years ago
if DBM:UnitAura("player", 362207) then
playerInSingularity = true
end
4 years ago
end
function mod:SPELL_CAST_START(args)
local spellId = args.spellId
4 years ago
if spellId == 362806 then
self.vb.debuffIcon = 1
timerDarkEclipseCD:Start()
elseif spellId == 362275 then
self.vb.collapseCount = self.vb.collapseCount + 1
if self.Options.SpecWarn362275count then
specWarnCelestialCollapse:Show(self.vb.collapseCount)
specWarnCelestialCollapse:Play("specialsoon")--TEMP sound, I need to see what these look like to articulate a better sound replacement
else
warnCelestialCollapse:Show(self.vb.collapseCount)
end
timerCelestialCollapseCD:Start()
elseif spellId == 362390 then
self.vb.coreCastCount = self.vb.coreCastCount + 1
self.vb.coreCount = self.vb.coreCount + self:IsMythic() and 3 or 1
warnManifestCosmos:Show(self.vb.coreCastCount)
timerManifestCosmosCD:Start()
elseif spellId == 366379 then
self.vb.chaddCount = self.vb.chaddCount + 1
specWarnStellarShroud:Show(self.vb.chaddCount)
specWarnStellarShroud:Play("aesoon")
timerStellarShroudCD:Start()
elseif spellId == 362184 then
if self:IsTanking("player", "boss1", nil, true) then
specWarnCorruptedStrikes:Show()
specWarnCorruptedStrikes:Play("defensive")
end
elseif spellId == 363533 then
self.vb.bangCount = self.vb.bangCount + 1
specWarnMassiveBang:Show(self.vb.bangCount)
specWarnMassiveBang:Play("specialsoon")
timerMassiveBangCD:Start()
timerMassiveBang:Start()
self:Schedule(5.5, bangDelay, self)
elseif spellId == 366606 and self:AntiSpam(3, 2) then
warnRadiantPlasma:Show()
elseif spellId == 364114 then
specWarnShatterSphere:Show()
specWarnShatterSphere:Play("phasechange")--No idea what voice to use
elseif spellId == 364386 then
if self.Options.SpecWarn364386soak and playerInSingularity then
specWarnGravitationalCollapse:Show()
specWarnGravitationalCollapse:Play("helpsoak")
else
warnGravitationalCollapse:Show()
end
4 years ago
end
end
function mod:SPELL_CAST_SUCCESS(args)
local spellId = args.spellId
4 years ago
if (spellId == 363108 or spellId == 363110) and self:AntiSpam(3, 1) then
warnCelestialTerminator:Show()
timerCelestialTerminatorCD:Start()
4 years ago
end
end
function mod:SPELL_AURA_APPLIED(args)
local spellId = args.spellId
4 years ago
if spellId == 361548 then
local icon = self.vb.debuffIcon
if self.Options.SetIconOnDarkEclipse then
self:SetIcon(args.destName, icon)
end
if args:IsPlayer() then
specWarnDarkEclipse:Show()
specWarnDarkEclipse:Play("runout")
yellDarkEclipse:Yell(icon, icon)
yellDarkEclipseFades:Countdown(spellId, nil, icon)
end
warnDarkEclipse:CombinedShow(0.5, args.destName)
self.vb.debuffIcon = self.vb.debuffIcon + 1
elseif spellId == 362273 then
warnQuasarRadiation:Show(args.destName, args.amount or 1)
timerQuasarRadiation:Stop()
timerQuasarRadiation:Start()
elseif spellId == 362206 then
if args:IsPlayer() then
specWarnEventHorizon:Show()
specWarnEventHorizon:Play("range5")
yellEventHorizonFades:Countdown(spellId)
if self.Options.RangeFrame then
DBM.RangeCheck:Show(5)
4 years ago
end
else
4 years ago
warnEventHorizon:CombinedShow(1, args.destName)
end
elseif spellId == 362088 then
local amount = args.amount or 1
cosmicStacks[args.destName] = amount
if self.Options.InfoFrame then
DBM.InfoFrame:UpdateTable(cosmicStacks)
end
if args:IsPlayer() then
if amount >= 4 then
specWarnCosmicIrregularity:Show(amount)
specWarnCosmicIrregularity:Play("stackhigh")
else
warnCosmicIrregularity:Show(amount)
end
end
elseif spellId == 362081 then
local amount = args.amount or 1
if not self:IsMythic() then
cosmicStacks[args.destName] = amount
if self.Options.InfoFrame then
DBM.InfoFrame:UpdateTable(cosmicStacks)
end
end
elseif spellId == 362207 then
if args:IsPlayer() then
playerInSingularity = true
end
elseif spellId == 363773 then--Boss Entering Singularity
DBM:Debug("Boss Entered Singularity")
timerDarkEclipseCD:Stop()
timerCelestialCollapseCD:Stop()
timerCorruptedStrikesCD:Stop()
timerCelestialTerminatorCD:Stop()
timerMassiveBangCD:Stop()
timerManifestCosmosCD:Stop()
timerStellarShroudCD:Stop()
timerCorruptedStrikesCD:Start(2)
timerShatterSphereCD:Start(2)
4 years ago
end
end
4 years ago
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
4 years ago
function mod:SPELL_AURA_REMOVED(args)
local spellId = args.spellId
4 years ago
if spellId == 361548 then
if self.Options.SetIconOnDarkEclipse then
self:SetIcon(args.destName, 0)
end
if args:IsPlayer() then
yellDarkEclipseFades:Cancel()
end
elseif spellId == 362273 then
timerQuasarRadiation:Stop()
elseif spellId == 362206 then
if args:IsPlayer() then
yellEventHorizonFades:Cancel()
if self.Options.RangeFrame then
DBM.RangeCheck:Hide()
end
end
elseif spellId == 362088 then
cosmicStacks[args.destName] = nil
if self.Options.InfoFrame then
DBM.InfoFrame:UpdateTable(cosmicStacks)
end
elseif spellId == 362081 and not self:IsMythic() then
cosmicStacks[args.destName] = nil
if self.Options.InfoFrame then
DBM.InfoFrame:UpdateTable(cosmicStacks)
end
elseif spellId == 362207 then
if args:IsPlayer() then
playerInSingularity = false
end
elseif spellId == 363773 then--Boss Leaving Singularity
DBM:Debug("Boss Left Singularity")
timerCorruptedStrikesCD:Stop()
timerShatterSphereCD:Stop()
timerDarkEclipseCD:Start(3)
timerCelestialCollapseCD:Start(3)
timerCorruptedStrikesCD:Start(3)
timerCelestialTerminatorCD:Start(3)
timerMassiveBangCD:Start(3)
if self:IsHard() then
timerManifestCosmosCD:Start(3)
if self:IsMythic() then
timerStellarShroudCD:Start(3)
end
end
4 years ago
end
end
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
4 years ago
if cid == 185884 then--Cosmic Core
self.vb.coreCount = self.vb.coreCount - 1
warnCosmicCore:Show(self.vb.coreCount)
4 years ago
end
end
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName)
4 years ago
if spellId == 362798 and destGUID == UnitGUID("player") and self:AntiSpam(2, 4) then
4 years ago
specWarnGTFO:Show(spellName)
specWarnGTFO:Play("watchfeet")
end
end
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
4 years ago
--[[
4 years ago
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
if spellId == 353193 then
end
end
--]]