Avoid modifying the ruleset object and unique stats (#11014)

This commit is contained in:
Yair Morgenstern 2024-01-26 15:15:16 +02:00 committed by GitHub
parent 67329cdabd
commit ec0cf575f4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -38,7 +38,7 @@ class TileStatFunctions(val tile: Tile) {
val percentageStats = getTilePercentageStats(observingCiv, city, localUniqueCache)
for (stats in statsBreakdown) {
val tileType = when(stats.first) {
val tileType = when (stats.first) {
improvement -> "Improvement"
road.name -> "Road"
else -> "Terrain"
@ -125,7 +125,8 @@ class TileStatFunctions(val tile: Tile) {
listOfStats.toStats().gold != 0f && observingCiv.goldenAges.isGoldenAge())
listOfStats.add("Golden Age" to Stats(gold = 1f))
return listOfStats.filter { !it.second.isEmpty() }
// To ensure that the original stats (in uniques, terrains, etc) are not modified in getTileStats, we clone them all
return listOfStats.filter { !it.second.isEmpty() }.map { it.first to it.second.clone() }
}
/** Ensures each stat is >= [other].stat - modifies in place */