local mod	= DBM:NewMod("TwinEmpsAQ", "DBM-AQ40", 1)
local L		= mod:GetLocalizedStrings()

mod:SetRevision("20220116041753")
mod:SetCreatureID(15276, 15275)
mod:SetEncounterID(715)
--mod:SetModelID(15778)--Renders too close
mod:RegisterCombat("combat")

mod:RegisterEventsInCombat(
	"SPELL_AURA_APPLIED 799 800 26613 26607 804",
	"SPELL_AURA_REMOVED 804",
	"SPELL_CAST_SUCCESS 802 804"--26613
)

--Add warning for classic to actually swap for strike? boss taunt immune though.
local warnStrike			= mod:NewTargetNoFilterAnnounce(26613, 3, nil, "Tank|Healer", 2)
local warnTeleport			= mod:NewSpellAnnounce(800, 3)
local warnMutateBug			= mod:NewSpellAnnounce(802, 2, nil, false)

local specWarnStrike		= mod:NewSpecialWarningDefensive(26613, nil, nil, nil, 1, 2)
local specWarnExplodeBug	= mod:NewSpecialWarningMove(804, nil, nil, nil, 1, 2)
local specWarnGTFO			= mod:NewSpecialWarningGTFO(26607, nil, nil, nil, 8, 2)

local timerTeleport			= mod:NewCDTimer(29.2, 800, nil, nil, nil, 6, nil, nil, true, 1, 4)--29.2-40.2
local timerExplodeBugCD		= mod:NewCDTimer(4.9, 804, nil, false, nil, 1)--4.9-9
local timerMutateBugCD		= mod:NewCDTimer(11, 802, nil, false, nil, 1)--11-16
--local timerStrikeCD		= mod:NewCDTimer(9.7, 26613, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)--9.7-42.6

local berserkTimer			= mod:NewBerserkTimer(900)

mod:AddNamePlateOption("NPAuraOnMutateBug", 802)

function mod:OnCombatStart(delay)
	--timerStrikeCD:Start(14.2-delay)
	berserkTimer:Start()
	timerTeleport:Start(-delay)
	if self.Options.NPAuraOnMutateBug then
		DBM:FireEvent("BossMod_EnableHostileNameplates")
	end
end

function mod:OnCombatEnd()
	if self.Options.NPAuraOnMutateBug then
		DBM.Nameplate:Hide(true, nil, nil, nil, true, true)
	end
end

--pull:30.6, 35.2, 37.8, 40.1, 36.5, 36.6, 37.7, 31.9, 31.7, 38.8, 32.9, 30.4, 40.2, 30.6, 37.6, 35.4, 32.9, 34.2, 35.3, 36.5, 30.4, 29.2, 34.3, 32.8, 40.0, 35.4, 36.5, 35.3
do
	local TwinTeleport, UnbalancingStrike, Blizzard = DBM:GetSpellInfo(799), DBM:GetSpellInfo(26613), DBM:GetSpellInfo(26607)
	local MutateBug, ExplodeBug = DBM:GetSpellInfo(802), DBM:GetSpellInfo(804)
	function mod:SPELL_AURA_APPLIED(args)
		--if args:IsSpellID(799, 800) and self:AntiSpam(5, 1) then
		if args.spellName == TwinTeleport and self:AntiSpam(5, 1) then
			warnTeleport:Show()
			timerTeleport:Start()
		--elseif args.spellId == 26613 and not self:IsTrivial(80) then
		elseif args.spellName == UnbalancingStrike then
			if args:IsPlayer() then
				specWarnStrike:Show()
				specWarnStrike:Play("defensive")
			else
				warnStrike:Show(args.destName)
			end
		elseif args.spellName == Blizzard and args:IsPlayer() and args:IsSrcTypeHostile() then
			specWarnGTFO:Show(args.spellName)
			specWarnGTFO:Play("watchfeet")
		elseif args.spellName == ExplodeBug then
			if self.Options.NPAuraOnMutateBug then
				DBM.Nameplate:Show(true, args.destGUID, 804, 135826, 4)
			end
			for i = 1, 40 do
				local GUID = UnitGUID("nameplate"..i)
				if GUID and GUID == args.destGUID then--Bug is in nameplate range
					specWarnExplodeBug:Show()
					specWarnExplodeBug:Play("runaway")
					break
				end
			end
		end
	end
	function mod:SPELL_AURA_REMOVED(args)
		if args.spellName == ExplodeBug then
			if self.Options.NPAuraOnMutateBug then
				DBM.Nameplate:Hide(true, args.destGUID, 804, 135826)
			end
		end
	end
	function mod:SPELL_CAST_SUCCESS(args)
		--if args.spellId == 802 then
		if args.spellName == MutateBug then
			warnMutateBug:Show()
			timerMutateBugCD:Start()
		--elseif args.spellId == 804 then
		elseif args.spellName == ExplodeBug then
			timerExplodeBugCD:Start()
--		elseif spellId == 26613 then
			--timerStrikeCD:Start()
		end
	end
end
