freeslot( "S_COOLEDGE_BOBSLEDA", "S_COOLEDGE_BOBSLEDA", 
	"S_COOLEDGE_BOBSLEDB", "S_COOLEDGE_BOBSLEDC", 
	"S_COOLEDGE_BOBSLEDD", "S_COOLEDGE_BOBSLEDE", "SPR_ICSL",
	"MT_SLEDA", "MT_SLEDB", "MT_SLEDC", "MT_SLEDD", "MT_SLEDE")

states[S_COOLEDGE_BOBSLEDA] = {SPR_ICSL, FF_PAPERSPRITE|A, 35, nil, 0, 0, S_COOLEDGE_BOBSLEDA}
states[S_COOLEDGE_BOBSLEDB] = {SPR_ICSL, FF_PAPERSPRITE|B, 35, nil, 0, 0, S_COOLEDGE_BOBSLEDB}
states[S_COOLEDGE_BOBSLEDC] = {SPR_ICSL, FF_PAPERSPRITE|C, 35, nil, 0, 0, S_COOLEDGE_BOBSLEDC}
states[S_COOLEDGE_BOBSLEDD] = {SPR_ICSL, FF_PAPERSPRITE|D, 35, nil, 0, 0, S_COOLEDGE_BOBSLEDD}
states[S_COOLEDGE_BOBSLEDE] = {SPR_ICSL, E, 35, nil, 0, 0, S_COOLEDGE_BOBSLEDE}

sfxinfo[freeslot("sfx_bobsld")].caption = "/"
sfxinfo[freeslot("sfx_bobstr")].caption = "/"
sfxinfo[freeslot("sfx_bobend")].caption = "Explosion"

addHook("PlayerSpawn", function(p)
	p.cubesled = false
end)

addHook("PlayerThink", function(p)
	if p.mo.subsector.sector.tag == 255 and not p.cubesled and mapheaderinfo[gamemap].cubesled then
		S_StartSoundAtVolume(p.mo, sfx_bobstr, 100)
		p.cubesled = true
		p.cubesledang = p.mo.angle
		p.cubesledsped = 36
		p.sleda = P_SpawnMobjFromMobj(p.mo, 0, 0, 0, MT_SLEDA)
		p.sleda.owner = p.mo
		p.sledb = P_SpawnMobjFromMobj(p.mo, 0, 0, 0, MT_SLEDB)
		p.sledb.owner = p.mo
		p.sledc = P_SpawnMobjFromMobj(p.mo, 0, 0, 0, MT_SLEDC)
		p.sledc.owner = p.mo
		p.sledd = P_SpawnMobjFromMobj(p.mo, 0, 0, 0, MT_SLEDD)
		p.sledd.owner = p.mo
	end
	if p.cubesled then
		p.cubestore = $ or 0
		p.mo.state = S_PLAY_RIDE
		p.mo.rollangle = (p.cmd.sidemove* (45/50))*ANG1
		if leveltime % 2 == 0 then
			p.pflags = $ |PF_FULLSTASIS
		else
			p.pflags = $ |PF_SPINNING
		end
		if P_IsObjectOnGround(p.mo) and p.speed < 30*FRACUNIT then
			P_Thrust(p.mo ,p.cubesledang , (p.cubestore + 2)*FRACUNIT)
			p.cubestore = 0
		end
		if P_IsObjectOnGround(p.mo) and (p.cmd.buttons & BT_SPIN) then
			p.cubesledang = $ - (p.cmd.sidemove/4)*ANG1
			P_Thrust(p.mo ,p.cubesledang - 90*ANG1 ,(p.cmd.sidemove/40)*FRACUNIT)
			P_Thrust(p.mo ,p.cubesledang + 180*ANG1 ,1*FRACUNIT)
			p.cubestore = ($ + 1) or 0
		else
			p.cubesledang = $ - (p.cmd.sidemove/8)*ANG1
			P_Thrust(p.mo ,p.cubesledang - 90*ANG1 ,(p.cmd.sidemove/50)*FRACUNIT)
		end
		if p.mo.subsector.sector.tag == 257 and mapheaderinfo[gamemap].cubesled then
			p.cubesledang = p.drawangle
		else
			p.mo.angle = p.cubesledang
		end
		if p.mo.subsector.sector.tag == 256 and mapheaderinfo[gamemap].cubesled then
			p.mo.angle = p.cubesledang
			p.cubesledsped = 36
			p.cubesled = false
			p.mo.state = S_PLAY_STND
			p.mo.spriteyoffset = 0
		end
	end
end)


addHook("MobjDamage", function(m)
	if m.player.cubesled then
		m.player.cubestore = 25
	end
end,MT_PLAYER)

addHook("MobjThinker", function(b)
	local x = cos(b.owner.player.drawangle + 135*ANG1)
	local y = sin(b.owner.player.drawangle + 135*ANG1)
	P_TeleportMove(b, b.owner.x + 36*x, b.owner.y + 36*y, b.owner.z)
	b.angle = b.owner.player.drawangle
	if leveltime % 4 == 0 then
		S_StopSoundByID(b, sfx_bobsld)
		S_StartSoundAtVolume(b, sfx_bobsld, 10)
	end
	if b.owner.subsector.sector.tag == 256 then
		P_KillMobj(b)
	end
end, MT_SLEDA)

addHook("MobjThinker", function(b)
	local x = cos(b.owner.player.drawangle)
	local y = sin(b.owner.player.drawangle)
	P_TeleportMove(b, b.owner.x+ 2*x , b.owner.y+ 2*y, b.owner.z)
	b.angle = b.owner.player.drawangle + 90*ANG1
	if leveltime % 4 == 0 then
		S_StopSoundByID(b, sfx_bobsld)
		S_StartSoundAtVolume(b, sfx_bobsld, 10)
	end
	if b.owner.subsector.sector.tag == 256 then
		P_KillMobj(b)
	end
end, MT_SLEDB)

addHook("MobjThinker", function(b)
	local x = cos(b.owner.player.drawangle)
	local y = sin(b.owner.player.drawangle)
	P_TeleportMove(b, b.owner.x+ 2*x , b.owner.y+ 2*y, b.owner.z)
	b.angle = b.owner.player.drawangle + 90*ANG1
	if leveltime % 4 == 0 then
		S_StopSoundByID(b, sfx_bobsld)
		S_StartSoundAtVolume(b, sfx_bobsld, 10)
	end
	if b.owner.subsector.sector.tag == 256 then
		P_KillMobj(b)
	end
end, MT_SLEDC)

addHook("MobjThinker", function(b)
	local x = cos(b.owner.player.drawangle - 135*ANG1)
	local y = sin(b.owner.player.drawangle - 135*ANG1)
	P_TeleportMove(b, b.owner.x + 36*x, b.owner.y + 36*y, b.owner.z)
	b.angle = b.owner.player.drawangle
	if leveltime % 4 == 0 then
		S_StopSoundByID(b, sfx_bobsld)
		S_StartSoundAtVolume(b, sfx_bobsld, 10)
	end
	if b.owner.subsector.sector.tag == 256 then
		P_KillMobj(b)
	end
end, MT_SLEDD)

addHook("PlayerThink", function(p)
	if p.powers[pw_sneakers] == 699 and mapheaderinfo[gamemap].cubesled then
		P_PlayJingleMusic(p, "colegs")
	end
end)









