diff --git a/core/src/com/unciv/logic/city/CityStats.kt b/core/src/com/unciv/logic/city/CityStats.kt index 9b9c79d9d2..afc86180e7 100644 --- a/core/src/com/unciv/logic/city/CityStats.kt +++ b/core/src/com/unciv/logic/city/CityStats.kt @@ -373,15 +373,18 @@ class CityStats(val cityInfo: CityInfo) { fun updateTileStats() { val stats = Stats() val localUniqueCache = LocalUniqueCache() - for (cell in cityInfo.tilesInRange + val workedTiles = cityInfo.tilesInRange .filter { cityInfo.location == it.position || cityInfo.isWorked(it) || it.owningCity == cityInfo && (it.getTileImprovement() ?.hasUnique(UniqueType.TileProvidesYieldWithoutPopulation) == true || it.terrainHasUnique(UniqueType.TileProvidesYieldWithoutPopulation)) - }) - stats.add(cell.getTileStats(cityInfo, cityInfo.civInfo, localUniqueCache)) + } + for (cell in workedTiles) { + val cellStats = cell.getTileStats(cityInfo, cityInfo.civInfo, localUniqueCache) + stats.add(cellStats) + } statsFromTiles = stats } diff --git a/core/src/com/unciv/logic/map/TileInfo.kt b/core/src/com/unciv/logic/map/TileInfo.kt index f8ce8d1ca3..a3c9a9cd99 100644 --- a/core/src/com/unciv/logic/map/TileInfo.kt +++ b/core/src/com/unciv/logic/map/TileInfo.kt @@ -328,19 +328,21 @@ open class TileInfo : IsPartOfGameInfoSerialization { } if (city != null) { - var tileUniques = city.getMatchingUniques(UniqueType.StatsFromTiles, stateForConditionals) + var tileUniques = city.getMatchingUniques(UniqueType.StatsFromTiles, StateForConditionals.IgnoreConditionals) .filter { city.matchesFilter(it.params[2]) } - tileUniques += city.getMatchingUniques(UniqueType.StatsFromObject, stateForConditionals) + tileUniques += city.getMatchingUniques(UniqueType.StatsFromObject, StateForConditionals.IgnoreConditionals) for (unique in localUniqueCache.get("StatsFromTilesAndObjects", tileUniques)) { + if (!unique.conditionalsApply(stateForConditionals)) continue val tileType = unique.params[1] if (!matchesTerrainFilter(tileType, observingCiv)) continue stats.add(unique.stats) } for (unique in localUniqueCache.get("StatsFromTilesWithout", - city.getMatchingUniques(UniqueType.StatsFromTilesWithout, stateForConditionals)) + city.getMatchingUniques(UniqueType.StatsFromTilesWithout, StateForConditionals.IgnoreConditionals)) ) { if ( + unique.conditionalsApply(stateForConditionals) && matchesTerrainFilter(unique.params[1]) && !matchesTerrainFilter(unique.params[2]) && city.matchesFilter(unique.params[3])