diff --git a/core/src/com/unciv/logic/civilization/managers/UnitManager.kt b/core/src/com/unciv/logic/civilization/managers/UnitManager.kt index 5c9db6f2ab..4d489d0d2a 100644 --- a/core/src/com/unciv/logic/civilization/managers/UnitManager.kt +++ b/core/src/com/unciv/logic/civilization/managers/UnitManager.kt @@ -55,9 +55,14 @@ class UnitManager(val civInfo: Civilization) { val unit = civInfo.getEquivalentUnit(baseUnit) val citiesNotInResistance = civInfo.cities.filterNot { it.isInResistance() } + var canSpwanUnitOnWater = false + if (city != null) { + canSpwanUnitOnWater = city.getCenterTile().matchesFilter("Water") + } + val cityToAddTo = when { - unit.isWaterUnit && (city == null || !city.isCoastal()) -> + unit.isWaterUnit && (city == null || !city.isCoastal()) && !canSpwanUnitOnWater -> citiesNotInResistance.filter { it.isCoastal() }.randomOrNull() ?: civInfo.cities.filter { it.isCoastal() }.randomOrNull() city != null -> city diff --git a/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt b/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt index 15999a2736..d0dc8a06bc 100644 --- a/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt +++ b/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt @@ -220,8 +220,9 @@ class BaseUnit : RulesetObject(), INonPerpetualConstruction { ): Sequence = sequence { val stateForConditionals = city?.state ?: civ.state - - if (city != null && isWaterUnit && !city.isCoastal()) + + // !city.getCenterTile().matchesFilter("Water") to allow the cities on Water tile to spwan naval units. + if (city != null && isWaterUnit && !city.isCoastal() && !city.getCenterTile().matchesFilter("Water")) yield(RejectionReasonType.WaterUnitsInCoastalCities.toInstance()) for (unique in getMatchingUniques(UniqueType.OnlyAvailable, GameContext.IgnoreConditionals))