Worker automation leaves great tile improvement alone.

This commit is contained in:
Duan Tao 2018-12-30 19:19:06 +08:00
parent 922a29e60f
commit be80aaecda
2 changed files with 7 additions and 2 deletions

View File

@ -98,7 +98,7 @@ class WorkerAutomation(val unit: MapUnit) {
val workableTiles = currentTile.getTilesInDistance(4)
.filter {
(it.civilianUnit== null || it == currentTile)
&& (it.improvement == null || (it.hasViewableResource(unit.civInfo) && it.getTileResource().improvement != it.improvement))
&& (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)

View File

@ -44,6 +44,11 @@ open class TileInfo {
return toReturn
}
fun containsGreatImprovement(): Boolean {
if (getTileImprovement() == null) return false
return getTileImprovement()!!.name in listOf("Academy", "Landmark", "Manufactory", "Customs house")
}
//region pure functions
fun getUnits(): List<MapUnit> {
val list = ArrayList<MapUnit>(2)
@ -162,7 +167,7 @@ open class TileInfo {
if (improvement.improvingTech != null && observingCiv.tech.isResearched(improvement.improvingTech!!)) stats.add(improvement.improvingTechStats!!) // eg Chemistry for mines
if (improvement.name == "Trading post" && city != null && city.civInfo.policies.isAdopted("Free Thought"))
stats.science += 1f
if (improvement.name in listOf("Academy", "Landmark", "Manufactory", "Customs house") && observingCiv.policies.isAdopted("Freedom Complete"))
if (containsGreatImprovement() && observingCiv.policies.isAdopted("Freedom Complete"))
stats.add(improvement) // again, for the double effect
}