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.
285 lines
10 KiB
285 lines
10 KiB
|
4 years ago
|
local mod = DBM:NewMod(2461, "DBM-Sepulcher", nil, 1195)
|
||
|
|
local L = mod:GetLocalizedStrings()
|
||
|
|
|
||
|
|
mod:SetRevision("20220114041418")
|
||
|
|
mod:SetCreatureID(184901)
|
||
|
|
mod:SetEncounterID(2539)
|
||
|
|
mod:SetUsedIcons(1, 2)
|
||
|
|
mod:SetHotfixNoticeRev(20220113000000)
|
||
|
|
mod:SetMinSyncRevision(20220113000000)
|
||
|
|
--mod.respawnTime = 29
|
||
|
|
|
||
|
|
mod:RegisterCombat("combat")
|
||
|
|
|
||
|
|
mod:RegisterEventsInCombat(
|
||
|
|
"SPELL_CAST_START 362601 363130 364652 363088 365257 366001",
|
||
|
|
"SPELL_CAST_SUCCESS 363795 363676",
|
||
|
|
"SPELL_AURA_APPLIED 362622 366012 363537 363795 363676 364092 364312 363130 361200",
|
||
|
|
-- "SPELL_AURA_APPLIED_DOSE",
|
||
|
|
"SPELL_AURA_REMOVED 363537 363795 363676 364312 363130 361200",--362622 366012 (mote Ids maybe?)
|
||
|
|
-- "SPELL_PERIODIC_DAMAGE",
|
||
|
|
-- "SPELL_PERIODIC_MISSED",
|
||
|
|
"RAID_BOSS_WHISPER"
|
||
|
|
-- "UNIT_DIED",
|
||
|
|
-- "UNIT_SPELLCAST_SUCCEEDED boss1"
|
||
|
|
)
|
||
|
|
|
||
|
|
--TODO, wait for blizzard to add mote debuffs into combat log, redundant RBW will cover it for now
|
||
|
|
--TODO, Any add timers? they almost seemed inconsiquential (at least timer wise)
|
||
|
|
--TODO, announce when cast begins for Reorginate, or when it ends and who it's on?
|
||
|
|
--[[
|
||
|
|
(ability.id = 362601 or ability.id = 363130 or ability.id = 364652 or ability.id = 363088) and type = "begincast"
|
||
|
|
or (ability.id = 363795 or ability.id = 363676) and type = "cast"
|
||
|
|
or ability.id = 361200 or ability.id = 363130
|
||
|
|
or ability.id = 365257 and type = "begincast"
|
||
|
|
--]]
|
||
|
|
--Boss
|
||
|
|
local warnUnstableMote = mod:NewTargetAnnounce(362622, 2)
|
||
|
|
local warnSynthesize = mod:NewSpellAnnounce(363130, 3)
|
||
|
|
--Adds
|
||
|
|
local warnDegenerate = mod:NewTargetNoFilterAnnounce(364092, 4, nil, false)--Kinda spammy, but healer might want to opt into it
|
||
|
|
local warnFormSentry = mod:NewSpellAnnounce(365257, 2)
|
||
|
|
|
||
|
|
--Boss
|
||
|
|
local specWarnCosmicShift = mod:NewSpecialWarningSpell(363088, nil, nil, nil, 2, 2)
|
||
|
|
local specWarnUnstableMote = mod:NewSpecialWarningYou(362622, nil, nil, nil, 1, 2)
|
||
|
|
local specWarnProtoformCascade = mod:NewSpecialWarningDodge(364652, nil, nil, nil, 1, 2)
|
||
|
|
local specWarnDeconstructingEnergy = mod:NewSpecialWarningYou(363795, nil, nil, nil, 1, 2)
|
||
|
|
local specWarnDeconstructingEnergyTaunt = mod:NewSpecialWarningTaunt(363795, nil, nil, nil, 1, 2)
|
||
|
|
local yellDeconstructingEnergy = mod:NewYell(363795)
|
||
|
|
local yellDeconstructingEnergyFades = mod:NewShortFadesYell(363795)
|
||
|
|
--Adds
|
||
|
|
----Degeneration Automa
|
||
|
|
local specWarnDegenerate = mod:NewSpecialWarningYou(364092, nil, nil, nil, 1, 2)
|
||
|
|
--local specWarnDespair = mod:NewSpecialWarningInterrupt(357144, "HasInterrupt", nil, nil, 1, 2)
|
||
|
|
--local specWarnGTFO = mod:NewSpecialWarningGTFO(340324, nil, nil, nil, 1, 8)
|
||
|
|
|
||
|
|
--Boss
|
||
|
|
--mod:AddTimerLine(BOSS)
|
||
|
|
local timerUnstableMoteCD = mod:NewCDTimer(20.6, 362601, nil, nil, nil, 3)
|
||
|
|
local timerUnstableMote = mod:NewBuffFadesTimer(5.9, 362601, nil, nil, nil, 5)--1.9+4
|
||
|
|
local timerProtoformRadiance = mod:NewBuffActiveTimer(28.8, 363537, nil, nil, nil, 2)
|
||
|
|
local timerProtoformCascadeCD = mod:NewCDTimer(10.9, 364652, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
|
||
|
|
local timerCosmicShiftCD = mod:NewCDTimer(20.3, 363088, nil, nil, nil, 3)
|
||
|
|
local timerDeconstructingEnergyCD = mod:NewCDTimer(37.2, 363795, nil, nil, nil, 3)
|
||
|
|
local timerSynthesizeCD = mod:NewCDTimer(101, 363130, nil, nil, nil, 6)
|
||
|
|
local timerSynthesize = mod:NewBuffActiveTimer(20, 363130, nil, nil, nil, 6, nil, DBM_COMMON_L.DAMAGE_ICON)
|
||
|
|
local timerRecharge = mod:NewBuffActiveTimer(20, 361200, nil, nil, nil, 6)
|
||
|
|
--Adds
|
||
|
|
|
||
|
|
--local berserkTimer = mod:NewBerserkTimer(600)
|
||
|
|
|
||
|
|
--mod:AddRangeFrameOption("8")
|
||
|
|
--mod:AddInfoFrameOption(328897, true)
|
||
|
|
mod:AddSetIconOption("SetIconOnDeconstructingEnergy", 363795, true, false, {1, 2})
|
||
|
|
mod:AddNamePlateOption("NPAuraOnEphemeralBarrier", 364312, true)
|
||
|
|
|
||
|
|
mod.vb.energyIcon = 1
|
||
|
|
|
||
|
|
function mod:OnCombatStart(delay)
|
||
|
|
self.vb.energyIcon = 1
|
||
|
|
timerProtoformCascadeCD:Start(5.1-delay)--5-6
|
||
|
|
timerUnstableMoteCD:Start(12-delay)
|
||
|
|
timerDeconstructingEnergyCD:Start(20.5-delay)
|
||
|
|
timerCosmicShiftCD:Start(27.8-delay)
|
||
|
|
timerSynthesizeCD:Start(self:IsMythic() and 31 or 100-delay)
|
||
|
|
-- if self.Options.InfoFrame then
|
||
|
|
-- DBM.InfoFrame:SetHeader(DBM:GetSpellInfo(328897))
|
||
|
|
-- DBM.InfoFrame:Show(10, "table", ExsanguinatedStacks, 1)
|
||
|
|
-- end
|
||
|
|
if self.Options.NPAuraOnEphemeralBarrier then
|
||
|
|
DBM:FireEvent("BossMod_EnableHostileNameplates")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:OnCombatEnd()
|
||
|
|
-- if self.Options.InfoFrame then
|
||
|
|
-- DBM.InfoFrame:Hide()
|
||
|
|
-- end
|
||
|
|
if self.Options.NPAuraOnEphemeralBarrier then
|
||
|
|
DBM.Nameplate:Hide(true, nil, nil, nil, true, true)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
--[[
|
||
|
|
function mod:OnTimerRecovery()
|
||
|
|
|
||
|
|
end
|
||
|
|
--]]
|
||
|
|
|
||
|
|
function mod:SPELL_CAST_START(args)
|
||
|
|
local spellId = args.spellId
|
||
|
|
if spellId == 362601 then
|
||
|
|
timerUnstableMoteCD:Start(self:IsMythic() and 32.7 or 29.1)
|
||
|
|
timerUnstableMote:Start()
|
||
|
|
elseif spellId == 363130 then
|
||
|
|
warnSynthesize:Show()
|
||
|
|
--stop some boss timers here
|
||
|
|
timerUnstableMoteCD:Stop()
|
||
|
|
timerProtoformCascadeCD:Stop()
|
||
|
|
timerDeconstructingEnergyCD:Stop()
|
||
|
|
timerCosmicShiftCD:Stop()
|
||
|
|
elseif spellId == 364652 then
|
||
|
|
if self:IsTanking("player", "boss1", nil, true) then
|
||
|
|
specWarnProtoformCascade:Show()
|
||
|
|
specWarnProtoformCascade:Play("defensive")
|
||
|
|
end
|
||
|
|
timerProtoformCascadeCD:Start(10.9)
|
||
|
|
elseif spellId == 363088 then
|
||
|
|
specWarnCosmicShift:Show()
|
||
|
|
specWarnCosmicShift:Play("carefly")
|
||
|
|
timerCosmicShiftCD:Start(self:IsMythic() and 32.7 or 29.1)
|
||
|
|
elseif spellId == 365257 and self:AntiSpam(5, 1) then
|
||
|
|
warnFormSentry:Show()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
||
|
|
local spellId = args.spellId
|
||
|
|
if spellId == 363795 or spellId == 363676 then
|
||
|
|
self.vb.energyIcon = 1
|
||
|
|
timerDeconstructingEnergyCD:Start(self:IsMythic() and 42.5 or 37.2)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:SPELL_AURA_APPLIED(args)
|
||
|
|
local spellId = args.spellId
|
||
|
|
if (spellId == 362622 or spellId == 366012) and self:AntiSpam(4, args.destName.."1") then
|
||
|
|
if args:IsPlayer() and self:AntiSpam(3, 2) then
|
||
|
|
specWarnUnstableMote:Show()
|
||
|
|
specWarnUnstableMote:Play("targetyou")
|
||
|
|
end
|
||
|
|
warnUnstableMote:CombinedShow(0.3, args.destName)
|
||
|
|
elseif spellId == 363537 then
|
||
|
|
timerProtoformRadiance:Start()
|
||
|
|
elseif spellId == 363795 or spellId == 363676 then--363676 goes on tank, 363795 goes on dps
|
||
|
|
local icon = self.vb.energyIcon
|
||
|
|
if self.Options.SetIconOnDeconstructingEnergy then
|
||
|
|
self:SetIcon(args.destName, icon)
|
||
|
|
end
|
||
|
|
if args:IsPlayer() then
|
||
|
|
specWarnDeconstructingEnergy:Show()
|
||
|
|
specWarnDeconstructingEnergy:Play("runout")
|
||
|
|
yellDeconstructingEnergy:Yell(icon, icon)
|
||
|
|
yellDeconstructingEnergyFades:Countdown(spellId, nil, icon)
|
||
|
|
else
|
||
|
|
local uId = DBM:GetRaidUnitId(args.destName)
|
||
|
|
if self:IsTanking(uId) then
|
||
|
|
specWarnDeconstructingEnergyTaunt:Show(args.destName)
|
||
|
|
specWarnDeconstructingEnergyTaunt:Play("tauntboss")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
self.vb.energyIcon = self.vb.energyIcon + 1
|
||
|
|
elseif spellId == 364092 and self:AntiSpam(3, args.destName) then
|
||
|
|
warnDegenerate:CombinedShow(1, args.destName)
|
||
|
|
if args:IsPlayer() then
|
||
|
|
specWarnDegenerate:Show()
|
||
|
|
specWarnDegenerate:Play("defensive")
|
||
|
|
end
|
||
|
|
elseif spellId == 364312 and args:IsDestTypeHostile() then
|
||
|
|
if self.Options.NPAuraOnEphemeralBarrier then
|
||
|
|
DBM.Nameplate:Show(true, args.destGUID, spellId)
|
||
|
|
end
|
||
|
|
elseif spellId == 363130 then
|
||
|
|
timerSynthesize:Start(self:IsMythic() and 15 or 20)
|
||
|
|
elseif spellId == 361200 then
|
||
|
|
-- if self:IsMythic() then
|
||
|
|
timerRecharge:Start(30)
|
||
|
|
-- timerDeconstructingEnergyCD:Start(30.5)--NOT started here on mythic
|
||
|
|
-- timerUnstableMoteCD:Start(30.5)
|
||
|
|
-- else
|
||
|
|
-- timerRecharge:Start(20)
|
||
|
|
-- timerDeconstructingEnergyCD:Start(20.5)--Started here because it's used .5 seconds after recharge ends
|
||
|
|
-- timerUnstableMoteCD:Start(20.5)
|
||
|
|
-- end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:SPELL_AURA_REMOVED(args)
|
||
|
|
local spellId = args.spellId
|
||
|
|
if spellId == 363537 then
|
||
|
|
timerProtoformRadiance:Stop()
|
||
|
|
--Probably resume/start timers
|
||
|
|
-- timerDeconstructingBlastCD:Start(2)
|
||
|
|
-- timerUnstableMoteCD:Start(2)
|
||
|
|
-- timerProtoformCascadeCD:Start(2)
|
||
|
|
elseif spellId == 363795 or spellId == 363676 then
|
||
|
|
if self.Options.SetIconOnDeconstructingEnergy then
|
||
|
|
self:SetIcon(args.destName, 0)
|
||
|
|
end
|
||
|
|
if args:IsPlayer() then
|
||
|
|
yellDeconstructingEnergyFades:Cancel()
|
||
|
|
end
|
||
|
|
elseif spellId == 364312 and args:IsDestTypeHostile() then
|
||
|
|
if self.Options.NPAuraOnEphemeralBarrier then
|
||
|
|
DBM.Nameplate:Hide(true, args.destGUID, spellId)
|
||
|
|
end
|
||
|
|
elseif spellId == 363130 then
|
||
|
|
timerSynthesize:Stop()
|
||
|
|
elseif spellId == 361200 then
|
||
|
|
timerRecharge:Stop()
|
||
|
|
--Restart boss timers
|
||
|
|
-- if self:IsMythic() then
|
||
|
|
timerProtoformCascadeCD:Start(6.1)
|
||
|
|
timerUnstableMoteCD:Start(12.5)
|
||
|
|
timerDeconstructingEnergyCD:Start(22.2)
|
||
|
|
timerCosmicShiftCD:Start(28.3)
|
||
|
|
timerSynthesizeCD:Start(101.2)
|
||
|
|
-- else
|
||
|
|
-- timerDeconstructingEnergyCD:Start(1)--Started elsewhere since it's used instantly here
|
||
|
|
-- timerUnstableMoteCD:Start(2)--Same reason as above
|
||
|
|
-- timerCosmicShiftCD:Start(6.7)
|
||
|
|
-- timerProtoformCascadeCD:Start(15.2)
|
||
|
|
-- timerSynthesizeCD:Start(65)
|
||
|
|
-- end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:RAID_BOSS_WHISPER(msg)
|
||
|
|
if msg:find("362622") and self:AntiSpam(3, 2) then
|
||
|
|
specWarnUnstableMote:Show()
|
||
|
|
specWarnUnstableMote:Play("targetyou")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:OnTranscriptorSync(msg, targetName)
|
||
|
|
if msg:find("362622") and targetName then
|
||
|
|
if self:IsMythic() then return end--Everyone gets on mythic
|
||
|
|
targetName = Ambiguate(targetName, "none")
|
||
|
|
if self:AntiSpam(4, targetName.."1") then
|
||
|
|
warnUnstableMote:CombinedShow(0.5, targetName)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
--[[
|
||
|
|
function mod:UNIT_DIED(args)
|
||
|
|
local cid = self:GetCIDFromGUID(args.destGUID)
|
||
|
|
if cid == 184735 or cid == 182053 or cid == 182197 then--degeneration-automa
|
||
|
|
|
||
|
|
elseif cid == 184737 or cid == 182074 then--acquisitions-automa
|
||
|
|
|
||
|
|
elseif cid == 182071 or cid == 184738 or cid == 182285 then--guardian-automa
|
||
|
|
|
||
|
|
elseif cid == 184126 or cid == 184135 then--defense-matrix-automa
|
||
|
|
|
||
|
|
end
|
||
|
|
end
|
||
|
|
-]]
|
||
|
|
|
||
|
|
--[[
|
||
|
|
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName)
|
||
|
|
if spellId == 340324 and destGUID == UnitGUID("player") and not playerDebuff and self:AntiSpam(2, 4) then
|
||
|
|
specWarnGTFO:Show(spellName)
|
||
|
|
specWarnGTFO:Play("watchfeet")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
|
||
|
|
|
||
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
|
||
|
|
if spellId == 353193 then
|
||
|
|
|
||
|
|
end
|
||
|
|
end
|
||
|
|
--]]
|