addHook("PlayerSpawn", function(p)
	if p.mo and p.mo.valid
		--local randnum = P_RandomRange(1, 4)
		p.musicnumber = P_RandomRange(1, 4)
	end
end)
addHook("PlayerThink", function(p)
	--S_StartSound(p.mo, sfx_pstop)
	if p.mo and p.mo.health and p.mo.valid
		S_ChangeMusic("ears" + p.musicnumber, true, p)
		p.normalspeed = 23*FRACUNIT
		p.acceleration = skins[p.mo.skin].acceleration * 10
		p.accelstart = skins[p.mo.skin].accelstart * 10
		p.actionspd = 0 
		p.runspeed = 16*FRACUNIT
		p.charability = CA_THOK
		p.charability2 = CA2_SPINDASH
		p.charflags = SF_FASTEDGE
		p.jumpfactor = 1*FRACUNIT + 1*FRACUNIT/3
		if p.mo.momz*P_MobjFlip(p.mo) < 0
			if p.mo.momz*P_MobjFlip(p.mo) > -4*FRACUNIT
				p.mo.momz = $ - P_GetMobjGravity(p.mo)/2
			else
				p.mo.momz = $ + P_GetMobjGravity(p.mo)/2
			end
		end
		p.pflags = $ & ~ PF_STARTJUMP
		local reset = 44
		if p.ifuckinghatebeingalive == nil
			p.ifuckinghatebeingalive = reset
			p.ifuckinghatebeingalivevalue = 15*FRACUNIT
		end
		if p.ifuckinghatebeingalive == 0
			p.ifuckinghatebeingalivevalue = 25*FRACUNIT
		else
			p.ifuckinghatebeingalivevalue = 7*FRACUNIT
		end
		--print(p.ifuckinghatebeingalive)
		--if not p.sa7controllock
			if  p.cmd.forwardmove > 0 or p.cmd.forwardmove < 0 or p.cmd.sidemove > 0 or p.cmd.sidemove < 0 or p.mo.state == S_PLAY_ROLL
				if not p.sa7controllock or p.sa7controllock and p.sa7controllock == 0
					P_InstaThrust(p.mo, p.cmd.angleturn<<16 + R_PointToAngle2(0, 0, p.cmd.forwardmove*FRACUNIT, -p.cmd.sidemove*FRACUNIT), p.ifuckinghatebeingalivevalue)
					p.mo.tics = 1
					if p.mo.state == S_PLAY_WAIT
						p.mo.state = S_PLAY_WALK
					end
					if p.ifuckinghatebeingalive > 0
						p.ifuckinghatebeingalive = $ - 1
					end
				else
					p.ifuckinghatebeingalive = reset
				end
			else
				p.ifuckinghatebeingalive = reset
			end
			if p.mo.state == S_PLAY_JUMP and not (p.cmd.forwardmove > 0 or p.cmd.forwardmove < 0 or p.cmd.sidemove > 0 or p.cmd.sidemove < 0)
				P_InstaThrust(p.mo, p.mo.angle, 0*FRACUNIT)
			end
			if (p.mo.state == S_PLAY_WALK or p.mo.state == S_PLAY_RUN or p.mo.state == S_PLAY_DASH) and not (p.cmd.forwardmove > 0 or p.cmd.forwardmove < 0 or p.cmd.sidemove > 0 or p.cmd.sidemove < 0)
				P_InstaThrust(p.mo, p.mo.angle, 0*FRACUNIT)
			end
			if p.sa7controllock and p.sa7controllock > 0
				P_InstaThrust(p.mo, p.mo.angle, 0*FRACUNIT)
				if P_IsObjectOnGround(p.mo)
					p.mo.state = S_PLAY_STND
				end
			end
		--end
		if p.mo.eflags & MFE_JUSTHITFLOOR or P_RandomRange(1, 500) == 1
			p.sa7controllock = P_RandomRange(10, 45)
		end
		if p.sa7controllock and p.sa7controllock > 0
			p.sa7controllock = $ - 1
		end
	end
end)