if (getsTagBVPenalty()) { dBV += 200; } if (getsHomingBVPenalty()) { dBV += 200; }
    public int calculateBattleValue() {        double dBV = 0;        // BV is factor of anti-Mek training, movement type and weapon type.        if ( this.antiMek ) {            switch ( this.weapons ) {            case INF_RIFLE:                if ( INF_LEG == this.getMovementMode() )                    dBV = 32;                else if ( INF_MOTORIZED == this.getMovementMode() )                    dBV = 42;                else if ( INF_JUMP == this.getMovementMode() )                    dBV = 46;                else                    throw new IllegalArgumentException                        ( "Unknown movement type: " + this.getMovementMode() );                break;            case INF_MG:                if ( INF_LEG == this.getMovementMode() )                    dBV = 47;                else if ( INF_MOTORIZED == this.getMovementMode() )                    dBV = 63;                else if ( INF_JUMP == this.getMovementMode() )                    dBV = 62;                else                    throw new IllegalArgumentException                        ( "Unknown movement type: " + this.getMovementMode() );                break;            case INF_FLAMER:                if ( INF_LEG == this.getMovementMode() )                    dBV = 41;                else if ( INF_MOTORIZED == this.getMovementMode() )                    dBV = 54;                else if ( INF_JUMP == this.getMovementMode() )                    dBV = 51;                else                    throw new IllegalArgumentException                        ( "Unknown movement type: " + this.getMovementMode() );                break;            case INF_LASER:                if ( INF_LEG == this.getMovementMode() )                    dBV = 60;                else if ( INF_MOTORIZED == this.getMovementMode() )                    dBV = 70;                else if ( INF_JUMP == this.getMovementMode() )                    dBV = 71;                else                    throw new IllegalArgumentException                        ( "Unknown movement type: " + this.getMovementMode() );                break;            case INF_SRM:                if ( INF_LEG == this.getMovementMode() )                    dBV = 60;                else if ( INF_MOTORIZED == this.getMovementMode() )                    dBV = 70;                else if ( INF_JUMP == this.getMovementMode() )                    dBV = 71;                else                    throw new IllegalArgumentException                        ( "Unknown movement type: " + this.getMovementMode() );                break;            case INF_LRM:                if ( INF_LEG == this.getMovementMode() )                    dBV = 56;                else if ( INF_MOTORIZED == this.getMovementMode() )                    dBV = 75;                else if ( INF_JUMP == this.getMovementMode() )                    dBV = 87;                else                    throw new IllegalArgumentException                        ( "Unknown movement type: " + this.getMovementMode() );                break;            default:                throw new IllegalArgumentException                    ( "Unknown infantry weapon: " + this.weapons );            }        } // End anti-Mek-trained        else {            switch ( this.weapons ) {            case INF_RIFLE:                if ( INF_LEG == this.getMovementMode() )                    dBV = 23;                else if ( INF_MOTORIZED == this.getMovementMode() )                    dBV = 28;                else if ( INF_JUMP == this.getMovementMode() )                    dBV = 29;                else                    throw new IllegalArgumentException                        ( "Unknown movement type: " + this.getMovementMode() );                break;            case INF_MG:                if ( INF_LEG == this.getMovementMode() )                    dBV = 31;                else if ( INF_MOTORIZED == this.getMovementMode() )                    dBV = 39;                else if ( INF_JUMP == this.getMovementMode() )                    dBV = 37;                else                    throw new IllegalArgumentException                        ( "Unknown movement type: " + this.getMovementMode() );                break;            case INF_FLAMER:                if ( INF_LEG == this.getMovementMode() )                    dBV = 28;                else if ( INF_MOTORIZED == this.getMovementMode() )                    dBV = 35;                else if ( INF_JUMP == this.getMovementMode() )                    dBV = 32;                else                    throw new IllegalArgumentException                        ( "Unknown movement type: " + this.getMovementMode() );                break;            case INF_LASER:                if ( INF_LEG == this.getMovementMode() )                    dBV = 37;                else if ( INF_MOTORIZED == this.getMovementMode() )                    dBV = 42;                else if ( INF_JUMP == this.getMovementMode() )                    dBV = 41;                else                    throw new IllegalArgumentException                        ( "Unknown movement type: " + this.getMovementMode() );                break;            case INF_SRM:                if ( INF_LEG == this.getMovementMode() )                    dBV = 60;                else if ( INF_MOTORIZED == this.getMovementMode() )                    dBV = 70;                else if ( INF_JUMP == this.getMovementMode() )                    dBV = 71;                else                    throw new IllegalArgumentException                        ( "Unknown movement type: " + this.getMovementMode() );                break;            case INF_LRM:                if ( INF_LEG == this.getMovementMode() )                    dBV = 56;                else if ( INF_MOTORIZED == this.getMovementMode() )                    dBV = 75;                else if ( INF_JUMP == this.getMovementMode() )                    dBV = 87;                else                    throw new IllegalArgumentException                        ( "Unknown movement type: " + this.getMovementMode() );                break;            default:                throw new IllegalArgumentException                    ( "Unknown infantry weapon: " + this.weapons );            }        } // End not-anti-Mek        // Adjust for missing troopers        dBV = dBV * getInternalRemainingPercent();        // adjust for crew        double pilotFactor = crew.getBVSkillMultiplier();        dBV = dBV * pilotFactor;        return (int)Math.round(dBV);    } // End public int calculateBattleValue()