-- Freeslots --

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

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_SHOCKWAVE2] = {
	spawnstate = S_SHOCKWAVE,
	spawnhealth = 1,
	height = 50*FRACUNIT,
	radius = 400*FRACUNIT,
	speed = 0*FRACUNIT,
	deathstate = S_NULL,
	flags = MF_NOGRAVITY
}

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_MICDROP_INDICATOR] = {
	sprite = SPR_MDIN,
	frame = FF_FULLBRIGHT|FF_ANIMATE|0,
	tics = -1,
	action = nil,
	var1 = 4,
	var2 = 4,
	nextstate = S_NULL
}

-- Kaboom Box
freeslot("SPR_BOOM", "S_KABOOMBOX", "MT_KABOOMBOX", "S_AUTODETONATE", "SPR2_BSET", "SPR2_BACT", "S_KABOOMBOX_SETUP", "S_KABOOMBOX_ACTIVATE", "S_KABOOMBOX_FIN")

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

mobjinfo[MT_KABOOMBOX] = {
	spawnstate = S_KABOOMBOX,
	spawnhealth = 1,
	height = 32*FRACUNIT,
	radius = 10*FRACUNIT,
	speed = 0*FRACUNIT,
	deathstate = S_TNTBARREL_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_TNTBARREL_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) -- A wild constant appears

-- Persona
freeslot("SPR_SIRI", "SPR_NOTE", "SPR_DOUB", "S_MUSICNOTE1", "S_MUSICNOTE2", "SPR2_SONG")

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
}

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

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

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

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

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

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