@@ -92,6 +92,8 @@ class Unique(val text: String, val sourceObjectType: UniqueTarget? = null, val s
92
92
}
93
93
94
94
private fun getUniqueMultiplier (stateForConditionals : StateForConditionals ): Int {
95
+ if (stateForConditionals == StateForConditionals .IgnoreMultiplicationForCaching )
96
+ return 1
95
97
96
98
var amount = 1
97
99
@@ -235,8 +237,9 @@ class LocalUniqueCache(val cache: Boolean = true) {
235
237
236
238
val citySpecificUniques = get(
237
239
" city-${city.id} -${uniqueType.name} " ,
238
- city.getLocalMatchingUniques(uniqueType, StateForConditionals .IgnoreConditionals )
240
+ city.getLocalMatchingUniques(uniqueType, StateForConditionals .IgnoreMultiplicationForCaching )
239
241
).filter { it.conditionalsApply(stateForConditionals) }
242
+ .flatMap { it.getMultiplied(stateForConditionals) }
240
243
241
244
val civUniques = forCivGetMatchingUniques(city.civ, uniqueType, stateForConditionals)
242
245
@@ -248,7 +251,7 @@ class LocalUniqueCache(val cache: Boolean = true) {
248
251
uniqueType : UniqueType ,
249
252
stateForConditionals : StateForConditionals = civ.state
250
253
): Sequence <Unique > {
251
- val sequence = civ.getMatchingUniques(uniqueType, StateForConditionals .IgnoreConditionals )
254
+ val sequence = civ.getMatchingUniques(uniqueType, StateForConditionals .IgnoreMultiplicationForCaching )
252
255
// The uniques CACHED are ALL civ uniques, regardless of conditional matching.
253
256
// The uniques RETURNED are uniques AFTER conditional matching.
254
257
// This allows reuse of the cached values, between runs with different conditionals -
@@ -258,6 +261,7 @@ class LocalUniqueCache(val cache: Boolean = true) {
258
261
" civ-${civ.civName} -${uniqueType.name} " ,
259
262
sequence
260
263
).filter { it.conditionalsApply(stateForConditionals) }
264
+ .flatMap { it.getMultiplied(stateForConditionals) }
261
265
}
262
266
263
267
/* * Get cached results as a sequence */
0 commit comments