|
|
|
|
local mod = DBM:NewMod(2464, "DBM-Sepulcher", nil, 1195)
|
|
|
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
|
|
|
|
|
|
mod:SetRevision("20220224054909")
|
|
|
|
|
mod:SetCreatureID(180990)--Or 181411
|
|
|
|
|
mod:SetEncounterID(2537)
|
|
|
|
|
mod:SetUsedIcons(1, 2, 3, 4, 5, 6)--, 7, 8
|
|
|
|
|
mod:SetHotfixNoticeRev(20211207000000)
|
|
|
|
|
mod:SetMinSyncRevision(20211207000000)
|
|
|
|
|
--mod.respawnTime = 29
|
|
|
|
|
mod.NoSortAnnounce = true--Disables DBM automatically sorting announce objects by diff announce types
|
|
|
|
|
|
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
|
|
|
|
|
|
mod:RegisterEventsInCombat(
|
|
|
|
|
"SPELL_CAST_START 362028 366022 363893 365436 360279 360373 359856 366284 364942 360562 364488 365033 365147 365212 365169 366374 366678",--363179
|
|
|
|
|
"SPELL_CAST_SUCCESS 362631 367051",
|
|
|
|
|
-- "SPELL_SUMMON 363175",
|
|
|
|
|
"SPELL_AURA_APPLIED 362631 363886 362401 360281 366285 365150 365153 362075 365219 365222 362192",--362024 360180
|
|
|
|
|
-- "SPELL_AURA_APPLIED_DOSE",
|
|
|
|
|
"SPELL_AURA_REMOVED 362401 360281 366285 365150 365153 365222",--360180
|
|
|
|
|
"SPELL_PERIODIC_DAMAGE 360425 365174",
|
|
|
|
|
"SPELL_PERIODIC_MISSED 360425 365174",
|
|
|
|
|
-- "UNIT_DIED",
|
|
|
|
|
"UNIT_SPELLCAST_START boss1",
|
|
|
|
|
"UNIT_SPELLCAST_SUCCEEDED boss1"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--TODO, add mythic stuff later
|
|
|
|
|
--TODO, is tyranny warning appropriate? maybe track debuff for mythic?
|
|
|
|
|
--TODO, chains may have a pre target spellId, look for it
|
|
|
|
|
--TODO, honestly what do for tank combo? most of it is instant casts, misery timing to root is pure guess right now
|
|
|
|
|
--TODO, verify phase changes
|
|
|
|
|
--TODO, verify add marking
|
|
|
|
|
--TODO, https://ptr.wowhead.com/spell=360099/calibrations-of-oblivion have a pre warning/cast? If so, add timer/warn
|
|
|
|
|
--TODO, what type of warning for Unholy Attunement
|
|
|
|
|
--TODO, shattering blast random target or tank?
|
|
|
|
|
--TODO, verify decimator target scan, or find emote for it's targeting
|
|
|
|
|
--TODO, fix unrelenting domination in p1 and P3 probably)
|
|
|
|
|
--TODO, https://ptr.wowhead.com/spell=363748/death-sentence / https://ptr.wowhead.com/spell=363772/death-sentence ?
|
|
|
|
|
--TODO, auto mark https://ptr.wowhead.com/spell=365419/incarnation-of-torment ? Is Cry of Loathing interruptable or is it like painsmith?
|
|
|
|
|
--TODO, do something with https://www.wowhead.com/spell=365810/falling-debris ?
|
|
|
|
|
--General
|
|
|
|
|
--local berserkTimer = mod:NewBerserkTimer(600)
|
|
|
|
|
|
|
|
|
|
mod:AddRangeFrameOption("6")
|
|
|
|
|
--mod:AddInfoFrameOption(328897, true)
|
|
|
|
|
|
|
|
|
|
--Stage One: Origin of Domination
|
|
|
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(24087))
|
|
|
|
|
local warnDomination = mod:NewTargetNoFilterAnnounce(362075, 4)
|
|
|
|
|
local warnTyranny = mod:NewCastAnnounce(366022, 3)
|
|
|
|
|
local warnChainsofOppression = mod:NewTargetNoFilterAnnounce(362631, 3)
|
|
|
|
|
local warnImprisonment = mod:NewTargetCountAnnounce(363886, 4, nil, nil, nil, nil, nil, nil, true)
|
|
|
|
|
local warnRuneofDamnation = mod:NewTargetCountAnnounce(360281, 3, nil, nil, nil, nil, nil, nil, true)
|
|
|
|
|
|
|
|
|
|
local specWarnWorldCrusher = mod:NewSpecialWarningCount(366374, nil, nil, nil, 2, 2, 4)
|
|
|
|
|
local specWarnUnrelentingDomination = mod:NewSpecialWarningMoveTo(362028, nil, nil, nil, 1, 2)
|
|
|
|
|
local specWarnChainsofOppression = mod:NewSpecialWarningYou(362631, nil, nil, nil, 1, 2)
|
|
|
|
|
local specWarnMartyrdom = mod:NewSpecialWarningDefensive(363893, nil, nil, nil, 1, 2)
|
|
|
|
|
local yellImprisonment = mod:NewYell(363886, nil, nil, nil, "YELL")--rooted target = stack target for misery very likely
|
|
|
|
|
local yellImprisonmentFades = mod:NewShortFadesYell(363886, nil, nil, nil, "YELL")
|
|
|
|
|
local specWarnMisery = mod:NewSpecialWarningTaunt(362192, nil, nil, nil, 1, 2, 4)
|
|
|
|
|
local specWarnTorment = mod:NewSpecialWarningMoveAway(365436, nil, nil, nil, 1, 2)
|
|
|
|
|
local specWarnRuneofDamnation = mod:NewSpecialWarningYou(360281, nil, nil, nil, 1, 2)
|
|
|
|
|
local yellRuneofDamnation = mod:NewShortPosYell(360281)
|
|
|
|
|
local yellRuneofDamnationFades = mod:NewIconFadesYell(360281)
|
|
|
|
|
|
|
|
|
|
local timerWorldCrusherCD = mod:NewAITimer(28.8, 366374, nil, nil, nil, 2, nil, DBM_COMMON_L.MYTHIC_ICON)
|
|
|
|
|
local timerUnrelentingDominationCD = mod:NewAITimer(28.8, 362028, nil, nil, nil, 2)
|
|
|
|
|
local timerChainsofOppressionCD = mod:NewAITimer(28.8, 362631, nil, nil, nil, 3)
|
|
|
|
|
local timerMartyrdomCD = mod:NewAITimer(28.8, 363893, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON)
|
|
|
|
|
local timerTormentCD = mod:NewAITimer(28.8, 365436, nil, nil, nil, 2)
|
|
|
|
|
local timerRuneofDamnationCD = mod:NewAITimer(28.8, 360281, nil, nil, nil, 3)
|
|
|
|
|
|
|
|
|
|
mod:AddSetIconOption("SetIconOnImprisonment", 363886, true, false, {4})
|
|
|
|
|
mod:AddSetIconOption("SetIconOnDamnation", 360281, true, false, {1, 2, 3})
|
|
|
|
|
|
|
|
|
|
--Stage Two: Unholy Attunement
|
|
|
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(23925))
|
|
|
|
|
local warnUnholyAttunement = mod:NewCountAnnounce(360373, 3)
|
|
|
|
|
local warnRuneofCompulsion = mod:NewTargetCountAnnounce(366285, 3, nil, nil, nil, nil, nil, nil, true)
|
|
|
|
|
local warnDecimator = mod:NewTargetCountAnnounce(364942, 3, nil, nil, nil, nil, nil, nil, true)
|
|
|
|
|
|
|
|
|
|
local specWarnWorldCracker = mod:NewSpecialWarningCount(366678, nil, nil, nil, 2, 2, 4)
|
|
|
|
|
local specWarnGTFO = mod:NewSpecialWarningGTFO(360425, nil, nil, nil, 1, 8)
|
|
|
|
|
local specWarnShatteringBlast = mod:NewSpecialWarningMoveTo(359856, nil, nil, nil, 1, 2)
|
|
|
|
|
local specWarnRuneofCompulsion = mod:NewSpecialWarningYou(366285, nil, nil, nil, 1, 2)
|
|
|
|
|
local yellRuneofCompulsion = mod:NewShortPosYell(366285)
|
|
|
|
|
local yellRuneofCompulsionFades = mod:NewIconFadesYell(366285)
|
|
|
|
|
local specWarnDecimator = mod:NewSpecialWarningMoveAway(364942, nil, nil, nil, 1, 2)
|
|
|
|
|
local yellDecimator = mod:NewYell(364942)
|
|
|
|
|
local yellDecimatorFades = mod:NewShortFadesYell(364942)
|
|
|
|
|
local specWarnTormentingEcho = mod:NewSpecialWarningDodge(365371, nil, nil, nil, 2, 2)
|
|
|
|
|
|
|
|
|
|
local timerWorldCrackerCD = mod:NewAITimer(28.8, 366678, nil, nil, nil, 2, nil, DBM_COMMON_L.MYTHIC_ICON)
|
|
|
|
|
local timerUnholyAttunementCD = mod:NewAITimer(28.8, 360373, nil, nil, nil, 3)
|
|
|
|
|
local timerShatteringBlastCD = mod:NewAITimer(28.8, 359856, nil, nil, nil, 5)
|
|
|
|
|
local timerRuneofCompulsionCD = mod:NewAITimer(28.8, 366285, nil, nil, nil, 3)
|
|
|
|
|
local timerDecimatorCD = mod:NewAITimer(28.8, 364942, nil, nil, nil, 3)
|
|
|
|
|
|
|
|
|
|
mod:AddSetIconOption("SetIconOnCopulsion", 366285, true, false, {1, 2, 3})
|
|
|
|
|
mod:AddSetIconOption("SetIconOnDecimator", 364942, true, false, {7})--7 to ensure no conflict in P3 either
|
|
|
|
|
|
|
|
|
|
--Stage Three: Eternity's End
|
|
|
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(24252))
|
|
|
|
|
local warnRuneofDomination = mod:NewTargetCountAnnounce(365150, 3, nil, nil, nil, nil, nil, nil, true)
|
|
|
|
|
local warnChainsofAnguishLink = mod:NewTargetNoFilterAnnounce(365219, 3)
|
|
|
|
|
local warnDefile = mod:NewTargetNoFilterAnnounce(365169, 4)
|
|
|
|
|
|
|
|
|
|
local specWarnWorldShatterer = mod:NewSpecialWarningCount(367051, nil, nil, nil, 2, 2, 4)
|
|
|
|
|
local specWarnDesolation = mod:NewSpecialWarningCount(365033, nil, nil, nil, 2, 2)
|
|
|
|
|
local specWarnRuneofDomination = mod:NewSpecialWarningYou(365150, nil, nil, nil, 1, 2)
|
|
|
|
|
local yellRuneofDomination = mod:NewShortPosYell(365150)
|
|
|
|
|
local yellRuneofDominationFades = mod:NewIconFadesYell(365150)
|
|
|
|
|
local specWarnChainsofAnguish = mod:NewSpecialWarningDefensive(365219, nil, nil, nil, 1, 2)
|
|
|
|
|
local specWarnChainsofAnguishTaunt = mod:NewSpecialWarningTaunt(365219, nil, nil, nil, 1, 2)
|
|
|
|
|
local specWarnChainsofAnguishLink = mod:NewSpecialWarningYou(365219, nil, nil, nil, 1, 2)
|
|
|
|
|
local yellChainsofAnguishLink = mod:NewShortPosYell(365219)
|
|
|
|
|
local specWarnDefile = mod:NewSpecialWarningMoveAway(365169, nil, nil, nil, 3, 2)
|
|
|
|
|
local yellDefile = mod:NewYell(365169)
|
|
|
|
|
local specWarnDefileNear = mod:NewSpecialWarningClose(365169, nil, nil, nil, 1, 2)
|
|
|
|
|
|
|
|
|
|
local timerWorldShattererCD = mod:NewAITimer(28.8, 367051, nil, nil, nil, 2, nil, DBM_COMMON_L.MYTHIC_ICON)
|
|
|
|
|
local timerDesolationCD = mod:NewAITimer(28.8, 365033, nil, nil, nil, 3)
|
|
|
|
|
local timerRuneofDominationCD = mod:NewAITimer(28.8, 365150, nil, nil, nil, 3)
|
|
|
|
|
local timerChainsofAnguishCD = mod:NewAITimer(28.8, 365219, nil, nil, nil, 5)
|
|
|
|
|
local timerDefileCD = mod:NewAITimer(28.8, 365169, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON)
|
|
|
|
|
|
|
|
|
|
mod:AddSetIconOption("SetIconOnDomination", 365150, true, false, {1, 2, 3})
|
|
|
|
|
mod:AddSetIconOption("SetIconOnChainsofAnguish", 365219, true, false, {4, 5, 6})
|
|
|
|
|
mod:AddSetIconOption("SetIconOnDefile", 365169, true, false, {8})
|
|
|
|
|
--mod:AddNamePlateOption("NPAuraOnBurdenofDestiny", 353432, true)
|
|
|
|
|
|
|
|
|
|
--General
|
|
|
|
|
mod.vb.worldCount = 0
|
|
|
|
|
mod.vb.debuffCount = 0
|
|
|
|
|
mod.vb.debuffIcon = 1--Used in all 3 rune types
|
|
|
|
|
--P1
|
|
|
|
|
mod.vb.comboCount = 0
|
|
|
|
|
--P2
|
|
|
|
|
mod.vb.unholyAttuneCast = 0
|
|
|
|
|
mod.vb.decimatorCount = 0
|
|
|
|
|
--P3
|
|
|
|
|
mod.vb.desolationCast = 0
|
|
|
|
|
mod.vb.willCount = 0
|
|
|
|
|
mod.vb.chainsIcon = 4
|
|
|
|
|
|
|
|
|
|
function mod:OnCombatStart(delay)
|
|
|
|
|
mod.vb.worldCount = 0
|
|
|
|
|
self.vb.comboCount = 0
|
|
|
|
|
self.vb.debuffCount = 0
|
|
|
|
|
self.vb.unholyAttuneCast = 0
|
|
|
|
|
self.vb.decimatorCount = 0
|
|
|
|
|
self.vb.desolationCast = 0
|
|
|
|
|
self.vb.willCount = 0
|
|
|
|
|
self.vb.chainsIcon = 4
|
|
|
|
|
self:SetStage(1)
|
|
|
|
|
timerUnrelentingDominationCD:Start(1-delay)
|
|
|
|
|
timerChainsofOppressionCD:Start(1-delay)
|
|
|
|
|
timerMartyrdomCD:Start(1-delay)
|
|
|
|
|
timerTormentCD:Start(1-delay)
|
|
|
|
|
timerRuneofDamnationCD:Start(1-delay)
|
|
|
|
|
if self:IsMythic() then
|
|
|
|
|
timerWorldCrusherCD:Start(1-delay)
|
|
|
|
|
end
|
|
|
|
|
-- if self.Options.InfoFrame then
|
|
|
|
|
-- DBM.InfoFrame:SetHeader(DBM:GetSpellInfo(328897))
|
|
|
|
|
-- DBM.InfoFrame:Show(10, "table", ExsanguinatedStacks, 1)
|
|
|
|
|
-- end
|
|
|
|
|
-- if self.Options.NPAuraOnBurdenofDestiny then
|
|
|
|
|
-- DBM:FireEvent("BossMod_EnableHostileNameplates")
|
|
|
|
|
-- end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:OnCombatEnd()
|
|
|
|
|
-- table.wipe(castsPerGUID)
|
|
|
|
|
if self.Options.RangeFrame then
|
|
|
|
|
DBM.RangeCheck:Hide()
|
|
|
|
|
end
|
|
|
|
|
-- if self.Options.InfoFrame then
|
|
|
|
|
-- DBM.InfoFrame:Hide()
|
|
|
|
|
-- end
|
|
|
|
|
-- if self.Options.NPAuraOnBurdenofDestiny 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 == 362028 then
|
|
|
|
|
specWarnUnrelentingDomination:Show(DBM_COMMON_L.BREAK_LOS)
|
|
|
|
|
specWarnUnrelentingDomination:Play("findshelter")
|
|
|
|
|
timerUnrelentingDominationCD:Start()
|
|
|
|
|
elseif spellId == 366022 then
|
|
|
|
|
warnTyranny:Show()
|
|
|
|
|
elseif spellId == 363893 then
|
|
|
|
|
self.vb.comboCount = self.vb.comboCount + 1
|
|
|
|
|
if self:IsTanking("player", "boss1", nil, true) then
|
|
|
|
|
specWarnMartyrdom:Show()
|
|
|
|
|
specWarnMartyrdom:Play("defensive")
|
|
|
|
|
end
|
|
|
|
|
timerMartyrdomCD:Start()
|
|
|
|
|
elseif spellId == 365436 then
|
|
|
|
|
timerTormentCD:Start()
|
|
|
|
|
elseif spellId == 360279 then
|
|
|
|
|
self.vb.debuffCount = self.vb.debuffCount + 1
|
|
|
|
|
self.vb.debuffIcon = 1
|
|
|
|
|
timerRuneofDamnationCD:Start()
|
|
|
|
|
elseif spellId == 366284 then
|
|
|
|
|
self.vb.debuffCount = self.vb.debuffCount + 1
|
|
|
|
|
self.vb.debuffIcon = 1
|
|
|
|
|
timerRuneofCompulsionCD:Start()
|
|
|
|
|
elseif spellId == 365147 then
|
|
|
|
|
self.vb.debuffCount = self.vb.debuffCount + 1
|
|
|
|
|
self.vb.debuffIcon = 1
|
|
|
|
|
timerRuneofDominationCD:Start()
|
|
|
|
|
elseif spellId == 360373 then
|
|
|
|
|
if self.vb.phase == 1 then--TEMP. need new stage 2 event
|
|
|
|
|
self:SetStage(2)
|
|
|
|
|
self.vb.debuffCount = 0
|
|
|
|
|
timerWorldCrusherCD:Stop()
|
|
|
|
|
timerUnrelentingDominationCD:Stop()
|
|
|
|
|
timerChainsofOppressionCD:Stop()
|
|
|
|
|
timerMartyrdomCD:Stop()
|
|
|
|
|
timerTormentCD:Stop()
|
|
|
|
|
timerRuneofDamnationCD:Stop()
|
|
|
|
|
-- timerUnholyAttunementCD:Start(2)
|
|
|
|
|
timerShatteringBlastCD:Start(2)
|
|
|
|
|
timerRuneofCompulsionCD:Start(2)
|
|
|
|
|
timerDecimatorCD:Start(2)
|
|
|
|
|
timerTormentCD:Start(2)
|
|
|
|
|
if self:IsMythic() then
|
|
|
|
|
timerWorldCrackerCD:Start(2)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
self.vb.unholyAttuneCast = self.vb.unholyAttuneCast + 1
|
|
|
|
|
warnUnholyAttunement:Show(self.vb.unholyAttuneCast)
|
|
|
|
|
timerUnholyAttunementCD:Start()
|
|
|
|
|
elseif spellId == 359856 then
|
|
|
|
|
if self:IsTanking("player", "boss1", nil, true) then
|
|
|
|
|
specWarnShatteringBlast:Show(L.Pylon)
|
|
|
|
|
specWarnShatteringBlast:Play("findshelter")--Kind of a crappy voice for it but don't have a valid one that sounds better
|
|
|
|
|
end
|
|
|
|
|
timerShatteringBlastCD:Start()
|
|
|
|
|
elseif args:IsSpellID(364942, 360562, 364488) then--All deciminator casts with a cast time
|
|
|
|
|
timerDecimatorCD:Start()
|
|
|
|
|
elseif spellId == 365033 then
|
|
|
|
|
self.vb.desolationCast = self.vb.desolationCast + 1
|
|
|
|
|
specWarnDesolation:Show(self.vb.desolationCast)
|
|
|
|
|
specWarnDesolation:Play("helpsoak")
|
|
|
|
|
timerDesolationCD:Start()
|
|
|
|
|
elseif spellId == 365212 then
|
|
|
|
|
self.vb.chainsIcon = 4
|
|
|
|
|
timerChainsofAnguishCD:Start()
|
|
|
|
|
elseif spellId == 365169 then
|
|
|
|
|
timerDefileCD:Start()
|
|
|
|
|
elseif spellId == 366374 then
|
|
|
|
|
self.vb.worldCount = self.vb.worldCount + 1
|
|
|
|
|
specWarnWorldCrusher:Show(self.vb.worldCount)
|
|
|
|
|
specWarnWorldCrusher:Play("specialsoon")
|
|
|
|
|
timerWorldCrusherCD:Start()
|
|
|
|
|
elseif spellId == 366678 then
|
|
|
|
|
self.vb.worldCount = self.vb.worldCount + 1
|
|
|
|
|
specWarnWorldCracker:Show(self.vb.worldCount)
|
|
|
|
|
specWarnWorldCracker:Play("specialsoon")
|
|
|
|
|
timerWorldCrackerCD:Start()
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
|
|
|
local spellId = args.spellId
|
|
|
|
|
if spellId == 362631 then
|
|
|
|
|
timerChainsofOppressionCD:Start()
|
|
|
|
|
elseif spellId == 367051 then
|
|
|
|
|
self.vb.worldCount = self.vb.worldCount + 1
|
|
|
|
|
specWarnWorldShatterer:Show(self.vb.worldCount)
|
|
|
|
|
specWarnWorldShatterer:Play("specialsoon")
|
|
|
|
|
timerWorldShattererCD:Start()
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
|
|
|
local spellId = args.spellId
|
|
|
|
|
if spellId == 362631 then
|
|
|
|
|
warnChainsofOppression:CombinedShow(0.3, args.destName)
|
|
|
|
|
if args:IsPlayer() then
|
|
|
|
|
specWarnChainsofOppression:Show()
|
|
|
|
|
specWarnChainsofOppression:Play("targetyou")
|
|
|
|
|
end
|
|
|
|
|
elseif spellId == 363886 then
|
|
|
|
|
if args:IsPlayer() then
|
|
|
|
|
yellImprisonment:Yell()
|
|
|
|
|
yellImprisonmentFades:Countdown(spellId)
|
|
|
|
|
-- elseif self:IsTank() then--You need to move away from it, to avoid physical damage taken debuff
|
|
|
|
|
--Maybe a tauntboss warning? depends on if it screws with targetting or not
|
|
|
|
|
else
|
|
|
|
|
warnImprisonment:Show(self.vb.comboCount, args.destName)
|
|
|
|
|
end
|
|
|
|
|
if self.Options.SetIconOnImprisonment then
|
|
|
|
|
self:SetIcon(args.destName, 4)
|
|
|
|
|
end
|
|
|
|
|
elseif spellId == 362192 then
|
|
|
|
|
local uId = DBM:GetRaidUnitId(args.destName)
|
|
|
|
|
if self:IsTanking(uId) and not args:IsPlayer() and not DBM:UnitDebuff("player", spellId) then
|
|
|
|
|
specWarnMisery:Show(args.destName)
|
|
|
|
|
specWarnMisery:Play("tauntboss")
|
|
|
|
|
end
|
|
|
|
|
elseif spellId == 362401 and args:IsPlayer() then
|
|
|
|
|
specWarnTorment:Show()
|
|
|
|
|
specWarnTorment:Play("scatter")
|
|
|
|
|
if self.Options.RangeFrame then
|
|
|
|
|
DBM.RangeCheck:Show(6)
|
|
|
|
|
end
|
|
|
|
|
if self.vb.phase >= 2 then
|
|
|
|
|
specWarnTormentingEcho:Schedule(6)
|
|
|
|
|
specWarnTormentingEcho:ScheduleVoice(6, "watchstep")
|
|
|
|
|
end
|
|
|
|
|
elseif spellId == 360281 then
|
|
|
|
|
local icon = self.vb.debuffIcon
|
|
|
|
|
if self.Options.SetIconOnDamnation then
|
|
|
|
|
self:SetIcon(args.destName, icon)
|
|
|
|
|
end
|
|
|
|
|
if args:IsPlayer() then
|
|
|
|
|
specWarnRuneofDamnation:Show()
|
|
|
|
|
specWarnRuneofDamnation:Play("runout")
|
|
|
|
|
yellRuneofDamnation:Yell(icon, icon)
|
|
|
|
|
yellRuneofDamnationFades:Countdown(spellId, nil, icon)
|
|
|
|
|
end
|
|
|
|
|
warnRuneofDamnation:CombinedShow(0.5, self.vb.debuffCount, args.destName)
|
|
|
|
|
self.vb.debuffIcon = self.vb.debuffIcon + 1
|
|
|
|
|
elseif spellId == 366285 then
|
|
|
|
|
local icon = self.vb.debuffIcon
|
|
|
|
|
if self.Options.SetIconOnCopulsion then
|
|
|
|
|
self:SetIcon(args.destName, icon)
|
|
|
|
|
end
|
|
|
|
|
if args:IsPlayer() then
|
|
|
|
|
specWarnRuneofCompulsion:Show()
|
|
|
|
|
specWarnRuneofCompulsion:Play("runout")
|
|
|
|
|
yellRuneofCompulsion:Yell(icon, icon)
|
|
|
|
|
yellRuneofCompulsionFades:Countdown(spellId, nil, icon)
|
|
|
|
|
end
|
|
|
|
|
warnRuneofCompulsion:CombinedShow(0.5, self.vb.debuffCount, args.destName)
|
|
|
|
|
self.vb.debuffIcon = self.vb.debuffIcon + 1
|
|
|
|
|
elseif spellId == 365150 then
|
|
|
|
|
local icon = self.vb.debuffIcon
|
|
|
|
|
if self.Options.SetIconOnDomination then
|
|
|
|
|
self:SetIcon(args.destName, icon)
|
|
|
|
|
end
|
|
|
|
|
if args:IsPlayer() then
|
|
|
|
|
specWarnRuneofDomination:Show()
|
|
|
|
|
specWarnRuneofDomination:Play("runout")
|
|
|
|
|
yellRuneofDomination:Yell(icon, icon)
|
|
|
|
|
yellRuneofDominationFades:Countdown(spellId, nil, icon)
|
|
|
|
|
end
|
|
|
|
|
warnRuneofDomination:CombinedShow(0.5, self.vb.debuffCount, args.destName)
|
|
|
|
|
self.vb.debuffIcon = self.vb.debuffIcon + 1
|
|
|
|
|
elseif spellId == 365222 then
|
|
|
|
|
local icon = self.vb.chainsIcon
|
|
|
|
|
if self.Options.SetIconOnChainsofAnguish then
|
|
|
|
|
self:SetIcon(args.destName, icon)
|
|
|
|
|
end
|
|
|
|
|
if args:IsPlayer() then
|
|
|
|
|
specWarnChainsofAnguishLink:Show()
|
|
|
|
|
specWarnChainsofAnguishLink:Play("targetyou")
|
|
|
|
|
yellChainsofAnguishLink:Yell(icon, icon-3)--minus 3 so debuff count is still 1 2 and 3 when using icons 4 5 and 6
|
|
|
|
|
end
|
|
|
|
|
warnChainsofAnguishLink:CombinedShow(0.5, args.destName)
|
|
|
|
|
self.vb.chainsIcon = self.vb.chainsIcon + 1
|
|
|
|
|
elseif spellId == 365153 then--Imposing Will
|
|
|
|
|
self.vb.willCount = self.vb.willCount + 1
|
|
|
|
|
if self.Options.InfoFrame and not DBM.InfoFrame:IsShown() then
|
|
|
|
|
DBM.InfoFrame:SetHeader(args.spellName)
|
|
|
|
|
DBM.InfoFrame:Show(20, "playerabsorb", spellId)
|
|
|
|
|
end
|
|
|
|
|
-- elseif spellId == 362024 then
|
|
|
|
|
-- if args:IsPlayer() then
|
|
|
|
|
-- specWarnUnrelentingDomination:Show(DBM_COMMON_L.BREAK_LOS)
|
|
|
|
|
-- specWarnUnrelentingDomination:Play("findshelter")
|
|
|
|
|
-- end
|
|
|
|
|
elseif spellId == 362075 then
|
|
|
|
|
warnDomination:CombinedShow(1, args.destName)
|
|
|
|
|
elseif spellId == 365219 then
|
|
|
|
|
if args:IsPlayer() then
|
|
|
|
|
specWarnChainsofAnguish:Show()
|
|
|
|
|
specWarnChainsofAnguish:Play("defensive")
|
|
|
|
|
else
|
|
|
|
|
specWarnChainsofAnguishTaunt:Show(args.destName)
|
|
|
|
|
specWarnChainsofAnguishTaunt:Play("tauntboss")
|
|
|
|
|
end
|
|
|
|
|
warnChainsofAnguishLink:CombinedShow(0.5, args.destName)--Combine into the linked targets table
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
|
|
|
local spellId = args.spellId
|
|
|
|
|
if spellId == 363886 then
|
|
|
|
|
-- if args:IsPlayer() then
|
|
|
|
|
-- yellImprisonmentFades:Cancel()--Don't cancel yet, freedom might dispel it, but misery is still coming?
|
|
|
|
|
-- end
|
|
|
|
|
if self.Options.SetIconOnImprisonment then
|
|
|
|
|
self:SetIcon(args.destName, 0)
|
|
|
|
|
end
|
|
|
|
|
elseif spellId == 362401 and args:IsPlayer() then
|
|
|
|
|
if self.Options.RangeFrame then
|
|
|
|
|
DBM.RangeCheck:Hide()
|
|
|
|
|
end
|
|
|
|
|
elseif spellId == 360281 then
|
|
|
|
|
if self.Options.SetIconOnDamnation then
|
|
|
|
|
self:SetIcon(args.destName, 0)
|
|
|
|
|
end
|
|
|
|
|
if args:IsPlayer() then
|
|
|
|
|
yellRuneofDamnationFades:Cancel()
|
|
|
|
|
end
|
|
|
|
|
elseif spellId == 366285 then
|
|
|
|
|
if self.Options.SetIconOnCopulsion then
|
|
|
|
|
self:SetIcon(args.destName, 0)
|
|
|
|
|
end
|
|
|
|
|
if args:IsPlayer() then
|
|
|
|
|
yellRuneofCompulsionFades:Cancel()
|
|
|
|
|
end
|
|
|
|
|
elseif spellId == 365150 then
|
|
|
|
|
if self.Options.SetIconOnDomination then
|
|
|
|
|
self:SetIcon(args.destName, 0)
|
|
|
|
|
end
|
|
|
|
|
if args:IsPlayer() then
|
|
|
|
|
yellRuneofDominationFades:Cancel()
|
|
|
|
|
end
|
|
|
|
|
elseif spellId == 365153 then--Imposing Will
|
|
|
|
|
self.vb.willCount = self.vb.willCount - 1
|
|
|
|
|
if self.Options.InfoFrame and self.vb.willCount == 0 then
|
|
|
|
|
DBM.InfoFrame:Hide()
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--[[
|
|
|
|
|
function mod:UNIT_DIED(args)
|
|
|
|
|
local cid = self:GetCIDFromGUID(args.destGUID)
|
|
|
|
|
if cid == 183787 then
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
--]]
|
|
|
|
|
|
|
|
|
|
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName)
|
|
|
|
|
if (spellId == 360425 or spellId == 365174) and destGUID == UnitGUID("player") and self:AntiSpam(2, 4) then
|
|
|
|
|
specWarnGTFO:Show(spellName)
|
|
|
|
|
specWarnGTFO:Play("watchfeet")
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
|
|
|
|
|
|
|
|
|
|
do
|
|
|
|
|
function mod:DecimatorTarget(targetname, uId)
|
|
|
|
|
if not targetname then return end
|
|
|
|
|
if self.Options.SetIconOnDecimator then
|
|
|
|
|
self:SetIcon(targetname, 7, 4)--So icon clears 1 second after
|
|
|
|
|
end
|
|
|
|
|
if targetname == UnitName("player") then
|
|
|
|
|
specWarnDecimator:Show()
|
|
|
|
|
specWarnDecimator:Play("runout")
|
|
|
|
|
yellDecimator:Yell()
|
|
|
|
|
yellDecimatorFades:Countdown(2.97)--This scan method doesn't support scanningTime, but should be about right
|
|
|
|
|
else
|
|
|
|
|
warnDecimator:Show(self.vb.decimatorCount, targetname)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:DefileTarget(targetname, uId)
|
|
|
|
|
if not targetname then return end
|
|
|
|
|
if self.Options.SetIconOnDecimator then
|
|
|
|
|
self:SetIcon(targetname, 8, 3)--So icon clears 1 second after
|
|
|
|
|
end
|
|
|
|
|
if targetname == UnitName("player") then
|
|
|
|
|
specWarnDefile:Show()
|
|
|
|
|
specWarnDefile:Play("runout")
|
|
|
|
|
yellDefile:Yell()
|
|
|
|
|
elseif self:CheckNearby(10, targetname) then
|
|
|
|
|
specWarnDefileNear:Show(targetname)
|
|
|
|
|
specWarnDefileNear:Play("runaway")
|
|
|
|
|
else
|
|
|
|
|
warnDefile:Show(targetname)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:UNIT_SPELLCAST_START(uId, _, spellId)
|
|
|
|
|
if spellId == 364942 or spellId == 360562 or spellId == 364488 then
|
|
|
|
|
self.vb.decimatorCount = self.vb.decimatorCount + 1--This event may be before CLEU event so just make sure count updated before target scan
|
|
|
|
|
self:BossUnitTargetScanner(uId, "DecimatorTarget", 3)
|
|
|
|
|
elseif spellId == 365169 then
|
|
|
|
|
self:BossUnitTargetScanner(uId, "DefileTarget", 3)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
|
|
|
|
|
if spellId == 360507 then--Trigger Azeroth Visibility (may not be reliable for mythic, replace with diff P3 trigger if possible)
|
|
|
|
|
self:SetStage(3)
|
|
|
|
|
timerWorldCrackerCD:Stop()
|
|
|
|
|
timerUnholyAttunementCD:Stop()
|
|
|
|
|
timerShatteringBlastCD:Stop()
|
|
|
|
|
timerRuneofCompulsionCD:Stop()
|
|
|
|
|
timerDecimatorCD:Stop()
|
|
|
|
|
timerDesolationCD:Start(3)
|
|
|
|
|
timerRuneofDominationCD:Start(3)
|
|
|
|
|
timerChainsofAnguishCD:Start(3)
|
|
|
|
|
timerTormentCD:Start(3)
|
|
|
|
|
timerDecimatorCD:Start(3)
|
|
|
|
|
timerDefileCD:Start(3)
|
|
|
|
|
if self:IsMythic() then
|
|
|
|
|
timerWorldShattererCD:Start(3)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|