Avoid pillaged great improvement from being replaced by resource improvement.

This commit is contained in:
Duan Tao 2019-01-09 11:09:57 +08:00
parent eeb494364b
commit f237adef4b
2 changed files with 9 additions and 3 deletions

View File

@ -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"

View File

@ -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