diff --git a/android/build.gradle b/android/build.gradle index 1112f3a8e3..6ca5c63c38 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -21,8 +21,8 @@ android { applicationId "com.unciv.game" minSdkVersion 14 targetSdkVersion 26 - versionCode 57 - versionName "2.1.7" + versionCode 58 + versionName "2.1.8" } buildTypes { release { diff --git a/core/src/com/unciv/logic/automation/UnitAutomation.kt b/core/src/com/unciv/logic/automation/UnitAutomation.kt index 37dc8d7194..f60420edf1 100644 --- a/core/src/com/unciv/logic/automation/UnitAutomation.kt +++ b/core/src/com/unciv/logic/automation/UnitAutomation.kt @@ -133,15 +133,16 @@ class UnitAutomation{ val nearbyTileRankings = unit.getTile().getTilesInDistance(7) .associateBy ( {it},{ Automation().rankTile(it,unit.civInfo) }) - var possibleTiles = unit.getTile().getTilesInDistance(5) + val possibleTiles = unit.getTile().getTilesInDistance(5) .minus(tilesNearCities) - if(possibleTiles.isEmpty()) // We got a badass over here, all tiles within 5 are taken? SEARCH EVERYWHERE - possibleTiles = unit.civInfo.getViewableTiles() - .minus(tilesNearCities) - - if(possibleTiles.isEmpty())// STILL? Practically impossibru but this may prevent a crash - return // todo: add random walk? + if(possibleTiles.isEmpty()) // We got a badass over here, all tiles within 5 are taken? Screw it, random walk. + { + unit.moveToTile(unit.getDistanceToTiles() + .filter { it.key.unit == null && it.value==unit.currentMovement } // at edge of walking distance + .toList().getRandom().first) + return + } val bestCityLocation = possibleTiles .maxBy { rankTileAsCityCenter(it, nearbyTileRankings) }!!