From 0352df10e8be5827c8bbc2c745beb2d542629941 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Mon, 28 Mar 2022 17:23:19 +0300 Subject: [PATCH] Resolved #6447 - Solved out of memory errors for modded base rulesets --- core/src/com/unciv/models/ruleset/Ruleset.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/core/src/com/unciv/models/ruleset/Ruleset.kt b/core/src/com/unciv/models/ruleset/Ruleset.kt index ba4fd2e316..7db7ba711a 100644 --- a/core/src/com/unciv/models/ruleset/Ruleset.kt +++ b/core/src/com/unciv/models/ruleset/Ruleset.kt @@ -572,7 +572,7 @@ class Ruleset { val vanillaRuleset = RulesetCache.getVanillaRuleset() // for UnitTypes fallback - if (units.values.none { it.uniques.contains(UniqueType.FoundCity.text) }) + if (units.values.none { it.hasUnique(UniqueType.FoundCity) }) lines += "No city-founding units in ruleset!" for (unit in units.values) { @@ -879,7 +879,7 @@ object RulesetCache : HashMap() { else getVanillaRuleset() - val loadedMods = mods + val loadedMods = mods.asSequence() .filter { containsKey(it) } .map { this[it]!! } .filter { !it.modOptions.isBaseRuleset } + @@ -887,7 +887,9 @@ object RulesetCache : HashMap() { for (mod in loadedMods.sortedByDescending { it.modOptions.isBaseRuleset }) { if (mod.modOptions.isBaseRuleset) { - newRuleset.modOptions = mod.modOptions + // This is so we don't keep using the base ruleset's unqiues *by reference* and add to in ad infinitum + newRuleset.modOptions.uniques = ArrayList() + newRuleset.modOptions.isBaseRuleset = true } newRuleset.add(mod) newRuleset.mods += mod.name