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.
228 lines
9.0 KiB
228 lines
9.0 KiB
local mod = DBM:NewMod(1983, "DBM-AntorusBurningThrone", nil, 946)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20230124052137")
|
|
mod:SetCreatureID(122366)
|
|
mod:SetEncounterID(2069)
|
|
--mod:SetBossHPInfoToHighest()
|
|
mod:SetUsedIcons(1, 3, 4)
|
|
mod:SetHotfixNoticeRev(17238)
|
|
mod.respawnTime = 29
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_CAST_SUCCESS 243960 244093 243999 257644 122366",
|
|
"SPELL_AURA_APPLIED 243961 244042 244094 248732 243968 243977 243980 243973",
|
|
"SPELL_AURA_REMOVED 244042 244094",
|
|
"SPELL_PERIODIC_DAMAGE 244005 248740",
|
|
"SPELL_PERIODIC_MISSED 244005 248740"
|
|
)
|
|
|
|
--TODO, on phase changes most ability CDs extended by 2+ seconds, but NOT ALWAYS so difficult to hard code a rule for it right now
|
|
--[[
|
|
(ability.id = 243960 or ability.id = 244093 or ability.id = 243999 or ability.id = 244042 or ability.id = 257644) and type = "cast"
|
|
or (ability.id = 243968 or ability.id = 243977 or ability.id = 243980 or ability.id = 243973) and type = "applydebuff" and target.name = "Omegal"
|
|
or ability.id = 26662
|
|
--]]
|
|
--Torments of the Shivarra
|
|
mod:AddTimerLine(GENERAL)
|
|
local warnTormentofFlames = mod:NewSpellAnnounce(243967, 2, nil, nil, nil, nil, nil, 2)
|
|
local warnTormentofFrost = mod:NewSpellAnnounce(243976, 2, nil, nil, nil, nil, nil, 2)
|
|
local warnTormentofFel = mod:NewSpellAnnounce(243979, 2, nil, nil, nil, nil, nil, 2)
|
|
local warnTormentofShadows = mod:NewSpellAnnounce(243974, 2, nil, nil, nil, nil, nil, 2)
|
|
|
|
local specWarnGTFO = mod:NewSpecialWarningGTFO(244005, nil, nil, nil, 1, 2)
|
|
|
|
local timerTormentofFlamesCD = mod:NewNextTimer(5, 243967, nil, nil, nil, 6)
|
|
local timerTormentofFrostCD = mod:NewNextTimer(61, 243976, nil, nil, nil, 6)
|
|
local timerTormentofFelCD = mod:NewNextTimer(61, 243979, nil, nil, nil, 6)
|
|
local timerTormentofShadowsCD = mod:NewNextTimer(61, 243974, nil, nil, nil, 6)
|
|
--The Fallen Nathrezim
|
|
mod:AddTimerLine(BOSS)
|
|
local warnShadowStrike = mod:NewSpellAnnounce(243960, 2, nil, "Tank", 2)--Doesn't need special warning because misery should trigger special warning at same time
|
|
local warnMarkedPrey = mod:NewTargetAnnounce(244042, 3)
|
|
local warnNecroticEmbrace = mod:NewTargetAnnounce(244094, 4)
|
|
local warnEchoesofDoom = mod:NewTargetAnnounce(248732, 3)
|
|
|
|
local specWarnMisery = mod:NewSpecialWarningYou(243961, nil, nil, nil, 1, 2)
|
|
local specWarnMiseryTaunt = mod:NewSpecialWarningTaunt(243961, nil, nil, nil, 1, 2)
|
|
local specWarnDarkFissure = mod:NewSpecialWarningDodge(243999, nil, nil, nil, 2, 2)
|
|
local specWarnMarkedPrey = mod:NewSpecialWarningYou(244042, nil, nil, 2, 1, 2)
|
|
local yellMarkedPrey = mod:NewYell(244042)
|
|
local yellMarkedPreyFades = mod:NewShortFadesYell(244042)
|
|
local specWarnNecroticEmbrace = mod:NewSpecialWarningYouPos(244094, nil, nil, 3, 3, 2)
|
|
local yellNecroticEmbrace = mod:NewPosYell(244094)
|
|
local yellNecroticEmbraceFades = mod:NewIconFadesYell(244094)
|
|
local specWarnEchoesOfDoom = mod:NewSpecialWarningYou(248732, nil, nil, nil, 1, 2)
|
|
local yellEchoesOfDoom = mod:NewYell(248732)
|
|
|
|
local timerShadowStrikeCD = mod:NewCDTimer(8.5, 243960, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON, nil, 2, 3)--8.5-14 (most of time it's 9.7 or more, But lowest has to be used
|
|
local timerDarkFissureCD = mod:NewCDTimer(32, 243999, nil, nil, nil, 3)--32-33
|
|
local timerMarkedPreyCD = mod:NewNextTimer(30.3, 244042, nil, nil, nil, 3, nil, nil, nil, 1, 4)
|
|
local timerNecroticEmbraceCD = mod:NewNextTimer(30, 244093, nil, nil, nil, 3, nil, nil, nil, 3, 4)
|
|
|
|
local berserkTimer = mod:NewBerserkTimer(390)
|
|
|
|
mod:AddSetIconOption("SetIconOnMarkedPrey", 244042, true)
|
|
mod:AddSetIconOption("SetIconEmbrace", 244094, true)
|
|
--mod:AddInfoFrameOption(239154, true)
|
|
mod:AddRangeFrameOption("8/10")
|
|
|
|
mod.vb.currentTorment = 0--Can't antispam, cause it'll just break if someone dies and gets brezzed
|
|
mod.vb.totalEmbrace = 0
|
|
local playerAffected = false
|
|
|
|
function mod:OnCombatStart(delay)
|
|
self.vb.currentTorment = 0
|
|
self.vb.totalEmbrace = 0
|
|
playerAffected = false
|
|
timerTormentofFlamesCD:Start(5-delay)
|
|
timerShadowStrikeCD:Start(9.3-delay)
|
|
timerDarkFissureCD:Start(17.4-delay)--success
|
|
timerMarkedPreyCD:Start(25.2-delay)
|
|
if not self:IsEasy() then
|
|
timerNecroticEmbraceCD:Start(35-delay)
|
|
end
|
|
berserkTimer:Start(310-delay)--Confirmed normal/heroic/mythic
|
|
if self.Options.RangeFrame then
|
|
DBM.RangeCheck:Show(8)
|
|
end
|
|
end
|
|
|
|
function mod:OnCombatEnd()
|
|
if self.Options.RangeFrame then
|
|
DBM.RangeCheck:Hide()
|
|
end
|
|
-- if self.Options.InfoFrame then
|
|
-- DBM.InfoFrame:Hide()
|
|
-- end
|
|
end
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
local spellId = args.spellId
|
|
if spellId == 243960 or spellId == 257644 then--257644 LFR shadow strike
|
|
warnShadowStrike:Show()
|
|
timerShadowStrikeCD:Show()
|
|
elseif spellId == 244093 then--Necrotic Embrace Cast
|
|
timerNecroticEmbraceCD:Start()
|
|
elseif spellId == 243999 then
|
|
specWarnDarkFissure:Show()
|
|
specWarnDarkFissure:Play("watchstep")
|
|
timerDarkFissureCD:Start()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 243961 and self.vb.currentTorment ~= 4 then--If current torment is shadow, disable these warnings, Because entire raid now has misery rest of fight
|
|
if args:IsPlayer() then
|
|
if self:AntiSpam(4, 2) then
|
|
specWarnMisery:Show()
|
|
specWarnMisery:Play("defensive")
|
|
end
|
|
else
|
|
local uId = DBM:GetRaidUnitId(args.destName)
|
|
--Applied to a tank that's not you and you don't have it, taunt
|
|
if uId and self:IsTanking(uId) and (self:CheckNearby(8, args.destName) or self:GetNumAliveTanks() < 3) and not DBM:UnitDebuff("player", spellId) then
|
|
specWarnMiseryTaunt:Show(args.destName)
|
|
specWarnMiseryTaunt:Play("tauntboss")
|
|
end
|
|
end
|
|
elseif spellId == 244042 then
|
|
timerMarkedPreyCD:Start()
|
|
if args:IsPlayer() then
|
|
specWarnMarkedPrey:Show()
|
|
specWarnMarkedPrey:Play("targetyou")
|
|
yellMarkedPrey:Yell()
|
|
yellMarkedPreyFades:Countdown(5)
|
|
else
|
|
warnMarkedPrey:Show(args.destName)
|
|
end
|
|
elseif spellId == 244094 then
|
|
self.vb.totalEmbrace = self.vb.totalEmbrace + 1
|
|
if self.vb.totalEmbrace >= 3 then return end--Once it's beyond 2 players, consider it a wipe and throttle messages
|
|
if self.Options.SetIconEmbrace then
|
|
self:SetIcon(args.destName, self.vb.totalEmbrace+2)--Should be BW compatible, for most part.
|
|
end
|
|
if args:IsPlayer() then
|
|
if not playerAffected then
|
|
playerAffected = true
|
|
local icon = self.vb.totalEmbrace+2
|
|
specWarnNecroticEmbrace:Show(self:IconNumToTexture(icon))
|
|
if self:IsMythic() and not self:IsTank() then
|
|
specWarnNecroticEmbrace:Play("mm"..icon)
|
|
else
|
|
specWarnNecroticEmbrace:Play("targetyou")
|
|
end
|
|
yellNecroticEmbrace:Yell(self.vb.totalEmbrace, icon, icon)
|
|
yellNecroticEmbraceFades:Countdown(6, 3, icon)
|
|
if self.Options.RangeFrame then
|
|
DBM.RangeCheck:Show(10)
|
|
end
|
|
end
|
|
else
|
|
warnNecroticEmbrace:CombinedShow(0.5, args.destName)--Combined message because even if it starts on 1, people are gonna fuck it up
|
|
end
|
|
elseif spellId == 248732 then
|
|
warnEchoesofDoom:CombinedShow(0.5, args.destName)--In case multiple shadows up
|
|
if args:IsPlayer() and self:AntiSpam(3, 1) then
|
|
specWarnEchoesOfDoom:Show()
|
|
specWarnEchoesOfDoom:Play("targetyou")
|
|
yellEchoesOfDoom:Yell()
|
|
end
|
|
elseif spellId == 243968 and self.vb.currentTorment ~= 1 then--Flame
|
|
self.vb.currentTorment = 1
|
|
warnTormentofFlames:Show()
|
|
warnTormentofFlames:Play("phasechange")
|
|
if not self:IsEasy() then
|
|
timerTormentofFrostCD:Start(100)
|
|
else--No frost or fel in normal, LFR assumed
|
|
timerTormentofShadowsCD:Start(290)
|
|
end
|
|
elseif spellId == 243977 and self.vb.currentTorment ~= 2 then--Frost
|
|
self.vb.currentTorment = 2
|
|
warnTormentofFrost:Show()
|
|
warnTormentofFrost:Play("phasechange")
|
|
timerTormentofFelCD:Start(99)
|
|
elseif spellId == 243980 and self.vb.currentTorment ~= 3 then--Fel
|
|
self.vb.currentTorment = 3
|
|
warnTormentofFel:Show()
|
|
warnTormentofFel:Play("phasechange")
|
|
timerTormentofShadowsCD:Start(90)
|
|
elseif spellId == 243973 and self.vb.currentTorment ~= 4 then--Shadow
|
|
self.vb.currentTorment = 4
|
|
warnTormentofShadows:Show()
|
|
warnTormentofShadows:Play("phasechange")
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 244042 then
|
|
if args:IsPlayer() then
|
|
yellMarkedPrey:Cancel()
|
|
end
|
|
elseif spellId == 244094 then
|
|
self.vb.totalEmbrace = self.vb.totalEmbrace - 1
|
|
if args:IsPlayer() then
|
|
playerAffected = false
|
|
yellNecroticEmbraceFades:Cancel()
|
|
if self.Options.RangeFrame then
|
|
DBM.RangeCheck:Show(8)
|
|
end
|
|
end
|
|
if self.Options.SetIconEmbrace then
|
|
self:SetIcon(args.destName, 0)
|
|
end
|
|
end
|
|
end
|
|
|
|
--Dark Fissure & Echoes of Doom
|
|
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId)
|
|
if (spellId == 244005 or spellId == 248740) and destGUID == UnitGUID("player") and self:AntiSpam(2, 4) then
|
|
specWarnGTFO:Show()
|
|
specWarnGTFO:Play("runaway")
|
|
end
|
|
end
|
|
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
|
|
|