From: "Enrico Weigelt, metux IT consult" <enrico.weig...@gr13.net>

---
 src/net/sf/freecol/server/model/ServerPlayer.java | 26 +++++++++++++----------
 1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/src/net/sf/freecol/server/model/ServerPlayer.java 
b/src/net/sf/freecol/server/model/ServerPlayer.java
index 836bdcf29d0..0eb01fca07d 100644
--- a/src/net/sf/freecol/server/model/ServerPlayer.java
+++ b/src/net/sf/freecol/server/model/ServerPlayer.java
@@ -31,7 +31,6 @@ import java.util.Random;
 import java.util.Set;
 import java.util.function.Function;
 import java.util.function.Predicate;
-import java.util.function.ToIntFunction;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import java.util.stream.Collectors;
@@ -543,15 +542,15 @@ public class ServerPlayer extends Player implements 
ServerModelObject {
 
         // It is necessary to still have a carrier.
         final Europe europe = getEurope();
-        final ToIntFunction<UnitType> unitPricer = ut -> {
-            int p = europe.getUnitPrice(ut);
-            return (p == UNDEFINED) ? Integer.MAX_VALUE : p;
-        };
         int goldNeeded = 0;
         if (!hasCarrier) {
-            int price = (europe == null) ? Integer.MAX_VALUE
-                : min(spec.getUnitTypesWithAbility(Ability.NAVAL_UNIT),
-                      unitPricer);
+            int price = Integer.MAX_VALUE;
+            if (europe != null)
+                for (UnitType ut : 
spec.getUnitTypesWithAbility(Ability.NAVAL_UNIT)) {
+                    int p = europe.getUnitPrice(ut);
+                    if ((p != UNDEFINED) && (p < price))
+                        price = p;
+                }
             if (price == Integer.MAX_VALUE || !checkGold(price)) {
                 logger.info(getName() + " dead, can not buy carrier.");
                 return IS_DEAD;
@@ -567,10 +566,15 @@ public class ServerPlayer extends Player implements 
ServerModelObject {
             logger.info(getName() + " dead, can not recruit.");
             return IS_DEAD;
         }
+
         UnitType unitType = null;
-        int price = Math.min(europe.getRecruitPrice(),
-                             
min(spec.getUnitTypesWithAbility(Ability.FOUND_COLONY),
-                                 unitPricer));
+        int price = europe.getRecruitPrice();
+        for (UnitType ut : spec.getUnitTypesWithAbility(Ability.FOUND_COLONY)) 
{
+            int p = europe.getUnitPrice(ut);
+            if ((p != UNDEFINED) && (p < price))
+                price = p;
+        }
+
         goldNeeded += price;
         if (checkGold(goldNeeded)) {
             logger.info(getName() + " alive, can buy colonist.");
-- 
2.11.0.rc0.7.gbe5a750


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Freecol-developers mailing list
Freecol-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freecol-developers

Reply via email to