diff --git a/android/assets/jsons/Civ V - Gods & Kings/Buildings.json b/android/assets/jsons/Civ V - Gods & Kings/Buildings.json index 297300198c..d5715f9652 100644 --- a/android/assets/jsons/Civ V - Gods & Kings/Buildings.json +++ b/android/assets/jsons/Civ V - Gods & Kings/Buildings.json @@ -1048,7 +1048,7 @@ "requiredBuilding": "Factory", "maintenance": 3, "requiredTech": "Ecology", - "uniques": ["Must be next to [Desert]", "Cannot be built with [Nuclear Plant]"] + "uniques": ["Must be next to [Desert]", "Only available "] }, { "name": "Recycling Center", @@ -1073,7 +1073,7 @@ "maintenance": 3, "requiredResource": "Uranium", "requiredTech": "Nuclear Fission", - "uniques": ["Cannot be built with [Solar Plant]"] + "uniques": ["Only available "] }, { "name": "Apollo Program", diff --git a/android/assets/jsons/Civ V - Vanilla/Buildings.json b/android/assets/jsons/Civ V - Vanilla/Buildings.json index 6739d71a0a..6e0203b156 100644 --- a/android/assets/jsons/Civ V - Vanilla/Buildings.json +++ b/android/assets/jsons/Civ V - Vanilla/Buildings.json @@ -917,7 +917,7 @@ "requiredBuilding": "Factory", "maintenance": 3, "requiredTech": "Ecology", - "uniques": ["Must be next to [Desert]", "Cannot be built with [Nuclear Plant]"] + "uniques": ["Must be next to [Desert]", "Only available "] }, { "name": "Nuclear Plant", @@ -927,7 +927,7 @@ "maintenance": 3, "requiredResource": "Uranium", "requiredTech": "Nuclear Fission", - "uniques": ["Cannot be built with [Solar Plant]"] + "uniques": ["Only available "] }, { "name": "Apollo Program", diff --git a/core/src/com/unciv/models/ruleset/unique/Unique.kt b/core/src/com/unciv/models/ruleset/unique/Unique.kt index b34cf2101f..c92807d33b 100644 --- a/core/src/com/unciv/models/ruleset/unique/Unique.kt +++ b/core/src/com/unciv/models/ruleset/unique/Unique.kt @@ -114,6 +114,10 @@ class Unique(val text: String, val sourceObjectType: UniqueTarget? = null, val s UniqueType.ConditionalNoPolicy -> state.civInfo != null && !state.civInfo.policies.isAdopted(condition.params[0]) + UniqueType.ConditionalCityWithBuilding -> + state.cityInfo != null && state.cityInfo.cityConstructions.containsBuildingOrEquivalent(condition.params[0]) + UniqueType.ConditionalCityWithoutBuilding -> + state.cityInfo != null && !state.cityInfo.cityConstructions.containsBuildingOrEquivalent(condition.params[0]) UniqueType.ConditionalSpecialistCount -> state.cityInfo != null && state.cityInfo.population.getNumberOfSpecialists() >= condition.params[0].toInt() UniqueType.ConditionalFollowerCount -> diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt index 7a3a40eafa..2f7e879705 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt @@ -342,7 +342,10 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags: CostIncreasesPerCity("Cost increases by [amount] per owned city", UniqueTarget.Building), + + @Deprecated("as of 3.19.9", ReplaceWith("Only available ")) CannotBeBuiltWith("Cannot be built with [buildingName]", UniqueTarget.Building), + @Deprecated("as of 3.19.9", ReplaceWith("Only available ")) RequiresAnotherBuilding("Requires a [buildingName] in this city", UniqueTarget.Building), RequiresBuildingInAllCities("Requires a [buildingName] in all cities", UniqueTarget.Building), RequiresBuildingInSomeCities("Requires a [buildingName] in at least [amount] cities", UniqueTarget.Building), @@ -587,6 +590,8 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags: ConditionalTimedUnique("for [amount] turns", UniqueTarget.Conditional), /////// city conditionals + ConditionalCityWithBuilding("in cities with a [buildingFilter]", UniqueTarget.Conditional), + ConditionalCityWithoutBuilding("in cities without a [buildingFilter]", UniqueTarget.Conditional), ConditionalSpecialistCount("if this city has at least [amount] specialists", UniqueTarget.Conditional), ConditionalFollowerCount("in cities where this religion has at least [amount] followers", UniqueTarget.Conditional), ConditionalWhenGarrisoned("with a garrison", UniqueTarget.Conditional), diff --git a/docs/uniques.md b/docs/uniques.md index 6af7f9bd37..d61cd6aaef 100644 --- a/docs/uniques.md +++ b/docs/uniques.md @@ -381,9 +381,6 @@ Applicable to: Global #### Enables construction of Spaceship parts Applicable to: Global -#### Notified of new Barbarian encampments -Applicable to: Global - #### Enables Open Borders agreements Applicable to: Global @@ -752,16 +749,6 @@ Example: "Cost increases by [20] per owned city" Applicable to: Building -#### Cannot be built with [buildingName] -Example: "Cannot be built with [Library]" - -Applicable to: Building - -#### Requires a [buildingName] in this city -Example: "Requires a [Library] in this city" - -Applicable to: Building - #### Requires a [buildingName] in all cities Example: "Requires a [Library] in all cities" @@ -1391,6 +1378,16 @@ Example: "" Applicable to: Conditional +#### +Example: "" + +Applicable to: Conditional + +#### +Example: "" + +Applicable to: Conditional + #### Example: "" @@ -1572,8 +1569,7 @@ Applicable to: Conditional - "-33% unit upkeep costs" - Deprecated Extremely old - used for auto-updates only, replace with "[-33]% maintenance costs " - "-50% food consumption by specialists" - Deprecated Extremely old - used for auto-updates only, replace with "[-50]% Food consumption by specialists [in all cities]" - "+50% attacking strength for cities with garrisoned units" - Deprecated Extremely old - used for auto-updates only, replace with "[+50]% Strength for cities " - - "Incompatible with [policy/tech/promotion]" - Deprecated as of 3.19.8, replace with "Only available " OR "Only available " OR "Only available " - - "Not displayed as an available construction without [buildingName/tech/resource/policy]" - Deprecated as of 3.19.8, replace with "Only available " OR "Only available " OR "Only available " + - "[stats] with [resource]" - Deprecated as of 3.19.7, replace with "[stats] " - "Not displayed as an available construction unless [buildingName] is built" - Deprecated as of 3.16.11, replace with "Not displayed as an available construction without [buildingName]" - "[stats] once [tech] is discovered" - Deprecated as of 3.17.10 - removed 3.18.19, replace with "[stats] "