Добавил логику битвы с Math.random(). Но этот долбанатор всё равно матерится на 6 условие, хотя грудь выходит, как и другие части тела.
public abstract class AbstractRobot implements Attackable, Defensable {
    private static int hitCount;
    final double min = 1;
    final double max = 4;
    final int attackRnd = rnd(min, max);
    final int defRnd = rnd(min, max);

    public BodyPart attack() {
        BodyPart attackedBodyPart = null;
        hitCount = attackRnd;

        if (hitCount == 1) {
            attackedBodyPart = BodyPart.ARM;
        } else if (hitCount == 2) {
            attackedBodyPart = BodyPart.HEAD;
        } else if (hitCount == 3) {
            hitCount = 0;
            attackedBodyPart = BodyPart.LEG;
        }
        else if (hitCount == 4) {
            hitCount = 0;
            attackedBodyPart = BodyPart.CHEST;
        }
        return attackedBodyPart;
    }

    public BodyPart defense() {
        BodyPart defendedBodyPart = null;
        hitCount = defRnd;

        if (hitCount == 1) {
            defendedBodyPart = BodyPart.HEAD;
        } else if (hitCount == 2) {
            defendedBodyPart = BodyPart.LEG;
        } else if (hitCount == 3) {
            hitCount = 0;
            defendedBodyPart = BodyPart.ARM;
        }
        else if (hitCount == 4) {
            hitCount = 0;
            defendedBodyPart = BodyPart.CHEST;
        }
        return defendedBodyPart;
    }

    public int rnd(double min, double max){
    max -= min;
    return (int)((Math.random() * ++max) + min);
    }
}