
//---------------------Quantic Funhouse-------------------------//
freeslot(
"MT_FUNFLORA1","SPR_FHFL","S_FUNFLORASTATIC",
"MT_FUNFLORA3","SPR_FHF3","S_FUNFLORASTATIC3",
"MT_FUNFLORA4","SPR_FHF4","S_FUNFLORASTATIC4",
"MT_FUNFLORAC","SPR_FHFC","S_FUNFLORASTATICC","S_FUNFLORASTATICCI2","S_FUNFLORASTATICCI")

mobjinfo[MT_FUNFLORA1] = {
	--$Category Quantic Funhouse
	--$Name Funhouse Flora1
	--$Sprite FHFLA1
	//$Color 2
	doomednum = 3055,
	radius = 32*FRACUNIT,
	height = 128*FRACUNIT,
	spawnstate = S_FUNFLORASTATIC,
	flags = MF_SCENERY|MF_SOLID
}

states[S_FUNFLORASTATIC] = {
	sprite = SPR_FHFL, frame = FF_ANIMATE|A, tics = 40, var1 = 10, var2 = 4, nextstate = S_FUNFLORASTATIC}

mobjinfo[MT_FUNFLORA3] = {
	--$Category Quantic Funhouse
	--$Name Funhouse Flora3
	--$Sprite FHF3A1
	//$Color 2
	doomednum = 3066,
	radius = 89*FRACUNIT,
	height = 128*FRACUNIT,
	spawnstate = S_FUNFLORASTATIC3,
	flags = MF_NOTHINK|MF_SOLID
}

states[S_FUNFLORASTATIC3] = {
	sprite = SPR_FHF3, frame = A, tics = 5, nextstate = S_FUNFLORASTATIC3}

mobjinfo[MT_FUNFLORA4] = {
	doomednum = 3068,
	radius = 15*FRACUNIT,
	height = 64*FRACUNIT,
	spawnstate = S_FUNFLORASTATIC4,
	flags = MF_SCENERY|MF_NOGRAVITY
}

states[S_FUNFLORASTATIC4] = {
	sprite = SPR_FHF4, frame = A, tics = 5, nextstate = S_FUNFLORASTATIC4}

mobjinfo[MT_FUNFLORAC] = {
	--$Category Quantic Funhouse
	--$Name Funhouse Flora Crown
	--$Sprite FHFCA1
	//$Color 2
	doomednum = 3067,
	radius = 30*FRACUNIT,
	height = 64*FRACUNIT,
	spawnstate = S_FUNFLORASTATICCI,
	flags = MF_SCENERY|MF_NOGRAVITY
}

states[S_FUNFLORASTATICCI] = {
	sprite = SPR_FHFC, frame = A, tics = 1, action = A_ConnectToGround, var1 = MT_FUNFLORA4, var2 = MT_FUNFLORA4, nextstate = S_FUNFLORASTATICCI2}

states[S_FUNFLORASTATICCI2] = {
	sprite = SPR_FHFC, frame = A, tics = 1, action = A_ConnectToGround, var1 = MT_FUNFLORA4, var2 = MT_FUNFLORA4, nextstate = S_FUNFLORASTATICC}
	
states[S_FUNFLORASTATICC] = {
	sprite = SPR_FHFC, frame = A, tics = 35, nextstate = S_FUNFLORASTATICC}
	
freeslot(
"MT_FUNDECOR1","MT_PANELFLAT","MT_PANELSIDE",
"SPR_FHDC","SPR_PANN","SPR_PANF",
"S_FUNDECORSTATIC","S_PANELSTATICFLAT","S_PANELSTATICSIDE")

mobjinfo[MT_FUNDECOR1] = {
	--$Category Quantic Funhouse
	--$Name Funhouse Decor
	--$Sprite FHDCA1
	//$Color 2
	doomednum = 3056,
	radius = 96*FRACUNIT,
	height = 160*FRACUNIT,
	spawnstate = S_FUNDECORSTATIC,
	flags = MF_SCENERY
}

states[S_FUNDECORSTATIC] = {
	sprite = SPR_FHDC, frame = FF_ANIMATE|A, tics = 45, var1 = 15, var2 = 3, nextstate = S_FUNDECORSTATIC}

addHook("MobjSpawn",function(mob)
	//create a cage for the decor object--
	--to fit the top properly, the collision box for the sides is 1 pixel shorter than the sprite size--
	--the functions are run in a way to make sure we get the returned object//
	local top = P_SpawnMobjFromMobj(mob,-4*FRACUNIT,0,80*FRACUNIT,MT_PANELFLAT)
	local side1 = P_SpawnMobjFromMobj(mob,40*FRACUNIT,0,0,MT_PANELSIDE)
	local side2 = P_SpawnMobjFromMobj(mob,-40*FRACUNIT,0,0,MT_PANELSIDE)
	local side3 = P_SpawnMobjFromMobj(mob,0,40*FRACUNIT,0,MT_PANELSIDE)
	local side4 = P_SpawnMobjFromMobj(mob,0,-40*FRACUNIT,0,MT_PANELSIDE)
	
	//orient two of the returned objects to get the sides in place//
	side1.angle = ANGLE_90
	side2.angle = ANGLE_270
end
,MT_FUNDECOR1)

mobjinfo[MT_PANELSIDE] = {
	--$Category Quantic Funhouse
	--$Name Wall Panel
	--$Sprite PANNA0
	//$Color 2
	//$WallSprite true
	doomednum = 3057,
	radius = 40*FRACUNIT,
	height = 79*FRACUNIT,
	spawnstate = S_PANELSTATICSIDE,
	flags = MF_SCENERY|MF_SOLID|MF_PAPERCOLLISION|MF_NOGRAVITY
}

states[S_PANELSTATICSIDE] = {
	sprite = SPR_PANN, frame = FF_PAPERSPRITE|A, tics = 5, nextstate = S_PANELSTATICSIDE}
	
mobjinfo[MT_PANELFLAT] = {
	--$Category Quantic Funhouse
	--$Name Floor Panel
	--$Sprite PANFA0
	//$Color 2
	//$FlatSprite true
	doomednum = 3058,
	radius = 40*FRACUNIT,
	height = 2*FRACUNIT,
	spawnstate = S_PANELSTATICFLAT,
	flags = MF_SCENERY|MF_SOLID|MF_NOGRAVITY
}

states[S_PANELSTATICFLAT] = {
	sprite = SPR_PANF, frame = FF_FLOORSPRITE|A, tics = 5, nextstate = S_PANELSTATICFLAT}

addHook("MobjSpawn",function(mob)
	mob.renderflags = RF_NOSPLATBILLBOARD
end
,MT_PANELFLAT)

--Fun Lights--
freeslot(
"MT_FUNLIGHT1","SPR_FHLT","S_FUNLIGHTSTATIC1",
"MT_FUNLIGHT2","SPR_FHL2","S_FUNLIGHTSTATIC2")

mobjinfo[MT_FUNLIGHT1] = {
	--$Category Quantic Funhouse
	--$Name Funhouse Light1
	--$Sprite FHLTA1
	//$Color 2
	doomednum = 3064,
	radius = 40*FRACUNIT,
	height = 172*FRACUNIT,
	spawnstate = S_FUNLIGHTSTATIC1,
	flags = MF_SCENERY|MF_SOLID|MF_NOGRAVITY
}

states[S_FUNLIGHTSTATIC1] = {
	sprite = SPR_FHLT, frame = FF_FULLBRIGHT|A, tics = 5, nextstate = S_FUNLIGHTSTATIC1}

mobjinfo[MT_FUNLIGHT2] = {
	--$Category Quantic Funhouse
	--$Name Funhouse Light2
	--$Sprite FHL2A1
	//$Color 2
	doomednum = 3065,
	radius = 40*FRACUNIT,
	height = 120*FRACUNIT,
	spawnstate = S_FUNLIGHTSTATIC2,
	flags = MF_SCENERY|MF_SOLID|MF_NOGRAVITY
}

states[S_FUNLIGHTSTATIC2] = {
	sprite = SPR_FHL2, frame = FF_FULLBRIGHT|A, tics = 5, nextstate = S_FUNLIGHTSTATIC2}

--Fun Mirror--
freeslot(
"MT_FUNMIRROR1","SPR_FHM1","S_FUNMIRRORSTATIC1")

mobjinfo[MT_FUNMIRROR1] = {
	--$Category Quantic Funhouse
	--$Name Funhouse Mirror1
	--$Sprite FHM1A1
	//$Color 2
	doomednum = 3071,
	radius = 60*FRACUNIT,
	height = 180*FRACUNIT,
	spawnstate = S_FUNMIRRORSTATIC1,
	flags = MF_SCENERY|MF_SOLID
}

states[S_FUNMIRRORSTATIC1] = {
	sprite = SPR_FHM1, frame = A, tics = 5, nextstate = S_FUNMIRRORSTATIC1}