This commit is contained in:
Yair Morgenstern 2020-11-30 22:07:51 +02:00
commit 98d01f50b1
2 changed files with 16 additions and 8 deletions

View File

@ -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

View File

@ -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<Unique> = cities.asSequence().flatMap { it.cityConstructions.builtBuildingUniqueMap.getAllUniques() }