Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 49 additions & 14 deletions src/data/setting-strings.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -19,25 +19,60 @@
"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",
"generatorVersion": "9.0.0",
"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."
}
]
Expand Down
5 changes: 4 additions & 1 deletion src/utils/efk.js
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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;
}

Expand Down
25 changes: 10 additions & 15 deletions src/versions/version-config.js
Original file line number Diff line number Diff line change
@@ -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";
Expand All @@ -19,31 +19,26 @@ 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<object|null>} The bundle or null if not bundled.
*/
async function getBundledLogicFiles(version, settingsString) {
if (!isBundled(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;
}

Expand Down
Loading