local mod = DBM:NewMod(2480, "DBM-VaultoftheIncarnates", nil, 1200) local L = mod:GetLocalizedStrings() mod:SetRevision("20230323034620") mod:SetCreatureID(184972) mod:SetEncounterID(2587) mod:SetUsedIcons(1, 2, 3, 4, 5) mod:SetHotfixNoticeRev(20221215000000) mod:SetMinSyncRevision(20221215000000) --mod.respawnTime = 29 mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_START 370307 390715 394917 370615 396023 396040", "SPELL_CAST_SUCCESS 394917 396022", "SPELL_AURA_APPLIED 370597 371562 390715 394906 396094", "SPELL_AURA_APPLIED_DOSE 394906", "SPELL_AURA_REMOVED 370597 371562 390715 396094 370307", "SPELL_PERIODIC_DAMAGE 370648", "SPELL_PERIODIC_MISSED 370648", "UNIT_DIED" -- "UNIT_SPELLCAST_SUCCEEDED boss1" ) --[[ (ability.id = 370307 or ability.id = 390715 or ability.id = 394917 or ability.id = 370615 or ability.id = 396023) and type = "begincast" or (ability.id = 396022 or ability.id = 394917) and type = "cast" or ability.id = 370307 and type = "removebuff" or ability.id = 390715 and type = "applydebuff" --]] --Stage One: Army of Talon mod:AddTimerLine(DBM:EJ_GetSectionInfo(26001)) local warnFlamerift = mod:NewTargetNoFilterAnnounce(390715, 2) local warnBurningWound = mod:NewStackAnnounce(394906, 2, nil, "Tank|Healer") local specWarnFlamerift = mod:NewSpecialWarningMoveAway(390715, nil, nil, nil, 1, 2) local yellFlamerift = mod:NewShortYell(390715) local yellFlameriftFades = mod:NewShortFadesYell(390715) local specWarnGreaterFlamerift = mod:NewSpecialWarningTaunt(396094, nil, nil, nil, 1, 2) local specWarnMoltenCleave = mod:NewSpecialWarningDodgeCount(370615, nil, nil, nil, 2, 2) local specWarnBurningWound = mod:NewSpecialWarningStack(394906, nil, 6, nil, nil, 1, 6) local specWarnBurningWoundTaunt = mod:NewSpecialWarningTaunt(394906, false, nil, 2, 1, 2) local specWarnIncineratingRoar = mod:NewSpecialWarningCount(396023, nil, nil, nil, 2, 2) local specWarnMoltenSpikes = mod:NewSpecialWarningDodgeCount(396022, nil, nil, nil, 2, 2) local specWarnGTFO = mod:NewSpecialWarningGTFO(370648, nil, nil, nil, 1, 8) local timerMoltenCleaveCD = mod:NewCDCountTimer(29.9, 370615, nil, nil, nil, 3) local timerFlameriftCD = mod:NewCDCountTimer(28.9, 390715, nil, nil, nil, 3, nil, DBM_COMMON_L.DAMAGE_ICON) local timerIncineratingRoarCD = mod:NewCDCountTimer(23.9, 396023, nil, nil, nil, 2, nil, DBM_COMMON_L.HEALER_ICON) local timerMoltenSpikesCD = mod:NewCDCountTimer(21.4, 396022, nil, nil, nil, 3) --local berserkTimer = mod:NewBerserkTimer(600) --mod:AddInfoFrameOption(361651, true) mod:AddRangeFrameOption(5, 390715) mod:GroupSpells(390715, 396094) ---Frenzied Tarasek mod:AddTimerLine(DBM:EJ_GetSectionInfo(26005)) local warnKillOrder = mod:NewTargetAnnounce(370597, 3) local specWarnKillOrder = mod:NewSpecialWarningYou(370597, nil, nil, nil, 1, 2) mod:AddNamePlateOption("NPAuraOnKillOrder", 370597, true) mod:AddNamePlateOption("NPAuraOnRampage", 371562, true) --Flamescale Captain (Mythic) mod:AddTimerLine(DBM:GetSpellInfo(396039)) local warnLeapingFlames = mod:NewSpellAnnounce(394917, 3) local specWarnPyroBlast = mod:NewSpecialWarningInterruptCount(396040, "HasInterrupt", nil, nil, 1, 2) local timerLeapingFlamesCD = mod:NewCDTimer(30.2, 394917, nil, nil, nil, 3, nil, DBM_COMMON_L.HEALER_ICON..DBM_COMMON_L.MAGIC_ICON) mod:AddSetIconOption("SetIconOnCaptain", 396039, true, 5, {8}) --Stage Two: Army of Flame mod:AddTimerLine(DBM:EJ_GetSectionInfo(26004)) local specWarnCollapsingArmy = mod:NewSpecialWarningCount(370307, nil, nil, nil, 3, 2) local timerCollapsingArmyCD = mod:NewCDCountTimer(94, 370307, nil, nil, nil, 2, nil, DBM_COMMON_L.DEADLY_ICON) mod.vb.armyCount = 0 mod.vb.cleaveCount = 0 mod.vb.riftCount = 0 mod.vb.roarCount = 0 mod.vb.spikesCount = 0 local castsPerGUID = {} function mod:OnCombatStart(delay) table.wipe(castsPerGUID) self.vb.armyCount = 0 self.vb.cleaveCount = 0 self.vb.riftCount = 0 self.vb.roarCount = 0 self.vb.spikesCount = 0 timerIncineratingRoarCD:Start(9.8-delay, 1) timerFlameriftCD:Start(13.9-delay, 1) timerMoltenCleaveCD:Start(37.9-delay, 1) if self:IsHard() then timerMoltenSpikesCD:Start(21.8-delay, 1) end timerCollapsingArmyCD:Start(91.7-delay, 1) if self.Options.NPAuraOnKillOrder or self.Options.NPAuraOnRampage then DBM:FireEvent("BossMod_EnableHostileNameplates") end end function mod:OnCombatEnd() if self.Options.RangeFrame then DBM.RangeCheck:Hide() end -- if self.Options.InfoFrame then -- DBM.InfoFrame:Hide() -- end if self.Options.NPAuraOnKillOrder or self.Options.NPAuraOnRampage then DBM.Nameplate:Hide(true, nil, nil, nil, true, true) end end function mod:SPELL_CAST_START(args) local spellId = args.spellId if spellId == 370307 then self.vb.armyCount = self.vb.armyCount + 1 specWarnCollapsingArmy:Show(self.vb.armyCount) specWarnCollapsingArmy:Play("specialsoon") timerFlameriftCD:Stop() timerMoltenCleaveCD:Stop() timerIncineratingRoarCD:Stop() timerMoltenSpikesCD:Stop() elseif spellId == 390715 then self.vb.riftCount = self.vb.riftCount + 1 if self.vb.riftCount < 3 then--Cast 3x per rotation timerFlameriftCD:Start(nil, self.vb.riftCount+1) end elseif spellId == 394917 then warnLeapingFlames:Show() elseif spellId == 370615 then self.vb.cleaveCount = self.vb.cleaveCount + 1 specWarnMoltenCleave:Show(self.vb.cleaveCount) specWarnMoltenCleave:Play("shockwave") if self.vb.cleaveCount == 1 then--Only 2x per rotation timerMoltenCleaveCD:Start(nil, 2) end elseif spellId == 396023 then self.vb.roarCount = self.vb.roarCount + 1 specWarnIncineratingRoar:Show(self.vb.roarCount) specWarnIncineratingRoar:Play("aesoon") if self.vb.roarCount < 4 then--4 per rotation timerIncineratingRoarCD:Start(nil, self.vb.roarCount+1) end elseif spellId == 396040 then if not castsPerGUID[args.sourceGUID] then castsPerGUID[args.sourceGUID] = 0 if self.Options.SetIconOnCaptain then self:ScanForMobs(args.sourceGUID, 2, 8, 1, nil, 12, "SetIconOnCaptain") end 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 specWarnPyroBlast:Show(args.sourceName, count) if count < 6 then specWarnPyroBlast:Play("kick"..count.."r") else specWarnPyroBlast:Play("kickcast") end end end end function mod:SPELL_CAST_SUCCESS(args) local spellId = args.spellId if spellId == 394917 then--success used to start timer and update count due to stutter step recasts timerLeapingFlamesCD:Start(nil, args.sourceGUID) elseif spellId == 396022 then self.vb.spikesCount = self.vb.spikesCount + 1 specWarnMoltenSpikes:Show(self.vb.spikesCount) specWarnMoltenSpikes:Play(self.vb.spikesCount) if self.vb.spikesCount < 3 then timerMoltenSpikesCD:Start(nil, self.vb.spikesCount+1) end end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 370597 then warnKillOrder:CombinedShow(1, args.destName) if args:IsPlayer() then specWarnKillOrder:Show() specWarnKillOrder:Play("targetyou") if self.Options.NPAuraOnKillOrder then DBM.Nameplate:Show(true, args.sourceGUID, spellId) end end elseif spellId == 371562 then if self.Options.NPAuraOnRampage then DBM.Nameplate:Show(true, args.destGUID, spellId) end elseif spellId == 390715 or spellId == 396094 then if args:IsPlayer() then specWarnFlamerift:Show() specWarnFlamerift:Play("range5") yellFlamerift:Yell() yellFlameriftFades:Countdown(spellId) if self.Options.RangeFrame then DBM.RangeCheck:Show(5) end else local uId = DBM:GetRaidUnitId(args.destName) if self:IsTanking(uId) then specWarnGreaterFlamerift:Show(args.destName) specWarnGreaterFlamerift:Play("tauntboss") end end warnFlamerift:CombinedShow(0.5, args.destName) elseif spellId == 394906 then local amount = args.amount or 1 if amount >= 3 and self:AntiSpam(3, 1) then if amount >= 6 then if args:IsPlayer() then specWarnBurningWound:Show(amount) specWarnBurningWound:Play("stackhigh") else if not DBM:UnitDebuff("player", spellId) and not UnitIsDeadOrGhost("player") and not self:IsHealer() then specWarnBurningWoundTaunt:Show(args.destName) specWarnBurningWoundTaunt:Play("tauntboss") else warnBurningWound:Show(args.destName, amount) end end else warnBurningWound:Show(args.destName, amount) end end end end mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED function mod:SPELL_AURA_REMOVED(args) local spellId = args.spellId if spellId == 370597 then if args:IsPlayer() then if self.Options.NPAuraOnKillOrder then DBM.Nameplate:Hide(true, args.sourceGUID, spellId) end end elseif spellId == 371562 then if self.Options.NPAuraOnRampage then DBM.Nameplate:Hide(true, args.destGUID, spellId) end elseif spellId == 390715 or spellId == 396094 then if args:IsPlayer() then yellFlameriftFades:Cancel() if self.Options.RangeFrame then DBM.RangeCheck:Hide() end end elseif spellId == 370307 then--Army ending self.vb.roarCount = 0 self.vb.cleaveCount = 0 self.vb.riftCount = 0 self.vb.spikesCount = 0 timerIncineratingRoarCD:Start(10, 1) timerFlameriftCD:Start(13.9, 1) timerMoltenCleaveCD:Start(38, 1) if self:IsHard() then timerMoltenSpikesCD:Start(22, 1) end timerCollapsingArmyCD:Start(93, self.vb.armyCount+1) end end function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName) if spellId == 370648 and destGUID == UnitGUID("player") and self:AntiSpam(2, 2) 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 == 199233 then--Flamescale Captain castsPerGUID[args.destGUID] = nil timerLeapingFlamesCD:Stop(args.destGUID) end end