local mod	= DBM:NewMod(1485, "DBM-Party-Legion", 4, 721)
local L		= mod:GetLocalizedStrings()

mod:SetRevision("20230504231118")
mod:SetCreatureID(94960)
mod:SetEncounterID(1805)
mod:SetHotfixNoticeRev(20221127000000)
mod.sendMainBossGUID = true

mod:RegisterCombat("combat")

mod:RegisterEventsInCombat(
	"SPELL_CAST_START 191284 193235 193092 188404",
	"SPELL_PERIODIC_DAMAGE 193234",
	"SPELL_PERIODIC_MISSED 193234"
)

--[[
(ability.id = 191284 or ability.id = 193235 or ability.id = 193092) and type = "begincast"
 or ability.id = 188404 and type = "cast"
 or type = "dungeonencounterstart" or type = "dungeonencounterend"
--]]
local warnBreath					= mod:NewCountAnnounce(188404, 4)
local warnDancingBlade				= mod:NewCountAnnounce(193235, 3)
local warnSweep						= mod:NewSpellAnnounce(193092, 2, nil, "Tank")

local specWarnHornOfValor			= mod:NewSpecialWarningSpell(191284, nil, nil, nil, 2, 2)
local specWarnDancingBlade			= mod:NewSpecialWarningGTFO(193235, nil, nil, nil, 1, 8)
--local yellDancingBlade				= mod:NewYell(193235)

local timerSweepCD					= mod:NewCDTimer(16.9, 193092, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
local timerDancingBladeCD			= mod:NewCDTimer(10, 193235, nil, nil, nil, 3)
local timerHornCD					= mod:NewCDTimer(43.8, 191284, nil, nil, nil, 2)
local timerBreathCast				= mod:NewCastCountTimer(43.8, 188404, nil, nil, nil, 3)

mod.vb.bladeCount = 0
mod.vb.breathCount = 0

function mod:OnCombatStart(delay)
	self.vb.bladeCount = 0
	timerDancingBladeCD:Start(5.2-delay)
	timerHornCD:Start(10.8-delay)
	timerSweepCD:Start(15.7-delay)
end

function mod:SPELL_CAST_START(args)
	local spellId = args.spellId
	if spellId == 191284 then
		self.vb.breathCount = 0
		specWarnHornOfValor:Show()
		specWarnHornOfValor:Play("breathsoon")
		timerBreathCast:Start(8, 1)
		timerHornCD:Start()
	elseif spellId == 193235 then
		self.vb.bladeCount = self.vb.bladeCount + 1
		warnDancingBlade:Show(self.vb.bladeCount)
		--self:BossTargetScanner(94960, "BladeTarget", 0.1, 20, true, nil, nil, nil, true)
		if self.vb.bladeCount % 2 == 0 then
			timerDancingBladeCD:Start(11.2)
		else
			timerDancingBladeCD:Start(31.1)
		end
	elseif spellId == 188404 then
		self.vb.breathCount = self.vb.breathCount + 1
		warnBreath:Show(self.vb.breathCount)
		if self.vb.breathCount < 3 then
			timerBreathCast:Start(5, self.vb.breathCount+1)
		end
	elseif spellId == 193092 then
		warnSweep:Show()
		timerSweepCD:Start()
	end
end

function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId)
	if spellId == 193234 and destGUID == UnitGUID("player") and self:AntiSpam(2, 1) then
		specWarnDancingBlade:Show()
		specWarnDancingBlade:Play("watchfeet")
	end
end
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
