addHook("ThinkFrame", do
	for player in players.iterate
		if player.mo
		and player.machspeedmode == true
			if not player.powers[pw_carry] //don't mess with nights man
			and not (player.exiting)
			and not (player.playerstate == PST_DEAD)
			and not (player.mo.tracer and player.mo.tracer.type == MT_TUBEWAYPOINT)
				//if not (player.mo.state == S_PLAY_STND)
				//and not (player.mo.state == S_PLAY_WAIT)
				if not (player.mo.state == S_PLAY_SPRING)
				and not (player.pflags & PF_SLIDING)
				//and not (player.pflags & PF_THOKKED)
				and not (player.pflags & PF_STARTDASH)
				//player.charflags = SF_NOSKID
				player.charflags = $1|SF_NOSKID
				//player.charflags = $1 & ~SF_DASHMODE
				//P_InstaThrust(player.mo, player.mo.angle, 50*FRACUNIT)
				player.drawangle = player.mo.angle
					if P_IsObjectOnGround(player.mo)
					and not (player.pflags & PF_SPINNING)
						if player.speed < FixedMul(60*FRACUNIT, player.mo.scale)
						P_Thrust(player.mo, player.mo.angle, 6*FRACUNIT)
							//if player.powers[pw_sneakers]
							//P_Thrust(player.mo, player.mo.angle, 3*FRACUNIT)
							//end
						end
						if player.speed < FixedMul(100*FRACUNIT, player.mo.scale)
						and player.powers[pw_sneakers]
						P_Thrust(player.mo, player.mo.angle, 3*FRACUNIT)
						end
					end
					if P_IsObjectOnGround(player.mo)
					and (player.pflags & PF_SPINNING)
					and player.speed < FixedMul(60*FRACUNIT, player.mo.scale)
					P_Thrust(player.mo, player.mo.angle, 2*FRACUNIT)
					end
					if not P_IsObjectOnGround(player.mo)
					and player.speed < FixedMul(60*FRACUNIT, player.mo.scale)
					P_Thrust(player.mo, player.mo.angle, 1*FRACUNIT)
					end
					if P_IsObjectOnGround(player.mo)
						if (player.mo.state == S_PLAY_STND)
						and not (player.mo.state == S_PLAY_WALK)
						player.mo.state = S_PLAY_WALK
						end
						if (player.mo.state == S_PLAY_WALK)
						and player.speed > FixedMul(player.runspeed, player.mo.scale)
						and not (player.mo.state == S_PLAY_RUN)
						player.mo.state = S_PLAY_RUN
						end
					end
				end
			else
				player.machspeedmode = false
				player.charflags = skins[player.mo.skin].flags
			end
		end
	end
end)

/*addHook("PostThinkFrame", function()
	for player in players.iterate
		if player.mo
		and player.mo.valid
		and player.playerstate == PST_LIVE
			if player.machspeedmode == true
				if player.realfriction != nil
				and not player.powers[pw_sneakers]
				and not player.dashmode
				player.mo.friction = 29*FRACUNIT/32
				player.normalspeed = skins[player.mo.skin].normalspeed
				end
			end
		end
	end
end)*/

addHook("MobjThinker", function(mo)
	if mo
	and mo.player
	and mo.health
	and mo.valid
		if P_PlayerTouchingSectorSpecial(mo.player,4,11)
		and P_PlayerTouchingSectorSpecial(mo.player,2,4)
			mo.player.machspeedmode = true
		end
		if P_PlayerTouchingSectorSpecial(mo.player,2,7)
		and P_PlayerTouchingSectorSpecial(mo.player,2,4)
			mo.player.machspeedmode = false
			mo.player.charflags = skins[mo.skin].flags
		end
	end
end, MT_PLAYER)

addHook("MapLoad", do
	for player in players.iterate
		if player.machspeedmode == true
			player.machspeedmode = false
			player.charflags = skins[player.mo.skin].flags
		end
	end
end)