Dispenser Help

So I have made a script that I’ve applied to something that can be compared with the Dispensers in Half Life, aka the stations that gives you health and armor.
I have a problem though, no matter where they are in the level, if I drain one they all get drained (and I get both health and armor if I have both of them out)

Script:
using UnityEngine;
using System.Collections;

public class RechargeScript : MonoBehaviour {
	public enum tankTypes {Health, Armor};
	public tankTypes tankType;

	public Texture[] states; //Element 0 = Usable; Element 1 = Depleted;

	public float ammount; //Max 100;

	public GameObject front;

	FPSController fpsc;

	// Use this for initialization
	void Awake(){
		fpsc = GameObject.FindWithTag ("Player").GetComponent<FPSController> ();
	}

	void Start () {
		bool state = true;

		if (states.Length > 2 || states.Length < 2) {
			Debug.LogError ("Variable states in " + gameObject.name + " takes 2 elements and 2 only!");
			state = false;
		}
		if (ammount > 0 && state == true) {
			front.GetComponent<Renderer> ().material.mainTexture = states [0];
		} else if (ammount == 0 && state == true) {
			front.GetComponent<Renderer> ().material.mainTexture = states [1];
		}
	}
	
	// Update is called once per frame
	void Update () {
		ammount = Mathf.Clamp (ammount, 0, 100);

		RaycastHit hit;
		if (Input.GetButton ("Use")) {
			Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
			if(Physics.Raycast (ray, out hit, 1)){
				if(hit.transform.tag == "RechargeStation"){
					if(ammount > 0){
						ammount -= 10 * Time.deltaTime;
						if(tankType == tankTypes.Armor)
							fpsc.armor += 10 * Time.deltaTime;
						else if(tankType == tankTypes.Health)
							fpsc.health += 10 * Time.deltaTime;
					}
					else{
						Debug.Log("Tank is Empty");
						front.GetComponent<Renderer>().material.mainTexture = states[1];
					}
				}
			}
		}
	}
}

It works as intended exept for the problem I’ve explained.
FPSController is a script I’ve made, shouldn’t need more info than that, I just ask for the health and armor variables from it anyways.
If you need anymore info tell me and Ill add it in.

Thanks!

This code is going to be executed for every object the script is on right?

if (Input.GetButton ("Use")) {
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    if(Physics.Raycast (ray, out hit, 1)){
        if(hit.transform.tag == "RechargeStation"){

It’s also true for every object the script is on because a ray from the camera position to the station that happens to be in front of the player is going to hit that station.

What’s missing is a check to make sure the station being hit is the one that the script is on. Something like…

if (hit.transform.tag == "RechargeStation" && hit.transform == this.transform)
{
    // this particular station is the one that was hit
}