From 7e05a56e37cf71ab50452797c0e4bb3b177d9285 Mon Sep 17 00:00:00 2001 From: yairm210 Date: Fri, 17 Sep 2021 16:05:21 +0300 Subject: [PATCH] Tile resource uniques now work to provide stat bonuses --- .../assets/jsons/Civ V - Vanilla/TileResources.json | 2 +- core/src/com/unciv/logic/city/CityInfo.kt | 4 +--- core/src/com/unciv/logic/city/CityStats.kt | 4 ++++ .../com/unciv/logic/civilization/CivilizationInfo.kt | 9 ++++----- core/src/com/unciv/models/ruleset/UniqueType.kt | 10 +++++++++- 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/android/assets/jsons/Civ V - Vanilla/TileResources.json b/android/assets/jsons/Civ V - Vanilla/TileResources.json index 6dc16cadc2..282f98d964 100644 --- a/android/assets/jsons/Civ V - Vanilla/TileResources.json +++ b/android/assets/jsons/Civ V - Vanilla/TileResources.json @@ -227,7 +227,7 @@ "gold": 2, "improvement": "Quarry", "improvementStats": {"production": 1}, - "uniques": ["+15% production towards Wonder construction"] + "uniques": ["+[15]% Production when constructing [Wonders]"] }, { "name": "Whales", diff --git a/core/src/com/unciv/logic/city/CityInfo.kt b/core/src/com/unciv/logic/city/CityInfo.kt index c8017bbaa7..a5802a52c5 100644 --- a/core/src/com/unciv/logic/city/CityInfo.kt +++ b/core/src/com/unciv/logic/city/CityInfo.kt @@ -744,9 +744,7 @@ class CityInfo { // Note that we don't query religion here, as those only have local effects (for now at least) } - fun isHolyCity(): Boolean { - return religion.religionThisIsTheHolyCityOf != null - } + fun isHolyCity(): Boolean = religion.religionThisIsTheHolyCityOf != null fun canBeDestroyed(justCaptured: Boolean = false): Boolean { return !isOriginalCapital && !isHolyCity() && (!isCapital() || justCaptured) diff --git a/core/src/com/unciv/logic/city/CityStats.kt b/core/src/com/unciv/logic/city/CityStats.kt index 6e668eadb8..b393259494 100644 --- a/core/src/com/unciv/logic/city/CityStats.kt +++ b/core/src/com/unciv/logic/city/CityStats.kt @@ -93,6 +93,7 @@ class CityStats(val cityInfo: CityInfo) { return stats } + @Deprecated("As of 3.16.16 - replaced by regular getStatPercentBonusesFromUniques()") private fun getStatPercentBonusesFromResources(construction: IConstruction): Stats { val stats = Stats() @@ -473,6 +474,9 @@ class CityStats(val cityInfo: CityInfo) { .plus(cityInfo.cityConstructions.getStatPercentBonuses()) // This function is to be deprecated but it'll take a while. newStatPercentBonusList["Wonders"] = getStatPercentBonusesFromUniques(currentConstruction, cityInfo.civInfo.getCivWideBuildingUniques(cityInfo)) newStatPercentBonusList["Railroads"] = getStatPercentBonusesFromRailroad() // Name chosen same as tech, for translation, but theoretically independent + val resourceUniques = cityInfo.civInfo.getCivResources().asSequence().flatMap { it.resource.uniqueObjects } + newStatPercentBonusList["Resources"] = getStatPercentBonusesFromUniques(currentConstruction, resourceUniques) + // Deprecated as of 3.16.16 newStatPercentBonusList["Resources"] = getStatPercentBonusesFromResources(currentConstruction) newStatPercentBonusList["National ability"] = getStatPercentBonusesFromNationUnique(currentConstruction) newStatPercentBonusList["Puppet City"] = getStatPercentBonusesFromPuppetCity() diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index de93eebea5..636e659bc7 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -132,11 +132,10 @@ class CivilizationInfo { */ val temporaryUniques = ArrayList>() - // Deprecated since 3.16.15 - /** Maps the name of the construction to the amount of times bought */ - @Deprecated("Deprecated since 3.16.15", replaceWith = ReplaceWith("civWideConstructions.boughtItemsWithIncreasingPrice")) - val boughtConstructionsWithGloballyIncreasingPrice = HashMap() - // + /** Maps the name of the construction to the amount of times bought */ + @Deprecated("Deprecated since 3.16.15", replaceWith = ReplaceWith("civWideConstructions.boughtItemsWithIncreasingPrice")) + val boughtConstructionsWithGloballyIncreasingPrice = HashMap() + // if we only use lists, and change the list each time the cities are changed, // we won't get concurrent modification exceptions. diff --git a/core/src/com/unciv/models/ruleset/UniqueType.kt b/core/src/com/unciv/models/ruleset/UniqueType.kt index 806136e42e..158b8444f4 100644 --- a/core/src/com/unciv/models/ruleset/UniqueType.kt +++ b/core/src/com/unciv/models/ruleset/UniqueType.kt @@ -3,12 +3,20 @@ package com.unciv.models.ruleset import com.unciv.models.translations.getPlaceholderParameters import com.unciv.models.translations.getPlaceholderText +enum class UniqueTarget{ + /** Buildings, units, nations, policies, religions, techs etc. */ + Global, + Building, + Unit, + Improvement, +} + enum class UniqueType(val text:String, val replacedBy: UniqueType? = null) { ConsumesResources("Consumes [amount] [resource]"), FreeUnits("[amount] units cost no maintenance"), UnitMaintenanceDiscount("[amount]% maintenance costs for [mapUnitFilter] units"), - @Deprecated("As of 3.16.16") + @Deprecated("As of 3.16.16", ReplaceWith("UnitMaintenanceDiscount")) DecreasedUnitMaintenanceCostsByFilter("-[amount]% [mapUnitFilter] unit maintenance costs", UnitMaintenanceDiscount), @Deprecated("As of 3.16.16") DecreasedUnitMaintenanceCostsGlobally("-[amount]% unit upkeep costs", UnitMaintenanceDiscount),