diff --git a/core/src/com/unciv/logic/civilization/Civilization.kt b/core/src/com/unciv/logic/civilization/Civilization.kt index dc17b213fd..5d37502d1f 100644 --- a/core/src/com/unciv/logic/civilization/Civilization.kt +++ b/core/src/com/unciv/logic/civilization/Civilization.kt @@ -573,6 +573,9 @@ class Civilization : IsPartOfGameInfoSerialization { return when (filter) { "Human player" -> isHuman() "AI player" -> isAI() + "Open Borders" -> state?.civInfo?.diplomacy[civName]?.hasOpenBorders ?: false + "Peace" -> state?.civInfo?.let { !diplomacyFunctions.isAtWarWith(it) } ?: false + "War" -> state?.civInfo?.let { diplomacyFunctions.isAtWarWith(it) } ?: false else -> nation.matchesFilter(filter, state, false) } } diff --git a/core/src/com/unciv/models/ruleset/unique/Countables.kt b/core/src/com/unciv/models/ruleset/unique/Countables.kt index 6c278ab4f2..504246f489 100644 --- a/core/src/com/unciv/models/ruleset/unique/Countables.kt +++ b/core/src/com/unciv/models/ruleset/unique/Countables.kt @@ -153,11 +153,13 @@ enum class Countables( override fun eval(parameterText: String, gameContext: GameContext): Int? { val filter = parameterText.getPlaceholderParameters()[0] val civilizations = gameContext.gameInfo?.civilizations ?: return null - return civilizations.count { it.isAlive() && it.matchesFilter(filter) } + return civilizations.count { it.isAlive() && it.matchesFilter(filter, gameContext) } } override fun getErrorSeverity(parameterText: String, ruleset: Ruleset): UniqueType.UniqueParameterErrorSeverity? = UniqueParameterType.CivFilter.getTranslatedErrorSeverity(parameterText, ruleset) - override fun getKnownValuesForAutocomplete(ruleset: Ruleset) = setOf() + override fun getKnownValuesForAutocomplete(ruleset: Ruleset): Set = + UniqueParameterType.CivFilter.getKnownValuesForAutocomplete(ruleset) + .map { text.fillPlaceholders(it) }.toSet() }, OwnedTiles("Owned [tileFilter] Tiles") { override fun eval(parameterText: String, gameContext: GameContext): Int? { diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueParameterType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueParameterType.kt index 70ba5580b5..24cee00cab 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueParameterType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueParameterType.kt @@ -215,7 +215,7 @@ enum class UniqueParameterType( /** Implemented by [Civ.matchesFilter][com.unciv.logic.civilization.Civilization.matchesFilter] */ CivFilter("civFilter", Constants.cityStates) { - override val staticKnownValues = setOf("AI player", "Human player") + override val staticKnownValues = setOf("AI player", "Human player", "Open Borders", "Peace", "War") override fun getErrorSeverity(parameterText: String, ruleset: Ruleset) = getErrorSeverityForFilter(parameterText, ruleset)