From 940cda3009d419ee50dc81575d9461e01d06b0fd Mon Sep 17 00:00:00 2001 From: SeventhM <127357473+SeventhM@users.noreply.github.com> Date: Fri, 19 Jan 2024 02:05:28 -0800 Subject: [PATCH] Treat all timed uniques as functioning as always true regardless of conditionals (#10940) * Treat all timed uniques as functioning as always true regardless of conditionals * use replaceFirst instead of replace --- core/src/com/unciv/models/ruleset/unique/Unique.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/src/com/unciv/models/ruleset/unique/Unique.kt b/core/src/com/unciv/models/ruleset/unique/Unique.kt index e3fd342285..8a4812f9b0 100644 --- a/core/src/com/unciv/models/ruleset/unique/Unique.kt +++ b/core/src/com/unciv/models/ruleset/unique/Unique.kt @@ -65,6 +65,8 @@ class Unique(val text: String, val sourceObjectType: UniqueTarget? = null, val s fun conditionalsApply(state: StateForConditionals = StateForConditionals()): Boolean { if (state.ignoreConditionals) return true + // Always allow Timed conditional uniques. They are managed elsewhere + if (conditionals.any{ it.isOfType(UniqueType.ConditionalTimedUnique) }) return true for (condition in conditionals) { if (!conditionalApplies(condition, state)) return false } @@ -478,7 +480,8 @@ class UniqueMap: HashMap>() { class TemporaryUnique() : IsPartOfGameInfoSerialization { constructor(uniqueObject: Unique, turns: Int) : this() { - unique = uniqueObject.text + val turnsText = uniqueObject.conditionals.first { it.isOfType(UniqueType.ConditionalTimedUnique) }.text + unique = uniqueObject.text.replaceFirst("<$turnsText>", "") sourceObjectType = uniqueObject.sourceObjectType sourceObjectName = uniqueObject.sourceObjectName turnsLeft = turns