local mod = DBM:NewMod(2490, "DBM-Party-Dragonflight", 4, 1199) local L = mod:GetLocalizedStrings() mod:SetRevision("20230508204330") mod:SetCreatureID(189340) mod:SetEncounterID(2613) --mod:SetUsedIcons(1, 2, 3) mod:SetHotfixNoticeRev(20230507000000) --mod:SetMinSyncRevision(20211203000000) --mod.respawnTime = 29 mod.sendMainBossGUID = true mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_START 373733 373742 375056", -- "SPELL_CAST_SUCCESS", "SPELL_AURA_APPLIED 374655 375057 388523", "SPELL_AURA_APPLIED_DOSE 374655", "SPELL_AURA_REFRESH 374655", -- "SPELL_AURA_APPLIED_DOSE", "SPELL_AURA_REMOVED 374655 388523 375055", "SPELL_PERIODIC_DAMAGE 374854", "SPELL_PERIODIC_MISSED 374854" -- "UNIT_SPELLCAST_SUCCEEDED boss1" ) --TODO, verify dragon strike target scan and spear target scan --[[ (ability.id = 373733 or ability.id = 373742 or ability.id = 373424 or ability.id = 375056) and type = "begincast" or ability.id = 374655 or (ability.id = 388523 or ability.id = 375055) and (type = "applybuff" or type = "removebuff" or type = "applydebuff" or type = "removedebuff") or type = "dungeonencounterstart" or type = "dungeonencounterend" --]] local warnDragonStrike = mod:NewTargetNoFilterAnnounce(373733, 3) local warnGroundingSpear = mod:NewTargetNoFilterAnnounce(373424, 3) local warnFetterStack = mod:NewStackAnnounce(374655, 1) local warnFetter = mod:NewTargetNoFilterAnnounce(374655, 1)--Boss Only --local specWarnInfusedStrikes = mod:NewSpecialWarningStack(361966, nil, 8, nil, nil, 1, 6) local specWarnMagmaWave = mod:NewSpecialWarningDodge(373742, nil, nil, nil, 2, 2) --local yellInfusedStrikes = mod:NewYell(361966) local specWarnGroundingSpear = mod:NewSpecialWarningYou(373424, nil, nil, nil, 1, 2) local yellGroundingSpear = mod:NewYell(373424) local specWarnFieryFocus = mod:NewSpecialWarningInterrupt(375056, nil, nil, nil, 1, 13) local specWarnGTFO = mod:NewSpecialWarningGTFO(374854, nil, nil, nil, 1, 8) local timerDragonStrikeCD = mod:NewCDTimer(12.1, 373733, nil, nil, nil, 3, nil, DBM_COMMON_L.BLEED_ICON)--12 but lowest spell queue priority, it's often delayed by several more seconds local timerMagmaWaveCD = mod:NewCDTimer(12.1, 373742, nil, nil, nil, 3)--Actual CD still not known, since you'd never fully see it unhindered by blade lock or reset by fetter local timerGroundingSpearCD = mod:NewCDTimer(8.9, 373424, nil, nil, nil, 3) local timerFetter = mod:NewTargetTimer(12, 374655, nil, nil, nil, 5, nil, DBM_COMMON_L.DAMAGE_ICON) local timerFieryFocusCD = mod:NewCDTimer(30, 375056, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON..DBM_COMMON_L.DEADLY_ICON) --local berserkTimer = mod:NewBerserkTimer(600) --mod:AddRangeFrameOption("8") --mod:AddInfoFrameOption(361651, true) --mod:AddSetIconOption("SetIconOnStaggeringBarrage", 361018, true, false, {1, 2, 3}) mod.vb.magmawaveCount = 0 mod.vb.focusInProgress = false mod.vb.bossFettered = false function mod:DragonStrikeTarget(targetname) if not targetname then return end warnDragonStrike:Show(targetname) end function mod:OnCombatStart(delay) self.vb.magmawaveCount = 0 self.vb.focusInProgress = false self.vb.bossFettered = false if self:IsMythic() then timerDragonStrikeCD:Start(3.3-delay) timerMagmaWaveCD:Start(5.1-delay) timerGroundingSpearCD:Start(10.5-delay) timerFieryFocusCD:Start(29.2-delay) else--Heroic, needs more sample data, cause it could just be a variant starter order if first dragon strike not cast within it's first CD window timerMagmaWaveCD:Start(6.2-delay) timerDragonStrikeCD:Start(13.1-delay) timerGroundingSpearCD:Start(25.3-delay) timerFieryFocusCD:Start(31-delay) end end --function mod:OnCombatEnd() -- if self.Options.RangeFrame then -- DBM.RangeCheck:Hide() -- end -- if self.Options.InfoFrame then -- DBM.InfoFrame:Hide() -- end --end function mod:SPELL_CAST_START(args) local spellId = args.spellId if spellId == 373733 then self:ScheduleMethod(0.2, "BossTargetScanner", args.sourceGUID, "DragonStrikeTarget", 0.1, 8, true) -- timerDragonStrikeCD:Start() elseif spellId == 373742 then self.vb.magmawaveCount = self.vb.magmawaveCount + 1 specWarnMagmaWave:Show() specWarnMagmaWave:Play("watchwave") timerMagmaWaveCD:Start() -- elseif spellId == 373424 then -- timerGroundingSpearCD:Start() elseif spellId == 375056 then self.vb.focusInProgress = true specWarnFieryFocus:Show(args.sourceName) specWarnFieryFocus:Play("chainboss") --Blade lock does NOT reset existing CD timers --they'll queue up and cast one after another when blade lock ends --^Old info. CDs now do reset? --timerGroundingSpearCD:Stop() --timerMagmaWaveCD:Stop() --timerDragonStrikeCD:Stop() --timerFieryFocusCD:Stop() end end --[[ function mod:SPELL_CAST_SUCCESS(args) local spellId = args.spellId if spellId == 362805 then end end --]] function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 388523 or spellId == 374655 then if spellId == 388523 then--12 second stun self.vb.bossFettered = true warnFetter:Show(args.destName) timerFetter:Start(args.destName) --Stop timers, since they'll reset on fetter ending, most of the time anyways timerGroundingSpearCD:Stop() timerMagmaWaveCD:Stop() timerDragonStrikeCD:Stop() timerFieryFocusCD:Stop() else if self:IsMythic() then local amount = args.amount or 1 if amount < 3 then warnFetterStack:Show(args.destName, amount) end end end elseif spellId == 375057 then if args:IsPlayer() then specWarnGroundingSpear:Show() specWarnGroundingSpear:Play("targetyou") yellGroundingSpear:Yell() elseif not self:IsMythic() then--On non mythic only one target, else everyone gets it so no need to target announce warnGroundingSpear:Show(args.destName) end end end mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED --mod.SPELL_AURA_REFRESHED = mod.SPELL_AURA_APPLIED function mod:SPELL_AURA_REMOVED(args) local spellId = args.spellId if spellId == 388523 then self.vb.bossFettered = false timerFetter:Stop(args.destName) --Fetter on other hand does seem to hard reset things, to an extent if not self.vb.focusInProgress then timerMagmaWaveCD:Start(9) timerDragonStrikeCD:Start(15.1) timerGroundingSpearCD:Start(27.2) timerFieryFocusCD:Start(30.9) else --GG, boss bugged for you and he's gonna come out of this phase and recast Fiery Focus Immediately DBM:Debug("Bugged Boss Detected, Good Luck (and also review this log later)") end elseif spellId == 374655 and not self:IsMythic() then timerFieryFocusCD:AddTime(2) elseif spellId == 375055 then--Fiery Focus Removed self.vb.focusInProgress = false if not self.vb.bossFettered then timerMagmaWaveCD:Start(6.8) timerDragonStrikeCD:Start(13.4) timerGroundingSpearCD:Start(25.7) timerFieryFocusCD:Start(30.2) end end end function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName) if spellId == 374854 and destGUID == UnitGUID("player") and self:AntiSpam(3, 2) then specWarnGTFO:Show(spellName) specWarnGTFO:Play("watchfeet") end end mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE --[[ function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId) if spellId == 353193 then end end --]]