Bow Scripting, releasing the string

Hey, I just found an old bow script from Seth Bergman and I added some code for the animation clips and tried it on my bow model.
There are some problems , however. When I hold my mouse button to fire, it doesn’t wait for me to release it , it just shoot. Then , the bow is stuck in the aim animation unless I click again, glitching it out for good, jumping between animations at fast speed for no apparent reason D:
I commented out the arrow part since I don’t need it at the moment but here is the code

var arrowPrefab: Rigidbody;   
var ArrowSpeed = 100.0;
var fireRate = 1.5;
var nextFire = 0.0;
var pullStartTime = 0.0;
var pullTime = 0.5;
var falsePull : boolean;
var maxStrengthPullTime = 1.5; 
var fullAnim: AnimationClip;
var myAnimation : Animation;
 
function Start(){
falsePull = false;
myAnimation=GetComponent.<Animation>();
myAnimation.AddClip(fullAnim,"Longbow_aim",0,38,true);
myAnimation.AddClip(fullAnim,"Longbow_fire",38,47,true);
	
}
 
function Update ()
{
 
// pull back string
 
if(Input.GetButtonDown("Fire1"))
{
if(Time.time > nextFire)
{
myAnimation.Play("Longbow_aim");
pullStartTime = Time.time; 
}
else{
falsePull = true;
} 
}
 
// fire arrow
 
if(Input.GetButtonUp("Fire1")){ 
	if(!falsePull)
	{
		nextFire = Time.time + pullTime; 
		 myAnimation.Play("Longbow_fire");
		 
		var timePulledBack = Time.time - pullStartTime; 
		if(timePulledBack > maxStrengthPullTime) 
		timePulledBack = maxStrengthPullTime; 
		var arrowSpeed = ArrowSpeed * timePulledBack;
		 
		 /*
		var arrow : Rigidbody = Instantiate(arrowPrefab,
		              GameObject.Find("FIREPOINT").transform.position, transform.rotation);
		 
		 
		        Physics.IgnoreCollision(arrowPrefab.collider, transform.root.collider);
		 
		         arrow.rigidbody.AddForce(transform.forward * arrowSpeed); 
		         */
	 
	}
	else
	 falsePull = false;
	
	}
	if (myAnimation.isPlaying == false)
		{
			animation.CrossFade("PLAYER_LONGBOW_idle");
		}
}

I’ve solved my initial problem by wrapping the clips in clamped mode! now I can’t get to fire the arrow though! here is the code i’m using

    var falsePull : boolean;
    var maxStrengthPullTime = 1.5; 
    var ammo:int;
     
    function Start(){
    falsePull = false;
    
    	
    }
     
    function Update ()
    {
    //debug
        if(animation.IsPlaying("PLAYER_LONGBOW_fire"))
        	print("fire");
         if(animation.IsPlaying("PLAYER_LONGBOW_pull"))
        	print("fire2");
    // pull back string
     
    if(Input.GetButtonDown("Fire1"))
    {
    if(Time.time > nextFire)
    {
    animation.Play("PLAYER_LONGBOW_pull");
    pullStartTime = Time.time; 
    }
    else{
    falsePull = true;
    } 
    }
     
    // fire arrow
     
    if(Input.GetButtonUp("Fire1"))
    { 
    	if(!falsePull)
    	{
    		nextFire = Time.time + pullTime; 
    		 animation.Play("PLAYER_LONGBOW_fire");
    		 
    		var timePulledBack = Time.time - pullStartTime; // this is how long the button was held
    		if(timePulledBack > maxStrengthPullTime) // this says max strength is reached 
    		timePulledBack = maxStrengthPullTime; // max strength is ArrowSpeed * maxStrengthPullTime
    		var arrowSpeed = ArrowSpeed * timePulledBack; // adjust speed directly using pullback time
    		 
    		var arrow : Rigidbody = Instantiate(arrowPrefab,
             GameObject.Find("FIREPOINT").transform.position, transform.rotation);
     
     
            Physics.IgnoreCollision(arrowPrefab.collider, transform.root.collider);
     
             arrow.rigidbody.AddForce(transform.forward * arrowSpeed); // adjusted speed
            ammo -= 1;
            if(ammo >= 0)
            {
                animation.Play("ArrowKnocking");
            }
        
    		 
    		 
    	
    		 
    		
    		
    		         
    	 
    	}
    	else
    	 falsePull = false;
    }
    	
    }

The arrow i’m using is a child of the bow and has a rigidbody. However, it stays on the bow even though i’m trying to send it forward at line 56 using the arrow.rigidbody.AddForce.Any idea why?