From ea11c3fdf3fbdb78f51ed51002f0d6240c6ad805 Mon Sep 17 00:00:00 2001 From: 9kgsofrice <65415105+9kgsofrice@users.noreply.github.com> Date: Mon, 30 Nov 2020 19:54:54 +0000 Subject: [PATCH] getResourceModifier for resources modified by uniques (#3372) * added function getResourceModifier to civinfo and tied into cityInfo resource checks pared down getTileResourceAmount function * simplified function usage --- core/src/com/unciv/logic/city/CityInfo.kt | 11 +++-------- .../unciv/logic/civilization/CivilizationInfo.kt | 13 +++++++++++++ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/core/src/com/unciv/logic/city/CityInfo.kt b/core/src/com/unciv/logic/city/CityInfo.kt index 8229d406cc..07c0f453b9 100644 --- a/core/src/com/unciv/logic/city/CityInfo.kt +++ b/core/src/com/unciv/logic/city/CityInfo.kt @@ -176,7 +176,7 @@ class CityInfo { for (tileInfo in getTiles().filter { it.resource != null }) { val resource = tileInfo.getTileResource() - val amount = getTileResourceAmount(tileInfo) + val amount = getTileResourceAmount(tileInfo) * civInfo.getResourceModifier(resource) if (amount > 0) cityResources.add(resource, amount, "Tiles") } @@ -186,8 +186,8 @@ class CityInfo { } for(unique in cityConstructions.builtBuildingUniqueMap.getUniques("Provides [] []")) { // E.G "Provides [1] [Iron]" val resource = getRuleset().tileResources[unique.params[1]] - if (resource != null) - cityResources.add(resource, unique.params[0].toInt(), "Buildings") + if(resource!=null){ + cityResources.add(resource, unique.params[0].toInt() * civInfo.getResourceModifier(resource), "Buildings") } } return cityResources @@ -221,12 +221,7 @@ class CityInfo { var amountToAdd = 1 if (resource.resourceType == ResourceType.Strategic) { amountToAdd = 2 - if (civInfo.hasUnique("Quantity of strategic resources produced by the empire increased by 100%")) - amountToAdd *= 2 } - for (unique in civInfo.getMatchingUniques("Double quantity of [] produced")) - if (unique.params[0] == resource.name) - amountToAdd *= 2 if (resource.resourceType == ResourceType.Luxury && containsBuildingUnique("Provides 1 extra copy of each improved luxury resource near this City")) amountToAdd *= 2 diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index d375b5ec96..4ee3f17671 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -18,6 +18,7 @@ import com.unciv.logic.trade.TradeEvaluation import com.unciv.logic.trade.TradeRequest import com.unciv.models.ruleset.* import com.unciv.models.ruleset.tile.ResourceSupplyList +import com.unciv.models.ruleset.tile.ResourceType import com.unciv.models.ruleset.tile.TileResource import com.unciv.models.ruleset.unit.BaseUnit import com.unciv.models.stats.Stats @@ -186,6 +187,18 @@ class CivilizationInfo { return hashMap } + fun getResourceModifier(resource: TileResource): Int { + var resourceModifier = 1 + for (unique in getMatchingUniques("Double quantity of [] produced")) + if (unique.params[0] == resource.name) + resourceModifier *= 2 + if (resource.resourceType == ResourceType.Strategic) { + if (hasUnique("Quantity of strategic resources produced by the empire increased by 100%")) + resourceModifier *= 2 + } + return resourceModifier + } + fun hasResource(resourceName:String): Boolean = getCivResourcesByName()[resourceName]!!>0 fun getBuildingUniques(): Sequence = cities.asSequence().flatMap { it.cityConstructions.builtBuildingUniqueMap.getAllUniques() }