diff --git a/core/src/com/unciv/logic/automation/WorkerAutomation.kt b/core/src/com/unciv/logic/automation/WorkerAutomation.kt index 1c35d5609f..b5bd141ae6 100644 --- a/core/src/com/unciv/logic/automation/WorkerAutomation.kt +++ b/core/src/com/unciv/logic/automation/WorkerAutomation.kt @@ -102,7 +102,7 @@ class WorkerAutomation(val unit: MapUnit) { && (it.improvement == null || (it.hasViewableResource(unit.civInfo) && !it.containsGreatImprovement() && it.getTileResource().improvement != it.improvement)) && it.isLand() && !it.getBaseTerrain().impassable - && it.canBuildImprovement(chooseImprovement(it, unit.civInfo), unit.civInfo) + && (it.containsUnfinishedGreatImprovement() || it.canBuildImprovement(chooseImprovement(it, unit.civInfo), unit.civInfo)) && {val city=it.getCity(); city==null || it.getCity()?.civInfo == unit.civInfo}() // don't work tiles belonging to another civ }.sortedByDescending { getPriority(it, unit.civInfo) }.toMutableList() @@ -145,6 +145,7 @@ class WorkerAutomation(val unit: MapUnit) { tile.improvementInProgress != null -> tile.improvementInProgress improvementStringForResource != null -> improvementStringForResource tile.containsGreatImprovement() -> null + tile.containsUnfinishedGreatImprovement() -> null tile.terrainFeature == "Jungle" -> "Trading post" tile.terrainFeature == "Marsh" -> "Remove Marsh" tile.terrainFeature == "Forest" -> "Lumber mill" diff --git a/core/src/com/unciv/logic/map/TileInfo.kt b/core/src/com/unciv/logic/map/TileInfo.kt index 99de44f996..7c4b92aa92 100644 --- a/core/src/com/unciv/logic/map/TileInfo.kt +++ b/core/src/com/unciv/logic/map/TileInfo.kt @@ -45,8 +45,13 @@ open class TileInfo { } fun containsGreatImprovement(): Boolean { - if (getTileImprovement() == null) return false - return getTileImprovement()!!.name in listOf("Academy", "Landmark", "Manufactory", "Customs house") + if (improvement in listOf("Academy", "Landmark", "Manufactory", "Customs house")) return true + return false + } + + fun containsUnfinishedGreatImprovement(): Boolean { + if (improvementInProgress in listOf("Academy", "Landmark", "Manufactory", "Customs house")) return true + return false } //region pure functions