From a0ff4c18d5a001dd237473a23865edd40400bd77 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Thu, 5 Jan 2023 13:52:17 +0200 Subject: [PATCH] Worker automation no longer considers foreign unique improvements when deciding if to remove features --- .../unciv/logic/automation/unit/WorkerAutomation.kt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/core/src/com/unciv/logic/automation/unit/WorkerAutomation.kt b/core/src/com/unciv/logic/automation/unit/WorkerAutomation.kt index 3657490c6d..ad6ac0c3a9 100644 --- a/core/src/com/unciv/logic/automation/unit/WorkerAutomation.kt +++ b/core/src/com/unciv/logic/automation/unit/WorkerAutomation.kt @@ -385,7 +385,7 @@ class WorkerAutomation( tile.resource == null || !tile.hasViewableResource(civInfo) -> null tile.terrainFeatures.isNotEmpty() && isUnbuildableAndRemovable(lastTerrain) - && !isResourceImprovementAllowedOnFeature(tile) -> Constants.remove + lastTerrain.name + && !isResourceImprovementAllowedOnFeature(tile, potentialTileImprovements) -> Constants.remove + lastTerrain.name else -> tile.tileResource.getImprovements().filter { it in potentialTileImprovements || it==tile.improvement } .maxByOrNull { Automation.rankStatsValue(ruleSet.tileImprovements[it]!!, unit.civInfo) } } @@ -421,9 +421,13 @@ class WorkerAutomation( * * Assumes the caller ensured that terrainFeature and resource are both present! */ - private fun isResourceImprovementAllowedOnFeature(tile: TileInfo): Boolean { + private fun isResourceImprovementAllowedOnFeature( + tile: TileInfo, + potentialTileImprovements: Map + ): Boolean { return tile.tileResource.getImprovements().any { resourceImprovementName -> - val resourceImprovement = ruleSet.tileImprovements[resourceImprovementName] ?: return false + if (resourceImprovementName !in potentialTileImprovements) return@any false + val resourceImprovement = potentialTileImprovements[resourceImprovementName]!! tile.terrainFeatures.any { resourceImprovement.isAllowedOnFeature(it) } } }