Resolved #3323 - improvement uniques are no longer added twice

This commit is contained in:
Yair Morgenstern 2020-11-08 23:40:10 +02:00
parent 9794607033
commit 5e116867e6

View File

@ -190,11 +190,12 @@ open class TileInfo {
val civWideUniques = city.civInfo.getMatchingUniques("[] from every []") val civWideUniques = city.civInfo.getMatchingUniques("[] from every []")
for (unique in cityWideUniques + civWideUniques) { for (unique in cityWideUniques + civWideUniques) {
val tileType = unique.params[1] val tileType = unique.params[1]
if (tileType == improvement) continue // This is added to the calculation in getImprovementStats. we don't want to add it twice
if (matchesUniqueFilter(tileType) if (matchesUniqueFilter(tileType)
|| (resource == tileType && hasViewableResource(observingCiv)) || (resource == tileType && hasViewableResource(observingCiv))
|| (tileType == "Strategic resource" && hasViewableResource(observingCiv) && getTileResource().resourceType == ResourceType.Strategic) || (tileType == "Strategic resource" && hasViewableResource(observingCiv) && getTileResource().resourceType == ResourceType.Strategic)
|| (tileType == "Water resource" && isWater && hasViewableResource(observingCiv)) || (tileType == "Water resource" && isWater && hasViewableResource(observingCiv))
) stats.add(unique.stats!!) ) stats.add(unique.stats)
} }
} }
@ -247,7 +248,7 @@ open class TileInfo {
for (unique in improvement.uniqueObjects) for (unique in improvement.uniqueObjects)
if (unique.placeholderText == "[] once [] is discovered" && observingCiv.tech.isResearched(unique.params[1])) if (unique.placeholderText == "[] once [] is discovered" && observingCiv.tech.isResearched(unique.params[1]))
stats.add(unique.stats!!) stats.add(unique.stats)
if (city != null) { if (city != null) {
val cityWideUniques = city.cityConstructions.builtBuildingUniqueMap.getUniques("[] from [] tiles in this city") val cityWideUniques = city.cityConstructions.builtBuildingUniqueMap.getUniques("[] from [] tiles in this city")
@ -262,7 +263,7 @@ open class TileInfo {
|| (unique.params[1] == "fresh water" && isAdjacentToFreshwater) || (unique.params[1] == "fresh water" && isAdjacentToFreshwater)
|| (unique.params[1] == "non-fresh water" && !isAdjacentToFreshwater) || (unique.params[1] == "non-fresh water" && !isAdjacentToFreshwater)
) )
stats.add(unique.stats!!) stats.add(unique.stats)
} }
} }
@ -278,7 +279,7 @@ open class TileInfo {
|| it.matchesUniqueFilter(adjacent) || it.matchesUniqueFilter(adjacent)
|| it.roadStatus.name == adjacent || it.roadStatus.name == adjacent
} }
stats.add(unique.stats!!.times(numberOfBonuses.toFloat())) stats.add(unique.stats.times(numberOfBonuses.toFloat()))
} }
return stats return stats
@ -427,7 +428,7 @@ open class TileInfo {
milUnitString += " - " + militaryUnit!!.civInfo.civName.tr() milUnitString += " - " + militaryUnit!!.civInfo.civName.tr()
lineList += milUnitString lineList += milUnitString
} }
var defenceBonus = getDefensiveBonus() val defenceBonus = getDefensiveBonus()
if (defenceBonus != 0f) { if (defenceBonus != 0f) {
var defencePercentString = (defenceBonus * 100).toInt().toString() + "%" var defencePercentString = (defenceBonus * 100).toInt().toString() + "%"
if (!defencePercentString.startsWith("-")) defencePercentString = "+$defencePercentString" if (!defencePercentString.startsWith("-")) defencePercentString = "+$defencePercentString"