From 43ef42be5f9800a2108a34174a397447d1121cd4 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Mon, 16 Jul 2018 09:17:42 +0300 Subject: [PATCH] When removing a terrain (e.g. Forest) whose improvement depends on it (e.g. Lumber mill), the improvement is removed --- core/src/com/unciv/logic/map/MapUnit.kt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/core/src/com/unciv/logic/map/MapUnit.kt b/core/src/com/unciv/logic/map/MapUnit.kt index 50c0fcf51e..6e2d9c44d8 100644 --- a/core/src/com/unciv/logic/map/MapUnit.kt +++ b/core/src/com/unciv/logic/map/MapUnit.kt @@ -77,7 +77,16 @@ class MapUnit { tile.turnsToImprovement -= 1 if (tile.turnsToImprovement != 0) return when { - tile.improvementInProgress!!.startsWith("Remove") -> tile.terrainFeature = null + tile.improvementInProgress!!.startsWith("Remove") -> { + val tileImprovement = tile.tileImprovement + if(tileImprovement!=null + && tileImprovement.terrainsCanBeBuiltOn.contains(tile.terrainFeature) + && !tileImprovement.terrainsCanBeBuiltOn.contains(tile.baseTerrain)) { + tile.improvement = null // We removed a terrain (e.g. Forest) and the improvement (e.g. Lumber mill) requires it! + } + + tile.terrainFeature = null + } tile.improvementInProgress == "Road" -> tile.roadStatus = RoadStatus.Road tile.improvementInProgress == "Railroad" -> tile.roadStatus = RoadStatus.Railroad else -> tile.improvement = tile.improvementInProgress