Worker remove feature far away from cities fix (#10847)

* Worker AI doesn't remove forests and marshes away from their borders.

* Reverted a previous change that slipped into this branch
This commit is contained in:
Oskar Niesen
2023-12-31 15:06:14 -06:00
committed by GitHub
parent 35c19bf9de
commit 15a17335c1

View File

@ -25,6 +25,7 @@ import com.unciv.models.ruleset.tile.Terrain
import com.unciv.models.ruleset.tile.TileImprovement
import com.unciv.models.ruleset.unique.LocalUniqueCache
import com.unciv.models.ruleset.unique.UniqueType
import com.unciv.models.stats.Stats
import com.unciv.ui.screens.worldscreen.unit.actions.UnitActions
import com.unciv.ui.screens.worldscreen.unit.actions.UnitActionsFromUniques
import com.unciv.utils.Log
@ -644,7 +645,14 @@ class WorkerAutomation(
private fun getImprovementRanking(tile: Tile, unit: MapUnit, improvementName: String, localUniqueCache: LocalUniqueCache): Float {
val improvement = ruleSet.tileImprovements[improvementName]!!
val stats = tile.stats.getStatDiffForImprovement(improvement, civInfo, tile.getCity(), localUniqueCache)
var stats = Stats()
if (tile.getOwner() == unit.civ)
stats = tile.stats.getStatDiffForImprovement(improvement, civInfo, tile.getCity(), localUniqueCache)
// We could expand to this tile in the future
else if (ruleSet.tileImprovements[improvementName]!!.hasUnique(UniqueType.CanBuildOutsideBorders) &&
tile.neighbors.any {it.getOwner() == unit.civ && it.owningCity != null && tile.aerialDistanceTo(it.owningCity!!.getCenterTile()) <= 3})
stats = tile.stats.getStatDiffForImprovement(improvement, civInfo, tile.getCity(), localUniqueCache).div(3f)
var value = Automation.rankStatsValue(stats, unit.civ)
// Calculate the bonus from gaining the resources, this isn't included in the stats above
if (tile.resource != null && tile.tileResource.resourceType != ResourceType.Bonus) {