Recharging weapon only discharging.

Here is the code first of all.

// var block
var ammo_charge : int;
var ammo_shot : ParticleEmitter;
var ammo_take : int;
var ammo_amount = 100;
var ammo_text : GUIText;
var mouse_button;
var ammo_gain : int;
// var setting block
ammo_shot = GetComponentInChildren(ParticleEmitter);
Screen.lockCursor = true;
// function block
function Update () {

    ammo_amount += ((ammo_gain * Time.deltaTime) * ammo_charge); // charge the particle beam up

    mouse_button = Input.GetMouseButton(0); // get mouse input

    switch(mouse_button) {
        case true:
            ammo_charge = 0; // stop charging
            ammo_shot.emit = true; // turn the emitter on
            ammo_amount = ammo_amount - (ammo_take * Time.deltaTime); // remove ammo per second
            break;
        case false:
            ammo_charge = 1; // start charging
            ammo_shot.emit = false; // turn the emitter off
            break;
    }

    if (ammo_amount <= 0) { // if the ammo is less than or equal to 0 stop fireing
        ammo_shot.emit = false; // turn emitter off
        ammo_amount = 0; // just incase it is less than 0
    }

    if (ammo_amount > 100) { // if ammo is greater than 100 reset to 100
        ammo_amount = 100;
    } 

    ammo_text.text = Int_to_String(Mathf.Round(ammo_amount));; // convert int to string

}

Now it should recharge the weapon but for some reason it does not and it always removes ammo at the same rate even when I change that rate in the script.

I see that ammo_amount is an integer. You're trying to add a float to it (something multiplied by Time.deltaTime). That's not going to work unless ammo_amount is a float. So either define ammo_amount as a float or use 100.0, which does the same thing.

--Eric