mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-22 10:54:19 -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)
|
yield(ImprovementBuildingProblem.MissingResources)
|
||||||
|
|
||||||
if (tile != null) {
|
if (tile != null) {
|
||||||
if (tile.getOwner() != civInfo && !improvement.hasUnique(UniqueType.CanBuildOutsideBorders, gameContext)) {
|
if (tile.getOwner() != civInfo
|
||||||
if (!improvement.hasUnique(UniqueType.CanBuildJustOutsideBorders, gameContext))
|
&& !improvement.hasUnique(UniqueType.CanBuildOutsideBorders, gameContext)
|
||||||
yield(ImprovementBuildingProblem.OutsideBorders)
|
&& (!improvement.hasUnique(UniqueType.CanBuildJustOutsideBorders, gameContext)
|
||||||
else if (tile.neighbors.none { it.getOwner() == civInfo })
|
|| tile.neighbors.none { it.getOwner() == civInfo })
|
||||||
yield(ImprovementBuildingProblem.NotJustOutsideBorders)
|
)
|
||||||
}
|
yield(ImprovementBuildingProblem.OutsideBorders)
|
||||||
|
|
||||||
val knownFeatureRemovals = tile.ruleset.nonRoadTileRemovals
|
val knownFeatureRemovals = tile.ruleset.nonRoadTileRemovals
|
||||||
.filter { rulesetImprovement ->
|
.filter { rulesetImprovement ->
|
||||||
rulesetImprovement.techRequired == null || civInfo.tech.isResearched(rulesetImprovement.techRequired!!)
|
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.Civilization
|
||||||
import com.unciv.logic.civilization.PlayerType
|
import com.unciv.logic.civilization.PlayerType
|
||||||
import com.unciv.logic.civilization.diplomacy.DiplomacyFlags
|
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.mapunit.MapUnit
|
||||||
|
import com.unciv.logic.map.tile.ImprovementBuildingProblem
|
||||||
import com.unciv.logic.map.tile.RoadStatus
|
import com.unciv.logic.map.tile.RoadStatus
|
||||||
import com.unciv.logic.map.tile.Tile
|
import com.unciv.logic.map.tile.Tile
|
||||||
import com.unciv.models.Counter
|
import com.unciv.models.Counter
|
||||||
@ -512,6 +514,9 @@ object UnitActionsFromUniques {
|
|||||||
val couldConstruct = unit.hasMovement()
|
val couldConstruct = unit.hasMovement()
|
||||||
&& !tile.isCityCenter() && tile.improvementInProgress != Constants.repair
|
&& !tile.isCityCenter() && tile.improvementInProgress != Constants.repair
|
||||||
&& !tile.isEnemyTerritory(unit.civ)
|
&& !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)
|
val turnsToBuild = getRepairTurns(unit)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user