-- Final Demo Eggman Box - Ported by MIDIMan
-- Use with LUA_FBOX and LUA_FBXM

freeslot(
	"MT_FDBOX_EGGMAN",
	"MT_FDBOX_EGGMAN_ICON",
	"S_FDBOX_EGGMAN_IDLE",
	"S_FDBOX_EGGMAN_ICON1",
	"S_FDBOX_EGGMAN_ICON2"
)

addHook("MobjFuse", RM_FDMonitorFuseThink, MT_FDBOX_EGGMAN)
addHook("MapThingSpawn", function(mo, mthing)
	if not (mo and mo.valid and mthing and mthing.valid) then return end
	
	RM_FDMonitorTypeSpawn(mo, mthing)
	
	if mo and mo.valid then
		if ultimatemode and not G_IsSpecialStage(gamemap) and mo.rmFDAltOption >= 2 then
			P_RemoveMobj(mo)
		end
	end
end, MT_FDBOX_EGGMAN)

mobjinfo[MT_FDBOX_EGGMAN] = {
	--$Name Final Demo Eggman
	--$Sprite FBXMA0
	--$Category Monitors
	--$Flags4Text Random (Strong)
	--$Flags8Text Random (Weak) / Random (Pre-2.0)
	--$ParameterText Behavior
	--$Arg1 Respawn behavior
	--$Arg1Type 11
	--$Arg1Enum monitorrespawn
	--$Arg3 Era
	--$Arg3Type 11
	--$Arg3Enum {0 = "2.0"; 1 = "1.09-1.09.4"; 2 = "1.08"; 3 = "2K3-1.04";}
	doomednum = 475,
	spawnstate = S_FDBOX_EGGMAN_IDLE,
	spawnhealth = 1,
	painstate = S_FDBOX_EGGMAN_IDLE,
	deathstate = S_FDBOX_EXPLOSION1,
	deathsound = sfx_pop,
	speed = 1,
	radius = 16*FRACUNIT,
	height = 32*FRACUNIT,
	damage = MT_FDBOX_EGGMAN_ICON,
	flags = MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE
}

states[S_FDBOX_EGGMAN_IDLE] =	{SPR_FBXM,	A,	2,	nil,	0,	0,	S_FDBOX_FLICKER}

-- Don't let others know that the player was hurt by an Eggman monitor, like in 
-- the 2.0-and-below era
addHook("HurtMsg", function(player, inflictor, source)
	if not (inflictor and inflictor.valid and player and player.valid)
		return
	end
	
	if not player.mo.health then
		local playerText = player.name
		
		local rmFDAltOption = inflictor.rmFDAltOption
		
		if not rmFDAltOption then rmFDAltOption = 0 end
		
		-- Change the player's name's color depending on which team they're on, 
		-- but only if the monitor's rmFDAltOption is within the 1.09-2.0 era
		if rmFDAltOption < 2 then
			if player.ctfteam then
				if player.ctfteam == 1 then
					playerText = "\x85"..$
				else
					playerText = "\x84"..$
				end
				
				playerText = $.."\x80"
			end
		end
		
		print(playerText.." died.")
	end
	
	return true
end, MT_FDBOX_EGGMAN_ICON)

mobjinfo[MT_FDBOX_EGGMAN_ICON] = {
	doomednum = -1,
	spawnstate = S_FDBOX_EGGMAN_ICON1,
	spawnhealth = 1,
	speed = 4*FRACUNIT,	-- Originally 2*FRACUNIT; Changed to match pre-2.1's speed
	radius = 8*FRACUNIT,
	height = 14*FRACUNIT,
	damage = 62*FRACUNIT,
	flags = MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON
}

states[S_FDBOX_EGGMAN_ICON1] =	{SPR_FBXM,	B,	18,	nil,			0,	0,	S_FDBOX_EGGMAN_ICON2}
states[S_FDBOX_EGGMAN_ICON2] =	{SPR_FBXM,	B,	18,	A_EggmanBox,	0,	0,	S_NULL}
