From 9c0e9131f06fe8c6d1aad0ddfc6a48a80a2750d4 Mon Sep 17 00:00:00 2001 From: yairm210 Date: Sat, 7 Sep 2024 22:37:29 +0300 Subject: [PATCH] Resolved #12187 - units are not added to cities in resistance if non-resistant cities are available --- .../src/com/unciv/logic/civilization/managers/UnitManager.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/src/com/unciv/logic/civilization/managers/UnitManager.kt b/core/src/com/unciv/logic/civilization/managers/UnitManager.kt index 26dfcde24b..5ed14b38d8 100644 --- a/core/src/com/unciv/logic/civilization/managers/UnitManager.kt +++ b/core/src/com/unciv/logic/civilization/managers/UnitManager.kt @@ -53,11 +53,14 @@ class UnitManager(val civInfo: Civilization) { if (civInfo.cities.isEmpty()) return null val unit = civInfo.getEquivalentUnit(baseUnit) + val citiesNotInResistance = civInfo.cities.filterNot { it.isInResistance() } + val cityToAddTo = when { unit.isWaterUnit && (city == null || !city.isCoastal()) -> + citiesNotInResistance.filter { it.isCoastal() }.randomOrNull() ?: civInfo.cities.filter { it.isCoastal() }.randomOrNull() city != null -> city - else -> civInfo.cities.random() + else -> citiesNotInResistance.randomOrNull() ?: civInfo.cities.random() } ?: return null // If we got a free water unit with no coastal city to place it in val placedUnit = placeUnitNearTile(cityToAddTo.location, unit.name) // silently bail if no tile to place the unit is found