diff --git a/core/src/com/unciv/logic/automation/UnitAutomation.kt b/core/src/com/unciv/logic/automation/UnitAutomation.kt index d3f848544e..fa17fe9bc1 100644 --- a/core/src/com/unciv/logic/automation/UnitAutomation.kt +++ b/core/src/com/unciv/logic/automation/UnitAutomation.kt @@ -133,7 +133,9 @@ class UnitAutomation{ } val tileCombatant = Battle(unit.civInfo.gameInfo).getMapCombatantOfTile(tile) if(tileCombatant==null) return false - return tileCombatant.getCivilization()!=unit.civInfo && unit.civInfo.isAtWarWith(tileCombatant.getCivilization()) + if(tileCombatant.getCivilization()==unit.civInfo ) return false + if(!unit.civInfo.isAtWarWith(tileCombatant.getCivilization())) return false + return true } class AttackableTile(val tileToAttackFrom:TileInfo, val tileToAttack:TileInfo) diff --git a/core/src/com/unciv/logic/automation/WorkerAutomation.kt b/core/src/com/unciv/logic/automation/WorkerAutomation.kt index a667a25cd2..1f3f1ffb17 100644 --- a/core/src/com/unciv/logic/automation/WorkerAutomation.kt +++ b/core/src/com/unciv/logic/automation/WorkerAutomation.kt @@ -30,7 +30,7 @@ class WorkerAutomation(val unit: MapUnit) { if(reachedTile!=tile) unit.doPreTurnAction() // otherwise, we get a situation where the worker is automated, so it tries to move but doesn't, then tries to automate, then move, etc, forever. Stack overflow exception! return } - if (tile.improvementInProgress == null) { + if (tile.improvementInProgress == null && tile.getBaseTerrain().type==TerrainType.Land) { val improvement = chooseImprovement(tile) if (tile.canBuildImprovement(improvement, unit.civInfo)) { // What if we're stuck on this tile but can't build there? @@ -74,6 +74,9 @@ class WorkerAutomation(val unit: MapUnit) { return true } + /** + * Returns the current tile if no tile to work was found + */ private fun findTileToWork(): TileInfo { val currentTile=unit.getTile() val workableTiles = currentTile.getTilesInDistance(4) @@ -124,7 +127,7 @@ class WorkerAutomation(val unit: MapUnit) { tile.baseTerrain == "Hill" -> "Mine" tile.baseTerrain in listOf("Grassland","Desert","Plains") -> "Farm" tile.baseTerrain == "Tundra" -> "Trading post" - else -> null + else -> throw Exception("No improvement found for "+tile.baseTerrain) } return GameBasics.TileImprovements[improvementString]!! }