static public boolean isNeedHeal(Game game, World world, Trooper self, Move move) {

        Trooper weakestTroop = null;
        if (self.getActionPoints() >= game.getFieldMedicHealCost()) {
            for (Trooper trooper : world.getTroopers()) {
                if (trooper.isTeammate() && (trooper.getMaximalHitpoints() - trooper.getHitpoints() > game.getFieldMedicHealBonusHitpoints())) {       //TODO if current HP is not full
                    if (weakestTroop == null) {
                        weakestTroop = trooper;
                    }
                    if (self.getDistanceTo(trooper) < self.getDistanceTo(weakestTroop)) {
                        weakestTroop = trooper;
                    }                                 // TODO need to check path instead distance
                }
            }

        }
        if (weakestTroop == null) {
            return false;
        }

//        if (self.getDistanceTo(weakestTroop) > 1 && self.getActionPoints() > getMoveCost(self.getStance(), game)) {        //TODO go to the trooper
//
//            move.setAction(ActionType.MOVE);
//            move.setX(weakestTroop.getX());
//            move.setY(weakestTroop.getY());
//
//            return true;
//        } else
        if (self.getDistanceTo(weakestTroop) <= 1) {
            move.setAction(ActionType.HEAL);
            move.setX(weakestTroop.getX());
            move.setY(weakestTroop.getY());
            return true;
        }
        return false;

    }