local mod	= DBM:NewMod(1694, "DBM-Party-Legion", 9, 777)
local L		= mod:GetLocalizedStrings()

mod.statTypes = "normal,heroic,mythic"

mod:SetRevision("20220116042005")
mod:SetCreatureID(101951)
mod:SetEncounterID(1845)

mod:RegisterCombat("combat")

mod:RegisterEventsInCombat(
	"SPELL_AURA_APPLIED 202062",
	"SPELL_AURA_REMOVED 202062",
	"SPELL_CAST_START 201672 201960",
	"SPELL_CAST_SUCCESS 202062 201379"
)

local warnBreath					= mod:NewSpellAnnounce(201379, 2, nil, "Tank")

local specWarnRelentlessStorm		= mod:NewSpecialWarningDodge(201672, nil, nil, nil, 2, 2)
local specWarnFrigidWinds			= mod:NewSpecialWarningMoveAway(201672, nil, nil, nil, 1, 2)
local specWarnIceBomb				= mod:NewSpecialWarningDodge(201960, nil, nil, nil, 3, 2)

local timerRelentlessStormCD		= mod:NewNextTimer(14, 201672, nil, nil, nil, 3)--14, 47 alternating
local timerFrigidWindsCD			= mod:NewNextTimer(61, 202062, nil, nil, nil, 3, nil, DBM_COMMON_L.HEROIC_ICON)
local timerIceBombCD				= mod:NewNextTimer(61, 201960, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON)
local timerFrostBreathCD			= mod:NewNextTimer(61, 201379, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)

mod:AddRangeFrameOption(8, 202062)

mod.vb.stormCount = 0
mod.vb.breathCount = 0

function mod:OnCombatStart(delay)
	self.vb.stormCount = 0
	self.vb.breathCount = 0
	timerFrostBreathCD:Start(5-delay)
	timerRelentlessStormCD:Start(11-delay)
	if not self:IsNormal() then
		timerFrigidWindsCD:Start(36.5-delay)
	end
	timerIceBombCD:Start(45-delay)
end

function mod:OnCombatEnd()
	if self.Options.RangeFrame then
		DBM.RangeCheck:Hide()
	end
end

function mod:SPELL_CAST_SUCCESS(args)
	local spellId = args.spellId
	if spellId == 202062 then
		timerFrigidWindsCD:Start()
	elseif spellId == 201379 then
		self.vb.breathCount = self.vb.breathCount + 1
		warnBreath:Show()
		if self.vb.breathCount % 2 == 0 then
			timerFrostBreathCD:Start(35)
		else
			timerFrostBreathCD:Start(26)
		end
	end
end

function mod:SPELL_AURA_APPLIED(args)
	local spellId = args.spellId
	if spellId == 202062 and args:IsPlayer() then
		specWarnFrigidWinds:Show()
		specWarnFrigidWinds:Play("scatter")
		if self.Options.RangeFrame then
			DBM.RangeCheck:Show(8)
		end
	end
end

function mod:SPELL_AURA_REMOVED(args)
	local spellId = args.spellId
	if spellId == 202062 and args:IsPlayer() and self.Options.RangeFrame then
		DBM.RangeCheck:Hide()
	end
end

function mod:SPELL_CAST_START(args)
	local spellId = args.spellId
	if spellId == 201672 then
		self.vb.stormCount = self.vb.stormCount + 1
		specWarnRelentlessStorm:Show()
		specWarnRelentlessStorm:Play("watchstep")
		if self.vb.stormCount % 2 == 0 then
			timerRelentlessStormCD:Start(47)
		else
			timerRelentlessStormCD:Start(14)
		end
	elseif spellId == 201960 then
		specWarnIceBomb:Show()
		specWarnIceBomb:Play("findshelter")
		timerIceBombCD:Start()
	end
end
