From ae4d2260271ddf87fce21edce01eb5feac5304e3 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Sat, 4 Mar 2023 20:45:57 +0200 Subject: [PATCH] Solved 'cannot start game' errors - 'always true' conditionals do not affect 'getMatchingUniques' --- core/src/com/unciv/logic/city/City.kt | 2 +- core/src/com/unciv/models/ruleset/unique/IHasUniques.kt | 2 +- core/src/com/unciv/models/ruleset/unique/Unique.kt | 3 +-- .../unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt | 4 +++- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/core/src/com/unciv/logic/city/City.kt b/core/src/com/unciv/logic/city/City.kt index a418303d24..e385ad915d 100644 --- a/core/src/com/unciv/logic/city/City.kt +++ b/core/src/com/unciv/logic/city/City.kt @@ -567,7 +567,7 @@ class City : IsPartOfGameInfoSerialization { getLocalMatchingUniques(uniqueType, stateForConditionals) } - fun getLocalMatchingUniques(uniqueType: UniqueType, stateForConditionals: StateForConditionals? = null): Sequence { + fun getLocalMatchingUniques(uniqueType: UniqueType, stateForConditionals: StateForConditionals = StateForConditionals(civ, this)): Sequence { return ( cityConstructions.builtBuildingUniqueMap.getUniques(uniqueType).filter { !it.isAntiLocalEffect } + religion.getUniques().filter { it.isOfType(uniqueType) } diff --git a/core/src/com/unciv/models/ruleset/unique/IHasUniques.kt b/core/src/com/unciv/models/ruleset/unique/IHasUniques.kt index d498189033..ea53588a22 100644 --- a/core/src/com/unciv/models/ruleset/unique/IHasUniques.kt +++ b/core/src/com/unciv/models/ruleset/unique/IHasUniques.kt @@ -17,7 +17,7 @@ interface IHasUniques { fun getMatchingUniques(uniqueTemplate: String, stateForConditionals: StateForConditionals? = null): Sequence { val matchingUniques = uniqueMap[uniqueTemplate] ?: return sequenceOf() - return matchingUniques.asSequence().filter { it.conditionalsApply(stateForConditionals) } + return matchingUniques.asSequence().filter { it.conditionalsApply(stateForConditionals ?: StateForConditionals()) } } fun getMatchingUniques(uniqueType: UniqueType, stateForConditionals: StateForConditionals? = null) = diff --git a/core/src/com/unciv/models/ruleset/unique/Unique.kt b/core/src/com/unciv/models/ruleset/unique/Unique.kt index 37b5a02608..41f0a6fa3b 100644 --- a/core/src/com/unciv/models/ruleset/unique/Unique.kt +++ b/core/src/com/unciv/models/ruleset/unique/Unique.kt @@ -48,8 +48,7 @@ class Unique(val text: String, val sourceObjectType: UniqueTarget? = null, val s return conditionalsApply(StateForConditionals(civInfo, city)) } - fun conditionalsApply(state: StateForConditionals?): Boolean { - if (state == null) return conditionals.isEmpty() + fun conditionalsApply(state: StateForConditionals = StateForConditionals()): Boolean { if (state.ignoreConditionals) return true for (condition in conditionals) { if (!conditionalApplies(condition, state)) return false diff --git a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt index e4c734cd89..a33df3af03 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt @@ -203,7 +203,9 @@ object UnitActions { return UnitAction( type = UnitActionType.FoundCity, - title = actionTextWithSideEffects(UnitActionType.FoundCity.value, unique, unit), + title = + if (hasActionModifiers) actionTextWithSideEffects(UnitActionType.FoundCity.value, unique, unit) + else UnitActionType.FoundCity.value, uncivSound = UncivSound.Chimes, action = { // check if we would be breaking a promise