From 200b764b0575f03d9c8b9dd138fbb939bec3e83d Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Sun, 10 Dec 2023 22:37:35 +0200 Subject: [PATCH] Resolved #10676 - Citezenship policy grants worker even without having cities --- .../ruleset/unique/UniqueTriggerActivation.kt | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueTriggerActivation.kt b/core/src/com/unciv/models/ruleset/unique/UniqueTriggerActivation.kt index 89173d0b09..efe94f0c68 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueTriggerActivation.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueTriggerActivation.kt @@ -57,9 +57,7 @@ object UniqueTriggerActivation { when (unique.type) { UniqueType.OneTimeFreeUnit -> { val unitName = unique.params[0] - val baseUnit = ruleSet.units[unitName] - if ((chosenCity == null && tile == null) || baseUnit == null) - return false + val baseUnit = ruleSet.units[unitName] ?: return false val unit = civInfo.getEquivalentUnit(baseUnit) if (unit.isCityFounder() && civInfo.isOneCityChallenger()) return false @@ -69,10 +67,15 @@ object UniqueTriggerActivation { if (limit != null && limit <= civInfo.units.getCivUnits().count { it.name == unitName }) return false - val placedUnit = if (city != null || tile == null) - civInfo.units.addUnit(unitName, chosenCity) ?: return false - else civInfo.units.placeUnitNearTile(tile.position, unitName) ?: return false - + // 4 situations: If city -> + val placedUnit = when { + city != null || (tile == null && civInfo.cities.isNotEmpty()) -> + civInfo.units.addUnit(unitName, chosenCity) ?: return false + tile != null -> civInfo.units.placeUnitNearTile(tile.position, unitName) ?: return false + civInfo.units.getCivUnits().any() -> + civInfo.units.placeUnitNearTile(civInfo.units.getCivUnits().first().currentTile.position, unitName) ?: return false + else -> return false + } val notificationText = getNotificationText(notification, triggerNotificationText, "Gained [1] [$unitName] unit(s)") ?: return true