fix: #1152, don't keep removed locked cultures on regenerate

This commit is contained in:
Azgaar 2024-10-13 15:08:40 +02:00
parent 26b659a59e
commit f0ff23a119

View file

@ -123,26 +123,26 @@ window.Cultures = (function () {
cultures.forEach(c => (c.base = c.base % nameBases.length)); cultures.forEach(c => (c.base = c.base % nameBases.length));
function selectCultures(culturesNumber) { function selectCultures(culturesNumber) {
let def = getDefault(culturesNumber); let defaultCultures = getDefault(culturesNumber);
const cultures = []; const cultures = [];
pack.cultures?.forEach(function (culture) { pack.cultures?.forEach(function (culture) {
if (culture.lock) cultures.push(culture); if (culture.lock && !culture.removed) cultures.push(culture);
}); });
if (!cultures.length) { if (!cultures.length) {
if (culturesNumber === def.length) return def; if (culturesNumber === defaultCultures.length) return defaultCultures;
if (def.every(d => d.odd === 1)) return def.splice(0, culturesNumber); if (defaultCultures.every(d => d.odd === 1)) return defaultCultures.splice(0, culturesNumber);
} }
for (let culture, rnd, i = 0; cultures.length < culturesNumber && def.length > 0; ) { for (let culture, rnd, i = 0; cultures.length < culturesNumber && defaultCultures.length > 0; ) {
do { do {
rnd = rand(def.length - 1); rnd = rand(defaultCultures.length - 1);
culture = def[rnd]; culture = defaultCultures[rnd];
i++; i++;
} while (i < 200 && !P(culture.odd)); } while (i < 200 && !P(culture.odd));
cultures.push(culture); cultures.push(culture);
def.splice(rnd, 1); defaultCultures.splice(rnd, 1);
} }
return cultures; return cultures;
} }