diff --git a/core/src/com/unciv/logic/automation/unit/CityLocationTileRanker.kt b/core/src/com/unciv/logic/automation/unit/CityLocationTileRanker.kt index e353be3927..9f95a9ee83 100644 --- a/core/src/com/unciv/logic/automation/unit/CityLocationTileRanker.kt +++ b/core/src/com/unciv/logic/automation/unit/CityLocationTileRanker.kt @@ -9,6 +9,7 @@ import com.unciv.logic.map.mapunit.MapUnit import com.unciv.logic.map.tile.Tile import com.unciv.models.ruleset.tile.ResourceType import com.unciv.models.ruleset.unique.LocalUniqueCache +import com.unciv.models.ruleset.unique.StateForConditionals import com.unciv.models.ruleset.unique.UniqueType object CityLocationTileRanker { @@ -31,7 +32,10 @@ object CityLocationTileRanker { val nearbyCities = unit.civ.gameInfo.getCities() .filter { it.getCenterTile().aerialDistanceTo(unit.getTile()) <= 7 + range } + val uniques = unit.getMatchingUniques(UniqueType.FoundCity) val possibleCityLocations = unit.getTile().getTilesInDistance(range) + // Filter out tiles that we can't actually found on + .filter { tile -> uniques.any { it.conditionalsApply(StateForConditionals(unit = unit, tile = tile)) } } .filter { canSettleTile(it, unit.civ, nearbyCities) && (unit.getTile() == it || unit.movement.canMoveTo(it)) } val uniqueCache = LocalUniqueCache() val bestTilesToFoundCity = BestTilesToFoundCity()