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.
486 lines
21 KiB
486 lines
21 KiB
local mod = DBM:NewMod(2519, "DBM-Raids-Dragonflight", 1, 1207)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20231107113441")
|
|
--mod:SetCreatureID(165066)--yeah, this is gonna need to see fight first, too many to guess
|
|
mod:SetEncounterID(2677)
|
|
--mod:SetUsedIcons(1, 2, 3)
|
|
mod:SetHotfixNoticeRev(20231106000000)
|
|
--mod:SetMinSyncRevision(20231106000000)
|
|
mod.respawnTime = 29
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_CAST_START 428960 419506 420422 417455 417431 419144 412761 428963 428400 428971 428968 428965 419123 422524 422837 410223 425492 422518",
|
|
"SPELL_CAST_SUCCESS 428954 414186 421937 422935 429875 429876",
|
|
"SPELL_SUMMON 422029",
|
|
"SPELL_AURA_APPLIED 428961 417807 417443 429866 422457 423717 429672",
|
|
"SPELL_AURA_APPLIED_DOSE 417807 417443 429866 429672",
|
|
"SPELL_AURA_REMOVED 425346 419144",
|
|
-- "SPELL_AURA_REMOVED_DOSE",
|
|
"SPELL_PERIODIC_DAMAGE 419504 425483",
|
|
"SPELL_PERIODIC_MISSED 419504 425483",
|
|
"UNIT_DIED",
|
|
"UNIT_SPELLCAST_SUCCEEDED boss1 boss2"--Assumed tree is boss 2 and fyrak is boss 1, but can be other way around too
|
|
)
|
|
|
|
--[[
|
|
|
|
--]]
|
|
--TODO, right cast ID for Darkflame cleave to add nameplate CD timer to mob
|
|
--TODO, what do with Flamespawn on mythic?
|
|
--TODO, what to do with Aflame stacks, it seems like something that may be spammy if stacks up quickly so it's off by default for now
|
|
--TODO, tank swap stacks/when to taunt
|
|
--TODO, add orbs timer, or remove alert entirely if it's just passive
|
|
--TODO, verify https://www.wowhead.com/ptr-2/spell=422457/heart-of-amirdrassil for staging
|
|
--TODO, spawn events or IEEU for the big adds in stage 2 for starting initial nameplate timers
|
|
--TODO, do more with raging ember and screaming soul?
|
|
--TODO, seeds detection/timer in stage 3, it's a big part of things
|
|
|
|
--TODO, common locals/short names applied to mod by the 14th
|
|
--TODO, construct timer table by stage because 10 to 1, fight is gonna use it and it should be ready to go by 14th
|
|
--TODO, setup a WCL expression by the 14th
|
|
--General
|
|
local warnPhase = mod:NewPhaseChangeAnnounce(2, nil, nil, nil, nil, nil, 2)
|
|
|
|
local specWarnGTFO = mod:NewSpecialWarningGTFO(419504, nil, nil, nil, 1, 8)
|
|
|
|
--local berserkTimer = mod:NewBerserkTimer(600)
|
|
--Stage One: The Dream Render
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(26666))
|
|
local warnDarkflameShades = mod:NewCountAnnounce(428954, 3)
|
|
local warnFirestorm = mod:NewCountAnnounce(419506, 4)
|
|
local warnBlaze = mod:NewCountAnnounce(414186, 3)
|
|
local warnAflame = mod:NewCountAnnounce(417807, 3, nil, false, DBM_CORE_L.AUTO_ANNOUNCE_OPTIONS.stack:format(417807))--Player
|
|
local warnFyralathsMark = mod:NewStackAnnounce(417443, 3, nil, "Tank|Healer")
|
|
|
|
local specWarnFyralathsFlame = mod:NewSpecialWarningYou(428961, nil, nil, nil, 1, 2, 4)--Not a private aura (at least not yet)
|
|
local yellFyralathsFlame = mod:NewShortYell(428961)
|
|
--local specWarnFirestorm = mod:NewSpecialWarningDodgeCount(419506, nil, nil, nil, 2, 2)
|
|
local specWarnWildFire = mod:NewSpecialWarningCount(420422, nil, nil, nil, 2, 2)
|
|
local specWarnDreamRend = mod:NewSpecialWarningRunCount(417455, nil, nil, nil, 4, 2)
|
|
local specWarnFyralathsBite = mod:NewSpecialWarningDefensive(417431, nil, nil, nil, 1, 2)
|
|
--local specWarnFyralathsMark = mod:NewSpecialWarningTaunt(417443, nil, nil, nil, 1, 2)
|
|
|
|
local timerDarkflameShadesCD = mod:NewAITimer(49, 428954, nil, nil, nil, 1, nil, DBM_CORE_L.MYTHIC_ICON)
|
|
--local timerFyralathsFlameCD = mod:NewCDNPTimer(11.8, 428960, nil, nil, nil, 3, nil, DBM_COMMON_L.TANK_ICON)
|
|
local timerFirestormCD = mod:NewAITimer(49, 419506, nil, nil, nil, 3)
|
|
local timerWildFireCD = mod:NewAITimer(49, 420422, nil, nil, nil, 2)
|
|
local timerDreamRendCD = mod:NewAITimer(49, 417455, nil, nil, nil, 3)
|
|
local timerBlazeCD = mod:NewAITimer(49, 414186, nil, nil, nil, 3)
|
|
local timerFyralathsBiteCD = mod:NewAITimer(49, 417431, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
|
|
|
|
mod:AddPrivateAuraSoundOption(419060, true, 419506, 1)--Firestorm
|
|
mod:AddPrivateAuraSoundOption(426370, true, 426370, 1)--Darkflame Cleave
|
|
mod:AddPrivateAuraSoundOption(414187, true, 414186, 1)--Blaze
|
|
--mod:AddRangeFrameOption("5/6/10")
|
|
--mod:AddInfoFrameOption(407919, true)
|
|
--mod:AddSetIconOption("SetIconOnSinSeeker", 335114, true, false, {1, 2, 3})
|
|
--Intermission: Amirdrassil in Peril
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(26667))
|
|
local warnOrbs = mod:NewCountAnnounce(421937, 3)
|
|
local warnShadowflameEruption = mod:NewCountAnnounce(429866, 4, nil, false, DBM_CORE_L.AUTO_ANNOUNCE_OPTIONS.stack:format(429866))--Player
|
|
|
|
local specWarnIncarnate = mod:NewSpecialWarningDodge(412761, nil, nil, nil, 2, 2)
|
|
local specWarnShadowflameBreath = mod:NewSpecialWarningDodgeCount(410223, nil, nil, nil, 2, 2)
|
|
|
|
local timerIncarnateCD = mod:NewAITimer(49, 412761, nil, nil, nil, 2)
|
|
local timerShadowflameBreathCD = mod:NewAITimer(49, 410223, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON)
|
|
|
|
mod:AddPrivateAuraSoundOption(429903, true, 429903, 1)--Flamebound
|
|
mod:AddPrivateAuraSoundOption(429906, true, 429906, 1)--Shadowbound
|
|
--Stage Two: Children of the Stars
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(26668))
|
|
local warnSpirits = mod:NewCountAnnounce(422029, 3)
|
|
local warnGreaterFirestorm = mod:NewCountAnnounce(422518, 3)
|
|
local warnExplodingCore = mod:NewCastAnnounce(428400, 4)
|
|
|
|
--local specWarnGreaterFirestorm = mod:NewSpecialWarningDodgeCount(422518, nil, nil, nil, 2, 2)
|
|
local specWarnMoltenGauntlet = mod:NewSpecialWarningDefensive(428963, nil, nil, nil, 1, 2)
|
|
local specWarnShadowGauntlet = mod:NewSpecialWarningDefensive(428965, nil, nil, nil, 1, 2)
|
|
local specWarnFlamefall = mod:NewSpecialWarningRunCount(419123, nil, nil, nil, 4, 2)
|
|
local specWarnShadowflameDevastation = mod:NewSpecialWarningDodgeCount(422524, nil, nil, nil, 2, 2)
|
|
|
|
local timerSpiritsCD = mod:NewAITimer(49, 422029, nil, nil, nil, 5, nil, DBM_COMMON_L.HEALER_ICON)
|
|
local timerGreaterFirestormCD = mod:NewAITimer(49, 422518, nil, nil, nil, 3, nil, DBM_COMMON_L.HEALER_ICON)
|
|
--local timerMoltenGauntletCD = mod:NewCDNPTimer(49, 428963, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON)
|
|
--local timerMoltenEruptionCD = mod:NewCDNPTimer(49, 428971, nil, nil, nil, 3, nil, DBM_COMMON_L.MYTHIC_ICON)
|
|
--local timerShadowGauntletCD = mod:NewCDNPTimer(49, 428965, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON)
|
|
--local timerShadowCageCD = mod:NewCDNPTimer(49, 428968, nil, nil, nil, 3, nil, DBM_COMMON_L.MYTHIC_ICON)
|
|
local timerFlamefallCD = mod:NewAITimer(49, 419123, nil, nil, nil, 2)
|
|
local timerShadowflameDevastationCD = mod:NewAITimer(49, 422524, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON)
|
|
|
|
mod:AddPrivateAuraSoundOption(422520, true, 422518, 1)--Greater Firestorm
|
|
mod:AddPrivateAuraSoundOption(428988, true, 428971, 1)--Molten Eruption
|
|
mod:AddPrivateAuraSoundOption(428970, true, 428968, 1)--Shadow Cage
|
|
--Stage Three: Shadowflame Incarnate
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(26670))
|
|
local warnBloom = mod:NewYouAnnounce(423717, 1)
|
|
local warnEternalFirestorm = mod:NewCountAnnounce(422935, 3)
|
|
local warnInfernalMaw = mod:NewStackAnnounce(425492, 3, nil, "Tank|Healer")
|
|
|
|
--local specWarnEternalFirestorm = mod:NewSpecialWarningDodgeCount(422935, nil, nil, nil, 2, 2)
|
|
local specWarnApocalypseRoar = mod:NewSpecialWarningCount(422837, nil, nil, nil, 2, 13)
|
|
local specWarnInfernalMaw = mod:NewSpecialWarningDefensive(425492, nil, nil, nil, 1, 2)
|
|
--local specWarnInfernalMawTaunt = mod:NewSpecialWarningTaunt(425492, nil, nil, nil, 1, 2)
|
|
|
|
local timerEternalFirestormCD = mod:NewAITimer(49, 422935, nil, nil, nil, 3)
|
|
local timerApocalypseroarCD = mod:NewAITimer(49, 422837, nil, nil, nil, 2)
|
|
local timerInfernalMawCD = mod:NewAITimer(49, 425492, nil, "Tank|healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
|
|
|
|
mod:AddPrivateAuraSoundOption(423601, true, 423601, 1)--Seed of Amirdrassil
|
|
mod:AddPrivateAuraSoundOption(430048, true, 430048, 1)--Corrupted Seed
|
|
mod:AddPrivateAuraSoundOption(425525, true, 422935, 1)--Eternal Firestorm
|
|
|
|
mod.vb.darkflameShadesCount = 0
|
|
mod.vb.firestormCount = 0--reused for empowered version
|
|
mod.vb.wildfireCount = 0
|
|
mod.vb.dreamRendCount = 0
|
|
mod.vb.blazeCount = 0
|
|
mod.vb.tankCount = 0--Reused for tank ability in all stages
|
|
--Intermission
|
|
mod.vb.shadowflameBreathCount = 0
|
|
--Stage 2
|
|
mod.vb.spiritsCount = 0
|
|
mod.vb.flameFallCount = 0
|
|
mod.vb.shadowflameDevastation = 0
|
|
--Stage 3
|
|
mod.vb.roarCount = 0
|
|
|
|
function mod:OnCombatStart(delay)
|
|
self:SetStage(1)
|
|
self.vb.darkflameShadesCount = 0
|
|
self.vb.firestormCount = 0
|
|
self.vb.wildfireCount = 0
|
|
self.vb.blazeCount = 0
|
|
self.vb.tankCount = 0
|
|
self.vb.shadowflameBreathCount = 0
|
|
self.vb.spiritsCount = 0
|
|
self.vb.flameFallCount = 0
|
|
self.vb.shadowflameDevastation = 0
|
|
self.vb.roarCount = 0
|
|
timerFirestormCD:Start(1)
|
|
timerWildFireCD:Start(1)
|
|
timerDreamRendCD:Start(1)
|
|
timerFyralathsBiteCD:Start(1)
|
|
if self:IsHard() then
|
|
timerBlazeCD:Start(1)--Heroic/Mythic only
|
|
end
|
|
|
|
--Hopefully the API doesn't mind registering 16 private auras at same time on pull
|
|
--It's not DBMs fault designers got carried away :D
|
|
self:EnablePrivateAuraSound(419060, "runout", 2)--Firestorm
|
|
self:EnablePrivateAuraSound(414187, "bombyou", 2)--Blaze
|
|
self:EnablePrivateAuraSound(421825, "bombyou", 2, 414187)--Register Additional blaze Ids (6 in total)
|
|
self:EnablePrivateAuraSound(421826, "bombyou", 2, 414187)--Register Additional blaze Ids (6 in total)
|
|
self:EnablePrivateAuraSound(421827, "bombyou", 2, 414187)--Register Additional blaze Ids (6 in total)
|
|
self:EnablePrivateAuraSound(421828, "bombyou", 2, 414187)--Register Additional blaze Ids (6 in total)
|
|
self:EnablePrivateAuraSound(421829, "bombyou", 2, 414187)--Register Additional blaze Ids (6 in total)
|
|
self:EnablePrivateAuraSound(422520, "runout", 2)--Greater Firestorm
|
|
self:EnablePrivateAuraSound(423601, "seedyou", 15)--Seed of Amirdrassil
|
|
self:EnablePrivateAuraSound(430048, "seedyou", 15)--Corrupted Seed
|
|
self:EnablePrivateAuraSound(425525, "runout", 2)--Eternal Firestorm
|
|
if self:IsMythic() then
|
|
self:EnablePrivateAuraSound(426370, "gathershare", 2)--Darkflame Cleave
|
|
self:EnablePrivateAuraSound(429903, "flameyou", 15)--Flamebound
|
|
self:EnablePrivateAuraSound(429906, "shadowyou", 15)--Shadowbound
|
|
self:EnablePrivateAuraSound(428988, "flameyou", 15)--Molten Eruption (because both molten and shadow are bombs, can't just use bombyou for both, so better to elemental asign)
|
|
self:EnablePrivateAuraSound(428970, "shadowyou", 15)--Shadow Cage (because both molten and shadow are bombs, can't just use bombyou for both, so better to elemental asign)
|
|
timerDarkflameShadesCD:Start(1)
|
|
end
|
|
end
|
|
|
|
--function mod:OnCombatEnd()
|
|
-- if self.Options.RangeFrame then
|
|
-- DBM.RangeCheck:Hide()
|
|
-- end
|
|
--end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
local spellId = args.spellId
|
|
if spellId == 428960 then
|
|
DBM:Debug("Fyralaths Flame", 3)--Honestly just here so LUAcheck doesn't complain statement is empty
|
|
--timerFyralathsFlameCD:Start(nil, args.sourceGUID)
|
|
elseif spellId == 419506 then
|
|
self.vb.firestormCount = self.vb.firestormCount + 1
|
|
warnFirestorm:Show(self.vb.firestormCount)
|
|
timerFirestormCD:Start()
|
|
elseif spellId == 420422 then
|
|
self.vb.wildfireCount = self.vb.wildfireCount + 1
|
|
specWarnWildFire:Show(self.vb.wildfireCount)
|
|
specWarnWildFire:Play("aesoon")
|
|
timerWildFireCD:Start()
|
|
elseif spellId == 417455 then
|
|
self.vb.dreamRendCount = self.vb.dreamRendCount + 1
|
|
specWarnDreamRend:Show(self.vb.dreamRendCount)
|
|
specWarnDreamRend:Play("justrun")
|
|
timerDreamRendCD:Start()
|
|
elseif spellId == 417431 then
|
|
self.vb.tankCount = self.vb.tankCount + 1
|
|
if self:IsTanking("player", nil, nil, true, args.sourceGUID) then--Boss1 isn't certainty, could be tree, GUID matching used
|
|
specWarnFyralathsBite:Show()
|
|
specWarnFyralathsBite:Play("defensive")
|
|
end
|
|
timerFyralathsBiteCD:Start()
|
|
elseif spellId == 419144 then
|
|
self:SetStage(1.5)
|
|
warnPhase:Show(DBM_CORE_L.AUTO_ANNOUNCE_TEXTS.stage:format(1.5))
|
|
warnPhase:Play("phasechange")
|
|
timerFirestormCD:Stop()
|
|
timerWildFireCD:Stop()
|
|
timerDreamRendCD:Stop()
|
|
timerBlazeCD:Stop()--Heroic/Mythic only
|
|
timerDarkflameShadesCD:Stop()--Mythic Only
|
|
timerIncarnateCD:Start(1)
|
|
timerShadowflameBreathCD:Start(1)
|
|
elseif spellId == 412761 then
|
|
specWarnIncarnate:Show()
|
|
specWarnIncarnate:Play("carefly")
|
|
timerIncarnateCD:Start()
|
|
elseif spellId == 422518 then
|
|
self.vb.firestormCount = self.vb.firestormCount + 1
|
|
warnGreaterFirestorm:Show(self.vb.firestormCount)
|
|
timerGreaterFirestormCD:Start()
|
|
elseif spellId == 428963 then
|
|
--timerMoltenGauntletCD:Start(nil, args.sourceGUID)
|
|
if self:IsTanking("player", nil, nil, true, args.sourceGUID) then
|
|
specWarnMoltenGauntlet:Show()
|
|
specWarnMoltenGauntlet:Play("defensive")
|
|
end
|
|
elseif spellId == 428965 then
|
|
--timerShadowGauntletCD:Start(nil, args.sourceGUID)
|
|
if self:IsTanking("player", nil, nil, true, args.sourceGUID) then
|
|
specWarnShadowGauntlet:Show()
|
|
specWarnShadowGauntlet:Play("defensive")
|
|
end
|
|
elseif spellId == 428400 and self:AntiSpam(5, 1) then
|
|
warnExplodingCore:Show()
|
|
-- elseif spellId == 428971 then
|
|
--timerMoltenEruptionCD:Start(nil, args.sourceGUID)
|
|
-- elseif spellId == 428968 then
|
|
--timerShadowCageCD:Start(nil, args.sourceGUID)
|
|
elseif spellId == 419123 then
|
|
self.vb.flameFallCount = self.vb.flameFallCount + 1
|
|
specWarnFlamefall:Show(self.vb.flameFallCount)
|
|
specWarnFlamefall:Play("justrun")
|
|
timerFlamefallCD:Start()
|
|
elseif spellId == 422524 then
|
|
self.vb.shadowflameDevastation = self.vb.shadowflameDevastation + 1
|
|
specWarnShadowflameDevastation:Show(self.vb.shadowflameDevastation)
|
|
specWarnShadowflameDevastation:Play("breathsoon")
|
|
timerShadowflameDevastationCD:Start()
|
|
elseif spellId == 422837 then
|
|
if self:GetStage(3, 1) then
|
|
self:SetStage(3)
|
|
warnPhase:Show(DBM_CORE_L.AUTO_ANNOUNCE_TEXTS.stage:format(3))
|
|
warnPhase:Play("pthree")
|
|
self.vb.firestormCount = 0
|
|
self.vb.blazeCount = 0
|
|
self.vb.tankCount = 0
|
|
self.vb.shadowflameBreathCount = 0
|
|
timerSpiritsCD:Stop()
|
|
timerGreaterFirestormCD:Stop()
|
|
timerFlamefallCD:Stop()
|
|
timerShadowflameDevastationCD:Stop()
|
|
timerFyralathsBiteCD:Stop()
|
|
timerBlazeCD:Stop()
|
|
timerEternalFirestormCD:Start(3)
|
|
timerApocalypseroarCD:Start(3)
|
|
timerShadowflameBreathCD:Start(3)
|
|
timerInfernalMawCD:Start(3)
|
|
if self:IsHard() then
|
|
timerBlazeCD:Start(3)--Heroic/Mythic only
|
|
end
|
|
end
|
|
self.vb.roarCount = self.vb.roarCount + 1
|
|
specWarnApocalypseRoar:Show(self.vb.roarCount)
|
|
specWarnApocalypseRoar:Play("pushbackincoming")
|
|
timerApocalypseroarCD:Start()
|
|
elseif spellId == 410223 then
|
|
self.vb.shadowflameBreathCount = self.vb.shadowflameBreathCount + 1
|
|
specWarnShadowflameBreath:Show(specWarnShadowflameBreath)
|
|
specWarnShadowflameBreath:Play("breathsoon")
|
|
timerShadowflameBreathCD:Start()--Probably different timers in intermission vs stage 3
|
|
elseif spellId == 425492 then
|
|
self.vb.tankCount = self.vb.tankCount + 1
|
|
if self:IsTanking("player", nil, nil, true, args.sourceGUID) then--Boss1 isn't certainty, could be tree, GUID matching used
|
|
specWarnInfernalMaw:Show()
|
|
specWarnInfernalMaw:Play("defensive")
|
|
end
|
|
timerInfernalMawCD:Start()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
local spellId = args.spellId
|
|
if spellId == 428954 then
|
|
self.vb.darkflameShadesCount = self.vb.darkflameShadesCount + 1
|
|
warnDarkflameShades:Show(self.vb.darkflameShadesCount)
|
|
timerDarkflameShadesCD:Start()
|
|
elseif spellId == 414186 then
|
|
self.vb.blazeCount = self.vb.blazeCount + 1
|
|
warnBlaze:Show(self.vb.blazeCount)
|
|
timerBlazeCD:Start()
|
|
elseif spellId == 421937 or spellId == 429875 or spellId == 429876 then--All 3 types combined for now
|
|
warnOrbs:Show()
|
|
elseif spellId == 422935 then
|
|
self.vb.firestormCount = self.vb.firestormCount + 1
|
|
warnEternalFirestorm:Show()
|
|
timerEternalFirestormCD:Start()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_SUMMON(args)
|
|
local spellId = args.spellId
|
|
if spellId == 422029 and self:AntiSpam(5, 2) then
|
|
self.vb.spiritsCount = self.vb.spiritsCount + 1
|
|
warnSpirits:Show(self.vb.spiritsCount)
|
|
timerSpiritsCD:Start()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 428961 then
|
|
if args:IsPlayer() then
|
|
specWarnFyralathsFlame:Show()
|
|
specWarnFyralathsFlame:Play("scatter")
|
|
yellFyralathsFlame:Yell()
|
|
end
|
|
elseif spellId == 417807 then
|
|
if args:IsPlayer() then
|
|
local amount = args.amount or 1
|
|
if amount % 2 == 1 then -- 1, 3, 5...
|
|
warnAflame:Show(amount)
|
|
end
|
|
end
|
|
elseif spellId == 429866 then
|
|
if args:IsPlayer() and self:AntiSpam(3, 3) then
|
|
local amount = args.amount or 1
|
|
-- if amount % 2 == 1 then -- 1, 3, 5...
|
|
warnShadowflameEruption:Show(amount)
|
|
-- end
|
|
end
|
|
elseif spellId == 417443 then
|
|
local amount = args.amount or 1
|
|
-- local _, _, _, _, _, expireTime = DBM:UnitDebuff("player", spellId)
|
|
-- local remaining
|
|
-- if expireTime then
|
|
-- remaining = expireTime-GetTime()
|
|
-- end
|
|
-- local timer = (self:GetFromTimersTable(allTimers, difficultyName, false, 417431, self.vb.tankCount+1) or 17.9) - 5
|
|
-- if (not remaining or remaining and remaining < timer) and not UnitIsDeadOrGhost("player") and not self:IsHealer() then
|
|
-- specWarnFyralathsMark:Show(args.destName)
|
|
-- specWarnFyralathsMark:Play("tauntboss")
|
|
-- else
|
|
warnFyralathsMark:Show(args.destName, amount)
|
|
-- end
|
|
elseif spellId == 429672 then
|
|
local amount = args.amount or 1
|
|
-- local _, _, _, _, _, expireTime = DBM:UnitDebuff("player", spellId)
|
|
-- local remaining
|
|
-- if expireTime then
|
|
-- remaining = expireTime-GetTime()
|
|
-- end
|
|
-- local timer = (self:GetFromTimersTable(allTimers, difficultyName, false, 425492, self.vb.tankCount+1) or 17.9) - 5
|
|
-- if (not remaining or remaining and remaining < timer) and not UnitIsDeadOrGhost("player") and not self:IsHealer() then
|
|
-- specWarnInfernalMawTaunt:Show(args.destName)
|
|
-- specWarnInfernalMawTaunt:Play("tauntboss")
|
|
-- else
|
|
warnInfernalMaw:Show(args.destName, amount)
|
|
-- end
|
|
elseif spellId == 423717 and args:IsPlayer() then
|
|
warnBloom:Show()
|
|
elseif spellId == 422457 and self:GetStage(2, 1) then--Heart of Amirdrassil
|
|
self:SetStage(2)
|
|
warnPhase:Show(DBM_CORE_L.AUTO_ANNOUNCE_TEXTS.stage:format(2))
|
|
warnPhase:Play("ptwo")
|
|
self.vb.firestormCount = 0
|
|
self.vb.blazeCount = 0
|
|
self.vb.tankCount = 0
|
|
timerIncarnateCD:Stop()
|
|
timerSpiritsCD:Start(2)
|
|
timerGreaterFirestormCD:Start(2)
|
|
timerFlamefallCD:Start(2)
|
|
timerShadowflameDevastationCD:Start(2)
|
|
timerFyralathsBiteCD:Start(2)
|
|
if self:IsHard() then
|
|
timerBlazeCD:Start(2)--Heroic/Mythic only
|
|
end
|
|
end
|
|
end
|
|
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 425346 then--Roots of Amirdrassil
|
|
DBM:Debug("Roots over", 2)
|
|
elseif spellId == 419144 and self:GetStage(2, 1) then--Corrupt ending
|
|
self:SetStage(2)
|
|
warnPhase:Show(DBM_CORE_L.AUTO_ANNOUNCE_TEXTS.stage:format(2))
|
|
warnPhase:Play("ptwo")
|
|
self.vb.firestormCount = 0
|
|
self.vb.blazeCount = 0
|
|
self.vb.tankCount = 0
|
|
timerIncarnateCD:Stop()
|
|
timerSpiritsCD:Start(2)
|
|
timerGreaterFirestormCD:Start(2)
|
|
timerFlamefallCD:Start(2)
|
|
timerShadowflameDevastationCD:Start(2)
|
|
timerFyralathsBiteCD:Start(2)
|
|
if self:IsHard() then
|
|
timerBlazeCD:Start(2)--Heroic/Mythic only
|
|
end
|
|
end
|
|
end
|
|
--mod.SPELL_AURA_REMOVED_DOSE = mod.SPELL_AURA_REMOVED
|
|
|
|
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName)
|
|
if (spellId == 419504 or spellId == 425483) and destGUID == UnitGUID("player") and self:AntiSpam(3, 4) then
|
|
specWarnGTFO:Show(spellName)
|
|
specWarnGTFO:Play("watchfeet")
|
|
end
|
|
end
|
|
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
|
|
|
|
--https://www.wowhead.com/ptr-2/npc=214011/flamespawn
|
|
--https://www.wowhead.com/ptr-2/npc=207800/spirit-of-the-kaldorei
|
|
function mod:UNIT_DIED(args)
|
|
local cid = self:GetCIDFromGUID(args.destGUID)
|
|
if cid == 212422 then--Darkflame Shade
|
|
--timerFyralathsFlameCD:Stop(args.destGUID)
|
|
elseif cid == 207796 then--Burning Colossus
|
|
--timerMoltenGauntletCD:Stop(args.destGUID)
|
|
--timerMoltenEruptionCD:Stop(args.destGUID)
|
|
elseif cid == 214012 then--Dark Colossus
|
|
--timerShadowGauntletCD:Stop(args.destGUID)
|
|
--timerShadowCageCD:Stop(args.destGUID)
|
|
end
|
|
end
|
|
|
|
--https://www.wowhead.com/ptr-2/spell=426368/darkflame-cleave
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
|
|
if (spellId == 430427 or spellId == 422944) and self:GetStage(3, 1) then--Seeds of Amirdrassil stage triggers?
|
|
self:SetStage(3)
|
|
warnPhase:Show(DBM_CORE_L.AUTO_ANNOUNCE_TEXTS.stage:format(3))
|
|
warnPhase:Play("pthree")
|
|
self.vb.firestormCount = 0
|
|
self.vb.blazeCount = 0
|
|
self.vb.tankCount = 0
|
|
self.vb.shadowflameBreathCount = 0
|
|
timerSpiritsCD:Stop()
|
|
timerGreaterFirestormCD:Stop()
|
|
timerFlamefallCD:Stop()
|
|
timerShadowflameDevastationCD:Stop()
|
|
timerFyralathsBiteCD:Stop()
|
|
timerBlazeCD:Stop()
|
|
timerEternalFirestormCD:Start(3)
|
|
timerApocalypseroarCD:Start(3)
|
|
timerShadowflameBreathCD:Start(3)
|
|
timerInfernalMawCD:Start(3)
|
|
if self:IsHard() then
|
|
timerBlazeCD:Start(3)--Heroic/Mythic only
|
|
end
|
|
end
|
|
end
|
|
|