diff --git a/game-app/game-core/src/main/java/games/strategy/triplea/ai/pro/ProCombatMoveAi.java b/game-app/game-core/src/main/java/games/strategy/triplea/ai/pro/ProCombatMoveAi.java index 206b75b9beb..b6d1d457997 100644 --- a/game-app/game-core/src/main/java/games/strategy/triplea/ai/pro/ProCombatMoveAi.java +++ b/game-app/game-core/src/main/java/games/strategy/triplea/ai/pro/ProCombatMoveAi.java @@ -1214,20 +1214,18 @@ private void determineBestBombingAttackForBomber( int neededDamageUnits = 0; int sameTargetBombersCount = 0; final List existingAttackingBombers = attackMap.get(t).getBombers(); - if (!Properties.getDamageFromBombingDoneToUnitsInsteadOfTerritories(data.getProperties())) { - sameTargetBombersCount = existingAttackingBombers.size(); - } else { - final List sameTargetBombers = new ArrayList<>(); + if (Properties.getDamageFromBombingDoneToUnitsInsteadOfTerritories(data.getProperties())) { + final Set sameTargetBombers = new HashSet<>(); for (final Unit target : targetUnits) { neededDamageUnits += target.getHowMuchMoreDamageCanThisUnitTake(t); - for (final Unit existingBomber : existingAttackingBombers) { - if (!sameTargetBombers.contains(existingBomber) - && Matches.unitIsLegalBombingTargetBy(existingBomber).test(target)) { - sameTargetBombers.add(existingBomber); - } - } + final Predicate canBombTarget = + u -> Matches.unitIsLegalBombingTargetBy(u).test(target); + sameTargetBombers.addAll( + CollectionUtils.getMatches(existingAttackingBombers, canBombTarget)); } sameTargetBombersCount = sameTargetBombers.size(); + } else { + sameTargetBombersCount = existingAttackingBombers.size(); } // assume each other bomber causes a damage of 3 final int remainingDamagePotential =