diff --git a/src/data/setting-strings.json b/src/data/setting-strings.json index cd78b81..cc76ff5 100644 --- a/src/data/setting-strings.json +++ b/src/data/setting-strings.json @@ -6,11 +6,11 @@ ], "presets": [ { - "label": "Tournament S9", - "value": "tournament_s9", - "generatorVersion": "9.0.0", - "settingsString": "BSAWDNCAX2TB2WCHGAB3L62ANAEACAAAJAEACACA2DAAGXMAASASECCAWAATSLBAASAGADWBRAJSD8EJQ4VNFAGSCWEV43CAAABAEZAAVHC2HMJAD25ASATBUDWEARAAACALEJGUBC", - "description": "The official tournament settings for S9." + "label": "Mentor 2026", + "value": "mentor_2026", + "generatorVersion": "9.1.0", + "settingsString": "BSAWDNCAX2TB2XCHGABSL62ANAEACAAAJAAAGSAA8AASK7CAAEAEKEEAJBAE2BSLB6W2VCAAJADSB4SHAE2BRCEH7KYCADJBLUK7NBAASAAUMAN2HCJRYS2GSDAABDEGHA8A6BEAWJSNEDE", + "description": "The official settings for Mentor Tournament 2026." }, { "label": "League S9", @@ -19,6 +19,48 @@ "settingsString": "BSAXDNCAX2TB2TCHGAK3L62ANAEACAAAJAAAG4AAWAASK7CAAECETSAAFAAWAJXAAAJADSB4SHAEBUV8EMBSBWAF3WQYAAAJAA3CYPQBSBA2A9WBTPA9BACGJQSU4A6BUDJAJTA3JGE", "description": "The official settings for League Season 9." }, + { + "label": "SGSS 2026", + "value": "sgss_2026", + "generatorVersion": "9.1.0", + "settingsString": "BSAPD6CAX2TBJX4GGABZL62ANAEABASACEAAABABA6BANBAACAUECCAWASSSLALFSVCRLAASAJADSB4SHAEZKS6WH3LANAFJKGXVFAAACAJYS3FAGAABWHPJND2ZASSBCVDARBSHSASCBUTNJ", + "description": "The official settings for SpeedGaming Summer Series 2026." + }, + { + "label": "SAWS Beginner", + "value": "saws_beginner", + "generatorVersion": "devFenhl_9.1.10-6", + "settingsString": "EACWQSKAWCBDDSSLENNAUBXJ22A6NW8FAAASAASAASLRDA2V59DA3RQDAAAAEAEDJCASAADASASCANA2BAJAEBAFAYAADAPA2BSHAABJEAUANCALALBSFAZAADSNAWB2GARCALSJBJFSXAZCJMAZBWH28A6DWRA9B6J2DBSEEUSQC6KASBTJWEBVEAWJSCFL2JTDFSWJUCLLNKBGF4WSVCRLETBFGY2ADDPN2TTHGA5JNDUPNYB4G26JVDQQ63TJHE72WDWRW8B5HQ9JFE5SSDUQJ6B3UENUWKCSKCGT2E9VASUALGJKBFGW2UUMLSKTMFSXEYU6MJSKBGT2NCDLNLTTFGZ2ADD8N4VTRG93AJVAPJ5KPHY76YD6QJA4CJNAXBEHS8ACEJTAKCWKSJBLFJYA7CENSAGL2JCDPNEUTLGU3JHDBPWWTWG44JNDBZW6UWM4QK6FXZE9U8MCSKBGK2WBVJNLTKGGKJXBXJWLTLGL7JFEXUWUULMLTKXF22AMDNQS7BGJ2CBVENVSTCYL2NB5FN2SFDGP2YBDHN7X3ZY94ANMSPCYP2YH5APMWPUYP4GL5LPVXPZYB5YS5EQ52PRZ7LHN7UXMZQL6PTHG842VDRR6BUZJ8E35ERW6XUHM8Q3DGR36KVZP823MHR867VHP9Y7DZR7835ZR9A8M2RC9P6HU9L8V3RH9B7ZDBBAJAESB2AP2DAUA3KRUXA2ALUK7NBAAAAA22BCCA2EJ69W7ASATBUGAQAQASAGDBUTNJ", + "description": "The official settings for SAWS Beginner." + }, + { + "label": "Bingo", + "value": "bingo", + "generatorVersion": "devFenhl_9.1.10-6", + "settingsString": "EACSQSKAWCBDDSW4BNNACEXJ22AWAJAEAAASAAAAAWCDCA2DA2CAAEANYKJASCAAULB6W2VC6SAAAB2KANAFJKGXVFAAAAAAASB4ZGEUA6BAJ2AKT3BLCSHSH3BCACWJGUBA", + "description": "The official settings for Bingo." + }, + { + "label": "Ice%", + "value": "ice_percent", + "generatorVersion": "devFenhl_9.1.10-6", + "settingsString": "EACJAAAAWCBDDSW4ANNACAXJ22AWAJPJSAAAAEAAAAAX2SAA8AASK7CAAEANUJJAACACCCXC2KTHFAASAGADWBRAJCEH7KYCADJBLUK7NBAAAAAAAES8WBTAAHCACEGJLNQA6FAQUDEAEJSNEDC", + "description": "The official settings for Ice%." + }, + { + "label": "Slugs Triforce Hunt", + "value": "slugs_triforce_hunt", + "generatorVersion": "devFenhl_9.1.10-6", + "settingsString": "EAC2VSQAWCBDDSSLENNACUXJ22A6AWAEAAASAAEAAECDCA2VCAGXMAAUASKCBBALASJA2KTHFAASAGADWBRAJSD8EJQ4VNFAGSCWEV43CAAAAAST5HCJ9YSAGSHDABA8AAEHJAJTA3JGJ", + "description": "The official settings for Slugs Triforce Hunt." + }, + { + "label": "Tournament S9", + "value": "tournament_s9", + "generatorVersion": "9.0.0", + "settingsString": "BSAWDNCAX2TB2WCHGAB3L62ANAEACAAAJAEACACA2DAAGXMAASASECCAWAATSLBAASAGADWBRAJSD8EJQ4VNFAGSCWEV43CAAABAEZAAVHC2HMJAD25ASATBUDWEARAAACALEJGUBC", + "description": "The official tournament settings for S9." + }, { "label": "Scrubs S7", "value": "scrubs_s7", @@ -26,18 +68,11 @@ "settingsString": "BSAWDNCAX2TBJYCHGABSL62ANAEACA2ASAAAGSAA8AAYAAABAKEEAJBABBXAWLAHF8WJNF98B6ZS9E852RE9X6HV9AASAGADWBRAJCEH7KYCAF3WQYAAAJLNBA3CGZA2AAESR4S2GSMBADEGHQA8A8BEAWJSNEDC", "description": "The official settings for Scrubs Tournament Season 7." }, - { - "label": "SGL 2025", - "value": "sgl_2025", - "generatorVersion": "9.0.0", - "settingsString": "BSAND6CAX2TBJX4GGABZL62ANAEABASACEAAABABA6BANBAACAUJJASCACCLBJXAQL6KBAACABNAGJD8AS6GBUV8EMBSBWAF3WQYAAAJAA3CGZA2AAESR4S2GSRBABDEGHA8CARABAFCED3SA", - "description": "The official settings for SpeedGaming Live 2025." - }, { "label": "Escape From Kak", "value": "escape_from_kak", - "generatorVersion": "devTFBlitz_", - "settingsString": "BSAZASAALTDDSLFQNACAAASWCHGADSFCAAABAAAA2NCA2VCAGXM29TASECCAWAACWAAFAXC2JTFF2WJVCQL6KTH5CQDAABSAGADWBRAJEWHBLZLAF2BQULFPBAASNBAUFZALAAESR4S25AQMAENSW26AFBJ9A3BEAWJSNEDC", + "generatorVersion": "devTFBlitz_9.1.9-115", + "settingsString": "BSAZASAALTDDSLFQNACAAASWCHGADSFCAAABAAAAS3EASHFANLZS9DBA3GBBALAABLASCSLBNW2UCNLWKBHF8W2VPBZBASAJADSB4SHAEC4VAXMFSC6AHKXUYAAAJYAA3UMAFAACAR4S25A8LAENSW26AFBJ9A3BEAWJSNEDC", "description": "The settings for Escape from Kak." } ] diff --git a/src/utils/efk.js b/src/utils/efk.js index 9e0d302..8d176a6 100644 --- a/src/utils/efk.js +++ b/src/utils/efk.js @@ -8,7 +8,7 @@ const EFK_SETTINGS_STRING = SETTING_STRINGS_JSON.presets.find(p => p.value === " const EFK_LABEL_NAME = "efk_dungeon"; -// Maps full dungeon hint-region names to the lobby region name used in the devTFBlitz_ Overworld graph. +// Maps full dungeon hint-region names to the lobby region name used in the EFK bundle's Overworld graph. // These are the unconditional (True) exits added from Kakariko Village in the EFK version. const EFK_DUNGEON_LOBBY_REGIONS = { "Deku Tree": "Deku Tree Lobby", @@ -31,6 +31,9 @@ const SHORT_TO_FULL_HINT_REGION_NAMES = _.invert(HINT_REGIONS_SHORT_NAMES); * @returns {boolean} True if the EFK preset is active. */ function isEFK(settingsString) { + if (!settingsString) { + return false; + } return settingsString === EFK_SETTINGS_STRING; } diff --git a/src/versions/bundles/devTFBlitz_/Bosses.json b/src/versions/bundles/EFK/Bosses.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Bosses.json rename to src/versions/bundles/EFK/Bosses.json diff --git a/src/versions/bundles/devTFBlitz_/Bottom of the Well MQ.json b/src/versions/bundles/EFK/Bottom of the Well MQ.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Bottom of the Well MQ.json rename to src/versions/bundles/EFK/Bottom of the Well MQ.json diff --git a/src/versions/bundles/devTFBlitz_/Bottom of the Well.json b/src/versions/bundles/EFK/Bottom of the Well.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Bottom of the Well.json rename to src/versions/bundles/EFK/Bottom of the Well.json diff --git a/src/versions/bundles/devTFBlitz_/Deku Tree MQ.json b/src/versions/bundles/EFK/Deku Tree MQ.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Deku Tree MQ.json rename to src/versions/bundles/EFK/Deku Tree MQ.json diff --git a/src/versions/bundles/devTFBlitz_/Deku Tree.json b/src/versions/bundles/EFK/Deku Tree.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Deku Tree.json rename to src/versions/bundles/EFK/Deku Tree.json diff --git a/src/versions/bundles/devTFBlitz_/Dodongos Cavern MQ.json b/src/versions/bundles/EFK/Dodongos Cavern MQ.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Dodongos Cavern MQ.json rename to src/versions/bundles/EFK/Dodongos Cavern MQ.json diff --git a/src/versions/bundles/devTFBlitz_/Dodongos Cavern.json b/src/versions/bundles/EFK/Dodongos Cavern.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Dodongos Cavern.json rename to src/versions/bundles/EFK/Dodongos Cavern.json diff --git a/src/versions/bundles/devTFBlitz_/Fire Temple MQ.json b/src/versions/bundles/EFK/Fire Temple MQ.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Fire Temple MQ.json rename to src/versions/bundles/EFK/Fire Temple MQ.json diff --git a/src/versions/bundles/devTFBlitz_/Fire Temple.json b/src/versions/bundles/EFK/Fire Temple.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Fire Temple.json rename to src/versions/bundles/EFK/Fire Temple.json diff --git a/src/versions/bundles/devTFBlitz_/Forest Temple MQ.json b/src/versions/bundles/EFK/Forest Temple MQ.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Forest Temple MQ.json rename to src/versions/bundles/EFK/Forest Temple MQ.json diff --git a/src/versions/bundles/devTFBlitz_/Forest Temple.json b/src/versions/bundles/EFK/Forest Temple.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Forest Temple.json rename to src/versions/bundles/EFK/Forest Temple.json diff --git a/src/versions/bundles/devTFBlitz_/Ganons Castle MQ.json b/src/versions/bundles/EFK/Ganons Castle MQ.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Ganons Castle MQ.json rename to src/versions/bundles/EFK/Ganons Castle MQ.json diff --git a/src/versions/bundles/devTFBlitz_/Ganons Castle.json b/src/versions/bundles/EFK/Ganons Castle.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Ganons Castle.json rename to src/versions/bundles/EFK/Ganons Castle.json diff --git a/src/versions/bundles/devTFBlitz_/Gerudo Training Ground MQ.json b/src/versions/bundles/EFK/Gerudo Training Ground MQ.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Gerudo Training Ground MQ.json rename to src/versions/bundles/EFK/Gerudo Training Ground MQ.json diff --git a/src/versions/bundles/devTFBlitz_/Gerudo Training Ground.json b/src/versions/bundles/EFK/Gerudo Training Ground.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Gerudo Training Ground.json rename to src/versions/bundles/EFK/Gerudo Training Ground.json diff --git a/src/versions/bundles/devTFBlitz_/Ice Cavern MQ.json b/src/versions/bundles/EFK/Ice Cavern MQ.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Ice Cavern MQ.json rename to src/versions/bundles/EFK/Ice Cavern MQ.json diff --git a/src/versions/bundles/devTFBlitz_/Ice Cavern.json b/src/versions/bundles/EFK/Ice Cavern.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Ice Cavern.json rename to src/versions/bundles/EFK/Ice Cavern.json diff --git a/src/versions/bundles/devTFBlitz_/Jabu Jabus Belly MQ.json b/src/versions/bundles/EFK/Jabu Jabus Belly MQ.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Jabu Jabus Belly MQ.json rename to src/versions/bundles/EFK/Jabu Jabus Belly MQ.json diff --git a/src/versions/bundles/devTFBlitz_/Jabu Jabus Belly.json b/src/versions/bundles/EFK/Jabu Jabus Belly.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Jabu Jabus Belly.json rename to src/versions/bundles/EFK/Jabu Jabus Belly.json diff --git a/src/versions/bundles/devTFBlitz_/LogicHelpers.json b/src/versions/bundles/EFK/LogicHelpers.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/LogicHelpers.json rename to src/versions/bundles/EFK/LogicHelpers.json diff --git a/src/versions/bundles/devTFBlitz_/Overworld.json b/src/versions/bundles/EFK/Overworld.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Overworld.json rename to src/versions/bundles/EFK/Overworld.json diff --git a/src/versions/bundles/devTFBlitz_/Shadow Temple MQ.json b/src/versions/bundles/EFK/Shadow Temple MQ.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Shadow Temple MQ.json rename to src/versions/bundles/EFK/Shadow Temple MQ.json diff --git a/src/versions/bundles/devTFBlitz_/Shadow Temple.json b/src/versions/bundles/EFK/Shadow Temple.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Shadow Temple.json rename to src/versions/bundles/EFK/Shadow Temple.json diff --git a/src/versions/bundles/devTFBlitz_/Spirit Temple MQ.json b/src/versions/bundles/EFK/Spirit Temple MQ.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Spirit Temple MQ.json rename to src/versions/bundles/EFK/Spirit Temple MQ.json diff --git a/src/versions/bundles/devTFBlitz_/Spirit Temple.json b/src/versions/bundles/EFK/Spirit Temple.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Spirit Temple.json rename to src/versions/bundles/EFK/Spirit Temple.json diff --git a/src/versions/bundles/devTFBlitz_/Water Temple MQ.json b/src/versions/bundles/EFK/Water Temple MQ.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Water Temple MQ.json rename to src/versions/bundles/EFK/Water Temple MQ.json diff --git a/src/versions/bundles/devTFBlitz_/Water Temple.json b/src/versions/bundles/EFK/Water Temple.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/Water Temple.json rename to src/versions/bundles/EFK/Water Temple.json diff --git a/src/versions/bundles/devTFBlitz_/boulders.json b/src/versions/bundles/EFK/boulders.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/boulders.json rename to src/versions/bundles/EFK/boulders.json diff --git a/src/versions/bundles/devTFBlitz_/index.js b/src/versions/bundles/EFK/index.js similarity index 100% rename from src/versions/bundles/devTFBlitz_/index.js rename to src/versions/bundles/EFK/index.js diff --git a/src/versions/bundles/devTFBlitz_/location-table.json b/src/versions/bundles/EFK/location-table.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/location-table.json rename to src/versions/bundles/EFK/location-table.json diff --git a/src/versions/bundles/devTFBlitz_/settings-defaults.json b/src/versions/bundles/EFK/settings-defaults.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/settings-defaults.json rename to src/versions/bundles/EFK/settings-defaults.json diff --git a/src/versions/bundles/devTFBlitz_/settings-transformations.json b/src/versions/bundles/EFK/settings-transformations.json similarity index 100% rename from src/versions/bundles/devTFBlitz_/settings-transformations.json rename to src/versions/bundles/EFK/settings-transformations.json diff --git a/src/versions/version-config.js b/src/versions/version-config.js index 585fd7f..a4d8d6f 100644 --- a/src/versions/version-config.js +++ b/src/versions/version-config.js @@ -1,9 +1,9 @@ -const BUNDLED_VERSIONS = new Set(["9.0.0", "8.3.0", "devTFBlitz_"]); +import { isEFK } from "../utils/efk"; -// Versions that are only bundled when the settings string exactly matches. -const BUNDLED_VERSION_SETTINGS = { - "devTFBlitz_": "BSAZASAALTDDSLFQNACAAASWCHGADSFCAAABAAAA2NCA2VCAGXM29TASECCAWAACWAAFAXC2JTFF2WJVCQL6KTH5CQDAABSAGADWBRAJEWHBLZLAF2BQULFPBAASNBAUFZALAAESR4S25AQMAENSW26AFBJ9A3BEAWJSNEDC", -}; +const BUNDLED_VERSIONS = new Set(["9.0.0", "8.3.0"]); + +// EFK is handled separately from BUNDLED_VERSIONS and relies instead on isEFK(). +const EFK_BUNDLE = "EFK"; const DEFAULT_OWNER = "OoTRandomizer"; const FALLBACK_VERSION = "9.0.0"; @@ -19,23 +19,17 @@ const DEV_FORK_BRANCHES = { /** * Checks if a version has bundled logic files. * @param {string} version - The version string to check. - * @param {string} [settingsString] - The settings string, required for versions in BUNDLED_VERSION_SETTINGS. + * @param {string} [settingsString] - The settings string, used to detect the EFK bundle. * @returns {boolean} True if the version is bundled. */ function isBundled(version, settingsString) { - if (!BUNDLED_VERSIONS.has(version)) { - return false; - } - if (version in BUNDLED_VERSION_SETTINGS) { - return settingsString === BUNDLED_VERSION_SETTINGS[version]; - } - return true; + return isEFK(settingsString) || BUNDLED_VERSIONS.has(version); } /** * Dynamically imports bundled logic files for a version. * @param {string} version - The version string. - * @param {string} [settingsString] - The settings string, required for versions in BUNDLED_VERSION_SETTINGS. + * @param {string} [settingsString] - The settings string, used to detect the EFK bundle. * @returns {Promise} The bundle or null if not bundled. */ async function getBundledLogicFiles(version, settingsString) { @@ -43,7 +37,8 @@ async function getBundledLogicFiles(version, settingsString) { return null; } - const bundle = await import(`./bundles/${version}/index.js`); + const bundleName = isEFK(settingsString) ? EFK_BUNDLE : version; + const bundle = await import(`./bundles/${bundleName}/index.js`); return bundle.default; }