From eb24a8d36436bbb6a7266d9c9e02a210060a11b7 Mon Sep 17 00:00:00 2001 From: Xander Lenstra <71121390+xlenstra@users.noreply.github.com> Date: Thu, 4 Nov 2021 17:37:31 +0100 Subject: [PATCH] Possibly fixed a bug where replacement buildings would not be granted (#5636) * Possibly fixed a bug where replacement buildings would not be granted * Fixed tests --- core/src/com/unciv/logic/city/CityConstructions.kt | 2 +- core/src/com/unciv/logic/civilization/CivConstructions.kt | 6 +++--- core/src/com/unciv/models/ruleset/unique/UniqueType.kt | 5 +++++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/core/src/com/unciv/logic/city/CityConstructions.kt b/core/src/com/unciv/logic/city/CityConstructions.kt index 1eceb82912..d1321079f0 100644 --- a/core/src/com/unciv/logic/city/CityConstructions.kt +++ b/core/src/com/unciv/logic/city/CityConstructions.kt @@ -188,7 +188,7 @@ class CityConstructions { // Civ-level uniques - for these only add free buildings from each city to itself to avoid weirdness on city conquest for (unique in cityInfo.civInfo.getMatchingUniques(UniqueType.GainFreeBuildings, stateForConditionals = StateForConditionals(cityInfo.civInfo, cityInfo))) { - val freeBuildingName = unique.params[0] + val freeBuildingName = cityInfo.civInfo.getEquivalentBuilding(unique.params[0]).name if (cityInfo.matchesFilter(unique.params[1])) { if (cityInfo.id !in freeBuildingsProvidedFromThisCity) freeBuildingsProvidedFromThisCity[cityInfo.id] = hashSetOf() diff --git a/core/src/com/unciv/logic/civilization/CivConstructions.kt b/core/src/com/unciv/logic/civilization/CivConstructions.kt index 15c6d70954..adcc02d8a3 100644 --- a/core/src/com/unciv/logic/civilization/CivConstructions.kt +++ b/core/src/com/unciv/logic/civilization/CivConstructions.kt @@ -104,7 +104,7 @@ class CivConstructions { private fun addFreeBuilding(cityId: String, building: String) { if (!freeBuildings.containsKey(cityId)) freeBuildings[cityId] = hashSetOf() - freeBuildings[cityId]!!.add(building) + freeBuildings[cityId]!!.add(civInfo.getEquivalentBuilding(building).name) } private fun addFreeStatsBuildings() { @@ -116,7 +116,7 @@ class CivConstructions { // Deprecated since 3.16.15 statUniquesData[Stat.Culture] = (statUniquesData[Stat.Culture] ?: 0) + - civInfo.getMatchingUniques("Immediately creates the cheapest available cultural building in each of your first [] cities for free") + civInfo.getMatchingUniques(UniqueType.FreeStatBuildingsDeprecated) .sumOf { it.params[0].toInt() } // @@ -141,7 +141,7 @@ class CivConstructions { private fun addFreeSpecificBuildings() { val buildingsUniquesData = (civInfo.getMatchingUniques(UniqueType.FreeSpecificBuildings) // Deprecated since 3.16.15 - + civInfo.getMatchingUniques("Immediately creates a [] in each of your first [] cities for free") + + civInfo.getMatchingUniques(UniqueType.FreeSpecificBuildingsDeprecated) // ).groupBy { it.params[0] } .mapValues { unique -> unique.value.sumOf { it.params[1].toInt() } } diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt index b414a0483d..cd008f7c03 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt @@ -424,6 +424,11 @@ enum class UniqueType(val text:String, vararg targets: UniqueTarget, val flags: FreeStatBuildings("Provides the cheapest [stat] building in your first [amount] cities for free", UniqueTarget.Global), // used in Policy FreeSpecificBuildings("Provides a [buildingName] in your first [amount] cities for free", UniqueTarget.Global), // used in Policy + @Deprecated("As of 3.16.15", ReplaceWith("Provides the cheapest [stat] building in your first [amount] cities for free")) + FreeStatBuildingsDeprecated("Immediately creates the cheapest available cultural building in each of your first [amount] cities for free", UniqueTarget.Global), + @Deprecated("As of 3.16.15", ReplaceWith("Provides a [buildingName] in your first [amount] cities for free")) + FreeSpecificBuildingsDeprecated("Immediately creates a [buildingName] in each of your first [amount] cities for free", UniqueTarget.Global), + ///////////////////////////////////////////// META /////////////////////////////////////////////