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.

623 lines
28 KiB

local wowToc, testBuild = DBM:GetTOC()
if (wowToc < 100200) and not testBuild then return end
local mod = DBM:NewMod(2553, "DBM-Raids-Dragonflight", 1, 1207)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20231107021301")
mod:SetCreatureID(208445)
mod:SetEncounterID(2731)
mod:SetUsedIcons(6, 7, 8)
mod:SetHotfixNoticeRev(20231021000000)
mod:SetMinSyncRevision(20231021000000)
mod.respawnTime = 29
mod:RegisterCombat("combat")
mod:RegisterEventsInCombat(
"SPELL_CAST_START 425889 426524 422614 418637 426206 417634 427252 427343 429973 421325",
"SPELL_CAST_SUCCESS 417653 419485 427299 428901",
"SPELL_AURA_APPLIED 425888 425468 420544 426387 423719 426249 426256 421316 427299 427306 421594 421407 418520 429032 428946 428901",
"SPELL_AURA_APPLIED_DOSE 426249 426256 421407 418520 429032 428946",
"SPELL_AURA_REMOVED 421316 427299 421594 428901",
-- "SPELL_AURA_REMOVED_DOSE",
"SPELL_PERIODIC_DAMAGE 417632",
"SPELL_PERIODIC_MISSED 417632",
"UNIT_DIED",
"INSTANCE_ENCOUNTER_ENGAGE_UNIT",
"UNIT_SPELLCAST_SUCCEEDED"
)
--[[
(ability.id = 425889 or ability.id = 426524 or ability.id = 422614 or ability.id = 418637 or ability.id = 426206 or ability.id = 417634 or ability.id = 427252 or ability.id = 427343 or ability.id = 429973 or ability.id = 421325) and type = "begincast"
or (ability.id = 417653 or ability.id = 419485 or ability.id = 427299 or ability.id = 428901) and type = "cast"
or ability.id = 421316 and (type = "applybuff" or type = "removebuff")
--]]
--TODO, repeat yells for igniting growth? depends on if it's few targets or everyone.
--TODO, https://www.wowhead.com/ptr-2/spell=426393/seed-of-life is probably cast on pull, so no reason to alert, unless cast more than once
--TODO, best way to track https://www.wowhead.com/ptr-2/spell=425531/dream-fatigue ? Infoframe?
--TODO, nameplate aura for 424997 on Seed of life? (IE do they have visible nameplates it'd be usefulf or)
--TODO, maybe infoframe for tracking Blazing Coal stacks?
--TODO, more with the tank stuff?
--General
local warnPhase = mod:NewPhaseChangeAnnounce(2, nil, nil, nil, nil, nil, 2)
local specWarnGTFO = mod:NewSpecialWarningGTFO(417632, nil, nil, nil, 1, 8)
--local berserkTimer = mod:NewBerserkTimer(600)
--Stage One: The Cycle of Flame
mod:AddTimerLine(DBM:EJ_GetSectionInfo(27241))
local warnForces = mod:NewCountAnnounce(417653, 3)
local warnBlisteringSplinters = mod:NewCountAnnounce(418520, 3, nil, nil, DBM_CORE_L.AUTO_ANNOUNCE_OPTIONS.stack:format(418520))--Player
--local warnDreamBlossom = mod:NewTargetNoFilterAnnounce(425468, 2, nil, false)--non filtered, but off by default
local warnScorchingRoots = mod:NewCountAnnounce(422614, 3)
local warnCharredTreant = mod:NewSpellAnnounce(417667, 2, nil, "Healer")
local warnRenewedTreant = mod:NewSpellAnnounce(417668, 1)
local warnScorchingBramblethorn = mod:NewTargetNoFilterAnnounce(426387, 2, nil, false)--Hella spammy. not to be defaulted
local warnNaturesBulwark = mod:NewSpellAnnounce(419485, 1)
local warnBlazingCoalescence = mod:NewCountAnnounce(426249, 2, nil, nil, DBM_CORE_L.AUTO_ANNOUNCE_OPTIONS.stack:format(426249))--Player
local warnBlazingCoalescenceBoss = mod:NewStackAnnounce(426256, 4)--Boss
local warnEverlastingBlaze = mod:NewCountAnnounce(429032, 4, nil, nil, DBM_CORE_L.AUTO_ANNOUNCE_OPTIONS.stack:format(429032))--Player
local warnAshenAsphyxiation = mod:NewStackAnnounce(428946, 3, nil, "Tank|Healer")
--local specWarnIgnitingGrowth = mod:NewSpecialWarningMoveAway(425888, nil, nil, nil, 1, 2, 4)
--local yellIgnitingGrowth = mod:NewShortYell(425888, nil, false)
--local specWarnDreamBlossom = mod:NewSpecialWarningYou(425468, nil, nil, nil, 1, 2)
--local yellDreamBlossom = mod:NewShortYell(425468, nil, false)
local specWarnFieryFlourish = mod:NewSpecialWarningInterruptCount(426524, "HasInterrupt", nil, nil, 1, 2)
--local specWarnScorchingPursuit = mod:NewSpecialWarningRun(420544, nil, nil, nil, 4, 2)--BW using 420546, but may change to 420544
--local yellScorchingPursuit = mod:NewShortYell(420544)
local specWarnScorchingBramblethorn = mod:NewSpecialWarningYou(426387, nil, nil, nil, 1, 2)
local specWarnFuriousCharge = mod:NewSpecialWarningRun(418637, nil, 100, nil, 4, 2)
local yellFuriousCharge = mod:NewShortYell(418637, 100)
local specWarnNaturesFury = mod:NewSpecialWarningTaunt(423719, nil, nil, nil, 1, 2)
local specWarnBlazingThornsSoak = mod:NewSpecialWarningSoakCount(426206, "-Healer", nil, nil, 1, 2)
local specWarnBlazingThornsAvoid = mod:NewSpecialWarningDodgeCount(426206, "-Healer", nil, nil, 1, 2)
local specWarnRagingInferno = mod:NewSpecialWarningMoveTo(417634, nil, 37625, nil, 3, 2)--Shortname Inferno
local timerIgnitingGrowthCD = mod:NewCDCountTimer(49, 425888, DBM_COMMON_L.POOLS.." (%s)", nil, nil, 3, nil, DBM_COMMON_L.MYTHIC_ICON)
local timerFieryForceofNatureCD = mod:NewCDCountTimer(11.8, 417653, DBM_COMMON_L.ADDS.." (%s)", nil, nil, 1)
local timerFieryFlourishCD = mod:NewCDNPTimer(11.8, 426524, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)--Nameplate only timer
local timerScorchingRootsCD = mod:NewCDCountTimer(49, 422614, DBM_COMMON_L.ROOTS.." (%s)", nil, nil, 3)
local timerFuriousChargeCD = mod:NewCDCountTimer(49, 418637, 100, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON)--SN "Charge"
local timerBlazingThornsCD = mod:NewCDCountTimer(49, 426206, DBM_COMMON_L.ORBS.." (%s)", nil, nil, 5, nil, DBM_COMMON_L.DAMAGE_ICON)
local timerRagingInfernoCD = mod:NewCDCountTimer(49, 417634, 37625, nil, nil, 2, nil, DBM_COMMON_L.DEADLY_ICON)--SN "Inferno"
mod:AddPrivateAuraSoundOption(425888, true, 425888, 1)--Igniting Growth
mod:AddPrivateAuraSoundOption(425468, true, 425468, 1)--Dream Blossom
mod:AddPrivateAuraSoundOption(420544, true, 420544, 4)--Scorching Pursuit
mod:AddSetIconOption("SetIconOnForces", 417653, true, 5, {8, 7, 6})
--Intermission: Unreborn Again
mod:AddTimerLine(DBM:EJ_GetSectionInfo(27242))
local warnConsumingFlame = mod:NewTargetNoFilterAnnounce(421316, 2)
local timerConsumingFlame = mod:NewBuffActiveTimer(16, 421316, nil, nil, nil, 6)
--Stage Two: Avatar of Ash
mod:AddTimerLine(DBM:EJ_GetSectionInfo(27243))
local warnFlashFire = mod:NewTargetNoFilterAnnounce(427299, 3, nil, "Healer")
local warnEncasedInAsh = mod:NewTargetNoFilterAnnounce(427306, 4, nil, "RemoveMagic")
local warnAshenCall = mod:NewCountAnnounce(421325, 2)
local warnSearingAsh = mod:NewCountAnnounce(421407, 2, nil, nil, DBM_CORE_L.AUTO_ANNOUNCE_OPTIONS.stack:format(426249))
--local warnAshenDevastation = mod:NewTargetNoFilterAnnounce(428901, 4, nil, nil, 167180)--Shortname "Bombs"
local specWarnFallingEmbers = mod:NewSpecialWarningSoakCount(427252, nil, nil, nil, 2, 2)
local specWarnFlashFire = mod:NewSpecialWarningMoveAway(427299, nil, nil, nil, 1, 2)--Blizzard didn't flag right spellids as private aura, so this probably still works for now
local yellFlashFire = mod:NewShortYell(427299)--Blizzard didn't flag right spellids as private aura, so this probably still works for now
local yellFlashFireFades = mod:NewShortFadesYell(427299)--Blizzard didn't flag right spellids as private aura, so this probably still works for now
local specWarnEncasedInAsh = mod:NewSpecialWarningYou(427306, nil, nil, nil, 1, 2)
local yellEncasedInAsh = mod:NewShortYell(427306)
local specWarnFireWhirl = mod:NewSpecialWarningDodgeCount(427343, nil, 86189, nil, 2, 2)
local specWarnSmolderingBackdraft = mod:NewSpecialWarningDefensive(429973, nil, nil, nil, 1, 2)
local specWarnSmolderingSuffocation = mod:NewSpecialWarningTaunt(421594, nil, nil, nil, 1, 2)
local yellSmolderingSuffocationRepeater = mod:NewIconRepeatYell(421594, DBM_CORE_L.AUTO_YELL_ANNOUNCE_TEXT.shortyell, false, nil, "YELL")--using custom yell text "%s" because of custom needs (it has to use not only icons but two asci emoji
--local specWarnAshenDevestation = mod:NewSpecialWarningMoveAway(428901, nil, 37859, nil, 1, 2, 4)
--local yellAshenDevestation = mod:NewShortYell(428901, 37859)--Shortname "Bomb"
--local yellAshenDevestationFades = mod:NewShortFadesYell(428901)
local timerFallingEmbersCD = mod:NewCDCountTimer(49, 427252, nil, nil, nil, 5, nil, DBM_COMMON_L.DEADLY_ICON)
local timerFlashFireCD = mod:NewCDCountTimer(49, 427299, L.HealAbsorb, nil, nil, 3)
local timerFireWhirlCD = mod:NewCDCountTimer(50, 427343, 86189, nil, nil, 3)--Shortname "Tornados"
local timerSmolderingBackdraftCD = mod:NewCDCountTimer(49, 429973, DBM_COMMON_L.FRONTAL.." (%s)", nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON)
local timerAshenCallCD = mod:NewCDCountTimer(11.8, 421325, DBM_COMMON_L.ADDS.." (%s)", nil, nil, 1, nil, DBM_COMMON_L.DAMAGE_ICON)
local timerAshenDevestationCD = mod:NewCDCountTimer(49, 428901, nil, nil, nil, 3, nil, DBM_COMMON_L.MYTHIC_ICON)
mod:AddPrivateAuraSoundOption(421461, true, 427299, 1)--Flash Fire
mod:AddPrivateAuraSoundOption(428901, true, 428901, 1)--Ashen Devestation
--Stage 1
mod.vb.ignitingCount = 0--Reused in stage 2 for Ashen Devestation
mod.vb.forcesCount = 0--Reused in Stage 2 for Ashen Call
mod.vb.treeIcon = 8
mod.vb.scorchingRootCount = 0--Reused in Stage 2 for Falling Embers
mod.vb.furiousChargeCount = 0--Reused in Stage 2 for Smoldering Backdraft
mod.vb.thornsCount = 0--Reused in Stage 2 for Flash Fire
mod.vb.infernoCount = 0--Reused in Stage 2 for Fire Whirl
local castsPerGUID = {}
local difficultyName = "normal"
local allTimers = {
["mythic"] = {
--Stage 1
--Fiery Force of Nature
[417653] = {6.5, 114.9, 109.6, 115.0},
--Blazing Thorns
[426206] = {31.3, 24.7, 24.7, 46.3, 65.6, 63.2, 24.7, 24.7, 46.5, 65.5},
--Furious Charge
[418637] = {22.3, 22.4, 22.5, 46.5, 22.2, 31.1, 13.4, 66.5, 22.4, 22.5, 46.6, 22.3, 31.1, 13.3},
--Scorching Roots
[422614] = {38.0, 120.0, 104.5, 120.2},
--Raging Inferno
[417634] = {101.3, 111.6, 112.1, 111.9},
--Igniting Growth (Mythic Only)
[425889] = {14.5, 133.6, 90.2, 133.9},
--Stage 2
--Falling Embers
[427252] = {},--Had no variations
--FlashFire
[427299] = {},--Lowest of each used until can figure out how to detect which sequence is used on demand
--Fire Whirl
[427343] = {},--Had no variation
--Smoldering backdraft
[421318] = {},--Had no variations
--Ashen Call
[421325] = {},--Lowest of each used until can figure out how to detect which sequence is used on demand
--Ashen Devestation
[428901] = {},--Lowest of each used until can figure out how to detect which sequence is used on demand
},
["heroic"] = {
--Stage 1 (same as mythic stage 1 likely)
--Fiery Force of Nature
[417653] = {6.7, 115.4, 110.3},
--6.7, 118.6
--Blazing Thorns
[426206] = {31.4, 24.8, 24.5, 46.8, 65.5},
--31.6, 24.6, 24.6, 50.1, 65.6
--Furious Charge
[418637] = {22.5, 22.3, 22.4, 46.9, 22.2, 31.3, 13.3, 67.0},
--22.6, 22.3, 22.4, 50.2, 22.2, 31.1, 13.3
--Scorching Roots
[422614] = {38.1, 120.5},
--38.1, 123.9
--Raging Inferno
[417634] = {101.7, 112.8},
--104.2
--Stage 2
--Falling Embers
[427252] = {7.4, 26.7, 25.0, 23.3, 30.0, 20.0, 25.0, 25.0, 25.0, 26.7, 23.3},
--7.4, 26.7, 25.0, 23.3, 30.1, 20.0, 25.0, 25.0, 25.0, 26.7, 23.3
--FlashFire
[427299] = {29.1, 46.7, 26.6, 36.7, 30.9, 37.5, 37.5},--Lowest times used of variations
--29.1, 46.7, 26.6, 36.7, 36.7, 37.5
--29.1, 46.7, 26.6, 42.5, 30.9, 37.5, 37.5
--Fire Whirl
[427343] = {54.0, 40.9, 32.5, 36.6, 36.7, 39.1},
--54.1, 40.9, 32.4, 36.7, 36.6, 39.2
--Smoldering backdraft
[429973] = {14.0, 25.9, 30.0, 19.1, 29.2, 20.7, 25.0, 24.2, 25.0, 26.7},--Lowest times used of variations
--14.0, 25.9, 30.0, 19.2, 29.2, 25.8, 25.0, 24.2, 25.0, 26.7
--14.1, 25.9, 30.0, 19.1, 29.2, 20.7, 30.0, 24.1, 25.0, 26.7
--Ashen Call
[421325] = {20.7, 44.2, 42.5, 42.5, 38.3, 40.8},
--20.7, 44.2, 42.5, 42.5, 38.3, 40.8
},
["normal"] = {--Likely obsolete and the same as heroic
--Stage 1
--Fiery Force of Nature
[417653] = {6.0, 113.4, 44.0, 64.7, 114.5},
--Blazing Thorns
[426206] = {14.0, 36.0, 74.5, 111.6, 36.0, 75.6},
--Furious Charge
[418637] = {20.0, 20.0, 20.0, 52.5, 19.9, 19.9, 20.0, 69.6, 20.0, 20.0, 53.5},
--Scorching Roots
[422614] = {30.1, 113.3, 108.7},
--Raging Inferno
[417634] = {100, 110.6, 111.6},
--Stage 2
--Falling Embers
[427252] = {7.3, 35.0, 20.0, 33.4, 16.7, 33.4, 25.0, 33.4, 16.7, 33.4, 16.7, 41.7, 16.7, 33.4, 16.7, 33.4},
--FlashFire
[427299] = {34.0, 45.0, 41.8, 41.8, 50.1, 50.2, 41.7, 41.7, 41.8},
--Fire Whirl
[427343] = {54.0, 50.1, 50.2, 41.7, 41.8, 41.8, 41.7, 50.1},
--Smoldering backdraft
[429973] = {17.3, 53.3, 58.5, 50.1, 50.1, 58.5, 50.0, 58.5},
--Ashen Call
[421325] = {25.7, 61.7, 50.1, 50.1, 58.5, 50.1, 58.4, 50.1},
},
}
local function smolderingYellRepeater(self)
local health = UnitHealth("player") / UnitHealthMax("player") * 100
if health < 75 then -- Only let players know when you are below 75%
local playerIcon = GetRaidTargetIndex("player")
local text = playerIcon and L.currentHealthIcon:format(playerIcon, health) or L.currentHealth:format(health)
yellSmolderingSuffocationRepeater:Yell(text)
end
self:Schedule(2, smolderingYellRepeater, self)
end
function mod:OnCombatStart(delay)
self:SetStage(1)
self.vb.ignitingCount = 0
self.vb.forcesCount = 0
self.vb.scorchingRootCount = 0
self.vb.furiousChargeCount = 0
self.vb.thornsCount = 0
self.vb.infernoCount = 0
table.wipe(castsPerGUID)
self:EnablePrivateAuraSound(425888, "runout", 2)--Igniting Growth
self:EnablePrivateAuraSound(425468, "targetyou", 2)--Dream Blossom. Bad sound, needs better?
self:EnablePrivateAuraSound(420544, "justrun", 2)--Scorching Pursuit
self:EnablePrivateAuraSound(421461, "runout", 2)--Flash Fire
self:EnablePrivateAuraSound(428901, "runout", 2)--Ashen Devastation
if self:IsMythic() then
difficultyName = "mythic"
timerFieryForceofNatureCD:Start(6.5-delay, 1)
timerIgnitingGrowthCD:Start(14.4-delay, 1)
timerFuriousChargeCD:Start(22.3-delay, 1)
timerBlazingThornsCD:Start(31.3-delay, 1)
timerScorchingRootsCD:Start(38-delay, 1)
timerRagingInfernoCD:Start(101-delay, 1)
elseif self:IsHeroic() then
--Pretty much same as mythic
difficultyName = "heroic"
timerFieryForceofNatureCD:Start(6.5-delay, 1)
timerIgnitingGrowthCD:Start(14.4-delay, 1)
timerFuriousChargeCD:Start(22.3-delay, 1)
timerBlazingThornsCD:Start(31.3-delay, 1)
timerScorchingRootsCD:Start(38-delay, 1)
timerRagingInfernoCD:Start(101-delay, 1)
else--Only normal vetted
difficultyName = "normal"
timerFieryForceofNatureCD:Start(6.1-delay, 1)
timerBlazingThornsCD:Start(14-delay, 1)
timerFuriousChargeCD:Start(20-delay, 1)
timerScorchingRootsCD:Start(30.1-delay, 1)
timerRagingInfernoCD:Start(100-delay, 1)
end
end
--function mod:OnCombatEnd()
-- if self.Options.RangeFrame then
-- DBM.RangeCheck:Hide()
-- 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"
difficultyName = "normal"
end
end
function mod:SPELL_CAST_START(args)
local spellId = args.spellId
if spellId == 425889 then
self.vb.ignitingCount = self.vb.ignitingCount + 1
local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.ignitingCount+1)
if timer then
timerIgnitingGrowthCD:Start(timer, self.vb.ignitingCount+1)
end
elseif spellId == 426524 then
-- timerFieryFlourishCD:Start(nil, args.sourceGUID)
if not castsPerGUID[args.sourceGUID] then--Shouldn't happen, but just in case
castsPerGUID[args.sourceGUID] = 0
if self.Options.SetIconOnForces then
self:ScanForMobs(args.sourceGUID, 2, self.vb.treeIcon, 1, nil, 12, "SetIconOnForces")
end
self.vb.treeIcon = self.vb.treeIcon - 1
end
castsPerGUID[args.sourceGUID] = castsPerGUID[args.sourceGUID] + 1
local count = castsPerGUID[args.sourceGUID]
if self:CheckInterruptFilter(args.sourceGUID, false, false) then--Count interrupt, so cooldown is not checked
specWarnFieryFlourish:Show(args.sourceName, count)
if count < 6 then
specWarnFieryFlourish:Play("kick"..count.."r")
else
specWarnFieryFlourish:Play("kickcast")
end
end
elseif spellId == 422614 then
self.vb.scorchingRootCount = self.vb.scorchingRootCount + 1
warnScorchingRoots:Show(self.vb.scorchingRootCount)
local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.scorchingRootCount+1)
if timer then
timerScorchingRootsCD:Start(timer, self.vb.scorchingRootCount+1)
end
elseif spellId == 418637 then
self.vb.furiousChargeCount = self.vb.furiousChargeCount + 1
if self:IsTanking("player", "boss1", nil, true) then
specWarnFuriousCharge:Show()
specWarnFuriousCharge:Play("justrun")
yellFuriousCharge:Yell()
end
local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.furiousChargeCount+1) or 20
if timer then
timerFuriousChargeCD:Start(timer, self.vb.furiousChargeCount+1)
end
elseif spellId == 426206 then
self.vb.thornsCount = self.vb.thornsCount + 1
if DBM:UnitDebuff("player", 429032) then--Everlasting Blaze
specWarnBlazingThornsAvoid:Show(self.vb.thornsCount)
specWarnBlazingThornsAvoid:Play("watchstep")
else
specWarnBlazingThornsSoak:Show(self.vb.thornsCount)
specWarnBlazingThornsSoak:Play("helpsoak")
end
local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.thornsCount+1)
if timer then
timerBlazingThornsCD:Start(timer, self.vb.thornsCount+1)
end
elseif spellId == 417634 then
self.vb.infernoCount = self.vb.infernoCount + 1
specWarnRagingInferno:Show(DBM_COMMON_L.SHIELD)
specWarnRagingInferno:Play("findshield")
local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.infernoCount+1) or 110.6
if timer then
timerRagingInfernoCD:Start(timer, self.vb.infernoCount+1)
end
elseif spellId == 427252 then
self.vb.scorchingRootCount = self.vb.scorchingRootCount + 1
specWarnFallingEmbers:Show(self.vb.scorchingRootCount)
specWarnFallingEmbers:Play("helpsoak")
local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.scorchingRootCount+1)
if timer then
timerFallingEmbersCD:Start(timer, self.vb.scorchingRootCount+1)
end
elseif spellId == 427343 then
self.vb.infernoCount = self.vb.infernoCount + 1
specWarnFireWhirl:Show(self.vb.infernoCount)
specWarnFireWhirl:Play("watchstep")
local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.infernoCount+1)
if timer then
timerFireWhirlCD:Start(timer, self.vb.infernoCount+1)
end
elseif spellId == 429973 then
self.vb.furiousChargeCount = self.vb.furiousChargeCount + 1
if self:IsTanking("player", "boss1", nil, true) then
specWarnSmolderingBackdraft:Show()
specWarnSmolderingBackdraft:Play("defensive")
end
local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.furiousChargeCount+1)
if timer then
timerSmolderingBackdraftCD:Start(timer, self.vb.furiousChargeCount+1)
end
elseif spellId == 421325 then
self.vb.forcesCount = self.vb.forcesCount + 1
warnAshenCall:Show(self.vb.forcesCount)
local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.forcesCount+1)
if timer then
timerAshenCallCD:Start(timer, self.vb.forcesCount+1)
end
end
end
function mod:SPELL_CAST_SUCCESS(args)
local spellId = args.spellId
if spellId == 417653 then
self.vb.forcesCount = self.vb.forcesCount + 1
warnForces:Show(self.vb.forcesCount)
self.vb.treeIcon = 8
local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.forcesCount+1)
if timer then
timerFieryForceofNatureCD:Start(timer, self.vb.forcesCount+1)
end
elseif spellId == 419485 then
--event fires for every player moving in and out of it, we just want to announce barrier is up per root, once
if not castsPerGUID[args.sourceGUID] then
castsPerGUID[args.sourceGUID] = 0
warnNaturesBulwark:Show()
end
elseif spellId == 427299 and self:AntiSpam(5, 1) then
self.vb.thornsCount = self.vb.thornsCount + 1
local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.thornsCount+1)
if timer then
timerFlashFireCD:Start(timer, self.vb.thornsCount+1)
end
elseif spellId == 428901 and self:AntiSpam(5, 2) then
self.vb.ignitingCount = self.vb.ignitingCount + 1
local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.ignitingCount+1)
if timer then
timerAshenDevestationCD:Start(timer, self.vb.ignitingCount+1)
end
end
end
function mod:SPELL_AURA_APPLIED(args)
local spellId = args.spellId
if spellId == 426387 then
if args:IsPlayer() then
specWarnScorchingBramblethorn:Show()
specWarnScorchingBramblethorn:Play("targetyou")
else
warnScorchingBramblethorn:Show(args.destName)
end
-- elseif spellId == 425888 then
-- if args:IsPlayer() then
-- specWarnIgnitingGrowth:Show()
-- specWarnIgnitingGrowth:Play("runout")
-- yellIgnitingGrowth:Yell()
-- end
-- elseif spellId == 425468 then
-- if args:IsPlayer() then
-- specWarnDreamBlossom:Show()
-- specWarnDreamBlossom:Play("targetyou")
-- yellDreamBlossom:Yell()
-- else
-- warnDreamBlossom:Show(args.destName)
-- end
-- elseif spellId == 420544 then
-- if args:IsPlayer() then
-- specWarnScorchingPursuit:Show()
-- specWarnScorchingPursuit:Play("justrun")
-- yellScorchingPursuit:Yell()
-- end
elseif spellId == 423719 and not args:IsPlayer() then
local uId = DBM:GetRaidUnitId(args.destName)
if self:IsTanking(uId) then--May be unnessesary, but precaution for a drycode, remove later
specWarnNaturesFury:Show(args.destName)
specWarnNaturesFury:Play("tauntboss")
end
elseif spellId == 421594 then
if args:IsPlayer() then
self:Unschedule(smolderingYellRepeater)
self:Schedule(2, smolderingYellRepeater, self)
else
local uId = DBM:GetRaidUnitId(args.destName)
if self:IsTanking(uId) then
specWarnSmolderingSuffocation:Show(args.destName)
specWarnSmolderingSuffocation:Play("tauntboss")
end
end
elseif spellId == 426249 then
if args:IsPlayer() then
-- warnBlazingCoalescence:Cancel()
-- warnBlazingCoalescence:Schedule(1, args.amount or 1)
warnBlazingCoalescence:Show(args.amount or 1)
end
elseif spellId == 429032 then
if args:IsPlayer() then
warnEverlastingBlaze:Cancel()
warnEverlastingBlaze:Schedule(1, args.amount or 1)
end
elseif spellId == 418520 then
if args:IsPlayer() then
local amount = args.amount or 1
if amount % 2 == 1 then -- 1, 3, 5...
warnBlisteringSplinters:Show(amount)
end
end
elseif spellId == 421407 then
warnSearingAsh:Show(args.amount or 1)
elseif spellId == 426256 then
warnBlazingCoalescenceBoss:Show(args.destName, args.amount or 1)
elseif spellId == 427299 then
warnFlashFire:CombinedShow(0.5, args.destName)
if args:IsPlayer() then
specWarnFlashFire:Show()
specWarnFlashFire:Play("runout")
specWarnFlashFire:Yell()
yellFlashFireFades:Countdown(spellId)
end
-- elseif spellId == 428901 then
-- warnAshenDevastation:CombinedShow(0.5, args.destName)
-- if args:IsPlayer() then
-- specWarnAshenDevestation:Show()
-- specWarnAshenDevestation:Play("runout")
-- yellAshenDevestation:Yell()
-- yellAshenDevestationFades:Countdown(spellId)
-- end
elseif spellId == 427306 then
warnEncasedInAsh:CombinedShow(0.5, args.destName)
if args:IsPlayer() then
specWarnEncasedInAsh:Show()
specWarnEncasedInAsh:Play("targetyou")
yellEncasedInAsh:Yell()
end
elseif spellId == 428946 then
warnAshenAsphyxiation:Show(args.destName, args.amount or 1)
elseif spellId == 421316 then--Consuming Flame
self:SetStage(1.5)
timerFieryForceofNatureCD:Stop()
timerScorchingRootsCD:Stop()
timerFuriousChargeCD:Stop()
timerBlazingThornsCD:Stop()
timerRagingInfernoCD:Stop()
timerIgnitingGrowthCD:Stop()
warnConsumingFlame:Show(args.destName)
timerConsumingFlame:Start()
end
end
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
function mod:SPELL_AURA_REMOVED(args)
local spellId = args.spellId
if spellId == 421316 then--Consuming Flame
self:SetStage(2)
self.vb.ignitingCount = 0--Reused in stage 2 for Ashen Devestation
self.vb.scorchingRootCount = 0--Reused in stage 2 for Fallen Embers
self.vb.forcesCount = 0--Reused in Stage 2 for Ashen Call
self.vb.furiousChargeCount = 0--Reused in Stage 2 for Smoldering Backdraft
self.vb.thornsCount = 0--Reused in Stage 2 for Flash Fire
self.vb.infernoCount = 0--Reused in Stage 2 for Fire Whirl
timerConsumingFlame:Stop()
warnPhase:Show(DBM_CORE_L.AUTO_ANNOUNCE_TEXTS.stage:format(2))
warnPhase:Play("ptwo")
if self:IsMythic() then
timerFallingEmbersCD:Start(7.4, 1)
timerSmolderingBackdraftCD:Start(14.1, 1)
timerAshenCallCD:Start(20.8, 1)
timerFlashFireCD:Start(29, 1)
timerAshenDevestationCD:Start(47.4, 1)
timerFireWhirlCD:Start(60, 1)
elseif self:IsHeroic() then
timerFallingEmbersCD:Start(7.4, 1)
timerSmolderingBackdraftCD:Start(14, 1)
timerAshenCallCD:Start(20.7, 1)
timerFlashFireCD:Start(29.1, 1)
timerFireWhirlCD:Start(54, 1)
else--Normal needs rechecking. Ashen and smoldering likely changed to match mythic and heroic
timerFallingEmbersCD:Start(7.3, 1)
timerSmolderingBackdraftCD:Start(17.3, 1)--14?
timerAshenCallCD:Start(25.7, 1)--20.7?
timerFlashFireCD:Start(34, 1)--29?
timerFireWhirlCD:Start(54, 1)
end
elseif spellId == 421594 then
if args:IsPlayer() then
self:Unschedule(smolderingYellRepeater)
end
end
end
--mod.SPELL_AURA_REMOVED_DOSE = mod.SPELL_AURA_REMOVED
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName)
if spellId == 417632 and destGUID == UnitGUID("player") and self:AntiSpam(3, 3) then
specWarnGTFO:Show(spellName)
specWarnGTFO:Play("watchfeet")
end
end
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 208459 then--fiery-treant
timerFieryFlourishCD:Stop(args.destGUID)
end
end
function mod:INSTANCE_ENCOUNTER_ENGAGE_UNIT()
for i = 1, 5 do
local unitID = "boss"..i
local GUID = UnitGUID(unitID)
if GUID and not castsPerGUID[GUID] then
castsPerGUID[GUID] = 0
local cid = self:GetCIDFromGUID(GUID)
if cid == 208459 then--Fiery Treant
timerFieryFlourishCD:Start(4, GUID)
if self.Options.SetIconOnForces then
self:ScanForMobs(GUID, 2, self.vb.treeIcon, 1, nil, 12, "SetIconOnForces")
end
self.vb.treeIcon = self.vb.treeIcon - 1
end
end
end
end
--"<36.79 01:24:52> [UNIT_SPELLCAST_SUCCEEDED] Scorching Roots(0.0%-0.0%){Target:Luxvertwo} -Charred Brambles- [[nameplate7:Cast-3-5770-2549-63-418655-00198E2244:418655]]",
--"<51.80 01:25:07> [UNIT_SPELLCAST_SUCCEEDED] Charred Brambles(100.0%-0.0%){Target:??} -Renewed Bramble Barrier- [[nameplate7:Cast-3-5770-2549-63-418653-00280E2253:418653]]",
--"<51.81 01:25:08> [UNIT_SPELLCAST_SUCCEEDED] Renewed Bramble Barrier(100.0%-0.0%){Target:??} -Nature's Bulwark- [[nameplate7:Cast-3-5770-2549-63-419485-002A8E2253:419485]]",
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
if spellId == 417667 and self:AntiSpam(3, 4) then
warnCharredTreant:Show()
elseif spellId == 417668 and self:AntiSpam(3, 5) then
warnRenewedTreant:Show()
elseif spellId == 418655 and self:AntiSpam(3, 6) then
--Roots healing warning
end
end