diff --git a/js/003-data/miscData.js b/js/003-data/miscData.js index c64c7f7fa72bdd0c89b91c03534af5ec7f1a598d..d07b7b4df15657e3d446817b0df68f7acbd88291 100644 --- a/js/003-data/miscData.js +++ b/js/003-data/miscData.js @@ -143,25 +143,27 @@ App.Data.misc = { /* equine: {type: "equine", normalOvaMin:1, normalOvaMax: 1, normalBirth: 48, minLiveBirth: 44, fetusWeek: [0, 4, 7, 9, 10, 12, 17, 21, 25, 34, 38, 48, 192, 99999], fetusSize: [0, 2.5, 3, 4, 6.3, 14, 17.7, 30, 61, 76.2, 92, 121, 235, 235], fetusRate: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] sizeType: 0} */ /** - * @type {Map<string, string>} + * @type {Map<FC.Race, string>} */ - filterRacesBase: new Map([ - ["amerindian", "Amerindian"], - ["asian", "Asian"], - ["black", "Black"], - ["indo-aryan", "Indo-Aryan"], - ["latina", "Latina"], - ["malay", "Malay"], - ["middle eastern", "Middle Eastern"], - ["mixed race", "Mixed Race"], - ["pacific islander", "Pacific Islander"], - ["semitic", "Semitic"], - ["southern european", "Southern European"], - ["white", "White"], - ]), + filterRacesBase: (/** @returns {Map<FC.Race, string>} IIFE required to avoid type widening */ function() { + return new Map([ + ["amerindian", "Amerindian"], + ["asian", "Asian"], + ["black", "Black"], + ["indo-aryan", "Indo-Aryan"], + ["latina", "Latina"], + ["malay", "Malay"], + ["middle eastern", "Middle Eastern"], + ["mixed race", "Mixed Race"], + ["pacific islander", "Pacific Islander"], + ["semitic", "Semitic"], + ["southern european", "Southern European"], + ["white", "White"], + ]); + })(), /** - * @returns {Map<string, string>} + * @returns {Map<FC.Race, string>} */ get filterRaces() { const map = new Map(App.Data.misc.filterRacesBase); diff --git a/src/data/backwardsCompatibility/datatypeCleanup.js b/src/data/backwardsCompatibility/datatypeCleanup.js index ddafc409417b6e6aeb8b17ba43f65a92f82c05aa..d9ad4953de8d8153410bd1e19331369d1cdb935d 100644 --- a/src/data/backwardsCompatibility/datatypeCleanup.js +++ b/src/data/backwardsCompatibility/datatypeCleanup.js @@ -2562,11 +2562,19 @@ App.Update.arcologiesDatatypeCleanup = function() { } } const raceArray = Array.from(App.Data.misc.filterRaces.keys()); - if (arc.FSSupremacist !== "unset" && !raceArray.includes(arc.FSSupremacistRace)) { - arc.FSSupremacistRace = raceArray.random(); + if (!raceArray.includes(arc.FSSupremacistRace)) { + if (arc.FSSupremacist !== "unset") { + arc.FSSupremacistRace = raceArray.random(); + } else { + arc.FSSupremacistRace = 0; + } } - if (arc.FSSubjugationist !== "unset" && !raceArray.includes(arc.FSSubjugationistRace)) { - arc.FSSubjugationistRace = raceArray.random(); + if (!raceArray.includes(arc.FSSubjugationistRace)) { + if (arc.FSSubjugationist !== "unset") { + arc.FSSubjugationistRace = raceArray.random(); + } else { + arc.FSSubjugationistRace = 0; + } } arc.embargo = Number(arc.embargo) || 0;