// Dimension Teleport Freeslots and stuff

freeslot(
"SPR2_PDTL",
"SPR2_PDTE",
"SPR2_PDTF",
"SPR2_BLRY",
"SPR2_BLRO",
"SPR2_BLRR",
"SPR_TPOR",
"SPR_BLSP",
"SPR_BSPE",
"S_DIMENTELE_START",
"S_DIMENTELE_DIMENSION",
"S_DIMENTELE_TELEPORT",
"S_DIMENTELE_END",
"S_DIMENTELE_FINISH",
"S_INSTANTTELE_TELEPORT",
"S_INSTANTTELE_END",
"S_INSTANTTELE_PORTAL",
"S_INSTANTTELE_PORTALFADE1",
"S_INSTANTTELE_PORTALFADE2",
"S_INSTANTTELE_PORTALFADE3",
"S_INSTANTTELE_PORTALFADE4",
"S_DIMENBLAST_READYYELLOW",
"S_DIMENBLAST_READYORANGE",
"S_DIMENBLAST_READYRED",
"S_DIMENBLAST_FINISH",
"S_DIMENBLAST_YELLOWPORTAL",
"S_DIMENBLAST_YELLOWPORTAL_END",
"S_DIMENBLAST_ORANGEPORTAL",
"S_DIMENBLAST_ORANGEPORTAL_MIDDLE",
"S_DIMENBLAST_ORANGEPORTAL_END",
"S_DIMENBLAST_REDPORTAL",
"S_DIMENBLAST_REDPORTAL_END",
"MT_INSTANTTELE_PORTAL",
"MT_DIMENBLAST_YELLOWPORTAL",
"MT_DIMENBLAST_ORANGEPORTAL",
"MT_DIMENBLAST_REDPORTAL",
"sfx_tlflip",
"sfx_tlflpe",
"sfx_dmblsy",
"sfx_dmblso",
"sfx_dmblsr"
)

sfxinfo[sfx_tlflip] = {
	singular = false,
	caption = "Dimensioning 1"
}

sfxinfo[sfx_tlflpe] = {
	singular = false,
	caption = "Dimensioning 2"
}

sfxinfo[sfx_dmblsy] = {
	singular = false,
	caption = "Yellow Blast"
}

sfxinfo[sfx_dmblso] = {
	singular = false,
	caption = "Orange Blast"
}

sfxinfo[sfx_dmblsr] = {
	singular = false,
	caption = "Red Blast"
}

states[S_DIMENTELE_DIMENSION] = {
		sprite = SPR_PLAY,
		frame = SPR2_PDTL|FF_ANIMATE,
		tics = 16,
		var1 = I,
		var2 = 2,
		nextstate = S_DIMENTELE_TELEPORT
}

states[S_DIMENTELE_START] = {
		sprite = SPR_PLAY,
		frame = SPR2_PDTL,
		tics = 4,
		nextstate = S_DIMENTELE_DIMENSION
}

states[S_DIMENTELE_TELEPORT] = {
		sprite = SPR_PLAY,
		frame = SPR2_STND|FF_TRANS90,
		tics = 25,
		nextstate = S_DIMENTELE_END
}

states[S_DIMENTELE_END] = {
		sprite = SPR_PLAY,
		frame = SPR2_PDTE|FF_ANIMATE,
		tics = 16,
		var1 = I,
		var2 = 2,
		nextstate = S_DIMENTELE_FINISH
}

states[S_DIMENTELE_FINISH] = {
		sprite = SPR_PLAY,
		frame = SPR2_PDTF,
		tics = 5,
		nextstate = S_PLAY_FALL
}

states[S_INSTANTTELE_TELEPORT] = {
		sprite = SPR_PLAY,
		frame = SPR2_STND|FF_TRANS90,
		tics = 33,
		nextstate = S_INSTANTTELE_END
}

states[S_INSTANTTELE_END] = {
		sprite = SPR_PLAY,
		frame = SPR2_SPRD,
		tics = 15,
		nextstate = S_PLAY_STND
}

states[S_INSTANTTELE_PORTAL] = {
		sprite = SPR_TPOR,
		frame = A,
		tics = 16,
		nextstate = S_INSTANTTELE_PORTALFADE1
}

states[S_INSTANTTELE_PORTALFADE1] = {
		sprite = SPR_TPOR,
		frame = A|FF_TRANS20,
		tics = 2,
		nextstate = S_INSTANTTELE_PORTALFADE2
}

states[S_INSTANTTELE_PORTALFADE2] = {
		sprite = SPR_TPOR,
		frame = A|FF_TRANS40,
		tics = 2,
		nextstate = S_INSTANTTELE_PORTALFADE3
}

states[S_INSTANTTELE_PORTALFADE3] = {
		sprite = SPR_TPOR,
		frame = A|FF_TRANS60,
		tics = 2,
		nextstate = S_INSTANTTELE_PORTALFADE4
}

states[S_INSTANTTELE_PORTALFADE4] = {
		sprite = SPR_TPOR,
		frame = A|FF_TRANS80,
		tics = 2,
		nextstate = S_NULL
}

mobjinfo[MT_INSTANTTELE_PORTAL] = {
		doomednum = -1,
		spawnstate = S_INSTANTTELE_PORTAL,
		radius = FRACUNIT*51,
		height = FRACUNIT*51,
		flags = MF_NOCLIP|MF_NOGRAVITY
}

states[S_DIMENBLAST_READYYELLOW] = {
		sprite = SPR_PLAY,
		frame = SPR2_BLRY|FF_ANIMATE,
		tics = 24,
		var1 = B,
		var2 = 4,
		nextstate = S_DIMENBLAST_READYORANGE
}

states[S_DIMENBLAST_READYORANGE] = {
		sprite = SPR_PLAY,
		frame = SPR2_BLRO|FF_ANIMATE,
		tics = 40,
		var1 = B,
		var2 = 4,
		nextstate = S_DIMENBLAST_READYRED
}

states[S_DIMENBLAST_READYRED] = {
		sprite = SPR_PLAY,
		frame = SPR2_BLRR|FF_ANIMATE,
		tics = 15,
		var1 = B,
		var2 = 3,
		nextstate = S_DIMENBLAST_FINISH
}

states[S_DIMENBLAST_FINISH] = {
		sprite = SPR_PLAY,
		frame = SPR2_SPNG,
		tics = 1,
		nextstate = S_PLAY_JUMP
}

states[S_DIMENBLAST_YELLOWPORTAL] = {
		sprite = SPR_BLSP,
		tics = 3,
		nextstate = S_DIMENBLAST_YELLOWPORTAL_END
}

states[S_DIMENBLAST_YELLOWPORTAL_END] = {
		sprite = SPR_BSPE,
		frame = FF_ANIMATE,
		tics = 15,
		var1 = E,
		var2 = 3,
		nextstate = S_NULL
}


mobjinfo[MT_DIMENBLAST_YELLOWPORTAL] = {
		doomednum = -1,
		spawnstate = S_DIMENBLAST_YELLOWPORTAL,
		radius = FRACUNIT*51,
		height = FRACUNIT*51,
		flags = MF_NOCLIP|MF_NOGRAVITY
}

states[S_DIMENBLAST_ORANGEPORTAL] = {
		sprite = SPR_BLSP,
		frame = FF_ANIMATE,
		tics = 6,
		var1 = B,
		var2 = 3,
		nextstate = S_DIMENBLAST_ORANGEPORTAL_MIDDLE
}

states[S_DIMENBLAST_ORANGEPORTAL_MIDDLE] = {
		sprite = SPR_BLSP,
		tics = 3,
		nextstate = S_DIMENBLAST_ORANGEPORTAL_END
}

states[S_DIMENBLAST_ORANGEPORTAL_END] = {
		sprite = SPR_BSPE,
		frame = FF_ANIMATE,
		tics = 15,
		var1 = E,
		var2 = 3,
		nextstate = S_NULL
}

mobjinfo[MT_DIMENBLAST_ORANGEPORTAL] = {
		doomednum = -1,
		spawnstate = S_DIMENBLAST_ORANGEPORTAL,
		radius = FRACUNIT*51,
		height = FRACUNIT*51,
		flags = MF_NOCLIP|MF_NOGRAVITY
}

states[S_DIMENBLAST_REDPORTAL] = {
		sprite = SPR_BLSP,
		frame = FF_ANIMATE,
		tics = 15,
		var1 = E,
		var2 = 3,
		nextstate = S_DIMENBLAST_REDPORTAL_END
}

states[S_DIMENBLAST_REDPORTAL_END] = {
		sprite = SPR_BSPE,
		frame = FF_ANIMATE,
		tics = 15,
		var1 = E,
		var2 = 3,
		nextstate = S_NULL
}

mobjinfo[MT_DIMENBLAST_REDPORTAL] = {
		doomednum = -1,
		spawnstate = S_DIMENBLAST_REDPORTAL,
		radius = FRACUNIT*51,
		height = FRACUNIT*51,
		flags = MF_NOCLIP|MF_NOGRAVITY
}