Resolved #11984 - mapUnitFilter errors for correct values

This commit is contained in:
yairm210 2024-07-18 23:27:07 +03:00
parent 77c802ed9f
commit e7132abc01
2 changed files with 7 additions and 2 deletions

View File

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

View File

@ -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 <by consuming this unit>"
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),