rate -= type.getDamageAbsorption(this,m.getLocation()); type.damageTaken++;
rate -= m.getDamageAbsorption(this,m.getLocation()); m.damageTaken++;
    private int getAbsorptionRate(int location, int damage){         int rate = damage;                if ( location != Mech.LOC_RARM && location != Mech.LOC_LARM )            return rate;                if ( damage <= 0 )            return 0;                for (int slot = 0; slot < this.getNumberOfCriticals(location); slot++) {            CriticalSlot cs = this.getCritical(location,slot);                        if ( cs == null )                continue;                        if ( cs.getType() != CriticalSlot.TYPE_EQUIPMENT )                continue;                        if ( cs.isDamaged() )                continue;                        Mounted m = this.getEquipment(cs.getIndex());                        EquipmentType type = m.getType();            if (type instanceof MiscType && ((MiscType)type).isShield()) {                rate -= type.getDamageAbsorption(this,m.getLocation());                type.damageTaken++;                return Math.max(0,rate);            }        }        return rate;    }