From 2f8de2d1969b7d7d1c41b8e13a0af83411967d4a Mon Sep 17 00:00:00 2001 From: yairm210 Date: Fri, 17 Sep 2021 10:43:03 +0300 Subject: [PATCH] Added Stats as unique parameter type --- core/src/com/unciv/logic/city/CityStats.kt | 4 +++- core/src/com/unciv/models/ruleset/Unique.kt | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/core/src/com/unciv/logic/city/CityStats.kt b/core/src/com/unciv/logic/city/CityStats.kt index b33bbd2322..c68eb8c3e4 100644 --- a/core/src/com/unciv/logic/city/CityStats.kt +++ b/core/src/com/unciv/logic/city/CityStats.kt @@ -8,6 +8,7 @@ import com.unciv.models.Counter import com.unciv.models.ruleset.Building import com.unciv.models.ruleset.ModOptionsConstants import com.unciv.models.ruleset.Unique +import com.unciv.models.ruleset.UniqueType import com.unciv.models.ruleset.unit.BaseUnit import com.unciv.models.stats.Stat import com.unciv.models.stats.Stats @@ -236,7 +237,8 @@ class CityStats(val cityInfo: CityInfo) { stats.add(unique.stats) // "[stats] if this city has at least [amount] specialists" - if (unique.placeholderText == "[] if this city has at least [] specialists" && cityInfo.population.getNumberOfSpecialists() >= unique.params[1].toInt()) + if (unique.matches(UniqueType.StatBonusForNumberOfSpecialists, cityInfo.getRuleset()) + && cityInfo.population.getNumberOfSpecialists() >= unique.params[1].toInt()) stats.add(unique.stats) // Deprecated since a very long time ago, moved here from another code section diff --git a/core/src/com/unciv/models/ruleset/Unique.kt b/core/src/com/unciv/models/ruleset/Unique.kt index 4314ab92d6..10d502832e 100644 --- a/core/src/com/unciv/models/ruleset/Unique.kt +++ b/core/src/com/unciv/models/ruleset/Unique.kt @@ -40,6 +40,14 @@ enum class UniqueParameterType(val parameterName:String) { return UniqueType.UniqueComplianceErrorSeverity.WarningOnly } }, + Stats("stats"){ + override fun getErrorSeverity(parameterText: String, ruleset: Ruleset): + UniqueType.UniqueComplianceErrorSeverity? { + if (!com.unciv.models.stats.Stats.isStats(parameterText)) + return UniqueType.UniqueComplianceErrorSeverity.RulesetInvariant + return null + } + }, Unknown("param") { override fun getErrorSeverity(parameterText: String, ruleset: Ruleset): UniqueType.UniqueComplianceErrorSeverity? { @@ -85,6 +93,7 @@ enum class UniqueType(val text:String, val replacedBy: UniqueType? = null) { DecreasedUnitMaintenanceCostsByFilter("-[amount]% [mapUnitFilter] unit maintenance costs", UnitMaintenanceDiscount), @Deprecated("As of 3.16.16") DecreasedUnitMaintenanceCostsGlobally("-[amount]% unit upkeep costs", UnitMaintenanceDiscount), + StatBonusForNumberOfSpecialists("[stats] if this city has at least [amount] specialists") ; /** For uniques that have "special" parameters that can accept multiple types, we can override them manually