local mod	= DBM:NewMod(2153, "DBM-Party-BfA", 4, 1036)
local L		= mod:GetLocalizedStrings()

mod:SetRevision("20240417180519")
mod:SetCreatureID(134056)--134828 split forms
mod:SetEncounterID(2130)

mod:RegisterCombat("combat")

mod:RegisterEventsInCombat(
	"SPELL_AURA_APPLIED 264144 264166 264560 264773",
	"SPELL_AURA_REMOVED 264560 264773 264903",
	"SPELL_CAST_START 264101 264903 264144 264166"
)

--TODO, timer work needs longer pull, so heroic or mythic cause boss health drops too fast on normal
local warnUndertow					= mod:NewTargetAnnounce(264144, 2)
local warnChokingBrine				= mod:NewTargetNoFilterAnnounce(264560, 2, nil, "Healer")
local warnEruptingWaters			= mod:NewSpellAnnounce(264903, 2, nil, nil, nil, nil, nil, 2)

local specWarnSurgingRush			= mod:NewSpecialWarningDodge(264101, nil, nil, nil, 1, 2)
local specWarnChokingBrine			= mod:NewSpecialWarningDodge(264560, nil, nil, nil, 1, 2)
local yellChokingBrine				= mod:NewFadesYell(264560, DBM_CORE_L.AUTO_YELL_CUSTOM_FADE)
local specWarnUndertow				= mod:NewSpecialWarningYou(264144, nil, nil, nil, 3, 2)

local timerSurgingRushCD			= mod:NewCDTimer(13, 264101, nil, nil, nil, 3)
local timerChokingBrineCD			= mod:NewCDTimer(13, 264560, nil, nil, nil, 5, nil, DBM_COMMON_L.HEALER_ICON..DBM_COMMON_L.MAGIC_ICON)
local timerUndertowCD				= mod:NewCDTimer(13, 264144, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON)

function mod:UndertowTarget(targetname)
	if not targetname then return end
	if self:AntiSpam(4, targetname) then--Antispam to lock out redundant later warning from firing if this one succeeds
		if targetname == UnitName("player") then
			specWarnUndertow:Show()
			specWarnUndertow:Play("targetyou")
			specWarnUndertow:ScheduleVoice(1.8, "keepmove")
		else
			warnUndertow:CombinedShow(0.5, targetname)
		end
	end
end

function mod:OnCombatStart(delay)
	timerChokingBrineCD:Start(10.5-delay)--SUCCESS
	timerSurgingRushCD:Start(17-delay)
	timerUndertowCD:Start(30-delay)
end

function mod:SPELL_AURA_APPLIED(args)
	local spellId = args.spellId
	if (spellId == 264144 or spellId == 264166) and self:AntiSpam(4, args.destName) then--Backup warning if scan failed
		warnUndertow:CombinedShow(0.5, args.destName)
		if args:IsPlayer() then
			specWarnUndertow:Show()
			specWarnUndertow:Play("targetyou")
			specWarnUndertow:ScheduleVoice(1.8, "keepmove")
		end
	elseif spellId == 264560 or spellId == 264773 then--264773 spread one for not avoiding swirls from dispel/expire
		warnChokingBrine:CombinedShow(0.5, args.destName)
	end
end

function mod:SPELL_AURA_REMOVED(args)
	local spellId = args.spellId
	if (spellId == 264560 or spellId == 264773) then
		if self:AntiSpam(4, 2) then
			specWarnChokingBrine:Show()
			specWarnChokingBrine:Play("watchstep")
		end
		if args:IsPlayer() then
			yellChokingBrine:Yell(args.spellName)
		end
	elseif spellId == 264903 then--Erupting Waters Removed
		timerChokingBrineCD:Start(10)
	end
end

function mod:SPELL_CAST_START(args)
	local spellId = args.spellId
	if spellId == 264101 and self:AntiSpam(3, 1) then
		specWarnSurgingRush:Show()
		specWarnSurgingRush:Play("chargemove")
	elseif spellId == 264903 then
		warnEruptingWaters:Show()
		warnEruptingWaters:Play("phasechange")
		--Boss Timer stops
		timerChokingBrineCD:Stop()
		timerUndertowCD:Stop()
		timerSurgingRushCD:Stop()
		--Little add timer starts
		timerChokingBrineCD:Start(13.5)
		timerSurgingRushCD:Start(19)
		timerUndertowCD:Start(26)
	elseif spellId == 264144 or spellId == 264166 then
		self:ScheduleMethod(0.2, "BossTargetScanner", args.sourceGUID, "UndertowTarget", 0.1, 12, true, nil, nil, nil, true)
	end
end
