@Override public int calculateRequiredSailorAmount(IShip ship, IAIPlayer player) { int min = ship.getMinNumberOfSailors(); int max = ship.getMaxNumberOfSailors(); int range = max - min; List<PirateActivityEntry> activity = pirateActivity.getPirateActivity(); int observationDuration = pirateActivity.getObservationPeriodInDays(); int nbAttacks = dangerService.getNumberOfPirateAttacks(activity); double twoWeeks = observationDuration / 14.0; double attacksInTwoWeeks = twoWeeks / nbAttacks; if (attacksInTwoWeeks > 1) { // There should be one attack in two weeks return min; } if (attacksInTwoWeeks > 0.5) { // there should be one attack in four weeks / or half an attack in two return rnd.nextInt(range) + min; } return max; } }
int numberOfFreeLargeSlots = getNumberOfEmptyLargeWeaponSlots(ship); List<PirateActivityEntry> attacks = pirateActivity.getPirateActivity(); int numberOfAttacks = dangerService.getNumberOfSuccessfulPirateAttacks(attacks); int limitNumberOfFewAttacks = pirateActivity.getObservationPeriodInDays() / 14; // one attack every 2 weeks if (numberOfAttacks > limitNumberOfFewAttacks && numberOfFreeSlots > 0 && cash > CASH_LIMIT && ship.getCapacity() > 0) {
int numberOfFreeLargeSlots = getNumberOfEmptyLargeWeaponSlots(ship); List<PirateActivityEntry> attacks = pirateActivity.getPirateActivity(); int numberOfAttacks = dangerService.getNumberOfSuccessfulPirateAttacks(attacks); int limitNumberOfFewAttacks = pirateActivity.getObservationPeriodInDays() / 14; // one attack every 2 weeks if (numberOfAttacks > limitNumberOfFewAttacks && numberOfFreeSlots > 0 && cash > CASH_LIMIT && ship.getCapacity() > 0) {
@Override public boolean shouldUpgrade(IShip ship) { if (ship.getShipUpgradeLevel() == EShipUpgrade.LEVEL2) { return false; } int weaponsStrength = shipService.calculateShipsWeaponsStrength(ship); List<PirateActivityEntry> attacks = pirateActivity.getPirateActivity(); int observationDuration = pirateActivity.getObservationPeriodInDays(); int nbAttacks = dangerService.getNumberOfPirateAttacks(attacks); double twoWeeks = observationDuration / 14.0; double attacksInTwoWeeks = twoWeeks / nbAttacks; if (attacksInTwoWeeks > 1) { // There should be one attack in two weeks if (weaponsStrength < 4) { return true; } } if (attacksInTwoWeeks > 0) { // there should be one attack in four weeks / or half an attack in two return weaponsStrength < 6; } return false; }
int numberOfFreeLargeSlots = getNumberOfEmptyLargeWeaponSlots(ship); List<PirateActivityEntry> attacks = pirateActivity.getPirateActivity(); int numberOfAttacks = dangerService.getNumberOfPirateAttacks(attacks); int limitNumberOfFewAttacks = pirateActivity.getObservationPeriodInDays() / 14; // one attack every 2 weeks if (numberOfAttacks > limitNumberOfFewAttacks && numberOfFreeSlots > 0 && cash > CASH_LIMIT && ship.getCapacity() > 0) {