2 handed pistols firing issue

i have this script for a 2 handed pistol model, the problem is that each gun stops firing when one of them gets into reload state, i cant see why this happens
heres the code

var normalpositionleft : Vector3;
var aimpositionleft : Vector3;   
var normalpositionright : Vector3;
var aimpositionright : Vector3;
var aimFOV : float = 45;
var normalFOV : float = 65;
var speed: float;
var damping : float;
var player : Transform;

var AudioSourceleft : AudioSource;
var AudioSourceright : AudioSource;
var fireAudioSourceleft : AudioSource;
var fireAudioSourceright : AudioSource;
var emptySound : AudioClip;
var fireSound : AudioClip;
var armleft : Transform;
var armright : Transform;
var reloadSoundleft : AudioClip;
var reloadSoundright : AudioClip;

var ammoToReload : float = 12;


var impactprefab : Transform;

var projectilecount : int = 1;
var inaccuracy : float = 0.1;
var force : float = 500;
var damage : float = 50;
var range : float = 100;

var  mask : LayerMask;
var fireAnimleft : AnimationClip;
var fireAnimright : AnimationClip;
var fireAnimSpeed : float = 1.5;
var reloadAnimright : AnimationClip;
var reloadAnimleft : AnimationClip;

var shell : Transform;   
var shellPosright : Transform;
var shellPosleft : Transform;
var shellejectdelay : float = 0;
var ammo : float = 200;
var currentammoright: float = 12;
var currentammoleft: float = 12;
var muzzle : Transform;
var muzzlePosright : Transform;
var muzzlePosleft : Transform;
var retractPos : Vector3;

private var isfiring : boolean = false;
private var didfireleft : boolean = false;
private var nextField : float;
private var isaiming : boolean = false;
private var isreloadingleft : boolean;
private var isreloadingright : boolean;
private var canaim : boolean = true;
private var retract : boolean = false;   
private var canfire : boolean = true;
private var canreload : boolean = true;
private var canrun : boolean = true;

function Start()
{
    retract = false;
    Screen.lockCursor = true;
   
    onstart();
}
function Update ()
{
   
   
    var step = speed * Time.deltaTime;
   
    var newField = Mathf.SmoothDamp(Camera.main.fieldOfView, nextField, damping, .3);
    Camera.main.fieldOfView = newField;
    if (retract)
    {
        canfire = false;
        isaiming = false;
        armright.transform.localPosition = Vector3.MoveTowards(armright.transform.localPosition, retractPos, 5 * Time.deltaTime);
        armleft.transform.localPosition = Vector3.MoveTowards(armleft.transform.localPosition, retractPos, 5 * Time.deltaTime);
        nextField = normalFOV;
    }
    else
    {
        canfire = true;
    }
   
    if (Input.GetMouseButton(1) && canaim)
    {
       
        isaiming = true;
        armright.transform.localPosition = Vector3.MoveTowards(armright.transform.localPosition, aimpositionright, step);
        armleft.transform.localPosition = Vector3.MoveTowards(armleft.transform.localPosition, aimpositionleft, step);
        nextField = aimFOV;
        canrun = false;
    }
    else
    {
        isaiming = false;
        armright.transform.localPosition = Vector3.MoveTowards(armright.transform.localPosition, normalpositionright, step);
        armleft.transform.localPosition = Vector3.MoveTowards(armleft.transform.localPosition, normalpositionleft, step);
        nextField = normalFOV;
        canrun = true;
    }
    if ((currentammoleft ==0 || currentammoright == 0) && ammo == 0)
    {
        canfire = false;
        canreload = false;
        if (Input.GetMouseButtonDown(0) )
        {
            AudioSourceleft.PlayOneShot(emptySound);
        }
       
    }
    else
    {
        canreload = true;
       
    }
    if (Input.GetMouseButton(0) && canfire)
    {
        if (didfireleft)
        {
            fireright();
        }
        else
        {
       
            fireleft();
        }
       
    }
   

}



function onstart()
{
    AudioSourceleft.Stop();
    AudioSourceright.Stop();
   
   
   
}
function fireleft()
{
   
    if (currentammoleft <= 0 )
    {
       
        reloadleft();
    }
   
   
   
    if (armleft.animation[fireAnimleft.name].enabled == false && !isreloadingleft)
    {
       
       
       
        var muzzleInstance2 = Instantiate(muzzle, muzzlePosleft.transform.position,muzzlePosleft.transform.rotation);
        muzzleInstance2.parent = transform;
       
        ejectshellleft();
       
       
        fire(1);
       
        fireAudioSourceleft.PlayOneShot(fireSound, 1);
        armleft.animation[fireAnimleft.name].speed = fireAnimSpeed;    
        armleft.animation.Play(fireAnimleft.name);
        currentammoleft -=1;
       
       
       
        yield WaitForSeconds (armleft.animation[fireAnimleft.name].length * 1);
        didfireleft = true;
       
       
    }
   
   
}
function fireright()
{
    if (currentammoright <= 0 )
    {
       
        reloadright();
    }

   
   
   
    if (armright.animation[fireAnimright.name].enabled == false && !isreloadingright)
    {
        var muzzleInstance1 = Instantiate(muzzle, muzzlePosright.transform.position,muzzlePosright.transform.rotation);
        muzzleInstance1.parent = transform;
       
        ejectshellright();
           
        fire(1);
       
        fireAudioSourceright.PlayOneShot(fireSound, 1);
        armright.animation[fireAnimright.name].speed = fireAnimSpeed;    
        armright.animation.Play(fireAnimright.name);
        currentammoright -=1;
       
       
        yield WaitForSeconds (armright.animation[fireAnimright.name].length * 1);
        didfireleft = false;
               
    }
           
}   

function reloadleft()
{
   
    if (armleft.animation[reloadAnimleft.name].enabled == false && canreload)
    {
           
        isreloadingleft = true;       
        armleft.animation.Play(reloadAnimleft.name);
        AudioSourceleft.clip = reloadSoundleft;
        AudioSourceleft.loop = false;
        AudioSourceleft.volume = 1;
        AudioSourceleft.Play();
        canaim = false;
        yield WaitForSeconds(armleft.animation[reloadAnimleft.name].length * 0.3);
        ammoToReload = Mathf.Clamp(ammoToReload, ammoToReload, ammo);
       
        ammo -= ammoToReload;
        currentammoleft += ammoToReload;
       
       
        yield WaitForSeconds(armleft.animation[reloadAnimleft.name].length * 0.7);
        isreloadingleft = false;
        canaim = true;
       
       
    }
   
}
function reloadright()
{
   
    if (armright.animation[reloadAnimright.name].enabled == false && canreload)
    {
       
               
        isreloadingright = true;
        armright.animation.Play(reloadAnimright.name);
        AudioSourceright.clip = reloadSoundright;
        AudioSourceright.loop = false;
        AudioSourceright.volume = 1;
        AudioSourceright.Play();
        canaim = false;
        yield WaitForSeconds(armright.animation[reloadAnimright.name].length * 0.3);
        ammoToReload = Mathf.Clamp(ammoToReload, ammoToReload, ammo);
       
        ammo -= ammoToReload;
        currentammoright += ammoToReload;
               
        yield WaitForSeconds(armright.animation[reloadAnimright.name].length * 0.7);
               
        isreloadingright = false;
           
        canaim = true;
           
       
    }
}
   

function doRetract()
{
   
    retract = true;
}
function doNormal()
{
    onstart();
    retract = false;
}
function ejectshellleft()
{
    yield WaitForSeconds(shellejectdelay);
    var shellInstance = Instantiate(shell, shellPosleft.transform.position,shellPosleft.transform.rotation);
    shellInstance.rigidbody.AddRelativeForce(80,80,0);
    shellInstance.rigidbody.AddRelativeTorque(10,10,0);
   
}
function ejectshellright()
{
    yield WaitForSeconds(shellejectdelay);
    var shellInstance = Instantiate(shell, shellPosright.transform.position,shellPosright.transform.rotation);
    shellInstance.rigidbody.AddRelativeForce(80,80,0);
    shellInstance.rigidbody.AddRelativeTorque(10,10,0);
   
}
function fire (i : int)
{
    var rand : Vector2 = Random.insideUnitCircle;
    var fwrd = Camera.main.transform.forward;

   
   
    var camUp = Camera.main.transform.up;
    var camRight = Camera.main.transform.right;
    var wantedvector = fwrd;
    wantedvector += Random.Range( -inaccuracy, inaccuracy ) * camUp + Random.Range( -inaccuracy, inaccuracy ) * camRight;
    var ray = new Ray (transform.position, wantedvector);
    var hit : RaycastHit = new RaycastHit();
   
    if (Physics.Raycast(ray,hit, range,mask))
          {  
             
              if(hit.rigidbody) hit.rigidbody.AddForceAtPosition (force * fwrd , hit.point);
              hit.transform.SendMessageUpwards ("Damage",damage, SendMessageOptions.DontRequireReceiver);
              var decal = Instantiate(impactprefab, hit.point, Quaternion.FromToRotation(Vector3.up, hit.normal));
              decal.parent = hit.transform;
          }
}

bump

 if (Input.GetMouseButton(0) && canfire)
    {
        if (didfireleft)
        {
            fireright();
        }
        else
        {
     
            fireleft();
        }
     
    }

you depend the firing of each gun on eachother… if one can’t fire… neither can the other (didfireLeft)

Perhaps for the duration of the gun reload set the bool to only fire the other weapon…