From c3e44daa4c514aa3b32cc2bd8be758488289a4c2 Mon Sep 17 00:00:00 2001 From: yairm210 Date: Tue, 25 Mar 2025 11:36:59 +0200 Subject: [PATCH] Resolved #13091 - Resource uniques cannot use countables that depend on citywide resources --- .../models/ruleset/validation/UniqueValidator.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/core/src/com/unciv/models/ruleset/validation/UniqueValidator.kt b/core/src/com/unciv/models/ruleset/validation/UniqueValidator.kt index e0e9218b14..a3898dcd6d 100644 --- a/core/src/com/unciv/models/ruleset/validation/UniqueValidator.kt +++ b/core/src/com/unciv/models/ruleset/validation/UniqueValidator.kt @@ -176,6 +176,20 @@ class UniqueValidator(val ruleset: Ruleset) { " which references a citywide resource. This is not a valid conditional for a resource uniques, " + "as it causes a recursive evaluation loop.", RulesetErrorSeverity.Error, uniqueContainer, unique) + + // Find resource uniques with countable parameters in conditionals, that depend on citywide resources + // This too leads to an endless loop + if (unique.type in resourceUniques) + for ((index, param) in conditional.params.withIndex()){ + if (ruleset.tileResources[param]?.isCityWide != true) continue + if (unique.type!!.parameterTypeMap.getOrNull(index)?.contains(UniqueParameterType.Countable) != true) continue + + rulesetErrors.add( + "$prefix contains the modifier \"${conditional.text}\"," + + " which references a citywide resource as a countable." + + " This is not a valid conditional for a resource uniques, as it causes a recursive evaluation loop.", + RulesetErrorSeverity.Error, uniqueContainer, unique) + } val conditionalComplianceErrors = getComplianceErrors(conditional)