diff --git a/android/assets/jsons/Civ V - Gods & Kings/Units.json b/android/assets/jsons/Civ V - Gods & Kings/Units.json index 1e6b13c183..a39fd7d33e 100644 --- a/android/assets/jsons/Civ V - Gods & Kings/Units.json +++ b/android/assets/jsons/Civ V - Gods & Kings/Units.json @@ -1663,7 +1663,7 @@ "unitType": "Civilian Water", "uniques": [ "[+15]% Strength bonus for [{Military} {Water}] units within [2] tiles", - "[Every adjacent [Water] unit] heals [100] HP ", + "[Every adjacent [{Friendly} {Water}] unit] heals [100] HP ", "Can be earned through combat", "Is part of Great Person group [Admiral]", "Great Person - [War]", "Unbuildable", "Uncapturable"], diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueParameterType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueParameterType.kt index d7fee06884..a9b5c89488 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueParameterType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueParameterType.kt @@ -596,7 +596,6 @@ enum class UniqueParameterType( override val staticKnownValues = setOf("Cost", "Strength") }, - UnitTriggerTarget("unitTriggerTarget", Constants.thisUnit, "`${Constants.thisUnit}`, `${Constants.targetUnit}`, or `Every adjacent [mapUnitFilter] unit`") { override val staticKnownValues = setOf(Constants.thisUnit, Constants.targetUnit) @@ -605,10 +604,11 @@ enum class UniqueParameterType( // Every adjacent [mapUnitFilter] unit if (parameterText.startsWith("Every adjacent [") && parameterText.endsWith("] unit")) { val params = parameterText.getPlaceholderParameters() - return MapUnitFilter.isKnownValue(params[0], ruleset) + return MultiFilter.multiFilter(params[0], { MapUnitFilter.isKnownValue(it, ruleset) }, true) } return false } + override fun getErrorSeverity(parameterText: String, ruleset: Ruleset) = getErrorSeverityForFilter(parameterText, ruleset) }, /** Mod declarative compatibility: Define Mod relations by their name. */ diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueTriggerActivation.kt b/core/src/com/unciv/models/ruleset/unique/UniqueTriggerActivation.kt index 153186e23d..f29aa371d7 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueTriggerActivation.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueTriggerActivation.kt @@ -124,14 +124,14 @@ object UniqueTriggerActivation { val ruleset = civInfo.gameInfo.ruleset // Allow iterating through all unit targets, if needed. - if (unique.type?.targetTypes?.contains(UniqueTarget.UnitTriggerable) == true && !unitTriggerableIteration && tile != null + if (unique.type?.targetTypes?.contains(UniqueTarget.UnitTriggerable) == true && !unitTriggerableIteration && tile != null && !UniqueParameterType.UnitTriggerTarget.staticKnownValues.contains(unique.params[0])) { // Every adjacent [mapUnitFilter] unit val triggerFunctions = tile.getTilesInDistance(1) // Adjacent .flatMap { it.getUnits() } .filter { val mapUnitFilter = unique.params[0]?.getPlaceholderParameters()?.firstOrNull() - if (mapUnitFilter != null) it.matchesFilter(filterParam, gameContext) else false + if (mapUnitFilter != null) it.matchesFilter(mapUnitFilter, gameContext) else false } .mapNotNull { getTriggerFunction(unique, civInfo, city, it, it.getTile(), notification, triggerNotificationText, true) } if (triggerFunctions.none()) return null