-- Freeslots --

-- Mic Drop
freeslot("SPR2_MICG", "S_MICDROP", "S_MICDROP_FIN", "SPR2_MICA", "S_MICDROP_MIDAIR", "S_MICDROP_MIDAIRFIN", "SPR_MDIN", "S_MICDROP_INDICATOR", "SPR_DMIC", "S_DROPPEDMIC", "MT_DROPPEDMIC", 
"S_SHOCKWAVE", "MT_SHOCKWAVE1", "MT_ALTSHCKWVE1", "MT_SHOCKWAVE2", "MT_ALTSHCKWVE2")

states[S_MICDROP] = {
	sprite = SPR_PLAY,
	frame = SPR2_MICG|FF_SPR2ENDSTATE,
	tics = 2,
	action = A_ForceStop,
	var1 = S_MICDROP_FIN,
	nextstate = S_MICDROP
}

states[S_MICDROP_FIN] = {
	sprite = SPR_PLAY,
	frame = SPR2_MICG,
	tics = 15,
	action = A_ForceStop,
	var1 = S_PLAY_STND,
	nextstate = S_PLAY_STND
}

states[S_MICDROP_MIDAIR] = {
	sprite = SPR_PLAY,
	frame = SPR2_MICA|FF_SPR2ENDSTATE,
	tics = 2,
	var1 = S_MICDROP_MIDAIRFIN,
	nextstate = S_MICDROP_MIDAIR
}

states[S_MICDROP_MIDAIRFIN] = {
	sprite = SPR_PLAY,
	frame = SPR2_MICA,
	tics = 15,
	var1 = S_PLAY_FALL,
	nextstate = S_PLAY_FALL
}

states[S_DROPPEDMIC] = {
	sprite = SPR_DMIC,
	frame = A,
	tics = -1,
	action = A_DropMine
}

mobjinfo[MT_DROPPEDMIC] = {
	spawnstate = S_DROPPEDMIC,
	spawnhealth = 1,
	height = 8*FRACUNIT,
	radius = 11*FRACUNIT,
	speed = 20*FRACUNIT,
	deathstate = S_XPLD1,
	deathsound = sfx_bsnipe,
	flags = MF_NOBLOCKMAP|MF_MISSILE
}

states[S_SHOCKWAVE] = {
	sprite = SPR_NULL,
	frame = A,
	tics = 1,
	action = nil,
	nextstate = S_NULL
}

mobjinfo[MT_SHOCKWAVE1] = {
	spawnstate = S_SHOCKWAVE,
	spawnhealth = 1,
	height = 50*FRACUNIT,
	radius = 200*FRACUNIT,
	speed = 0*FRACUNIT,
	deathstate = S_NULL,
	flags = MF_NOGRAVITY
}

mobjinfo[MT_ALTSHCKWVE1] = {
	spawnstate = S_SHOCKWAVE,
	spawnhealth = 1,
	height = 50*FRACUNIT,
	radius = 200*FRACUNIT,
	speed = 0*FRACUNIT,
	deathstate = S_NULL,
	flags = MF_NOGRAVITY|MF_MISSILE
}

mobjinfo[MT_SHOCKWAVE2] = {
	spawnstate = S_SHOCKWAVE,
	spawnhealth = 1,
	height = 50*FRACUNIT,
	radius = 400*FRACUNIT,
	speed = 0*FRACUNIT,
	deathstate = S_NULL,
	flags = MF_NOGRAVITY
}

mobjinfo[MT_ALTSHCKWVE2] = {
	spawnstate = S_SHOCKWAVE,
	spawnhealth = 1,
	height = 50*FRACUNIT,
	radius = 400*FRACUNIT,
	speed = 0*FRACUNIT,
	deathstate = S_NULL,
	flags = MF_NOGRAVITY|MF_MISSILE
}

-- Kaboom Box
freeslot("SPR_BOOM", "S_KABOOMBOX", "SPR_KBEX", "S_BOOMBOX_EXPL1", "S_BOOMBOX_EXPL2", "S_BOOMBOX_EXPL3", "MT_KABOOMBOX", "S_AUTODETONATE", "SPR2_BSET", "SPR2_BACT", "S_KABOOMBOX_SETUP", "S_KABOOMBOX_ACTIVATE", "S_KABOOMBOX_FIN", "SPR_KBIN", "S_KABOOMBOX_INDICATOR")

states[S_KABOOMBOX] = {
	sprite = SPR_BOOM,
	frame = A,
	tics = -1,
	action = nil,
	nextstate = S_KABOOMBOX
}

states[S_BOOMBOX_EXPL1] = {
	sprite = SPR_KBEX,
	frame = A,
	tics = 1,
	action = A_SetObjectFlags,
	var1 = MF_NOGRAVITY,
	var2 = 0,
	nextstate = S_BOOMBOX_EXPL2
}

states[S_BOOMBOX_EXPL2] = {
	sprite = SPR_KBEX,
	frame = A,
	tics = 1,
	action = A_Scream,
	var1 = 0,
	var2 = 0,
	nextstate = S_BOOMBOX_EXPL3
}

states[S_BOOMBOX_EXPL3] = {
	sprite = SPR_KBEX,
	frame = FF_FULLBRIGHT|FF_ANIMATE,
	tics = 14,
	action = nil,
	var1 = 6,
	var2 = 2,
	nextstate = S_NULL
}

mobjinfo[MT_KABOOMBOX] = {
	spawnstate = S_KABOOMBOX,
	spawnhealth = 1,
	height = 32*FRACUNIT,
	radius = 10*FRACUNIT,
	speed = 0*FRACUNIT,
	deathstate = S_BOOMBOX_EXPL1,
	deathsound = sfx_s3k4e,
	flags = MF_SOLID|MF_SLIDEME|MF_PUSHABLE|MF_SHOOTABLE|MF_SPRING,
	painchance = 1,
	damage = 0,
	raisestate = S_AUTODETONATE,
	painsound = sfx_s3k44
}

states[S_AUTODETONATE] = {
	sprite = SPR_BOOM,
	frame = B,
	tics = 10,
	action = A_Pain,
	nextstate = S_BOOMBOX_EXPL1
}

states[S_KABOOMBOX_SETUP] = {
	sprite = SPR_PLAY,
	frame = SPR2_BSET|FF_SPR2ENDSTATE,
	tics = 10,
	action = A_ForceStop,
	nextstate = S_PLAY_STND
}

states[S_KABOOMBOX_ACTIVATE] = {
	sprite = SPR_PLAY,
	frame = SPR2_BACT|FF_SPR2ENDSTATE,
	tics = 3,
	action = A_ForceStop,
	var1 = S_KABOOMBOX_FIN,
	nextstate = S_KABOOMBOX_ACTIVATE
}

states[S_KABOOMBOX_FIN] = {
	sprite = SPR_PLAY,
	frame = SPR2_BACT,
	tics = 15,
	action = A_ForceStop,
	var1 = S_PLAY_FALL,
	nextstate = S_PLAY_FALL
}

rawset(_G, "BOOMBOXSPAWNED", 0)

states[S_KABOOMBOX_INDICATOR] = {
	sprite = SPR_KBIN,
	frame = FF_FULLBRIGHT|FF_ANIMATE|0,
	tics = -1,
	action = nil,
	var1 = 4,
	var2 = 4,
	nextstate = S_NULL
}

-- Persona
freeslot("SPR_NOTE", "S_MUSICNOTE1", "SPR_DOUB", "S_MUSICNOTE2", "SPR_SIRI", "sfx_flwin1", "sfx_flwin2", "sfx_flwin3", "sfx_fl1mor", "sfx_flaoa", "sfx_flcrit", "sfx_flitem", "sfx_flskll", 
"sfx_flitm2", "sfx_flsum1", "sfx_flsum2", "sfx_flrlnt1", "sfx_flrlnt2", "sfx_flkll1", "sfx_fldodg", "sfx_flheal", "sfx_flsum3", "sfx_fldo1", "sfx_fldo2", "sfx_flmiss", "sfx_flkll2", 
"sfx_fldo3", "sfx_fldo4", "sfx_fldie", "sfx_flxhrt", "sfx_flhurt", "sfx_fllvlu")

states[S_MUSICNOTE1] = {
	sprite = SPR_NOTE,
	frame = A,
	tics = 3,
	action = nil,
	var1 = 0,
	var2 = 0,
	nextstate = S_MUSICNOTE1
}

states[S_MUSICNOTE2] = {
	sprite = SPR_DOUB,
	frame = A,
	tics = 3,
	action = nil,
	var1 = 0,
	var2 = 0,
	nextstate = S_MUSICNOTE2
}

-- Milne
freeslot("SPR2_FKIK")

-- Hugs
freeslot("S_PLAY_FLHG", "SPR_FLHG", "S_COLORNOTE", "SPR_NOT_", "S_MININOTE", "SPR_MNOT", "MT_FLNOTE")

states[S_PLAY_FLHG] = {
	sprite = SPR_FLHG,
	frame = A,
	tics = -1
}

states[S_COLORNOTE] = {
	sprite = SPR_NOT_,
	tics = -1
}

states[S_MININOTE] = {
	sprite = SPR_MNOT,
	tics = -1
}

mobjinfo[MT_FLNOTE] = {
	spawnstate = S_MININOTE,
	spawnhealth = 1000,
	reactiontime = 8,
	speed = 4*FRACUNIT,
	radius = 4*FRACUNIT,
	height = 4*FRACUNIT,
	dispoffset = 1,
	mass = 4,
	flags = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_NOCLIP|MF_SCENERY
}

rawset(_G, "FLCHANHUGGING", 0)

-- Dirk
freeslot("SPR2_SURF", "SPR2_FROZ")

-- Lawyer Gestures
freeslot("SPR_SUSP", "SPR_SUSD")

-- BattleMod
freeslot("SPR_SONG", "S_SIRENSONG1", "S_SIRENSONG2", "sfx_csimia")

states[S_SIRENSONG1] = {
	sprite = SPR_SONG,
	frame = A,
	action = A_ForceStop
}

states[S_SIRENSONG2] = {
	sprite = SPR_SONG,
	frame = B,
	action = A_ForceStop
}

S_sfx[sfx_csimia] = {
	singular = false,
	priority = 255,
	flags = 0,
	caption = "CSI Miami"
}