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.

127 lines
4.7 KiB

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