Yield WaitForSeconds?

In my script, I have spawned a tent in, and that is what allows me to sleep, when i hit p, im suppose to now move or do anything for however long in the Yield WaitForSeconds, but for some reason, it doesn’t take time away, i just stay frozen in my game and the boolean of sleep wont go off.
var player : GameObject;
var arms : GameObject;
var mainCamera : GameObject;

var sleep : boolean = false;

var rayLength = 10;

private var playerGui : PlayerGUI;



function Start()
{
	playerGui = GetComponent(PlayerGUI);
}

function Update()
{
	if(sleep == true)
	{
		Time.timeScale = 0;
		player.GetComponent(FPSInputController).enabled = false;
		player.GetComponent(CharacterMotor).enabled = false;
		player.GetComponent(MouseLook).enabled = false;
		mainCamera.GetComponent(MouseLook).enabled = false;
		arms.GetComponent(PlayerControl).enabled = false;
	}
	
	if(sleep == false)
	{
		Time.timeScale = 1;
		player.GetComponent(FPSInputController).enabled = true;
		player.GetComponent(CharacterMotor).enabled = true;
		player.GetComponent(MouseLook).enabled = true;
		mainCamera.GetComponent(MouseLook).enabled = true;
		arms.GetComponent(PlayerControl).enabled = true;
	}
	
	var hit : RaycastHit;
	var fwd = transform.TransformDirection(Vector3.forward);
	
	if(Physics.Raycast(transform.position,fwd,hit,rayLength))
	{
		if(hit.collider.gameObject.tag == "Tent")
		{
			if(Input.GetKeyDown("p"))
			{
				sleep = true;
				Debug.Log("1");
				StartCoroutine(sleepTime());
				Debug.Log("3");
			}
		}
	}
}

function sleepTime()
{
	Debug.Log("2");
	yield WaitForSeconds(1);	
	sleep = false;	
	Debug.Log("4");
}

WaitForSeconds waittime uses time adjusted based on Time.timeScale, not “real world” time.

You set Time.timeScale=0, which means that the WaitForSeconds(1) in the coroutine will never yield, since at timescale 0, one second never passes.