From e7132abc012d555cc72a9e59d492483a40980126 Mon Sep 17 00:00:00 2001 From: yairm210 Date: Thu, 18 Jul 2024 23:27:07 +0300 Subject: [PATCH] Resolved #11984 - mapUnitFilter errors for correct values --- .../unciv/models/ruleset/unique/UniqueParameterType.kt | 8 ++++++-- core/src/com/unciv/models/ruleset/unique/UniqueType.kt | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueParameterType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueParameterType.kt index 5acf03a761..409ec5ec28 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueParameterType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueParameterType.kt @@ -105,6 +105,7 @@ enum class UniqueParameterType( CityFilter.getKnownValuesForAutocomplete(ruleset) }, + /** Implemented by [MapUnit.matchesFilter][com.unciv.logic.map.mapunit.MapUnit.matchesFilter] */ MapUnitFilter("mapUnitFilter", Constants.wounded, null, "Map Unit Filters") { override val staticKnownValues = setOf(Constants.wounded, Constants.barbarians, "Barbarian", @@ -112,10 +113,13 @@ enum class UniqueParameterType( override fun getErrorSeverity(parameterText: String, ruleset: Ruleset) = getErrorSeverityForFilter(parameterText, ruleset) + override fun isKnownValue(parameterText: String, ruleset: Ruleset) = when { - super.isKnownValue(parameterText, ruleset) -> true - // We don't add the unit promotion uniques into the "known values" set because it's too much + parameterText in staticKnownValues -> true + parameterText in ruleset.unitPromotions -> true ruleset.unitPromotions.values.any { it.hasUnique(parameterText) } -> true + CivFilter.isKnownValue(parameterText, ruleset) -> true + BaseUnitFilter.isKnownValue(parameterText, ruleset) -> true else -> false } diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt index 81e798d41f..db26611f74 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt @@ -345,6 +345,7 @@ enum class UniqueType( FoundCity("Founds a new city", UniqueTarget.UnitAction), ConstructImprovementInstantly("Can instantly construct a [improvementFilter] improvement", UniqueTarget.UnitAction), + // TODO: Should be replaced by "Can instantly construct a [] improvement " CreateWaterImprovements("May create improvements on water resources", UniqueTarget.Unit), BuildImprovements("Can build [improvementFilter/terrainFilter] improvements on tiles", UniqueTarget.Unit), CanSpreadReligion("Can Spread Religion", UniqueTarget.UnitAction),