public override bool blockDamage(int amount, weapon source)
    {
        if (fireCount >= overheatCapacity) {
            print ("Laser array overheated");
            return false;
        }
        bool blocked = false;
        int damage = amount;

        if (source.getTechnology() == "explosive" && source.getName() != "Mine") {
            blocked = true;
            damage = source.getSplashDamage();
            this.getMaster().takeDamage(damage);
        }else if (source.getTechnology() == "momentum"){
            blocked = true;
            damage = 0;
        }
        if (blocked) {
            print ("Reduced damage from " + amount.ToString () + " to " + damage.ToString () + "!");
        } else {
            print ("Block failed!");
        }
        fireCount += 1;
        firedInTurn = true;
        return blocked;
    }
 public override bool blockDamage(int amount, weapon source)
 {
     bool blocked = false;
     int damage = amount;
     if (source.getTechnology() == "explosive" && source.getName() != "Mine") {
         blocked = true;
         damage = source.getSplashDamage();
         this.getMaster().takeDamage(damage);
     }else if (source.getTechnology() == "momentum"){
         blocked = true;
         damage = Mathf.Max(0,amount - Random.Range(MIN_REDUCTION,MAX_REDUCTION + 1));
         this.getMaster().takeDamage(damage);
     }
     if (blocked) {
         print ("Reduced damage from " + amount.ToString () + " to " + damage.ToString () + "!");
     } else {
         print ("Block failed!");
     }
     return blocked;
 }