From a248a1178cb6bc5319b4e71867888060febdd964 Mon Sep 17 00:00:00 2001 From: SomeTroglodyte <63000004+SomeTroglodyte@users.noreply.github.com> Date: Mon, 2 Aug 2021 19:50:56 +0200 Subject: [PATCH] Deprecate Building.cannotBeBuiltWith (Solar/Nuclear Plant exclusion now as unique, auto-displays in Civilopedia) (#4732) --- android/assets/jsons/Civ V - Vanilla/Buildings.json | 7 +++---- android/assets/jsons/translations/template.properties | 1 + core/src/com/unciv/models/ruleset/Building.kt | 10 ++++++++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/android/assets/jsons/Civ V - Vanilla/Buildings.json b/android/assets/jsons/Civ V - Vanilla/Buildings.json index 3d53d0c38f..722be5be0e 100644 --- a/android/assets/jsons/Civ V - Vanilla/Buildings.json +++ b/android/assets/jsons/Civ V - Vanilla/Buildings.json @@ -1007,9 +1007,8 @@ "percentStatBonus": {"production": 15}, "requiredBuilding": "Factory", "maintenance": 3, - "cannotBeBuiltWith": "Nuclear Plant", "requiredTech": "Ecology", - "uniques": ["Must be next to [Desert]"] + "uniques": ["Must be next to [Desert]", "Cannot be built with [Nuclear Plant]"] }, { "name": "Sydney Opera House", @@ -1026,9 +1025,9 @@ "percentStatBonus": {"production": 15}, "requiredBuilding": "Factory", "maintenance": 3, - "cannotBeBuiltWith": "Solar Plant", "requiredResource": "Uranium", - "requiredTech": "Nuclear Fission" + "requiredTech": "Nuclear Fission", + "uniques": ["Cannot be built with [Solar Plant]"] }, { "name": "Apollo Program", diff --git a/android/assets/jsons/translations/template.properties b/android/assets/jsons/translations/template.properties index 2410cf220d..758c618922 100644 --- a/android/assets/jsons/translations/template.properties +++ b/android/assets/jsons/translations/template.properties @@ -42,6 +42,7 @@ Wonder is being built elsewhere = National Wonder is being built elsewhere = Requires a [buildingName] in all cities = Requires a [buildingName] in this city = +Cannot be built with [buildingName] = Consumes 1 [resource] = Consumes [amount] [resource] = Required tech: [requiredTech] = diff --git a/core/src/com/unciv/models/ruleset/Building.kt b/core/src/com/unciv/models/ruleset/Building.kt index 1a6c634ca9..cf56fafd2d 100644 --- a/core/src/com/unciv/models/ruleset/Building.kt +++ b/core/src/com/unciv/models/ruleset/Building.kt @@ -56,6 +56,7 @@ class Building : NamedStats(), IConstruction, ICivilopediaText { /** City can only be built if one of these resources is nearby - it must be improved! */ var requiredNearbyImprovedResources: List? = null + @Deprecated("As of 3.15.19, replace with 'Cannot be built with []' unique") private var cannotBeBuiltWith: String? = null var cityStrength = 0 var cityHealth = 0 @@ -501,8 +502,13 @@ class Building : NamedStats(), IConstruction, ICivilopediaText { return "Requires a [${requiredBuilding}] in this city, which doesn't seem to exist in this ruleset!" return "Requires a [${civInfo.getEquivalentBuilding(requiredBuilding!!)}] in this city" } - if (cannotBeBuiltWith != null && construction.isBuilt(cannotBeBuiltWith!!)) - return "Cannot be built with $cannotBeBuiltWith" + // cannotBeBuiltWith is Deprecated as of 3.15.19 + val cannotBeBuiltWith = uniqueObjects + .firstOrNull { it.placeholderText == "Cannot be built with []" } + ?.params?.get(0) + ?: this.cannotBeBuiltWith + if (cannotBeBuiltWith != null && construction.isBuilt(cannotBeBuiltWith)) + return "Cannot be built with [$cannotBeBuiltWith]" for ((resource, amount) in getResourceRequirements()) if (civInfo.getCivResourcesByName()[resource]!! < amount) {