local mod	= DBM:NewMod(2505, "DBM-Party-Dragonflight", 6, 1203)
local L		= mod:GetLocalizedStrings()

mod:SetRevision("20231029212301")
mod:SetCreatureID(186739)
mod:SetEncounterID(2585)
mod:SetHotfixNoticeRev(20230103000000)
--mod:SetMinSyncRevision(20211203000000)
--mod.respawnTime = 29
mod.sendMainBossGUID = true

mod:RegisterCombat("combat")

mod:RegisterEventsInCombat(
	"SPELL_CAST_START 372222 385578 384223 373932 384132",
	"SPELL_AURA_REMOVED 384132"
)

--TODO, change arcane orb to personal alert if target scanner works or remove yell if it doesn't
--TODO, verify post hotfix timers for new mana drain rate 03-13-23
--[[
(ability.id = 372222 or ability.id = 385578 or ability.id = 384223 or ability.id = 384132) and type = "begincast"
 or ability.id = 384132 and type = "removebuff"
 or type = "dungeonencounterstart" or type = "dungeonencounterend"
--]]
--https://www.warcraftlogs.com/reports/1fvXGDK69nmq3MA7#fight=1&pins=2%24Off%24%23244F4B%24expression%24(ability.id%20%3D%20372222%20or%20ability.id%20%3D%20385578%20or%20ability.id%20%3D%20384223%20or%20ability.id%20%3D%20384132)%20and%20type%20%3D%20%22begincast%22%0A%20or%20ability.id%20%3D%20384132%20and%20type%20%3D%20%22removebuff%22%0A%20or%20type%20%3D%20%22dungeonencounterstart%22%20or%20type%20%3D%20%22dungeonencounterend%22&view=events
local warnSummonDraconicImage					= mod:NewSpellAnnounce(384223, 3)

local specWarnArcaneCleave						= mod:NewSpecialWarningSpell(372222, nil, nil, nil, 1, 2)
local specWarnAncientOrb						= mod:NewSpecialWarningDodge(385578, nil, nil, nil, 2, 2)
local yellAncientOrb							= mod:NewYell(385578)
local specWarnIllusionaryBolt					= mod:NewSpecialWarningInterrupt(373932, "HasInterrupt", nil, nil, 1, 2)
local specWarnOverwhelmingEnergy				= mod:NewSpecialWarningSpell(384132, nil, nil, nil, 2, 2)

local timerArcaneCleaveCD						= mod:NewCDTimer(13.3, 372222, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)--13.3-15
local timerAncientOrbCD							= mod:NewCDTimer(15.7, 385578, nil, nil, nil, 3)
local timerSummonDraconicImageCD				= mod:NewCDTimer(14.2, 384223, nil, nil, nil, 1)
local timerOverwhelmingenergyCD					= mod:NewCDTimer(35, 384132, nil, nil, nil, 6)

function mod:OrbTarget(targetname)
	if not targetname then return end
	if targetname == UnitName("player") then
		yellAncientOrb:Yell()
	end
end

function mod:OnCombatStart(delay)
	timerSummonDraconicImageCD:Start(3.5-delay)
	timerArcaneCleaveCD:Start(5-delay)
	timerAncientOrbCD:Start(10.1-delay)
	timerOverwhelmingenergyCD:Start(38.7-delay)
end

function mod:SPELL_CAST_START(args)
	local spellId = args.spellId
	if spellId == 372222 then
		if self:IsTanking("player", "boss1", nil, true) then
			specWarnArcaneCleave:Show()
			specWarnArcaneCleave:Play("shockwave")
		end
		timerArcaneCleaveCD:Start()
	elseif spellId == 385578 then
		self:ScheduleMethod(0.2, "BossTargetScanner", args.sourceGUID, "OrbTarget", 0.1, 8, true)
		specWarnAncientOrb:Show()
		specWarnAncientOrb:Play("watchorb")
		timerAncientOrbCD:Start()
	elseif spellId == 384223 then
		warnSummonDraconicImage:Show()
		timerSummonDraconicImageCD:Start()
	elseif spellId == 373932 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
		specWarnIllusionaryBolt:Show(args.sourceName)
		specWarnIllusionaryBolt:Play("kickcast")
	elseif spellId == 384132 then--Overwhelming Energy
		timerArcaneCleaveCD:Stop()
		timerAncientOrbCD:Stop()
		timerSummonDraconicImageCD:Stop()
		specWarnOverwhelmingEnergy:Show()
		specWarnOverwhelmingEnergy:Play("phasechange")
	end
end

function mod:SPELL_AURA_REMOVED(args)
	local spellId = args.spellId
	if spellId == 384132 then--Overwhelming Energy
		timerSummonDraconicImageCD:Start(4.7)--4.7-5.7
		timerArcaneCleaveCD:Start(7.1)--7.1-8.1
		timerAncientOrbCD:Start(12)--12-13
		timerOverwhelmingenergyCD:Start(70)
	end
end
