mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-06 08:21:36 +07:00
Resolve #7937 - Automated workers no longer improve unworkable tiles
This commit is contained in:
@ -5,8 +5,8 @@ import com.unciv.Constants
|
|||||||
import com.unciv.UncivGame
|
import com.unciv.UncivGame
|
||||||
import com.unciv.logic.HexMath
|
import com.unciv.logic.HexMath
|
||||||
import com.unciv.logic.automation.Automation
|
import com.unciv.logic.automation.Automation
|
||||||
import com.unciv.logic.automation.civilization.NextTurnAutomation
|
|
||||||
import com.unciv.logic.automation.ThreatLevel
|
import com.unciv.logic.automation.ThreatLevel
|
||||||
|
import com.unciv.logic.automation.civilization.NextTurnAutomation
|
||||||
import com.unciv.logic.automation.unit.UnitAutomation.wander
|
import com.unciv.logic.automation.unit.UnitAutomation.wander
|
||||||
import com.unciv.logic.city.CityInfo
|
import com.unciv.logic.city.CityInfo
|
||||||
import com.unciv.logic.civilization.CivilizationInfo
|
import com.unciv.logic.civilization.CivilizationInfo
|
||||||
@ -285,17 +285,23 @@ class WorkerAutomation(
|
|||||||
val city = tile.getCity()
|
val city = tile.getCity()
|
||||||
if (city == null || city.civInfo != civInfo)
|
if (city == null || city.civInfo != civInfo)
|
||||||
return false
|
return false
|
||||||
|
if (!city.tilesInRange.contains(tile)
|
||||||
|
&& !tile.hasViewableResource(civInfo)
|
||||||
|
&& civInfo.cities.none { it.getCenterTile().aerialDistanceTo(tile) <= 3 })
|
||||||
|
return false // unworkable tile
|
||||||
|
|
||||||
val junkImprovement = tile.getTileImprovement()?.hasUnique(UniqueType.AutomatedWorkersWillReplace)
|
val junkImprovement = tile.getTileImprovement()?.hasUnique(UniqueType.AutomatedWorkersWillReplace)
|
||||||
if (tile.improvement != null && junkImprovement == false && !UncivGame.Current.settings.automatedWorkersReplaceImprovements) {
|
if (tile.improvement != null && junkImprovement == false
|
||||||
if (unit.civInfo.isPlayerCivilization())
|
&& !UncivGame.Current.settings.automatedWorkersReplaceImprovements
|
||||||
return false
|
&& unit.civInfo.isPlayerCivilization())
|
||||||
}
|
return false
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (tile.improvement == null || junkImprovement == true) {
|
if (tile.improvement == null || junkImprovement == true) {
|
||||||
if (tile.improvementInProgress != null && unit.canBuildImprovement(tile.getTileImprovementInProgress()!!, tile)) return true
|
if (tile.improvementInProgress != null && unit.canBuildImprovement(tile.getTileImprovementInProgress()!!, tile)) return true
|
||||||
val chosenImprovement = chooseImprovement(unit, tile)
|
val chosenImprovement = chooseImprovement(unit, tile)
|
||||||
if (chosenImprovement != null && tile.canBuildImprovement(chosenImprovement, civInfo) && unit.canBuildImprovement(chosenImprovement, tile)) return true
|
if (chosenImprovement != null && tile.canBuildImprovement(chosenImprovement, civInfo) && unit.canBuildImprovement(chosenImprovement, tile)) return true
|
||||||
|
|
||||||
} else if (!tile.containsGreatImprovement() && tile.hasViewableResource(civInfo)
|
} else if (!tile.containsGreatImprovement() && tile.hasViewableResource(civInfo)
|
||||||
&& tile.tileResource.isImprovedBy(tile.improvement!!)
|
&& tile.tileResource.isImprovedBy(tile.improvement!!)
|
||||||
&& (chooseImprovement(unit, tile) // if the chosen improvement is not null and buildable
|
&& (chooseImprovement(unit, tile) // if the chosen improvement is not null and buildable
|
||||||
|
Reference in New Issue
Block a user