mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-21 10:25:10 -04:00
Resolved #13477 - Can no longer repair unbuildable improvements in neutral territory for pillage/repair exploit loop
This commit is contained in:
parent
07ce66c77a
commit
d51ef24c20
@ -51,12 +51,13 @@ object ImprovementFunctions {
|
||||
yield(ImprovementBuildingProblem.MissingResources)
|
||||
|
||||
if (tile != null) {
|
||||
if (tile.getOwner() != civInfo && !improvement.hasUnique(UniqueType.CanBuildOutsideBorders, gameContext)) {
|
||||
if (!improvement.hasUnique(UniqueType.CanBuildJustOutsideBorders, gameContext))
|
||||
yield(ImprovementBuildingProblem.OutsideBorders)
|
||||
else if (tile.neighbors.none { it.getOwner() == civInfo })
|
||||
yield(ImprovementBuildingProblem.NotJustOutsideBorders)
|
||||
}
|
||||
if (tile.getOwner() != civInfo
|
||||
&& !improvement.hasUnique(UniqueType.CanBuildOutsideBorders, gameContext)
|
||||
&& (!improvement.hasUnique(UniqueType.CanBuildJustOutsideBorders, gameContext)
|
||||
|| tile.neighbors.none { it.getOwner() == civInfo })
|
||||
)
|
||||
yield(ImprovementBuildingProblem.OutsideBorders)
|
||||
|
||||
val knownFeatureRemovals = tile.ruleset.nonRoadTileRemovals
|
||||
.filter { rulesetImprovement ->
|
||||
rulesetImprovement.techRequired == null || civInfo.tech.isResearched(rulesetImprovement.techRequired!!)
|
||||
|
@ -6,7 +6,9 @@ import com.unciv.UncivGame
|
||||
import com.unciv.logic.civilization.Civilization
|
||||
import com.unciv.logic.civilization.PlayerType
|
||||
import com.unciv.logic.civilization.diplomacy.DiplomacyFlags
|
||||
import com.unciv.logic.civilization.managers.ImprovementFunctions
|
||||
import com.unciv.logic.map.mapunit.MapUnit
|
||||
import com.unciv.logic.map.tile.ImprovementBuildingProblem
|
||||
import com.unciv.logic.map.tile.RoadStatus
|
||||
import com.unciv.logic.map.tile.Tile
|
||||
import com.unciv.models.Counter
|
||||
@ -512,6 +514,9 @@ object UnitActionsFromUniques {
|
||||
val couldConstruct = unit.hasMovement()
|
||||
&& !tile.isCityCenter() && tile.improvementInProgress != Constants.repair
|
||||
&& !tile.isEnemyTerritory(unit.civ)
|
||||
// Are there any other improvement building problems that should block repair?
|
||||
&& ImprovementFunctions.getImprovementBuildingProblems(unit.currentTile.getImprovementToRepair()!!, GameContext(civInfo = unit.civ, unit = unit, tile = tile))
|
||||
.none { it == ImprovementBuildingProblem.OutsideBorders }
|
||||
|
||||
val turnsToBuild = getRepairTurns(unit)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user