mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-11-25 10:52:19 -05:00
Rando: Settings Enum (#1761)
* added rando option enum; added options to load from spoiler file * whoops * Moved to `randomizerTypes` header; fixed ammo drop enum * Actually populated options with new enums * Added add'l enums for ganon boss key
This commit is contained in:
parent
0fca1019a2
commit
9cfe7bff47
@ -594,69 +594,69 @@ void Randomizer::ParseRandomizerSettingsFile(const char* spoilerFileName) {
|
||||
switch(gSaveContext.randoSettings[index].key) {
|
||||
case RSK_FOREST:
|
||||
if(it.value() == "Closed") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_FOREST_CLOSED;
|
||||
} else if(it.value() == "Open") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_FOREST_CLOSED_DEKU;
|
||||
} else if(it.value() == "Closed Deku") {
|
||||
gSaveContext.randoSettings[index].value = 2;
|
||||
gSaveContext.randoSettings[index].value = RO_FOREST_OPEN;
|
||||
}
|
||||
break;
|
||||
case RSK_KAK_GATE:
|
||||
if(it.value() == "Closed") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_GENERIC_OFF;
|
||||
} else if(it.value() == "Open") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_GENERIC_ON;
|
||||
}
|
||||
break;
|
||||
case RSK_DOOR_OF_TIME:
|
||||
if(it.value() == "Open") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_DOOROFTIME_OPEN;
|
||||
} else if(it.value() == "Song only") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_DOOROFTIME_SONGONLY;
|
||||
} else if(it.value() == "Closed") {
|
||||
gSaveContext.randoSettings[index].value = 2;
|
||||
gSaveContext.randoSettings[index].value = RO_DOOROFTIME_CLOSED;
|
||||
}
|
||||
break;
|
||||
case RSK_ZORAS_FOUNTAIN:
|
||||
if(it.value() == "Closed") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_ZF_CLOSED;
|
||||
} else if(it.value() == "Closed as child") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_ZF_CLOSED_CHILD;
|
||||
} else if(it.value() == "Open") {
|
||||
gSaveContext.randoSettings[index].value = 2;
|
||||
gSaveContext.randoSettings[index].value = RO_ZF_OPEN;
|
||||
}
|
||||
break;
|
||||
case RSK_STARTING_AGE:
|
||||
if(it.value() == "Child") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_AGE_CHILD;
|
||||
} else if (it.value() == "Adult") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_AGE_ADULT;
|
||||
}
|
||||
break;
|
||||
case RSK_GERUDO_FORTRESS:
|
||||
if(it.value() == "Normal") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_GF_NORMAL;
|
||||
} else if(it.value() == "Fast") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_GF_FAST;
|
||||
} else if(it.value() == "Open") {
|
||||
gSaveContext.randoSettings[index].value = 2;
|
||||
gSaveContext.randoSettings[index].value = RO_GF_OPEN;
|
||||
}
|
||||
break;
|
||||
case RSK_RAINBOW_BRIDGE:
|
||||
if(it.value() == "Always open") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
} else if(it.value() == "Vanilla") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
if(it.value() == "Vanilla") {
|
||||
gSaveContext.randoSettings[index].value = RO_BRIDGE_VANILLA;
|
||||
} else if(it.value() == "Always open") {
|
||||
gSaveContext.randoSettings[index].value = RO_BRIDGE_ALWAYS_OPEN;
|
||||
} else if(it.value() == "Stones") {
|
||||
gSaveContext.randoSettings[index].value = 2;
|
||||
gSaveContext.randoSettings[index].value = RO_BRIDGE_STONES;
|
||||
} else if(it.value() == "Medallions") {
|
||||
gSaveContext.randoSettings[index].value = 3;
|
||||
gSaveContext.randoSettings[index].value = RO_BRIDGE_MEDALLIONS;
|
||||
} else if(it.value() == "Dungeon rewards") {
|
||||
gSaveContext.randoSettings[index].value = 4;
|
||||
gSaveContext.randoSettings[index].value = RO_BRIDGE_DUNGEON_REWARDS;
|
||||
} else if(it.value() == "Dungeons") {
|
||||
gSaveContext.randoSettings[index].value = 5;
|
||||
gSaveContext.randoSettings[index].value = RO_BRIDGE_DUNGEONS;
|
||||
} else if(it.value() == "Tokens") {
|
||||
gSaveContext.randoSettings[index].value = 6;
|
||||
gSaveContext.randoSettings[index].value = RO_BRIDGE_TOKENS;
|
||||
}
|
||||
break;
|
||||
case RSK_RAINBOW_BRIDGE_STONE_COUNT:
|
||||
@ -678,30 +678,30 @@ void Randomizer::ParseRandomizerSettingsFile(const char* spoilerFileName) {
|
||||
break;
|
||||
case RSK_SHOPSANITY:
|
||||
if(it.value() == "Off") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = SHOPSANITY_OFF;
|
||||
} else if(it.value() == "0 Items") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = SHOPSANITY_ZERO;
|
||||
} else if(it.value() == "1 Item") {
|
||||
gSaveContext.randoSettings[index].value = 2;
|
||||
gSaveContext.randoSettings[index].value = SHOPSANITY_ONE;
|
||||
} else if(it.value() == "2 Items") {
|
||||
gSaveContext.randoSettings[index].value = 3;
|
||||
gSaveContext.randoSettings[index].value = SHOPSANITY_TWO;
|
||||
} else if(it.value() == "3 Items") {
|
||||
gSaveContext.randoSettings[index].value = 4;
|
||||
gSaveContext.randoSettings[index].value = SHOPSANITY_THREE;
|
||||
} else if(it.value() == "4 Items") {
|
||||
gSaveContext.randoSettings[index].value = 5;
|
||||
gSaveContext.randoSettings[index].value = SHOPSANITY_FOUR;
|
||||
} else if(it.value() == "Random") {
|
||||
gSaveContext.randoSettings[index].value = 6;
|
||||
gSaveContext.randoSettings[index].value = SHOPSANITY_RANDOM;
|
||||
}
|
||||
break;
|
||||
case RSK_SHUFFLE_SCRUBS:
|
||||
if(it.value() == "Off") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_SCRUBS_OFF;
|
||||
} else if(it.value() == "Affordable") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_SCRUBS_AFFORDABLE;
|
||||
} else if(it.value() == "Expensive") {
|
||||
gSaveContext.randoSettings[index].value = 2;
|
||||
gSaveContext.randoSettings[index].value = RO_SCRUBS_EXPENSIVE;
|
||||
} else if(it.value() == "Random Prices") {
|
||||
gSaveContext.randoSettings[index].value = 3;
|
||||
gSaveContext.randoSettings[index].value = RO_SCRUBS_RANDOM;
|
||||
}
|
||||
break;
|
||||
case RSK_SHUFFLE_GERUDO_MEMBERSHIP_CARD:
|
||||
@ -722,149 +722,171 @@ void Randomizer::ParseRandomizerSettingsFile(const char* spoilerFileName) {
|
||||
case RSK_SHUFFLE_OVERWORLD_ENTRANCES:
|
||||
case RSK_SHUFFLE_GROTTO_ENTRANCES:
|
||||
if(it.value() == "Off") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_GENERIC_OFF;
|
||||
} else if(it.value() == "On") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_GENERIC_ON;
|
||||
}
|
||||
break;
|
||||
case RSK_SHUFFLE_MERCHANTS:
|
||||
if(it.value() == "Off") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_SHUFFLE_MERCHANTS_OFF;
|
||||
} else if (it.value() == "On (No Hints)") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_SHUFFLE_MERCHANTS_ON_NO_HINT;
|
||||
} else if (it.value() == "On (With Hints)") {
|
||||
gSaveContext.randoSettings[index].value = 2;
|
||||
gSaveContext.randoSettings[index].value = RO_SHUFFLE_MERCHANTS_ON_HINT;
|
||||
}
|
||||
break;
|
||||
// Uses Ammo Drops option for now. "Off" not yet implemented
|
||||
case RSK_ENABLE_BOMBCHU_DROPS:
|
||||
if (it.value() == "On") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_AMMO_DROPS_ON;
|
||||
} else if (it.value() == "On + Bombchu") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_AMMO_DROPS_ON_PLUS_BOMBCHU;
|
||||
} else if (it.value() == "Off") {
|
||||
gSaveContext.randoSettings[index].value = 2;
|
||||
gSaveContext.randoSettings[index].value = RO_AMMO_DROPS_OFF;
|
||||
}
|
||||
break;
|
||||
case RSK_STARTING_MAPS_COMPASSES:
|
||||
if(it.value() == "Start With") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_STARTWITH;
|
||||
} else if(it.value() == "Vanilla") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_VANILLA;
|
||||
} else if(it.value() == "Own Dungeon") {
|
||||
gSaveContext.randoSettings[index].value = 2;
|
||||
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_OWN_DUNGEON;
|
||||
} else if(it.value() == "Any Dungeon") {
|
||||
gSaveContext.randoSettings[index].value = 3;
|
||||
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_ANY_DUNGEON;
|
||||
} else if(it.value() == "Overworld") {
|
||||
gSaveContext.randoSettings[index].value = 4;
|
||||
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_OVERWORLD;
|
||||
} else if(it.value() == "Anywhere") {
|
||||
gSaveContext.randoSettings[index].value = 5;
|
||||
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_ANYWHERE;
|
||||
}
|
||||
break;
|
||||
case RSK_STARTING_OCARINA:
|
||||
if(it.value() == "Off") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_STARTING_OCARINA_OFF;
|
||||
} else if(it.value() == "Fairy Ocarina") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_STARTING_OCARINA_FAIRY;
|
||||
}
|
||||
break;
|
||||
case RSK_ITEM_POOL:
|
||||
if(it.value() == "Plentiful") {
|
||||
gSaveContext.randoSettings[index].value = RO_ITEM_POOL_PLENTIFUL;
|
||||
} else if(it.value() == "Balanced") {
|
||||
gSaveContext.randoSettings[index].value = RO_ITEM_POOL_BALANCED;
|
||||
} else if(it.value() == "Scarce") {
|
||||
gSaveContext.randoSettings[index].value = RO_ITEM_POOL_SCARCE;
|
||||
} else if(it.value() == "Minimal") {
|
||||
gSaveContext.randoSettings[index].value = RO_ITEM_POOL_MINIMAL;
|
||||
}
|
||||
case RSK_ICE_TRAPS:
|
||||
if(it.value() == "Off") {
|
||||
gSaveContext.randoSettings[index].value = RO_ICE_TRAPS_OFF;
|
||||
} else if(it.value() == "Normal") {
|
||||
gSaveContext.randoSettings[index].value = RO_ICE_TRAPS_NORMAL;
|
||||
} else if(it.value() == "Extra") {
|
||||
gSaveContext.randoSettings[index].value = RO_ICE_TRAPS_EXTRA;
|
||||
} else if(it.value() == "Mayhem") {
|
||||
gSaveContext.randoSettings[index].value = RO_ICE_TRAPS_MAYHEM;
|
||||
} else if(it.value() == "Onslaught") {
|
||||
gSaveContext.randoSettings[index].value = RO_ICE_TRAPS_ONSLAUGHT;
|
||||
}
|
||||
case RSK_GOSSIP_STONE_HINTS:
|
||||
if(it.value() == "No Hints") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_GOSSIP_STONES_NONE;
|
||||
} else if(it.value() == "Need Nothing") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_GOSSIP_STONES_NEED_NOTHING;
|
||||
} else if(it.value() == "Mask of Truth") {
|
||||
gSaveContext.randoSettings[index].value = 2;
|
||||
gSaveContext.randoSettings[index].value = RO_GOSSIP_STONES_NEED_TRUTH;
|
||||
} else if(it.value() == "Stone of Agony") {
|
||||
gSaveContext.randoSettings[index].value = 3;
|
||||
gSaveContext.randoSettings[index].value = RO_GOSSIP_STONES_NEED_STONE;
|
||||
}
|
||||
break;
|
||||
case RSK_HINT_CLARITY:
|
||||
if(it.value() == "Obscure") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_HINT_CLARITY_OBSCURE;
|
||||
} else if(it.value() == "Ambiguous") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_HINT_CLARITY_AMBIGUOUS;
|
||||
} else if(it.value() == "Clear") {
|
||||
gSaveContext.randoSettings[index].value = 2;
|
||||
gSaveContext.randoSettings[index].value = RO_HINT_CLARITY_CLEAR;
|
||||
}
|
||||
break;
|
||||
case RSK_HINT_DISTRIBUTION:
|
||||
if(it.value() == "Useless") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_HINT_DIST_USELESS;
|
||||
} else if(it.value() == "Balanced") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_HINT_DIST_BALANCED;
|
||||
} else if(it.value() == "Strong") {
|
||||
gSaveContext.randoSettings[index].value = 2;
|
||||
gSaveContext.randoSettings[index].value = RO_HINT_DIST_STRONG;
|
||||
} else if(it.value() == "Very Strong") {
|
||||
gSaveContext.randoSettings[index].value = 3;
|
||||
gSaveContext.randoSettings[index].value = RO_HINT_DIST_VERY_STRONG;
|
||||
}
|
||||
break;
|
||||
case RSK_GERUDO_KEYS:
|
||||
if (it.value() == "Vanilla") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_GERUDO_KEYS_VANILLA;
|
||||
} else if (it.value() == "Any Dungeon") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_GERUDO_KEYS_ANY_DUNGEON;
|
||||
} else if (it.value() == "Overworld") {
|
||||
gSaveContext.randoSettings[index].value = 2;
|
||||
gSaveContext.randoSettings[index].value = RO_GERUDO_KEYS_OVERWORLD;
|
||||
} else if (it.value() == "Anywhere") {
|
||||
gSaveContext.randoSettings[index].value = 3;
|
||||
gSaveContext.randoSettings[index].value = RO_GERUDO_KEYS_ANYWHERE;
|
||||
}
|
||||
break;
|
||||
case RSK_KEYSANITY:
|
||||
if(it.value() == "Start With") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_STARTWITH;
|
||||
} else if(it.value() == "Vanilla") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_VANILLA;
|
||||
} else if(it.value() == "Own Dungeon") {
|
||||
gSaveContext.randoSettings[index].value = 2;
|
||||
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_OWN_DUNGEON;
|
||||
} else if(it.value() == "Any Dungeon") {
|
||||
gSaveContext.randoSettings[index].value = 3;
|
||||
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_ANY_DUNGEON;
|
||||
} else if(it.value() == "Overworld") {
|
||||
gSaveContext.randoSettings[index].value = 4;
|
||||
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_OVERWORLD;
|
||||
} else if(it.value() == "Anywhere") {
|
||||
gSaveContext.randoSettings[index].value = 5;
|
||||
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_ANYWHERE;
|
||||
}
|
||||
break;
|
||||
case RSK_BOSS_KEYSANITY:
|
||||
if(it.value() == "Start With") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_STARTWITH;
|
||||
} else if(it.value() == "Vanilla") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_VANILLA;
|
||||
} else if(it.value() == "Own Dungeon") {
|
||||
gSaveContext.randoSettings[index].value = 2;
|
||||
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_OWN_DUNGEON;
|
||||
} else if(it.value() == "Any Dungeon") {
|
||||
gSaveContext.randoSettings[index].value = 3;
|
||||
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_ANY_DUNGEON;
|
||||
} else if(it.value() == "Overworld") {
|
||||
gSaveContext.randoSettings[index].value = 4;
|
||||
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_OVERWORLD;
|
||||
} else if(it.value() == "Anywhere") {
|
||||
gSaveContext.randoSettings[index].value = 5;
|
||||
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_ANYWHERE;
|
||||
}
|
||||
break;
|
||||
case RSK_GANONS_BOSS_KEY:
|
||||
if(it.value() == "Vanilla") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_VANILLA;
|
||||
} else if(it.value() == "Own dungeon") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_OWN_DUNGEON;
|
||||
} else if(it.value() == "Start with") {
|
||||
gSaveContext.randoSettings[index].value = 2;
|
||||
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_STARTWITH;
|
||||
} else if(it.value() == "Any Dungeon") {
|
||||
gSaveContext.randoSettings[index].value = 3;
|
||||
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_ANY_DUNGEON;
|
||||
} else if(it.value() == "Overworld") {
|
||||
gSaveContext.randoSettings[index].value = 4;
|
||||
} else if(it.value() == "Anywhere") {
|
||||
gSaveContext.randoSettings[index].value = 5;
|
||||
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_OVERWORLD;
|
||||
} else if(it.value() == "Anywhere") {
|
||||
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_ANYWHERE;
|
||||
} else if(it.value() == "LACS-Vanilla") {
|
||||
gSaveContext.randoSettings[index].value = 6;
|
||||
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_LACS_VANILLA;
|
||||
} else if(it.value() == "LACS-Medallions") {
|
||||
gSaveContext.randoSettings[index].value = 7;
|
||||
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_LACS_MEDALLIONS;
|
||||
} else if(it.value() == "LACS-Stones") {
|
||||
gSaveContext.randoSettings[index].value = 8;
|
||||
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_LACS_STONES;
|
||||
} else if(it.value() == "LACS-Rewards") {
|
||||
gSaveContext.randoSettings[index].value = 9;
|
||||
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_LACS_REWARDS;
|
||||
} else if(it.value() == "LACS-Dungeons") {
|
||||
gSaveContext.randoSettings[index].value = 10;
|
||||
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_LACS_DUNGEONS;
|
||||
} else if(it.value() == "LACS-Tokens") {
|
||||
gSaveContext.randoSettings[index].value = 11;
|
||||
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_LACS_TOKENS;
|
||||
}
|
||||
break;
|
||||
case RSK_SKIP_CHILD_ZELDA:
|
||||
@ -873,40 +895,40 @@ void Randomizer::ParseRandomizerSettingsFile(const char* spoilerFileName) {
|
||||
case RSK_STARTING_CONSUMABLES:
|
||||
case RSK_FULL_WALLETS:
|
||||
if(it.value() == "No") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_GENERIC_NO;
|
||||
} else if(it.value() == "Yes") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_GENERIC_YES;
|
||||
}
|
||||
break;
|
||||
case RSK_SKIP_CHILD_STEALTH:
|
||||
case RSK_SKIP_EPONA_RACE:
|
||||
case RSK_SKIP_TOWER_ESCAPE:
|
||||
if(it.value() == "Don't Skip") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_GENERIC_DONT_SKIP;
|
||||
} else if (it.value() == "Skip") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_GENERIC_SKIP;
|
||||
}
|
||||
break;
|
||||
case RSK_SHUFFLE_TOKENS:
|
||||
if (it.value() == "Off") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_TOKENSANITY_OFF;
|
||||
} else if (it.value() == "Dungeons") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_TOKENSANITY_DUNGEONS;
|
||||
} else if (it.value() == "Overworld") {
|
||||
gSaveContext.randoSettings[index].value = 2;
|
||||
gSaveContext.randoSettings[index].value = RO_TOKENSANITY_OVERWORLD;
|
||||
} else if (it.value() == "All Tokens") {
|
||||
gSaveContext.randoSettings[index].value = 3;
|
||||
gSaveContext.randoSettings[index].value = RO_TOKENSANITY_ALL;
|
||||
}
|
||||
break;
|
||||
case RSK_LINKS_POCKET:
|
||||
if (it.value() == "Dungeon Reward") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_LINKS_POCKET_DUNGEON_REWARD;
|
||||
} else if (it.value() == "Advancement") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_LINKS_POCKET_ADVANCEMENT;
|
||||
} else if (it.value() == "Anything") {
|
||||
gSaveContext.randoSettings[index].value = 2;
|
||||
gSaveContext.randoSettings[index].value = RO_LINKS_POCKET_ANYTHING;
|
||||
} else if (it.value() == "Nothing") {
|
||||
gSaveContext.randoSettings[index].value = 3;
|
||||
gSaveContext.randoSettings[index].value = RO_LINKS_POCKET_NOTHING;
|
||||
}
|
||||
break;
|
||||
case RSK_MQ_DUNGEON_COUNT:
|
||||
@ -919,20 +941,20 @@ void Randomizer::ParseRandomizerSettingsFile(const char* spoilerFileName) {
|
||||
break;
|
||||
case RSK_SHUFFLE_DUNGEON_ENTRANCES:
|
||||
if (it.value() == "Off") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_DUNGEON_ENTRANCE_SHUFFLE_OFF;
|
||||
} else if (it.value() == "On") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_DUNGEON_ENTRANCE_SHUFFLE_ON;
|
||||
} else if (it.value() == "On + Ganon") {
|
||||
gSaveContext.randoSettings[index].value = 2;
|
||||
gSaveContext.randoSettings[index].value = RO_DUNGEON_ENTRANCE_SHUFFLE_ON_PLUS_GANON;
|
||||
}
|
||||
break;
|
||||
case RSK_SHUFFLE_INTERIOR_ENTRANCES:
|
||||
if (it.value() == "Off") {
|
||||
gSaveContext.randoSettings[index].value = 0;
|
||||
gSaveContext.randoSettings[index].value = RO_INTERIOR_ENTRANCE_SHUFFLE_OFF;
|
||||
} else if (it.value() == "Simple") {
|
||||
gSaveContext.randoSettings[index].value = 1;
|
||||
gSaveContext.randoSettings[index].value = RO_INTERIOR_ENTRANCE_SHUFFLE_SIMPLE;
|
||||
} else if (it.value() == "All") {
|
||||
gSaveContext.randoSettings[index].value = 2;
|
||||
gSaveContext.randoSettings[index].value = RO_INTERIOR_ENTRANCE_SHUFFLE_ALL;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -2806,7 +2828,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"Open - Mido no longer blocks the path to the Deku Tree. Kokiri "
|
||||
"boy no longer blocks the path out of the forest."
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeForest", randoForest, 3, 0);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeForest", randoForest, 3, RO_FOREST_CLOSED);
|
||||
|
||||
UIWidgets::PaddedSeparator();
|
||||
|
||||
@ -2819,7 +2841,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"Open - The gate is always open. The happy mask shop "
|
||||
"will open immediately after obtaining Zelda's letter."
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeKakarikoGate", randoKakarikoGate, 2, 0);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeKakarikoGate", randoKakarikoGate, 2, RO_GENERIC_DONT_SKIP);
|
||||
|
||||
UIWidgets::PaddedSeparator();
|
||||
|
||||
@ -2834,7 +2856,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"\n"
|
||||
"Open - The Door of Time is permanently open with no requirements."
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeDoorOfTime", randoDoorOfTime, 3, 0);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeDoorOfTime", randoDoorOfTime, 3, RO_DOOROFTIME_CLOSED);
|
||||
|
||||
UIWidgets::PaddedSeparator();
|
||||
|
||||
@ -2851,7 +2873,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"Open - King Zora has already mweeped out of the way in both "
|
||||
"time periods. Ruto's Letter is removed from the item pool."
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeZorasFountain", randoZorasFountain, 3, 0);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeZorasFountain", randoZorasFountain, 3, RO_ZF_CLOSED);
|
||||
|
||||
UIWidgets::PaddedSeparator();
|
||||
|
||||
@ -2882,12 +2904,12 @@ void DrawRandoEditor(bool& open) {
|
||||
ImGui::PushItemFlag(ImGuiItemFlags_Disabled, true);
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
|
||||
}
|
||||
UIWidgets::EnhancementCombobox("gRandomizeStartingAge", randoStartingAge, 3, 0);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeStartingAge", randoStartingAge, 3, RO_AGE_CHILD);
|
||||
if (disableRandoStartingAge) {
|
||||
if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled)) {
|
||||
ImGui::SetTooltip("%s", disableRandoStartingAgeText);
|
||||
}
|
||||
CVar_SetS32("gRandomizeStartingAge", 0);
|
||||
CVar_SetS32("gRandomizeStartingAge", RO_AGE_CHILD);
|
||||
ImGui::PopStyleVar(1);
|
||||
ImGui::PopItemFlag();
|
||||
}
|
||||
@ -2906,7 +2928,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"\n"
|
||||
"Open - The bridge is repaired from the start."
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeGerudoFortress", randoGerudoFortress, 3, 0);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeGerudoFortress", randoGerudoFortress, 3, RO_GF_NORMAL);
|
||||
|
||||
UIWidgets::PaddedSeparator();
|
||||
|
||||
@ -2933,7 +2955,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"Tokens - Obtain the specified amount of Skulltula tokens."
|
||||
);
|
||||
|
||||
UIWidgets::EnhancementCombobox("gRandomizeRainbowBridge", randoRainbowBridge, 7, 0);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeRainbowBridge", randoRainbowBridge, 7, RO_BRIDGE_VANILLA);
|
||||
ImGui::PopItemWidth();
|
||||
switch (CVar_GetS32("gRandomizeRainbowBridge", 0)) {
|
||||
case 0:
|
||||
@ -3037,7 +3059,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"- Bottom of the Well will be open for adult after playing Song of Storms to the Windmill guy as child.\n"
|
||||
"- Gerudo Training Ground will be open for child after adult has paid to open the gate once."
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeShuffleDungeonsEntrances", randoShuffleDungeonsEntrances, 3, 0);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeShuffleDungeonsEntrances", randoShuffleDungeonsEntrances, 3, RO_DUNGEON_ENTRANCE_SHUFFLE_OFF);
|
||||
|
||||
UIWidgets::PaddedSeparator();
|
||||
|
||||
@ -3065,7 +3087,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"- Temple of Time\n"
|
||||
"- Kakariko Potion Shop"
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeShuffleInteriorsEntrances", randoShuffleInteriorsEntrances, 3, 0);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeShuffleInteriorsEntrances", randoShuffleInteriorsEntrances, 3, RO_INTERIOR_ENTRANCE_SHUFFLE_OFF);
|
||||
|
||||
UIWidgets::PaddedSeparator();
|
||||
|
||||
@ -3115,7 +3137,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"\n"
|
||||
"Anywhere - Songs can appear at any location."
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeShuffleSongs", randoShuffleSongs, 3, 0);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeShuffleSongs", randoShuffleSongs, 3, RO_SONG_SHUFFLE_SONG_LOCATIONS);
|
||||
|
||||
UIWidgets::PaddedSeparator();
|
||||
|
||||
@ -3133,7 +3155,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"\n"
|
||||
"All Tokens - Shuffle all 100 GS tokens."
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeShuffleTokens", randoTokensanity, 4, 0);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeShuffleTokens", randoTokensanity, 4, RO_TOKENSANITY_OFF);
|
||||
|
||||
ImGui::Dummy(ImVec2(0,0));
|
||||
|
||||
@ -3225,7 +3247,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"\n"
|
||||
"Random - Vanilla shop items will be shuffled among different shops, and each shop will contain a random number(1-4) of non-vanilla shop items.\n"
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeShopsanity", randoShopsanity, 7, 0);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeShopsanity", randoShopsanity, 7, RO_SHOPSANITY_OFF);
|
||||
|
||||
UIWidgets::PaddedSeparator();
|
||||
|
||||
@ -3240,7 +3262,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"Expensive - Scrubs will be shuffled and their item will cost the vanilla price.\n"
|
||||
"\n"
|
||||
"Random - Scrubs will be shuffled and their item will cost will be between 0-95 rupees.\n");
|
||||
UIWidgets::EnhancementCombobox("gRandomizeShuffleScrubs", randoShuffleScrubs, 4, 0);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeShuffleScrubs", randoShuffleScrubs, 4, RO_SCRUBS_OFF);
|
||||
|
||||
UIWidgets::PaddedSeparator();
|
||||
|
||||
@ -3267,7 +3289,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"On (no hints) - Salesmen will be included but won't tell you what you'll get.\n"
|
||||
"On (with hints) - Salesmen will be included and you'll know what you're buying."
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeShuffleMerchants", randoShuffleMerchants, 3, 0);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeShuffleMerchants", randoShuffleMerchants, 3, RO_SHUFFLE_MERCHANTS_OFF);
|
||||
|
||||
UIWidgets::PaddedSeparator();
|
||||
|
||||
@ -3322,7 +3344,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"\n"
|
||||
"Anywhere - Spiritual stones and medallions can appear anywhere."
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeShuffleDungeonReward", randoShuffleDungeonRewards, 4, 0);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeShuffleDungeonReward", randoShuffleDungeonRewards, 4, RO_DUNGEON_REWARDS_END_OF_DUNGEON);
|
||||
|
||||
UIWidgets::PaddedSeparator();
|
||||
|
||||
@ -3341,7 +3363,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"\n"
|
||||
"Anywhere - Maps & Compasses can appear anywhere in the world."
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeStartingMapsCompasses", randoShuffleMapsAndCompasses, 6, 2);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeStartingMapsCompasses", randoShuffleMapsAndCompasses, 6, RO_DUNGEON_ITEM_LOC_OWN_DUNGEON);
|
||||
|
||||
UIWidgets::PaddedSeparator();
|
||||
|
||||
@ -3360,7 +3382,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"\n"
|
||||
"Anywhere - Small Keys can appear anywhere in the world."
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeKeysanity", randoShuffleSmallKeys, 6, 2);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeKeysanity", randoShuffleSmallKeys, 6, RO_DUNGEON_ITEM_LOC_OWN_DUNGEON);
|
||||
|
||||
UIWidgets::PaddedSeparator();
|
||||
|
||||
@ -3377,15 +3399,15 @@ void DrawRandoEditor(bool& open) {
|
||||
"\n"
|
||||
"Selection - Hand select which dungeons will have their keys replaced with keyrings."
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeShuffleKeyRings", randoShuffleKeyRings, 4, 0);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeShuffleKeyRings", randoShuffleKeyRings, 4, RO_KEYRINGS_OFF);
|
||||
ImGui::PopItemWidth();
|
||||
switch (CVar_GetS32("gRandomizeShuffleKeyRings", 0)) {
|
||||
case 2:
|
||||
switch (CVar_GetS32("gRandomizeShuffleKeyRings", RO_KEYRINGS_OFF)) {
|
||||
case RO_KEYRINGS_COUNT:
|
||||
ImGui::Dummy(ImVec2(0.0f, 0.0f));
|
||||
UIWidgets::EnhancementSliderInt("Key Ring Count: %d", "##RandomizeShuffleKeyRingsRandomCount",
|
||||
"gRandomizeShuffleKeyRingsRandomCount", 1, 8, "", 8, true);
|
||||
break;
|
||||
case 3:
|
||||
case RO_KEYRINGS_SELECTION:
|
||||
UIWidgets::EnhancementCheckbox("Forest Temple##RandomizeShuffleKeyRings", "gRandomizeShuffleKeyRingsForestTemple");
|
||||
UIWidgets::EnhancementCheckbox("Fire Temple##RandomizeShuffleKeyRings", "gRandomizeShuffleKeyRingsFireTemple");
|
||||
UIWidgets::EnhancementCheckbox("Water Temple##RandomizeShuffleKeyRings", "gRandomizeShuffleKeyRingsWaterTemple");
|
||||
@ -3413,7 +3435,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"\n"
|
||||
"Anywhere - Thieve's Hideout Keys can appear anywhere in the world."
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeGerudoKeys", randoShuffleGerudoFortressKeys, 4, 0);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeGerudoKeys", randoShuffleGerudoFortressKeys, 4, RO_GERUDO_KEYS_VANILLA);
|
||||
|
||||
UIWidgets::PaddedSeparator();
|
||||
|
||||
@ -3432,7 +3454,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"\n"
|
||||
"Anywhere - Boss Keys can appear anywhere in the world."
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeBossKeysanity", randoShuffleBossKeys, 6, 2);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeBossKeysanity", randoShuffleBossKeys, 6, RO_DUNGEON_ITEM_LOC_OWN_DUNGEON);
|
||||
|
||||
UIWidgets::PaddedSeparator();
|
||||
|
||||
@ -3459,30 +3481,30 @@ void DrawRandoEditor(bool& open) {
|
||||
"- Dungeons: Complete the specified amount of dungeons. Dungeons are considered complete after stepping in to the blue warp after the boss.\n"
|
||||
"- Tokens: Obtain the specified amount of Skulltula tokens."
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeShuffleGanonBossKey", randoShuffleGanonsBossKey, 12, 1);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeShuffleGanonBossKey", randoShuffleGanonsBossKey, 12, RO_GANON_BOSS_KEY_VANILLA);
|
||||
ImGui::PopItemWidth();
|
||||
switch (CVar_GetS32("gRandomizeShuffleGanonBossKey", 1)) {
|
||||
case 7:
|
||||
switch (CVar_GetS32("gRandomizeShuffleGanonBossKey", RO_GANON_BOSS_KEY_OWN_DUNGEON)) {
|
||||
case RO_GANON_BOSS_KEY_LACS_MEDALLIONS:
|
||||
ImGui::Dummy(ImVec2(0.0f, 0.0f));
|
||||
UIWidgets::EnhancementSliderInt("Medallion Count: %d", "##RandoLacsMedallionCount",
|
||||
"gRandomizeLacsMedallionCount", 1, 6, "", 6, true);
|
||||
break;
|
||||
case 8:
|
||||
case RO_GANON_BOSS_KEY_LACS_STONES:
|
||||
ImGui::Dummy(ImVec2(0.0f, 0.0f));
|
||||
UIWidgets::EnhancementSliderInt("Stone Count: %d", "##RandoLacsStoneCount",
|
||||
"gRandomizeLacsStoneCount", 1, 3, "", 3, true);
|
||||
break;
|
||||
case 9:
|
||||
case RO_GANON_BOSS_KEY_LACS_REWARDS:
|
||||
ImGui::Dummy(ImVec2(0.0f, 0.0f));
|
||||
UIWidgets::EnhancementSliderInt("Reward Count: %d", "##RandoLacsRewardCount",
|
||||
"gRandomizeLacsRewardCount", 1, 9, "", 9, true);
|
||||
break;
|
||||
case 10:
|
||||
case RO_GANON_BOSS_KEY_LACS_DUNGEONS:
|
||||
ImGui::Dummy(ImVec2(0.0f, 0.0f));
|
||||
UIWidgets::EnhancementSliderInt("Dungeon Count: %d", "##RandoLacsDungeonCount",
|
||||
"gRandomizeLacsDungeonCount", 1, 8, "", 8, true);
|
||||
break;
|
||||
case 11:
|
||||
case RO_GANON_BOSS_KEY_LACS_TOKENS:
|
||||
ImGui::Dummy(ImVec2(0.0f, 0.0f));
|
||||
UIWidgets::EnhancementSliderInt("Token Count: %d", "##RandoLacsTokenCount",
|
||||
"gRandomizeLacsTokenCount", 1, 100, "", 100, true);
|
||||
@ -3597,7 +3619,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"\n"
|
||||
"Minimal - Most excess items are removed."
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeItemPool", randoItemPool, 4, 1);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeItemPool", randoItemPool, 4, RO_ITEM_POOL_BALANCED);
|
||||
UIWidgets::PaddedSeparator();
|
||||
|
||||
// Ice Traps
|
||||
@ -3616,7 +3638,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"Onslaught - All junk items will be replaced by Ice Traps, even those "
|
||||
"in the base pool."
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeIceTraps", randoIceTraps, 5, 1);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeIceTraps", randoIceTraps, 5, RO_ICE_TRAPS_NORMAL);
|
||||
|
||||
UIWidgets::PaddedSeparator();
|
||||
|
||||
@ -3634,7 +3656,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"Need Stone of Agony - Hints are only available after obtaining the Stone of Agony.\n"
|
||||
"\n"
|
||||
"Need Mask of Truth - Hints are only available whilst wearing the Mask of Truth.\n");
|
||||
UIWidgets::EnhancementCombobox("gRandomizeGossipStoneHints", randoGossipStoneHints, 4, 1);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeGossipStoneHints", randoGossipStoneHints, 4, RO_GOSSIP_STONES_NEED_NOTHING);
|
||||
if (CVar_GetS32("gRandomizeGossipStoneHints", 1) != 0) {
|
||||
// Hint Clarity
|
||||
ImGui::Dummy(ImVec2(0.0f, 0.0f));
|
||||
@ -3652,7 +3674,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"Clear - Hints are clearly written and are unique for each item.\n"
|
||||
"Ex: Kokiri Sword > the Kokiri Sword"
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeHintClarity", randoHintClarity, 3, 2);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeHintClarity", randoHintClarity, 3, RO_HINT_CLARITY_CLEAR);
|
||||
|
||||
// Hint Distribution
|
||||
ImGui::Dummy(ImVec2(0.0f, 0.0f));
|
||||
@ -3668,7 +3690,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"\n"
|
||||
"Very Strong - Many powerful hints."
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeHintDistribution", randoHintDistribution, 4, 1);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeHintDistribution", randoHintDistribution, 4, RO_HINT_DIST_BALANCED);
|
||||
ImGui::Unindent();
|
||||
}
|
||||
|
||||
@ -3866,7 +3888,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"\n"
|
||||
"No logic - Item placement is completely random. MAY BE IMPOSSIBLE TO BEAT."
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeLogicRules", randoLogicRules, 2, 0);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeLogicRules", randoLogicRules, 2, RO_GENERIC_OFF);
|
||||
|
||||
UIWidgets::PaddedSeparator();
|
||||
|
||||
@ -3931,7 +3953,7 @@ void DrawRandoEditor(bool& open) {
|
||||
// TODO: Show this but disabled when we have options for disabled Comboboxes.
|
||||
if (CVar_GetS32("gRandomizeShuffleDungeonReward", 0) != 0) {
|
||||
ImGui::Text(Settings::LinksPocketItem.GetName().c_str());
|
||||
UIWidgets::EnhancementCombobox("gRandomizeLinksPocket", randoLinksPocket, 4, 0);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeLinksPocket", randoLinksPocket, 4, RO_LINKS_POCKET_DUNGEON_REWARD);
|
||||
UIWidgets::PaddedSeparator();
|
||||
}
|
||||
|
||||
|
@ -13,7 +13,6 @@
|
||||
|
||||
#define NUM_NAVI_MESSAGES 19
|
||||
#define NUM_ICE_TRAP_MESSAGES 23
|
||||
|
||||
class Randomizer {
|
||||
private:
|
||||
std::unordered_map<RandomizerCheck, RandomizerGetData> itemLocations;
|
||||
|
@ -1070,6 +1070,190 @@ typedef enum {
|
||||
RSK_MAX
|
||||
} RandomizerSettingKey;
|
||||
|
||||
typedef enum RandoOption {
|
||||
//Generic Settings (any binary option can use this)
|
||||
//(off/on, no/yes, don't skip/skip)
|
||||
RO_GENERIC_OFF,
|
||||
RO_GENERIC_ON,
|
||||
RO_GENERIC_NO = 0,
|
||||
RO_GENERIC_YES,
|
||||
RO_GENERIC_DONT_SKIP = 0,
|
||||
RO_GENERIC_SKIP,
|
||||
|
||||
//Forest settings (closed, closed deku, open)
|
||||
RO_FOREST_CLOSED = 0,
|
||||
RO_FOREST_CLOSED_DEKU,
|
||||
RO_FOREST_OPEN,
|
||||
|
||||
//Door of Time settings (open, song only, closed)
|
||||
RO_DOOROFTIME_OPEN = 0,
|
||||
RO_DOOROFTIME_SONGONLY,
|
||||
RO_DOOROFTIME_CLOSED,
|
||||
|
||||
//Zora's Fountain settings (closed, closed as child, open)
|
||||
RO_ZF_CLOSED = 0,
|
||||
RO_ZF_CLOSED_CHILD,
|
||||
RO_ZF_OPEN,
|
||||
|
||||
//Starting Age settings (child, adult, random)
|
||||
RO_AGE_CHILD = 0,
|
||||
RO_AGE_ADULT,
|
||||
RO_AGE_RANDOM,
|
||||
|
||||
//Gerudo Fortress settings (normal, fast, open)
|
||||
RO_GF_NORMAL = 0,
|
||||
RO_GF_FAST,
|
||||
RO_GF_OPEN,
|
||||
|
||||
//Rainbow Bridge settings (always open, vanilla, stones, medallions, dungeon rewards, dungeons, tokens)
|
||||
RO_BRIDGE_VANILLA = 0,
|
||||
RO_BRIDGE_ALWAYS_OPEN,
|
||||
RO_BRIDGE_STONES,
|
||||
RO_BRIDGE_MEDALLIONS,
|
||||
RO_BRIDGE_DUNGEON_REWARDS,
|
||||
RO_BRIDGE_DUNGEONS,
|
||||
RO_BRIDGE_TOKENS,
|
||||
|
||||
//Shopsanity settings (off, 0-4 items, random)
|
||||
RO_SHOPSANITY_OFF = 0,
|
||||
RO_SHOPSANITY_ZERO_ITEMS,
|
||||
RO_SHOPSANITY_ONE_ITEM,
|
||||
RO_SHOPSANITY_TWO_ITEMS,
|
||||
RO_SHOPSANITY_THREE_ITEMS,
|
||||
RO_SHOPSANITY_FOUR_ITEMS,
|
||||
RO_SHOPSANITY_RANDOM,
|
||||
|
||||
//Scrubsanity settings (off, affordable, expensive, random)
|
||||
RO_SCRUBS_OFF = 0,
|
||||
RO_SCRUBS_AFFORDABLE,
|
||||
RO_SCRUBS_EXPENSIVE,
|
||||
RO_SCRUBS_RANDOM,
|
||||
|
||||
//Shuffle Merchants settings (off, on w/o hints, on w/hints)
|
||||
RO_MERCHANTS_OFF = 0,
|
||||
RO_MERCHANTS_ON_NO_HINTS,
|
||||
RO_MERCHANTS_ON_WITH_HINTS,
|
||||
|
||||
//Ammo drop settings (on, "on+bombchu", off)
|
||||
RO_AMMO_DROPS_ON = 0,
|
||||
RO_AMMO_DROPS_ON_PLUS_BOMBCHU,
|
||||
RO_AMMO_DROPS_OFF,
|
||||
|
||||
//Any Dungeon Item (start with, vanilla, own dungeon, any dungeon,
|
||||
//overworld, anywhere)
|
||||
RO_DUNGEON_ITEM_LOC_STARTWITH = 0,
|
||||
RO_DUNGEON_ITEM_LOC_VANILLA,
|
||||
RO_DUNGEON_ITEM_LOC_OWN_DUNGEON,
|
||||
RO_DUNGEON_ITEM_LOC_ANY_DUNGEON,
|
||||
RO_DUNGEON_ITEM_LOC_OVERWORLD,
|
||||
RO_DUNGEON_ITEM_LOC_ANYWHERE,
|
||||
|
||||
//Dungeon reward settings
|
||||
RO_DUNGEON_REWARDS_END_OF_DUNGEON = 0,
|
||||
RO_DUNGEON_REWARDS_ANY_DUNGEON,
|
||||
RO_DUNGEON_REWARDS_OVERWORLD,
|
||||
RO_DUNGEON_REWARDS_ANYWHERE,
|
||||
|
||||
//Keyring Settings
|
||||
RO_KEYRINGS_OFF = 0,
|
||||
RO_KEYRINGS_RANDOM,
|
||||
RO_KEYRINGS_COUNT,
|
||||
RO_KEYRINGS_SELECTION,
|
||||
|
||||
//Ganon Boss Key Settings (vanilla, own dungeon, start with,
|
||||
//overworld, anywhere)
|
||||
RO_GANON_BOSS_KEY_VANILLA = 0,
|
||||
RO_GANON_BOSS_KEY_OWN_DUNGEON,
|
||||
RO_GANON_BOSS_KEY_STARTWITH,
|
||||
RO_GANON_BOSS_KEY_ANY_DUNGEON,
|
||||
RO_GANON_BOSS_KEY_OVERWORLD,
|
||||
RO_GANON_BOSS_KEY_ANYWHERE,
|
||||
RO_GANON_BOSS_KEY_LACS_VANILLA,
|
||||
RO_GANON_BOSS_KEY_LACS_MEDALLIONS,
|
||||
RO_GANON_BOSS_KEY_LACS_STONES,
|
||||
RO_GANON_BOSS_KEY_LACS_REWARDS,
|
||||
RO_GANON_BOSS_KEY_LACS_DUNGEONS,
|
||||
RO_GANON_BOSS_KEY_LACS_TOKENS,
|
||||
|
||||
//Shuffle Dungeon Entrance Settings (Off, on, plus ganon)
|
||||
RO_DUNGEON_ENTRANCE_SHUFFLE_OFF = 0,
|
||||
RO_DUNGEON_ENTRANCE_SHUFFLE_ON,
|
||||
RO_DUNGEON_ENTRANCE_SHUFFLE_ON_PLUS_GANON,
|
||||
|
||||
//Shuffle Interior Entrance Settings (Off, simple, all)
|
||||
RO_INTERIOR_ENTRANCE_SHUFFLE_OFF = 0,
|
||||
RO_INTERIOR_ENTRANCE_SHUFFLE_SIMPLE,
|
||||
RO_INTERIOR_ENTRANCE_SHUFFLE_ALL,
|
||||
|
||||
//Song shuffle Settings (Song locations, Dungeon rewards, anywhere)
|
||||
RO_SONG_SHUFFLE_SONG_LOCATIONS = 0,
|
||||
RO_SONG_SHUFFLE_DUNGEON_REWARDS,
|
||||
RO_SONG_SHUFFLE_ANYWHERE,
|
||||
|
||||
//Shuffle Merchants Settings (Off, On no hint, on with wint)
|
||||
RO_SHUFFLE_MERCHANTS_OFF = 0,
|
||||
RO_SHUFFLE_MERCHANTS_ON_NO_HINT,
|
||||
RO_SHUFFLE_MERCHANTS_ON_HINT,
|
||||
|
||||
//Starting Ocarina Settings (off, fairy)
|
||||
RO_STARTING_OCARINA_OFF = 0,
|
||||
RO_STARTING_OCARINA_FAIRY,
|
||||
|
||||
//Item Pool Settings
|
||||
RO_ITEM_POOL_PLENTIFUL = 0,
|
||||
RO_ITEM_POOL_BALANCED,
|
||||
RO_ITEM_POOL_SCARCE,
|
||||
RO_ITEM_POOL_MINIMAL,
|
||||
|
||||
//Ice Trap Settings
|
||||
RO_ICE_TRAPS_OFF = 0,
|
||||
RO_ICE_TRAPS_NORMAL,
|
||||
RO_ICE_TRAPS_EXTRA,
|
||||
RO_ICE_TRAPS_MAYHEM,
|
||||
RO_ICE_TRAPS_ONSLAUGHT,
|
||||
|
||||
//Gossip Stone Hint Settings (no hints, needs nothing,
|
||||
//needs mask of truth, needs stone of agony)
|
||||
RO_GOSSIP_STONES_NONE = 0,
|
||||
RO_GOSSIP_STONES_NEED_NOTHING,
|
||||
RO_GOSSIP_STONES_NEED_TRUTH,
|
||||
RO_GOSSIP_STONES_NEED_STONE,
|
||||
|
||||
//Hint Clarity Settings (obscure, ambiguous, clear)
|
||||
RO_HINT_CLARITY_OBSCURE = 0,
|
||||
RO_HINT_CLARITY_AMBIGUOUS,
|
||||
RO_HINT_CLARITY_CLEAR,
|
||||
|
||||
//Hint Distribution Settings (useless, balanced, strong, very strong)
|
||||
RO_HINT_DIST_USELESS = 0,
|
||||
RO_HINT_DIST_BALANCED,
|
||||
RO_HINT_DIST_STRONG,
|
||||
RO_HINT_DIST_VERY_STRONG,
|
||||
|
||||
//Gerudo Fortress Key Settings (vanilla, any dungeon, overworld,
|
||||
//anywhere)
|
||||
RO_GERUDO_KEYS_VANILLA = 0,
|
||||
RO_GERUDO_KEYS_ANY_DUNGEON,
|
||||
RO_GERUDO_KEYS_OVERWORLD,
|
||||
RO_GERUDO_KEYS_ANYWHERE,
|
||||
|
||||
//Tokensanity settings (off, dungeons, overworld, all)
|
||||
RO_TOKENSANITY_OFF = 0,
|
||||
RO_TOKENSANITY_DUNGEONS,
|
||||
RO_TOKENSANITY_OVERWORLD,
|
||||
RO_TOKENSANITY_ALL,
|
||||
|
||||
//Link's Pocket Settings (dungeon reward, advancement, anything, nothing)
|
||||
RO_LINKS_POCKET_DUNGEON_REWARD = 0,
|
||||
RO_LINKS_POCKET_ADVANCEMENT,
|
||||
RO_LINKS_POCKET_ANYTHING,
|
||||
RO_LINKS_POCKET_NOTHING,
|
||||
|
||||
//If you're going to add to this enum, please list the default option first
|
||||
//with a value of zero.
|
||||
|
||||
} RandoOption;
|
||||
|
||||
typedef enum {
|
||||
CAN_OBTAIN,
|
||||
CANT_OBTAIN_MISC,
|
||||
|
Loading…
Reference in New Issue
Block a user