@Override protected EventHandler<MouseEvent> createAcceptHandler() { return mouseEvent -> { try { IPatrol patrol = (IPatrol) currentPerson.get(); PatrolInternalState patrolState = new PatrolInternalState(patrol.getPremium(), patrol.getBonus(), patrol.getDestinations()); IShip ship = null; if (city.getActiveShip() instanceof IShip) { ship = (IShip) city.getActiveShip(); } IPlayer player = city.getPlayer(); IAttackListener attackListener = eventHandlerFactory.getAttackListener(ship, patrolState); int minutes = rnd.nextInt(600); LocalDateTime postMessage = date.getCurrentDate().plusMinutes(minutes); String cityName = patrolState.nextDestination().get().getName(); taskFactory.getPostponedDisplayMessage(postMessage, "ch.sahits.game.openpatrician.display.dialog.TavernPatrolDialog.acceptMessage", ship.getName(), cityName); LocalDateTime firstDeadline = date.getCurrentDate().plusDays(6); eventHandlerFactory.getNextPatrolStateion(ship, patrolState.nextDestination().get(), patrolState, player, firstDeadline, attackListener); patrol.leave(); executeOnCloseButtonClicked(); } catch (RuntimeException e) { logger.error("Failed to accept patrol offer", e); } }; }