From d0cbc07870b085c7ba25c1299e6690391a888ce7 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Wed, 23 Dec 2020 21:23:41 +0200 Subject: [PATCH] Solved crashing bug from incorrect mods --- core/src/com/unciv/models/ruleset/Building.kt | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/core/src/com/unciv/models/ruleset/Building.kt b/core/src/com/unciv/models/ruleset/Building.kt index bcc4f9cfea..923fd78f18 100644 --- a/core/src/com/unciv/models/ruleset/Building.kt +++ b/core/src/com/unciv/models/ruleset/Building.kt @@ -255,8 +255,8 @@ class Building : NamedStats(), IConstruction { for (unique in uniqueObjects.filter { it.placeholderText == "Not displayed as an available construction without []" }) { val filter = unique.params[0] - if ((filter in civInfo.gameInfo.ruleSet.tileResources && !construction.cityInfo.civInfo.hasResource(filter)) - || (filter in civInfo.gameInfo.ruleSet.buildings && !construction.containsBuildingOrEquivalent(filter))) + if (filter in civInfo.gameInfo.ruleSet.tileResources && !construction.cityInfo.civInfo.hasResource(filter) + || filter in civInfo.gameInfo.ruleSet.buildings && !construction.containsBuildingOrEquivalent(filter)) return "Should not be displayed" } @@ -332,11 +332,19 @@ class Building : NamedStats(), IConstruction { } else if (!civInfo.policies.adoptedPolicies.contains(filter)) return "Policy is not adopted" // this reason should not be displayed } - "Requires a [] in this city" -> if (!construction.containsBuildingOrEquivalent(unique.params[0])) - return "Requires a [${civInfo.getEquivalentBuilding(unique.params[0])}] in this city" // replace with civ-specific building for user + "Requires a [] in this city" -> { + val filter = unique.params[0] + if (civInfo.gameInfo.ruleSet.buildings.containsKey(filter) + && !construction.containsBuildingOrEquivalent(filter)) + return "Requires a [${civInfo.getEquivalentBuilding(filter)}] in this city" // replace with civ-specific building for user + } - "Requires a [] in all cities" -> if (civInfo.cities.any { !it.cityConstructions.containsBuildingOrEquivalent(unique.params[0]) }) - return "Requires a [${civInfo.getEquivalentBuilding(unique.params[0])}] in all cities" // replace with civ-specific building for user + "Requires a [] in all cities" -> { + val filter = unique.params[0] + if (civInfo.gameInfo.ruleSet.buildings.containsKey(filter) + && civInfo.cities.any { !it.cityConstructions.containsBuildingOrEquivalent(unique.params[0]) }) + return "Requires a [${civInfo.getEquivalentBuilding(unique.params[0])}] in all cities" // replace with civ-specific building for user + } } if (requiredBuilding != null && !construction.containsBuildingOrEquivalent(requiredBuilding!!))