diff --git a/core/src/com/unciv/logic/civilization/managers/ImprovementFunctions.kt b/core/src/com/unciv/logic/civilization/managers/ImprovementFunctions.kt index 750d35c3fe..16570a41fc 100644 --- a/core/src/com/unciv/logic/civilization/managers/ImprovementFunctions.kt +++ b/core/src/com/unciv/logic/civilization/managers/ImprovementFunctions.kt @@ -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!!) diff --git a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActionsFromUniques.kt b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActionsFromUniques.kt index 46d85e71dd..65947d391d 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActionsFromUniques.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActionsFromUniques.kt @@ -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)