From ba9b81569f721d43a0815fdc0b69b8fb0e898c15 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Thu, 14 Mar 2024 21:01:19 +0200 Subject: [PATCH] Resolved #11174 - Workers cannot repair improvements in enemy territory, thus avoiding repair-pillage exploit --- core/src/com/unciv/logic/map/mapunit/MapUnit.kt | 5 ++++- .../worldscreen/unit/actions/UnitActionsFromUniques.kt | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/core/src/com/unciv/logic/map/mapunit/MapUnit.kt b/core/src/com/unciv/logic/map/mapunit/MapUnit.kt index 3c4d3ade88..edf8cdb2ae 100644 --- a/core/src/com/unciv/logic/map/mapunit/MapUnit.kt +++ b/core/src/com/unciv/logic/map/mapunit/MapUnit.kt @@ -558,7 +558,10 @@ class MapUnit : IsPartOfGameInfoSerialization { && tile.improvementInProgress != improvement.name ) return false val buildImprovementUniques = getMatchingUniques(UniqueType.BuildImprovements) - if (tile.improvementInProgress == Constants.repair && buildImprovementUniques.any()) return true + if (tile.improvementInProgress == Constants.repair) { + if (tile.isEnemyTerritory(civ)) return false + return buildImprovementUniques.any() + } return buildImprovementUniques .any { improvement.matchesFilter(it.params[0]) || tile.matchesTerrainFilter(it.params[0]) } } 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 49d02b914b..32177173dc 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 @@ -439,6 +439,7 @@ object UnitActionsFromUniques { val couldConstruct = unit.currentMovement > 0 && !tile.isCityCenter() && tile.improvementInProgress != Constants.repair + && !tile.isEnemyTerritory(unit.civ) val turnsToBuild = getRepairTurns(unit)