// Dimension Teleport Freeslots and stuff

freeslot(
"SPR2_PDTL",
"SPR2_PDTE",
"SPR2_PDTF",
"SPR2_PPOR",
"SPR2_PORD",
"SPR2_PORU",
"SPR2_SPRD",
"SPR_TPOR",
"S_DIMENTELE_START",
"S_DIMENTELE_DIMENSION",
"S_DIMENTELE_TELEPORT",
"S_DIMENTELE_END_START",
"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",
"MT_INSTANTTELE_PORTAL",
"S_MULTITELE_2NDTELEPORT",
"S_MULTITELE_3RDTELEPORT",
"S_DIRECTTELE_DIMENSION",
"S_DIRECTTELE_START",
"S_DIRECTTELE_READYFORWARD",
"S_DIRECTTELE_READYDIAGONAL",
"S_DIRECTTELE_READYVERTICAL",
"S_DIRECTTELE_DIAGONALTELEPORT",
"S_DIRECTTELE_VERTICALTELEPORT",
"sfx_tlflip",
"sfx_tlflpe"
)

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_START
}

states[S_DIMENTELE_END_START] = {
		sprite = SPR_PLAY,
		frame = SPR2_PDTE,
		tics = 1,
		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 = 4,
		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_MULTITELE_2NDTELEPORT] = {
		sprite = SPR_PLAY,
		frame = SPR2_STND|FF_TRANS90,
		tics = 20,
		nextstate = S_DIMENTELE_END_START
}

states[S_MULTITELE_3RDTELEPORT] = {
		sprite = SPR_PLAY,
		frame = SPR2_STND|FF_TRANS90,
		tics = 15,
		nextstate = S_DIMENTELE_END_START
}

states[S_DIRECTTELE_START] = {
		sprite = SPR_PLAY,
		frame = SPR2_PDTL,
		tics = 4,
		nextstate = S_DIRECTTELE_DIMENSION
}

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

states[S_DIRECTTELE_READYFORWARD] = {
		sprite = SPR_PLAY,
		frame = SPR2_PPOR,
		tics = 1,
		nextstate = S_DIRECTTELE_READYFORWARD
}

states[S_DIRECTTELE_READYDIAGONAL] = {
		sprite = SPR_PLAY,
		frame = SPR2_PORD,
		tics = 1,
		nextstate = S_DIRECTTELE_READYDIAGONAL
}

states[S_DIRECTTELE_READYVERTICAL] = {
		sprite = SPR_PLAY,
		frame = SPR2_PORU,
		tics = 1,
		nextstate = S_DIRECTTELE_READYVERTICAL
}

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

states[S_DIRECTTELE_VERTICALTELEPORT] = {
		sprite = SPR_PLAY,
		frame = SPR2_STND|FF_TRANS90,
		tics = 20,
		nextstate = S_DIMENTELE_END_START
}