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.
628 lines
22 KiB
628 lines
22 KiB
local mod = DBM:NewMod(2470, "DBM-Sepulcher", nil, 1195)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20220820203945")
|
|
mod:SetCreatureID(183501)
|
|
mod:SetEncounterID(2553)
|
|
mod:SetUsedIcons(1, 2, 3, 5, 6, 7, 8)
|
|
mod:SetHotfixNoticeRev(20220308000000)
|
|
mod:SetMinSyncRevision(20220123000000)
|
|
--mod.respawnTime = 29
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_CAST_START 363485 365682 362841 362801 362849 364040",
|
|
"SPELL_CAST_SUCCESS 362885 364040 366752 362721 363258 364465 364030 367711",
|
|
"SPELL_AURA_APPLIED 365577 365681 365701 362615 362614 362803 362882",
|
|
"SPELL_AURA_APPLIED_DOSE 365681",
|
|
"SPELL_AURA_REMOVED 365577 365701 363034 363139 362615 362614 362803",
|
|
"UNIT_DIED",
|
|
"UNIT_SPELLCAST_SUCCEEDED boss1"
|
|
)
|
|
|
|
--TODO, how does Gunship/hyperlight barrage work? Probably https://ptr.wowhead.com/spell=364376/hyperlight-barrage 3 sec periodic trigger
|
|
--[[
|
|
(ability.id = 363485 or ability.id = 362841 or ability.id = 362801 or ability.id = 362849) and type = "begincast"
|
|
or (ability.id = 367711 or ability.id = 362885 or ability.id = 366752 or ability.id = 364040 or ability.id = 362721 or ability.id = 363258 or ability.id = 364465) and type = "cast"
|
|
or (ability.id = 363034 or ability.id = 363139) and type = "removebuff"
|
|
or (ability.id = 365682 or ability.id = 364040) and type = "begincast"
|
|
or ability.id = 364030 and type = "cast"
|
|
--]]
|
|
--Forerunner Relic
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(24215))
|
|
local specWarnForerunnerRings = mod:NewSpecialWarningDodgeCount(363520, nil, nil, nil, 2, 2)
|
|
|
|
local timerForerunnerRingsCD = mod:NewNextCountTimer(30, 363520, nil, nil, nil, 3)
|
|
--Stage One: Cartel Xy
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(24588))
|
|
local warnDimensionalTear = mod:NewTargetNoFilterAnnounce(362615, 3, nil, nil, 67833)
|
|
local warnStasisTrap = mod:NewTargetNoFilterAnnounce(362882, 2)--Failing to dodge it
|
|
|
|
local specWarnDimensionalTear = mod:NewSpecialWarningYouPos(362615, nil, 67833, nil, 1, 2)
|
|
local yellDimensionalTear = mod:NewPosYell(362615, 67833)
|
|
local yellDimensionalTearFades = mod:NewIconFadesYell(362615, 67833)
|
|
local specWarnCartelElite = mod:NewSpecialWarningSwitch(363485, "-Healer", nil, nil, 1, 2, 4)
|
|
local specWarnGlyphofRelocation = mod:NewSpecialWarningMoveAway(362803, nil, nil, nil, 1, 2)
|
|
local yellGlyphofRelocation = mod:NewYell(362803)
|
|
local yellGlyphofRelocationFades = mod:NewShortFadesYell(362803)
|
|
local specWarnGlyphofRelocationTaunt = mod:NewSpecialWarningTaunt(362803, nil, nil, nil, 1, 2)
|
|
local specWarnStasisTrap = mod:NewSpecialWarningDodgeCount(362882, nil, nil, nil, 2, 2)
|
|
local yellStasisTrap = mod:NewYell(362882)--Failing to dodge it
|
|
local specWarnHyperlightSpark = mod:NewSpecialWarningCount(362849, nil, 206794, nil, 2, 2)--Short Text "Nova"
|
|
|
|
local timerDimensionalTearCD = mod:NewNextCountTimer(8, 362615, 67833, nil, nil, 3)
|
|
local timerCartelEliteCD = mod:NewCDTimer(28.8, 363485, nil, nil, nil, 1, nil, DBM_COMMON_L.MYTHIC_ICON)
|
|
local timerGlyphofRelocationCD = mod:NewCDCountTimer(60, 362801, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON)
|
|
local timerGlyphExplostion = mod:NewTargetTimer(5, 362803, nil, nil, nil, 2, nil, DBM_COMMON_L.HEALER_ICON)
|
|
local timerStasisTrapCD = mod:NewCDCountTimer(30, 362882, nil, nil, nil, 3)--28-32. it attemts to average 30 but has ~2 in either direction for some reason
|
|
local timerHyperlightSparknovaCD = mod:NewCDCountTimer(30, 362849, 206794, nil, nil, 2, nil, DBM_COMMON_L.HEALER_ICON)--28-34
|
|
local berserkTimer = mod:NewBerserkTimer(600)
|
|
|
|
mod:AddSetIconOption("SetIconOnWormhole", 362615, true, false, {1, 2})
|
|
mod:AddSetIconOption("SetIconGlyphofRelocation", 362803, false, false, {3})
|
|
--Stage Two: Secrets of the Relic
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(24589))
|
|
local warnDecipherRelic = mod:NewSpellAnnounce(363139, 2)
|
|
local warnDecipherRelicOver = mod:NewEndAnnounce(363139, 2)
|
|
|
|
--Xy Reinforcements
|
|
local warnRiftBlasts = mod:NewSpellAnnounce(362841, 2)
|
|
local warnMassiveBlast = mod:NewStackAnnounce(365681, 2, nil, "Tank|Healer")
|
|
local warnHyperlightAscension = mod:NewCastAnnounce(364040, 3)
|
|
|
|
local specWarnFracturingRiftBlasts = mod:NewSpecialWarningDodge(362841, false, nil, nil, 2, 2, 4)--Mythic only, kinda spammy so off by default
|
|
local specWarnMassiveBlast = mod:NewSpecialWarningDefensive(365681, nil, nil, nil, 1, 2)
|
|
local specWarnMassiveBlastTaunt = mod:NewSpecialWarningTaunt(365681, nil, nil, nil, 1, 2)
|
|
local specWarnDebilitatingRay = mod:NewSpecialWarningInterruptCount(364030, "HasInterrupt", nil, nil, 1, 2)
|
|
|
|
local timerRiftBlastsCD = mod:NewCDTimer(6, 362841, nil, nil, nil, 3, nil, DBM_COMMON_L.MYTHIC_ICON)--Initial ones only on phasing, after that they can get kinda desynced plus very frequent
|
|
local timerMassiveBlastCD = mod:NewCDTimer(11.5, 365681, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)--11.5-12.2
|
|
|
|
mod:AddSetIconOption("SetIconOnHyperlightAdds", 364021, true, true, {4, 5, 6, 7, 8})
|
|
mod:AddNamePlateOption("NPAuraOnDecipherRelic", 363139, true)
|
|
mod:AddNamePlateOption("NPAuraOnOverseersOrders", 365701, true)
|
|
mod:AddNamePlateOption("NPAuraOnAscension", 364040, true)
|
|
|
|
mod:GroupSpells(362801, 362803)--Group relocation with explosion
|
|
mod:GroupSpells(362885, 362885)--Group statis trap cast with stasis trap debuff
|
|
|
|
local castsPerGUID = {}
|
|
mod.vb.tearIcon = 1
|
|
mod.vb.sparkCount = 0
|
|
mod.vb.ringCount = 0
|
|
mod.vb.glyphCount = 0
|
|
mod.vb.trapCount = 0
|
|
local difficultyName = mod:IsMythic() and "mythic" or mod:IsHeroic() and "heroic" or mod:IsNormal() and "normmal" or "lfr"
|
|
--This table may seem excessive, especially in phasess where they are all same (why not just go if phase 2 = then timer == 37)
|
|
--The reason being they aren't ALWAYS the same, case and point glyph in stage 1, rings in stage 4 heroic
|
|
--Want to be able to update timers faster on fly if fight continues to get hotfixes, this gives most rapidly changable knobs
|
|
local allTimers = {
|
|
["lfr"] = {
|
|
[1] = {--Unchanged
|
|
--Rings
|
|
[364465] = 42.8,
|
|
--Glyph of Relocation
|
|
[362801] = 42.8,
|
|
--Stasis Trap
|
|
[362885] = 42.8,
|
|
--Hyperlight Sparknova
|
|
[362849] = 42.8,
|
|
},
|
|
[2] = {--Gets a little slower
|
|
--Rings
|
|
[364465] = 42.8,
|
|
--Glyph of Relocation
|
|
[362801] = 42.8,
|
|
--Stasis Trap
|
|
[362885] = 42.8,
|
|
--Hyperlight Sparknova
|
|
[362849] = 42.8,
|
|
},
|
|
[3] = {--Gets even slower
|
|
--Rings
|
|
[364465] = 42.8,
|
|
--Glyph of Relocation
|
|
[362801] = 42.8,
|
|
--Stasis Trap
|
|
[362885] = 42.8,
|
|
--Hyperlight Sparknova
|
|
[362849] = 42.8,
|
|
},
|
|
[4] = {
|
|
--Rings
|
|
[364465] = 42.8,
|
|
--Glyph of Relocation
|
|
[362801] = 42.8,
|
|
--Stasis Trap
|
|
[362885] = 42.8,
|
|
--Hyperlight Sparknova
|
|
[362849] = 42.8,
|
|
},
|
|
},
|
|
["normal"] = {
|
|
[1] = {--Unchanged
|
|
--Rings
|
|
[364465] = 30,
|
|
--Glyph of Relocation
|
|
[362801] = 60,--It's supposed to be 30 too, but when other abilities are also 30, it causes this spell to skip casts
|
|
--Stasis Trap
|
|
[362885] = 30,
|
|
--Hyperlight Sparknova
|
|
[362849] = 30,
|
|
},
|
|
[2] = {--Gets a little slower
|
|
--Rings
|
|
[364465] = 37.4,
|
|
--Glyph of Relocation
|
|
[362801] = 37.4,
|
|
--Stasis Trap
|
|
[362885] = 37.4,
|
|
--Hyperlight Sparknova
|
|
[362849] = 37.4,
|
|
},
|
|
[3] = {--Gets even slower
|
|
--Rings
|
|
[364465] = 37.4,
|
|
--Glyph of Relocation
|
|
[362801] = 37.4,
|
|
--Stasis Trap
|
|
[362885] = 37.4,
|
|
--Hyperlight Sparknova
|
|
[362849] = 37.4,
|
|
},
|
|
[4] = {
|
|
--Rings
|
|
[364465] = 42.8,
|
|
--Glyph of Relocation
|
|
[362801] = 42.8,
|
|
--Stasis Trap
|
|
[362885] = 42.8,
|
|
--Hyperlight Sparknova
|
|
[362849] = 42.8,
|
|
},
|
|
},
|
|
["heroic"] = {
|
|
[1] = {--Unchanged
|
|
--Rings
|
|
[364465] = 30,
|
|
--Glyph of Relocation
|
|
[362801] = 60,--It's supposed to be 30 too, but when other abilities are also 30, it causes this spell to skip casts
|
|
--Stasis Trap
|
|
[362885] = 30,
|
|
--Hyperlight Sparknova
|
|
[362849] = 30,
|
|
},
|
|
[2] = {--Gets a little slower
|
|
--Rings
|
|
[364465] = 33.3,
|
|
--Glyph of Relocation
|
|
[362801] = 33.3,
|
|
--Stasis Trap
|
|
[362885] = 33.3,
|
|
--Hyperlight Sparknova
|
|
[362849] = 33.3,
|
|
},
|
|
[3] = {--Gets even slower
|
|
--Rings
|
|
[364465] = 33.3,
|
|
--Glyph of Relocation
|
|
[362801] = 33.3,
|
|
--Stasis Trap
|
|
[362885] = 33.3,
|
|
--Hyperlight Sparknova
|
|
[362849] = 33.3,
|
|
},
|
|
[4] = {
|
|
--Rings
|
|
[364465] = 40,
|
|
--Glyph of Relocation
|
|
[362801] = 40,--assumed not confirmed
|
|
--Stasis Trap
|
|
[362885] = 40,
|
|
--Hyperlight Sparknova
|
|
[362849] = 38.6,--Shorter than others?
|
|
},
|
|
},
|
|
["mythic"] = {
|
|
[1] = {--Original
|
|
--Rings
|
|
[364465] = 30,
|
|
--Glyph of Relocation
|
|
[362801] = 30,
|
|
--Stasis Trap
|
|
[362885] = 30,
|
|
--Hyperlight Sparknova
|
|
[362849] = 30,
|
|
},
|
|
[2] = {--Assumed unchanged, hotfixes said non mythic
|
|
--Rings
|
|
[364465] = 30,
|
|
--Glyph of Relocation
|
|
[362801] = 30,
|
|
--Stasis Trap
|
|
[362885] = 30,
|
|
--Hyperlight Sparknova
|
|
[362849] = 30,
|
|
},
|
|
[3] = {--Assumed unchanged, hotfixes said non mythic
|
|
--Rings
|
|
[364465] = 30,
|
|
--Glyph of Relocation
|
|
[362801] = 30,
|
|
--Stasis Trap
|
|
[362885] = 30,
|
|
--Hyperlight Sparknova
|
|
[362849] = 30,
|
|
},
|
|
[4] = {--Assumed has original change to 33 that was applied to all difficulties
|
|
--Rings
|
|
[364465] = 33,
|
|
--Glyph of Relocation
|
|
[362801] = 33,
|
|
--Stasis Trap
|
|
[362885] = 33,
|
|
--Hyperlight Sparknova
|
|
[362849] = 33,
|
|
},
|
|
},
|
|
}
|
|
|
|
function mod:OnCombatStart(delay)
|
|
self:SetStage(1)
|
|
self.vb.sparkCount = 0
|
|
self.vb.ringCount = 0
|
|
self.vb.glyphCount = 0
|
|
self.vb.trapCount = 0
|
|
--For the time being, initial pull timers stil same on all difficulties
|
|
--This will probably be changed soon enough :D
|
|
if not self:IsLFR() then
|
|
--These are same in 3 modes
|
|
timerDimensionalTearCD:Start(7.9-delay, 1)
|
|
timerHyperlightSparknovaCD:Start(14-delay, 1)
|
|
timerStasisTrapCD:Start(21-delay, 1)
|
|
timerForerunnerRingsCD:Start(26-delay, 1)
|
|
timerGlyphofRelocationCD:Start(39.9-delay, 1)
|
|
end
|
|
if self:IsMythic() then
|
|
difficultyName = "mythic"
|
|
timerCartelEliteCD:Start(13.4-delay)
|
|
timerRiftBlastsCD:Start(13.6-delay)
|
|
berserkTimer:Start(600-delay)
|
|
else
|
|
if self:IsHeroic() then
|
|
difficultyName = "heroic"
|
|
berserkTimer:Start(480-delay)
|
|
elseif self:IsNormal() then
|
|
difficultyName = "normal"
|
|
berserkTimer:Start(540-delay)
|
|
else
|
|
difficultyName = "lfr"
|
|
timerDimensionalTearCD:Start(11-delay, 1)
|
|
timerHyperlightSparknovaCD:Start(20-delay, 1)
|
|
timerStasisTrapCD:Start(30-delay, 1)
|
|
timerForerunnerRingsCD:Start(37.1-delay, 1)
|
|
timerGlyphofRelocationCD:Start(57.1-delay, 1)
|
|
end
|
|
|
|
end
|
|
if self.Options.NPAuraOnDecipherRelic or self.Options.NPAuraOnOverseersOrder or self.Options.NPAuraOnAscension then
|
|
DBM:FireEvent("BossMod_EnableHostileNameplates")
|
|
end
|
|
end
|
|
|
|
function mod:OnCombatEnd()
|
|
table.wipe(castsPerGUID)
|
|
if self.Options.NPAuraOnDecipherRelic or self.Options.NPAuraOnOverseersOrder or self.Options.NPAuraOnAscension then
|
|
DBM.Nameplate:Hide(true, nil, nil, nil, true, true)
|
|
end
|
|
end
|
|
|
|
function mod:OnTimerRecovery()
|
|
if self:IsMythic() then
|
|
difficultyName = "mythic"
|
|
elseif self:IsHeroic() then
|
|
difficultyName = "heroic"
|
|
elseif self:IsNormal() then
|
|
difficultyName = "normal"
|
|
else
|
|
difficultyName = "lfr"
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
local spellId = args.spellId
|
|
if spellId == 363485 then
|
|
DBM:AddMsg("The Cartel Elite added to combat log, notify DBM authors")
|
|
elseif spellId == 365682 then
|
|
if self:IsTanking("player", nil, nil, true, args.sourceGUID) then
|
|
specWarnMassiveBlast:Show()
|
|
specWarnMassiveBlast:Play("defensive")
|
|
end
|
|
timerMassiveBlastCD:Start(11.5, args.sourceGUID)
|
|
elseif spellId == 362841 and self:AntiSpam(3, 1) then
|
|
if self.Options.SpecWarn362841dodge then
|
|
specWarnFracturingRiftBlasts:Show()
|
|
specWarnFracturingRiftBlasts:Play("farfromline")
|
|
else
|
|
warnRiftBlasts:Show()
|
|
end
|
|
-- timerRiftBlastsCD:Start()
|
|
elseif spellId == 362801 then
|
|
self.vb.glyphCount = self.vb.glyphCount + 1
|
|
local timer = self:GetFromTimersTable(allTimers, difficultyName, self.vb.phase, spellId)
|
|
if timer then
|
|
timerGlyphofRelocationCD:Start(timer, self.vb.glyphCount+1)
|
|
end
|
|
elseif spellId == 362849 then
|
|
self.vb.sparkCount = self.vb.sparkCount + 1
|
|
specWarnHyperlightSpark:Show(self.vb.sparkCount)
|
|
specWarnHyperlightSpark:Play("aesoon")
|
|
local timer = self:GetFromTimersTable(allTimers, difficultyName, self.vb.phase, spellId)
|
|
if timer then
|
|
timerHyperlightSparknovaCD:Start(timer, self.vb.sparkCount+1)
|
|
end
|
|
elseif spellId == 364040 then
|
|
if self:AntiSpam(2, 2) then
|
|
warnHyperlightAscension:Show()
|
|
end
|
|
if self.Options.NPAuraOnAscension then
|
|
DBM.Nameplate:Show(true, args.sourceGUID, spellId, nil, 10)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
local spellId = args.spellId
|
|
if (spellId == 362885 or spellId == 366752) and self:AntiSpam(10, 3) then--362885 verified on heroic
|
|
self.vb.trapCount = self.vb.trapCount + 1
|
|
specWarnStasisTrap:Show(self.vb.trapCount)
|
|
specWarnStasisTrap:Play("watchstep")
|
|
local timer = self:GetFromTimersTable(allTimers, difficultyName, self.vb.phase, 362885)
|
|
if timer then
|
|
timerStasisTrapCD:Start(timer, self.vb.trapCount+1)
|
|
end
|
|
elseif spellId == 364040 then
|
|
if self.Options.NPAuraOnAscension then
|
|
DBM.Nameplate:Hide(true, args.sourceGUID, spellId)
|
|
end
|
|
elseif spellId == 362721 then
|
|
self.vb.tearIcon = 1
|
|
elseif spellId == 363258 then--Decipher Relic, Slightly faster than SPELL_CAST_START/APPLIED
|
|
warnDecipherRelic:Show()
|
|
--Stop timers
|
|
timerForerunnerRingsCD:Stop()
|
|
timerCartelEliteCD:Stop()
|
|
timerRiftBlastsCD:Stop()
|
|
timerDimensionalTearCD:Stop()
|
|
timerGlyphofRelocationCD:Stop()
|
|
timerHyperlightSparknovaCD:Stop()
|
|
timerStasisTrapCD:Stop()
|
|
--Only scan for acolytes and overseers and mark them with skull and cross, then stop scanning
|
|
if self.Options.SetIconOnHyperlightAdds then
|
|
self:ScanForMobs(184140, 0, 8, 2, {184140, 184143, 184792}, 12, "SetIconOnHyperlightAdds")
|
|
end
|
|
--Secondary scan that's marking Debilitators with 6 5 and 4
|
|
if self.Options.SetIconOnHyperlightAdds then
|
|
self:ScanForMobs(183707, 0, 6, 3, nil, 12, "SetIconOnHyperlightAdds")
|
|
end
|
|
elseif spellId == 364465 then
|
|
self.vb.ringCount = self.vb.ringCount + 1
|
|
specWarnForerunnerRings:Show(self.vb.ringCount)
|
|
specWarnForerunnerRings:Play("watchwave")
|
|
local timer = self:GetFromTimersTable(allTimers, difficultyName, self.vb.phase, spellId)
|
|
if timer then
|
|
timerForerunnerRingsCD:Start(timer, self.vb.ringCount+1)
|
|
end
|
|
elseif spellId == 364030 then
|
|
if not castsPerGUID[args.sourceGUID] then--Shouldn't happen, but failsafe
|
|
castsPerGUID[args.sourceGUID] = 0
|
|
end
|
|
castsPerGUID[args.sourceGUID] = castsPerGUID[args.sourceGUID] + 1
|
|
local count = castsPerGUID[args.sourceGUID]
|
|
if self:CheckInterruptFilter(args.sourceGUID, false, false) then
|
|
specWarnDebilitatingRay:Show(args.sourceName, count)
|
|
if count == 1 then
|
|
specWarnDebilitatingRay:Play("kick1r")
|
|
elseif count == 2 then
|
|
specWarnDebilitatingRay:Play("kick2r")
|
|
elseif count == 3 then
|
|
specWarnDebilitatingRay:Play("kick3r")
|
|
elseif count == 4 then
|
|
specWarnDebilitatingRay:Play("kick4r")
|
|
elseif count == 5 then
|
|
specWarnDebilitatingRay:Play("kick5r")
|
|
else
|
|
specWarnDebilitatingRay:Play("kickcast")
|
|
end
|
|
end
|
|
elseif spellId == 367711 then--Decipher Relic (Stage 4 version)
|
|
self:SetStage(4)
|
|
self.vb.sparkCount = 0
|
|
self.vb.ringCount = 0
|
|
self.vb.glyphCount = 0
|
|
self.vb.trapCount = 0
|
|
warnDecipherRelic:Show()
|
|
--Stop timers
|
|
timerForerunnerRingsCD:Stop()
|
|
timerCartelEliteCD:Stop()
|
|
timerRiftBlastsCD:Stop()
|
|
timerDimensionalTearCD:Stop()
|
|
timerGlyphofRelocationCD:Stop()
|
|
timerHyperlightSparknovaCD:Stop()
|
|
timerStasisTrapCD:Stop()
|
|
if self:IsMythic() then
|
|
timerHyperlightSparknovaCD:Start(15.5, 1)
|
|
timerDimensionalTearCD:Start(22, 4)
|
|
timerStasisTrapCD:Start(23, 1)
|
|
timerForerunnerRingsCD:Start(28, 1)
|
|
timerGlyphofRelocationCD:Start(44, 1)
|
|
--TODO: Could be changed since other stuff was, review!
|
|
timerCartelEliteCD:Start(12)
|
|
timerRiftBlastsCD:Start(12.2)
|
|
elseif self:IsHeroic() then
|
|
--Timers on non mythic even more altered on P4 start with march 3rd hotfixes
|
|
timerHyperlightSparknovaCD:Start(18.6, 1)
|
|
timerStasisTrapCD:Start(28, 1)
|
|
timerDimensionalTearCD:Start(33.3, 4)
|
|
timerForerunnerRingsCD:Start(36, 1)
|
|
timerGlyphofRelocationCD:Start(53.3, 1)
|
|
else--Normal, LFR are same here
|
|
--Timers on non mythic even more altered on P4 start with march 3rd hotfixes
|
|
timerHyperlightSparknovaCD:Start(20, 1)
|
|
timerStasisTrapCD:Start(30, 1)
|
|
timerDimensionalTearCD:Start(35.7, 4)
|
|
timerForerunnerRingsCD:Start(38.5, 1)
|
|
timerGlyphofRelocationCD:Start(57.1, 1)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 365577 then
|
|
if self.Options.NPAuraOnDecipherRelic then
|
|
DBM.Nameplate:Show(true, args.sourceGUID, spellId, nil, 25)
|
|
end
|
|
elseif spellId == 365701 then
|
|
if self.Options.NPAuraOnOverseersOrders then
|
|
DBM.Nameplate:Show(true, args.sourceGUID, spellId)
|
|
end
|
|
elseif spellId == 365681 then
|
|
local uId = DBM:GetRaidUnitId(args.destName)
|
|
if self:IsTanking(uId) then
|
|
local amount = args.amount or 1
|
|
if amount >= 2 then
|
|
if not args:IsPlayer() then
|
|
--Because multiple adds up on diff CDs, can't do fancy debuff remaining checks, it just needs to be gone
|
|
if not DBM:UnitDebuff("player", spellId) and not UnitIsDeadOrGhost("player") then
|
|
specWarnMassiveBlastTaunt:Show(args.destName)
|
|
specWarnMassiveBlastTaunt:Play("tauntboss")
|
|
else
|
|
warnMassiveBlast:Show(args.destName, amount)
|
|
end
|
|
end
|
|
else
|
|
warnMassiveBlast:Show(args.destName, amount)
|
|
end
|
|
end
|
|
elseif spellId == 362615 or spellId == 362614 then
|
|
local icon = self.vb.tearIcon
|
|
if self.Options.SetIconOnWormhole then
|
|
self:SetIcon(args.destName, icon)
|
|
end
|
|
if args:IsPlayer() then
|
|
specWarnDimensionalTear:Show(self:IconNumToTexture(icon))
|
|
specWarnDimensionalTear:Play("mm"..icon)
|
|
yellDimensionalTear:Yell(icon, icon, icon)
|
|
yellDimensionalTearFades:Countdown(spellId, 7, icon)
|
|
end
|
|
warnDimensionalTear:CombinedShow(1, args.destName)
|
|
self.vb.tearIcon = self.vb.tearIcon + 1
|
|
elseif spellId == 362803 then
|
|
if self.Options.SetIconGlyphofRelocation then
|
|
self:SetIcon(args.destName, 3)
|
|
end
|
|
if args:IsPlayer() then
|
|
specWarnGlyphofRelocation:Show(self.vb.destructionCount)
|
|
specWarnGlyphofRelocation:Play("runout")
|
|
yellGlyphofRelocation:Yell()
|
|
yellGlyphofRelocationFades:Countdown(spellId)
|
|
else
|
|
specWarnGlyphofRelocationTaunt:Show(args.destName)
|
|
specWarnGlyphofRelocationTaunt:Play("tauntboss")
|
|
end
|
|
timerGlyphExplostion:Start(args.destName)
|
|
elseif spellId == 362882 then
|
|
warnStasisTrap:CombinedShow(1, args.destName)
|
|
if args:IsPlayer() then
|
|
yellStasisTrap:Yell()
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 365577 then
|
|
if self.Options.NPAuraOnDecipherRelic then
|
|
DBM.Nameplate:Hide(true, args.sourceGUID, spellId)
|
|
end
|
|
elseif spellId == 365701 then
|
|
if self.Options.NPAuraOnOverseersOrders then
|
|
DBM.Nameplate:Hide(true, args.sourceGUID, spellId)
|
|
end
|
|
elseif spellId == 363034 or spellId == 363139 then--Decipher Relic 1 min (boss casts)
|
|
self:SetStage(0)
|
|
self.vb.sparkCount = 0
|
|
self.vb.ringCount = 0
|
|
self.vb.glyphCount = 0
|
|
self.vb.trapCount = 0
|
|
warnDecipherRelicOver:Show()
|
|
if self:IsMythic() then
|
|
--Restart Timers (exactly same as pull)
|
|
timerDimensionalTearCD:Start(8, self.vb.phase)
|
|
timerHyperlightSparknovaCD:Start(14, 1)
|
|
timerStasisTrapCD:Start(21, 1)
|
|
timerForerunnerRingsCD:Start(26, 1)
|
|
timerGlyphofRelocationCD:Start(40, 1)
|
|
--Mythic Only
|
|
timerCartelEliteCD:Start(12)
|
|
timerRiftBlastsCD:Start(12.2)
|
|
elseif self:IsHeroic() then
|
|
--Initial timers are slowed now as of march 3rd hotfixe
|
|
timerDimensionalTearCD:Start(8.8, self.vb.phase)
|
|
timerHyperlightSparknovaCD:Start(15.5, 1)
|
|
timerStasisTrapCD:Start(23.3, 1)
|
|
timerForerunnerRingsCD:Start(28.8, 1)
|
|
timerGlyphofRelocationCD:Start(44.4, 1)
|
|
elseif self:IsNormal() then
|
|
--Initial timers are even more slowed as of march 3rd hotfixe
|
|
timerDimensionalTearCD:Start(10, self.vb.phase)
|
|
timerHyperlightSparknovaCD:Start(17.5, 1)
|
|
timerStasisTrapCD:Start(26.2, 1)
|
|
timerForerunnerRingsCD:Start(32.5, 1)
|
|
timerGlyphofRelocationCD:Start(50, 1)
|
|
else--LFR
|
|
--Initial timers are even more slowed as of march 3rd hotfixe
|
|
timerDimensionalTearCD:Start(11.4, self.vb.phase)
|
|
timerHyperlightSparknovaCD:Start(20, 1)
|
|
timerStasisTrapCD:Start(30, 1)
|
|
timerForerunnerRingsCD:Start(37.1, 1)
|
|
timerGlyphofRelocationCD:Start(57.1, 1)
|
|
end
|
|
elseif spellId == 362615 or spellId == 362614 then
|
|
if self.Options.SetIconOnWormhole then
|
|
self:SetIcon(args.destName, 0)
|
|
end
|
|
if args:IsPlayer() then
|
|
yellDimensionalTearFades:Cancel()
|
|
end
|
|
elseif spellId == 362803 then
|
|
if self.Options.SetIconGlyphofRelocation then
|
|
self:SetIcon(args.destName, 0)
|
|
end
|
|
if args:IsPlayer() then
|
|
yellGlyphofRelocationFades:Cancel()
|
|
end
|
|
timerGlyphExplostion:Stop(args.destName)
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_DIED(args)
|
|
local cid = self:GetCIDFromGUID(args.destGUID)
|
|
if cid == 184140 or cid == 184143 then--Xy Acolyte, Xy Archon
|
|
timerMassiveBlastCD:Stop(args.destGUID)
|
|
if self.Options.NPAuraOnAscension then
|
|
DBM.Nameplate:Hide(true, args.destGUID, 364040)
|
|
end
|
|
end
|
|
end
|
|
|
|
--"<19.51 22:08:21> [UNIT_SPELLCAST_SUCCEEDED] Artificer Xy'mox(Bookaine) -Hyperlight Reinforcements- boss1:Cast-3-4170-2481-12807-364046-006FB27045:364046
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
|
|
if spellId == 365428 then
|
|
specWarnCartelElite:Show()
|
|
specWarnCartelElite:Play("killmob")
|
|
end
|
|
end
|
|
|
|
|