Add Friendly keyword

This commit is contained in:
Rob Loach 2025-09-13 15:05:13 -04:00
parent 13d0c3c025
commit 3378f01e97
No known key found for this signature in database
GPG Key ID: 627C60834A74A21A
3 changed files with 5 additions and 5 deletions

View File

@ -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 <by consuming this unit>",
"[Every adjacent [{Friendly} {Water}] unit] heals [100] HP <by consuming this unit>",
"Can be earned through combat",
"Is part of Great Person group [Admiral]",
"Great Person - [War]", "Unbuildable", "Uncapturable"],

View File

@ -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. */

View File

@ -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