From f8339181779c1894a76bcb12268ea89f259a4f12 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Sun, 19 Nov 2023 22:16:54 +0200 Subject: [PATCH] Resolved #10525 - AI clears inquisitors from city centers to make way for spaceship units --- .../unciv/logic/automation/unit/CivilianUnitAutomation.kt | 8 +++++--- .../logic/automation/unit/ReligiousUnitAutomation.kt | 3 +++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/core/src/com/unciv/logic/automation/unit/CivilianUnitAutomation.kt b/core/src/com/unciv/logic/automation/unit/CivilianUnitAutomation.kt index 4bdd8c8ef6..4174bf067c 100644 --- a/core/src/com/unciv/logic/automation/unit/CivilianUnitAutomation.kt +++ b/core/src/com/unciv/logic/automation/unit/CivilianUnitAutomation.kt @@ -11,12 +11,14 @@ import com.unciv.ui.screens.worldscreen.unit.actions.UnitActions object CivilianUnitAutomation { + fun shouldClearTileForAddInCapitalUnits(unit: MapUnit, tile:Tile) = tile.getCity()?.isCapital() == true + && !unit.hasUnique(UniqueType.AddInCapital) + && unit.civ.units.getCivUnits().any { unit.hasUnique(UniqueType.AddInCapital) } + fun automateCivilianUnit(unit: MapUnit) { if (tryRunAwayIfNeccessary(unit)) return - if (unit.currentTile.isCityCenter() && unit.currentTile.getCity()!!.isCapital() - && !unit.hasUnique(UniqueType.AddInCapital) - && unit.civ.units.getCivUnits().any { unit.hasUnique(UniqueType.AddInCapital) }) { + if (shouldClearTileForAddInCapitalUnits(unit, unit.currentTile)) { // First off get out of the way, then decide if you actually want to do something else val tilesCanMoveTo = unit.movement.getDistanceToTiles() .filter { unit.movement.canMoveTo(it.key) } diff --git a/core/src/com/unciv/logic/automation/unit/ReligiousUnitAutomation.kt b/core/src/com/unciv/logic/automation/unit/ReligiousUnitAutomation.kt index b9558f0aac..4411b8bc66 100644 --- a/core/src/com/unciv/logic/automation/unit/ReligiousUnitAutomation.kt +++ b/core/src/com/unciv/logic/automation/unit/ReligiousUnitAutomation.kt @@ -89,6 +89,9 @@ object ReligiousUnitAutomation { ?: return } + if (CivilianUnitAutomation.shouldClearTileForAddInCapitalUnits(unit, destination)) + return // Wait for the addInCapital units to go to the city! + unit.movement.headTowards(destination) if (cityToConvert != null && unit.getTile().getCity() == destination.getCity()) {