local mod = DBM:NewMod(2514, "DBM-Party-Dragonflight", 5, 1201) local L = mod:GetLocalizedStrings() mod:SetRevision("20240501102915") mod:SetCreatureID(190609) mod:SetEncounterID(2565) mod:SetHotfixNoticeRev(20221015000000) --mod:SetMinSyncRevision(20211203000000) --mod.respawnTime = 29 mod.sendMainBossGUID = true mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_START 374361 388822", "SPELL_CAST_SUCCESS 374343", "SPELL_AURA_APPLIED 389011 374350 389007", "SPELL_AURA_APPLIED_DOSE 389011", "SPELL_AURA_REMOVED 374350 389011" ) --TODO, anounce https://www.wowhead.com/beta/spell=388901/arcane-rift spawns? --TOOD, how frequent is https://www.wowhead.com/beta/spell=388951/uncontrolled-energy , announce them if not frequent? Seems like it'll ramp up fast though --TODO, GTFO for arcane rift, could not find damage spellId for it --TODO, add arcane missiles? i feel like this is something she probably casts very frequently --Notes, Power Vaccume triggers 4 second ICD, Energy Bomb Triggers 8.5 ICD on Vaccuum but only 7 second ICD on Breath, Astraol breath triggers 7.5 ICD --Notes, All of ICD adjustments can be done but for a 5 man boss with 3 abilities it seems overkill. Only perform correction on one case for now --[[ (ability.id = 374361 or ability.id = 388822 or ability.id = 439488) and type = "begincast" or ability.id = 374343 and type = "cast" or type = "dungeonencounterstart" or type = "dungeonencounterend" --]] local warnOverwhelmingPoweer = mod:NewCountAnnounce(389011, 3, nil, nil, DBM_CORE_L.AUTO_ANNOUNCE_OPTIONS.stack:format(389011))--Typical stack warnings have amount and playername, but since used as personal, using count object to just display amount then injecting option text for stack local warnEnergyBomb = mod:NewTargetAnnounce(374352, 3) local specWarnAstralBreath = mod:NewSpecialWarningDodge(374361, nil, nil, nil, 2, 2) local specWarnPowerVacuum = mod:NewSpecialWarningRun(388822, nil, nil, nil, 4, 2) local specWarnEnergyBomb = mod:NewSpecialWarningMoveAway(374352, nil, nil, nil, 1, 2) local yellEnergyBomb = mod:NewYell(374352) local yellEnergyBombFades = mod:NewShortFadesYell(374352) local specWarnGTFO = mod:NewSpecialWarningGTFO(389007, nil, nil, nil, 1, 8) local timerAstralBreathCD = mod:NewCDTimer(26.3, 374361, nil, nil, nil, 3)--26-32 local timerPowerVacuumCD = mod:NewCDTimer(21, 388822, nil, nil, nil, 2)--22-29 local timerEnergyBombCD = mod:NewCDTimer(14.1, 374352, nil, nil, nil, 3)--14.1-20 mod:AddInfoFrameOption(389011, true) local playerDebuffCount = 0 function mod:OnCombatStart(delay) timerEnergyBombCD:Start(15.9-delay) timerPowerVacuumCD:Start(24.9-delay) timerAstralBreathCD:Start(28.1-delay) if self.Options.InfoFrame then DBM.InfoFrame:SetHeader(DBM:GetSpellName(389011)) DBM.InfoFrame:Show(5, "playerdebuffstacks", 389011) end end function mod:OnCombatEnd() if self.Options.InfoFrame then DBM.InfoFrame:Hide() end end function mod:SPELL_CAST_START(args) local spellId = args.spellId if spellId == 374361 then specWarnAstralBreath:Show() specWarnAstralBreath:Play("breathsoon") timerAstralBreathCD:Start() elseif spellId == 388822 then specWarnPowerVacuum:Show() specWarnPowerVacuum:Play("justrun") timerPowerVacuumCD:Start() end end function mod:SPELL_CAST_SUCCESS(args) local spellId = args.spellId if spellId == 374343 then timerEnergyBombCD:Start() local remaining = timerPowerVacuumCD:GetRemaining() if remaining < 8.5 then local adjust = 8.5 - remaining timerPowerVacuumCD:AddTime(adjust) DBM:Debug("timerPowerVacuumCD extended by: "..adjust) end end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 389011 and args:IsPlayer() then local amount = args.amount or 1 playerDebuffCount = amount warnOverwhelmingPoweer:Show(amount) elseif spellId == 374350 then warnEnergyBomb:CombinedShow(0.3, args.destName) if args:IsPlayer() then specWarnEnergyBomb:Show() if playerDebuffCount == 3 then--Will spawn rift when it expires, runout specWarnEnergyBomb:Play("runout") else specWarnEnergyBomb:Play("scatter") end yellEnergyBomb:Yell() yellEnergyBombFades:Countdown(spellId) end elseif spellId == 389007 and args:IsPlayer() and self:AntiSpam(2, 4) then specWarnGTFO:Show(args.spellName) specWarnGTFO:Play("watchfeet") end end mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED function mod:SPELL_AURA_REMOVED(args) local spellId = args.spellId if spellId == 374350 then if args:IsPlayer() then yellEnergyBombFades:Cancel() end elseif spellId == 389011 and args:IsPlayer() then playerDebuffCount = 0 end end