private int calculateChildDeathLimit(IPlayer player) { if (player.getChildren().isEmpty()) { return 0; } int noAdultChildren = filterNonAdultChildren(player).size(); return 9000 / noAdultChildren; }
private List<IChild> filterNonAdultChildren(IPlayer player) { return player.getChildren().stream() .filter(child -> dateService.getAge(child.getBirthDate()) < 18) .collect(Collectors.toList()); }
@VisibleForTesting void handleChildDeathEvent(boolean catastopheEvent, IPlayer player, boolean childBirth, boolean spouseDeath) { if (!catastopheEvent && !spouseDeath && !childBirth) { int childDeathLimit = calculateChildDeathLimit(player); boolean childDeath = !spouseDeath && childDeathLimit > 0 && rnd.nextInt(childDeathLimit) == 0; if (childDeath) { List<IChild> nonAdults = filterNonAdultChildren(player); IChild child = nonAdults.get(rnd.nextInt(nonAdults.size())); ChildDeathState state = ChildDeathState.builder() .location(player.getHometown().getName()) .date(date.getCurrentDate()) .child(child) .build(); List<IChild> children = player.getChildren(); children.remove(child); eventService.postToHumanPlayer(state, player, "ch.sahits.game.openpatrician.engine.event.EventEngine.message.childDeath.titl"); } } }
boolean spouseDeath = false; if (player.getSpouseData().isPresent() && !catastopheEvent) { childBirth = rnd.nextInt(400 * (player.getChildren().size() + 1)) == 42; int spouseDeathPropLimit = 5000; boolean spuseDeathSingle = rnd.nextInt(spouseDeathPropLimit) == 42; .name(name) .build(); player.getChildren().add(child); if (spuseDeathSingle) { player.spouseDies();
createAndAddNewText(box, messageSource.getMessage("ch.sahits.game.openpatrician.display.dialog.PersonalDialog.children", new Object[]{player.getChildren().size()}, locale.getCurrentLocal()));