mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-02-16 23:30:15 -05:00
Fixes some Spoiler Parsing Bugs (#3759)
* Fixes bug causing dropped spoiler not to be parsed. * Fixes bugs with parsing enabled tricks * Fixes bugs with parsing excluded locations. * Fixes bugs parsing the Bombchu Drops setting
This commit is contained in:
parent
8cb06d2d5d
commit
dbb1e60734
@ -616,7 +616,7 @@ namespace Logic {
|
||||
FoundBombchus = (BombchuDrop || Bombchus || Bombchus5 || Bombchus10 || Bombchus20);
|
||||
CanPlayBowling = (ctx->GetOption(RSK_BOMBCHUS_IN_LOGIC) && FoundBombchus) || (!ctx->GetOption(RSK_BOMBCHUS_IN_LOGIC) && BombBag);
|
||||
// TODO: Implement Ammo Drop Setting in place of bombchu drops
|
||||
HasBombchus = (BuyBombchus || (ctx->GetOption(RSK_ENABLE_BOMBCHU_DROPS).Is(RO_AMMO_DROPS_ON_PLUS_BOMBCHU) && FoundBombchus));
|
||||
HasBombchus = (BuyBombchus || (ctx->GetOption(RSK_ENABLE_BOMBCHU_DROPS).Is(RO_AMMO_DROPS_ON/*_PLUS_BOMBCHU*/) && FoundBombchus));
|
||||
|
||||
HasExplosives = Bombs || (ctx->GetOption(RSK_BOMBCHUS_IN_LOGIC) && HasBombchus);
|
||||
|
||||
|
@ -437,7 +437,7 @@ static void WriteEnabledTricks(tinyxml2::XMLDocument& spoilerLog) {
|
||||
if (setting->GetSelectedOptionIndex() != RO_GENERIC_ON/* || !setting->IsCategory(OptionCategory::Setting)*/) {
|
||||
continue;
|
||||
}
|
||||
jsonData["enabledTricks"].push_back(RemoveLineBreaks(RandomizerTricks::GetRTName((RandomizerTrick)std::stoi(setting->GetName()))).c_str());
|
||||
jsonData["enabledTricks"].push_back(RemoveLineBreaks(setting->GetName()).c_str());
|
||||
//auto node = parentNode->InsertNewChildElement("trick");
|
||||
//node->SetAttribute("name", RemoveLineBreaks(setting->GetName()).c_str());
|
||||
}
|
||||
|
@ -16,6 +16,8 @@ namespace Rando {
|
||||
std::weak_ptr<Context> Context::mContext;
|
||||
|
||||
Context::Context() {
|
||||
StaticData::InitItemTable();
|
||||
StaticData::InitLocationTable();
|
||||
for (auto& location : StaticData::GetLocationTable()) {
|
||||
mSpoilerfileCheckNameToEnum[location.GetName()] = location.GetRandomizerCheck();
|
||||
}
|
||||
|
@ -3641,9 +3641,9 @@ typedef enum {
|
||||
|
||||
//Ammo drop settings (on, "on+bombchu", off)
|
||||
typedef enum {
|
||||
RO_AMMO_DROPS_ON,
|
||||
RO_AMMO_DROPS_ON_PLUS_BOMBCHU,
|
||||
RO_AMMO_DROPS_OFF,
|
||||
//RO_AMMO_DROPS_ON_PLUS_BOMBCHU,
|
||||
RO_AMMO_DROPS_ON,
|
||||
} RandoOptionAmmoDrops;
|
||||
|
||||
typedef enum {
|
||||
|
@ -197,177 +197,177 @@ void Settings::CreateOptions() {
|
||||
|
||||
mExcludeLocationsOptionsGroups.reserve(SPOILER_COLLECTION_GROUP_COUNT);
|
||||
|
||||
mTrickOptions[RT_VISIBLE_COLLISION] = Option::LogicTrick(std::to_string(RT_VISIBLE_COLLISION));
|
||||
mTrickOptions[RT_GROTTOS_WITHOUT_AGONY] = Option::LogicTrick(std::to_string(RT_GROTTOS_WITHOUT_AGONY));
|
||||
mTrickOptions[RT_FEWER_TUNIC_REQUIREMENTS] = Option::LogicTrick(std::to_string(RT_FEWER_TUNIC_REQUIREMENTS));
|
||||
mTrickOptions[RT_RUSTED_SWITCHES] = Option::LogicTrick(std::to_string(RT_RUSTED_SWITCHES));
|
||||
mTrickOptions[RT_FLAMING_CHESTS] = Option::LogicTrick(std::to_string(RT_FLAMING_CHESTS));
|
||||
mTrickOptions[RT_BUNNY_HOOD_JUMPS] = Option::LogicTrick(std::to_string(RT_BUNNY_HOOD_JUMPS));
|
||||
mTrickOptions[RT_DAMAGE_BOOST_SIMPLE] = Option::LogicTrick(std::to_string(RT_DAMAGE_BOOST_SIMPLE));
|
||||
mTrickOptions[RT_HOVER_BOOST_SIMPLE] = Option::LogicTrick(std::to_string(RT_HOVER_BOOST_SIMPLE));
|
||||
mTrickOptions[RT_KF_ADULT_GS] = Option::LogicTrick(std::to_string(RT_KF_ADULT_GS));
|
||||
mTrickOptions[RT_LW_BRIDGE] = Option::LogicTrick(std::to_string(RT_LW_BRIDGE));
|
||||
mTrickOptions[RT_LW_MIDO_BACKFLIP] = Option::LogicTrick(std::to_string(RT_LW_MIDO_BACKFLIP));
|
||||
mTrickOptions[RT_LW_GS_BEAN] = Option::LogicTrick(std::to_string(RT_LW_GS_BEAN));
|
||||
mTrickOptions[RT_HC_STORMS_GS] = Option::LogicTrick(std::to_string(RT_HC_STORMS_GS));
|
||||
mTrickOptions[RT_KAK_MAN_ON_ROOF] = Option::LogicTrick(std::to_string(RT_KAK_MAN_ON_ROOF));
|
||||
mTrickOptions[RT_KAK_TOWER_GS] = Option::LogicTrick(std::to_string(RT_KAK_TOWER_GS));
|
||||
mTrickOptions[RT_KAK_ADULT_WINDMILL_POH] = Option::LogicTrick(std::to_string(RT_KAK_ADULT_WINDMILL_POH));
|
||||
mTrickOptions[RT_KAK_CHILD_WINDMILL_POH] = Option::LogicTrick(std::to_string(RT_KAK_CHILD_WINDMILL_POH));
|
||||
mTrickOptions[RT_KAK_ROOFTOP_GS] = Option::LogicTrick(std::to_string(RT_KAK_ROOFTOP_GS));
|
||||
mTrickOptions[RT_GY_POH] = Option::LogicTrick(std::to_string(RT_GY_POH));
|
||||
mTrickOptions[RT_GY_CHILD_DAMPE_RACE_POH] = Option::LogicTrick(std::to_string(RT_GY_CHILD_DAMPE_RACE_POH));
|
||||
mTrickOptions[RT_GY_SHADOW_FIRE_ARROWS] = Option::LogicTrick(std::to_string(RT_GY_SHADOW_FIRE_ARROWS));
|
||||
mTrickOptions[RT_DMT_SOIL_GS] = Option::LogicTrick(std::to_string(RT_DMT_SOIL_GS));
|
||||
mTrickOptions[RT_DMT_BOMBABLE] = Option::LogicTrick(std::to_string(RT_DMT_BOMBABLE));
|
||||
mTrickOptions[RT_DMT_HOOKSHOT_LOWER_GS] = Option::LogicTrick(std::to_string(RT_DMT_HOOKSHOT_LOWER_GS));
|
||||
mTrickOptions[RT_DMT_HOVERS_LOWER_GS] = Option::LogicTrick(std::to_string(RT_DMT_HOVERS_LOWER_GS));
|
||||
mTrickOptions[RT_DMT_BEAN_LOWER_GS] = Option::LogicTrick(std::to_string(RT_DMT_BEAN_LOWER_GS));
|
||||
mTrickOptions[RT_DMT_JS_LOWER_GS] = Option::LogicTrick(std::to_string(RT_DMT_JS_LOWER_GS));
|
||||
mTrickOptions[RT_DMT_CLIMB_HOVERS] = Option::LogicTrick(std::to_string(RT_DMT_CLIMB_HOVERS));
|
||||
mTrickOptions[RT_DMT_UPPER_GS] = Option::LogicTrick(std::to_string(RT_DMT_UPPER_GS));
|
||||
mTrickOptions[RT_DMT_BOLERO_BIGGORON] = Option::LogicTrick(std::to_string(RT_DMT_BOLERO_BIGGORON));
|
||||
mTrickOptions[RT_GC_POT] = Option::LogicTrick(std::to_string(RT_GC_POT));
|
||||
mTrickOptions[RT_GC_POT_STRENGTH] = Option::LogicTrick(std::to_string(RT_GC_POT_STRENGTH));
|
||||
mTrickOptions[RT_GC_ROLLING_STRENGTH] = Option::LogicTrick(std::to_string(RT_GC_ROLLING_STRENGTH));
|
||||
mTrickOptions[RT_GC_LEFTMOST] = Option::LogicTrick(std::to_string(RT_GC_LEFTMOST));
|
||||
mTrickOptions[RT_GC_GROTTO] = Option::LogicTrick(std::to_string(RT_GC_GROTTO));
|
||||
mTrickOptions[RT_GC_LINK_GORON_DINS] = Option::LogicTrick(std::to_string(RT_GC_LINK_GORON_DINS));
|
||||
mTrickOptions[RT_DMC_HOVER_BEAN_POH] = Option::LogicTrick(std::to_string(RT_DMC_HOVER_BEAN_POH));
|
||||
mTrickOptions[RT_DMC_BOLERO_JUMP] = Option::LogicTrick(std::to_string(RT_DMC_BOLERO_JUMP));
|
||||
mTrickOptions[RT_DMC_BOULDER_JS] = Option::LogicTrick(std::to_string(RT_DMC_BOULDER_JS));
|
||||
mTrickOptions[RT_DMC_BOULDER_SKIP] = Option::LogicTrick(std::to_string(RT_DMC_BOULDER_SKIP));
|
||||
mTrickOptions[RT_ZR_LOWER] = Option::LogicTrick(std::to_string(RT_ZR_LOWER));
|
||||
mTrickOptions[RT_ZR_UPPER] = Option::LogicTrick(std::to_string(RT_ZR_UPPER));
|
||||
mTrickOptions[RT_ZR_HOVERS] = Option::LogicTrick(std::to_string(RT_ZR_HOVERS));
|
||||
mTrickOptions[RT_ZR_CUCCO] = Option::LogicTrick(std::to_string(RT_ZR_CUCCO));
|
||||
mTrickOptions[RT_ZD_KING_ZORA_SKIP] = Option::LogicTrick(std::to_string(RT_ZD_KING_ZORA_SKIP));
|
||||
mTrickOptions[RT_ZD_GS] = Option::LogicTrick(std::to_string(RT_ZD_GS));
|
||||
mTrickOptions[RT_LH_LAB_WALL_GS] = Option::LogicTrick(std::to_string(RT_LH_LAB_WALL_GS));
|
||||
mTrickOptions[RT_LH_LAB_DIVING] = Option::LogicTrick(std::to_string(RT_LH_LAB_DIVING));
|
||||
mTrickOptions[RT_LH_WATER_HOOKSHOT] = Option::LogicTrick(std::to_string(RT_LH_WATER_HOOKSHOT));
|
||||
mTrickOptions[RT_GV_CRATE_HOVERS] = Option::LogicTrick(std::to_string(RT_GV_CRATE_HOVERS));
|
||||
mTrickOptions[RT_GF_KITCHEN] = Option::LogicTrick(std::to_string(RT_GF_KITCHEN));
|
||||
mTrickOptions[RT_GF_JUMP] = Option::LogicTrick(std::to_string(RT_GF_JUMP));
|
||||
mTrickOptions[RT_HW_BUNNY_CROSSING] = Option::LogicTrick(std::to_string(RT_HW_BUNNY_CROSSING));
|
||||
mTrickOptions[RT_HW_CROSSING] = Option::LogicTrick(std::to_string(RT_HW_CROSSING));
|
||||
mTrickOptions[RT_LENS_HW] = Option::LogicTrick(std::to_string(RT_LENS_HW));
|
||||
mTrickOptions[RT_HW_REVERSE] = Option::LogicTrick(std::to_string(RT_HW_REVERSE));
|
||||
mTrickOptions[RT_COLOSSUS_GS] = Option::LogicTrick(std::to_string(RT_COLOSSUS_GS));
|
||||
mTrickOptions[RT_DEKU_BASEMENT_GS] = Option::LogicTrick(std::to_string(RT_DEKU_BASEMENT_GS));
|
||||
mTrickOptions[RT_DEKU_B1_SKIP] = Option::LogicTrick(std::to_string(RT_DEKU_B1_SKIP));
|
||||
mTrickOptions[RT_DEKU_B1_BOW_WEBS] = Option::LogicTrick(std::to_string(RT_DEKU_B1_BOW_WEBS));
|
||||
mTrickOptions[RT_DEKU_MQ_COMPASS_GS] = Option::LogicTrick(std::to_string(RT_DEKU_MQ_COMPASS_GS));
|
||||
mTrickOptions[RT_DEKU_MQ_LOG] = Option::LogicTrick(std::to_string(RT_DEKU_MQ_LOG));
|
||||
mTrickOptions[RT_DC_SCARECROW_GS] = Option::LogicTrick(std::to_string(RT_DC_SCARECROW_GS));
|
||||
mTrickOptions[RT_DC_VINES_GS] = Option::LogicTrick(std::to_string(RT_DC_VINES_GS));
|
||||
mTrickOptions[RT_DC_STAIRCASE] = Option::LogicTrick(std::to_string(RT_DC_STAIRCASE));
|
||||
mTrickOptions[RT_DC_SLINGSHOT_SKIP] = Option::LogicTrick(std::to_string(RT_DC_SLINGSHOT_SKIP));
|
||||
mTrickOptions[RT_DC_SCRUB_ROOM] = Option::LogicTrick(std::to_string(RT_DC_SCRUB_ROOM));
|
||||
mTrickOptions[RT_DC_JUMP] = Option::LogicTrick(std::to_string(RT_DC_JUMP));
|
||||
mTrickOptions[RT_DC_HAMMER_FLOOR] = Option::LogicTrick(std::to_string(RT_DC_HAMMER_FLOOR));
|
||||
mTrickOptions[RT_DC_MQ_CHILD_BOMBS] = Option::LogicTrick(std::to_string(RT_DC_MQ_CHILD_BOMBS));
|
||||
mTrickOptions[RT_DC_MQ_CHILD_EYES] = Option::LogicTrick(std::to_string(RT_DC_MQ_CHILD_EYES));
|
||||
mTrickOptions[RT_DC_MQ_ADULT_EYES] = Option::LogicTrick(std::to_string(RT_DC_MQ_ADULT_EYES));
|
||||
mTrickOptions[RT_JABU_ALCOVE_JUMP_DIVE] = Option::LogicTrick(std::to_string(RT_JABU_ALCOVE_JUMP_DIVE));
|
||||
mTrickOptions[RT_JABU_BOSS_HOVER] = Option::LogicTrick(std::to_string(RT_JABU_BOSS_HOVER));
|
||||
mTrickOptions[RT_JABU_NEAR_BOSS_RANGED] = Option::LogicTrick(std::to_string(RT_JABU_NEAR_BOSS_RANGED));
|
||||
mTrickOptions[RT_JABU_NEAR_BOSS_EXPLOSIVES] = Option::LogicTrick(std::to_string(RT_JABU_NEAR_BOSS_EXPLOSIVES));
|
||||
mTrickOptions[RT_LENS_JABU_MQ] = Option::LogicTrick(std::to_string(RT_LENS_JABU_MQ));
|
||||
mTrickOptions[RT_JABU_MQ_RANG_JUMP] = Option::LogicTrick(std::to_string(RT_JABU_MQ_RANG_JUMP));
|
||||
mTrickOptions[RT_JABU_MQ_SOT_GS] = Option::LogicTrick(std::to_string(RT_JABU_MQ_SOT_GS));
|
||||
mTrickOptions[RT_LENS_BOTW] = Option::LogicTrick(std::to_string(RT_LENS_BOTW));
|
||||
mTrickOptions[RT_BOTW_CHILD_DEADHAND] = Option::LogicTrick(std::to_string(RT_BOTW_CHILD_DEADHAND));
|
||||
mTrickOptions[RT_BOTW_BASEMENT] = Option::LogicTrick(std::to_string(RT_BOTW_BASEMENT));
|
||||
mTrickOptions[RT_BOTW_MQ_PITS] = Option::LogicTrick(std::to_string(RT_BOTW_MQ_PITS));
|
||||
mTrickOptions[RT_BOTW_MQ_DEADHAND_KEY] = Option::LogicTrick(std::to_string(RT_BOTW_MQ_DEADHAND_KEY));
|
||||
mTrickOptions[RT_FOREST_FIRST_GS] = Option::LogicTrick(std::to_string(RT_FOREST_FIRST_GS));
|
||||
mTrickOptions[RT_FOREST_OUTDOORS_EAST_GS] = Option::LogicTrick(std::to_string(RT_FOREST_OUTDOORS_EAST_GS));
|
||||
mTrickOptions[RT_FOREST_VINES] = Option::LogicTrick(std::to_string(RT_FOREST_VINES));
|
||||
mTrickOptions[RT_FOREST_OUTDOORS_LEDGE] = Option::LogicTrick(std::to_string(RT_FOREST_OUTDOORS_LEDGE));
|
||||
mTrickOptions[RT_FOREST_DOORFRAME] = Option::LogicTrick(std::to_string(RT_FOREST_DOORFRAME));
|
||||
mTrickOptions[RT_FOREST_OUTSIDE_BACKDOOR] = Option::LogicTrick(std::to_string(RT_FOREST_OUTSIDE_BACKDOOR));
|
||||
mTrickOptions[RT_FOREST_MQ_WELL_SWIM] = Option::LogicTrick(std::to_string(RT_FOREST_MQ_WELL_SWIM));
|
||||
mTrickOptions[RT_FOREST_MQ_BLOCK_PUZZLE] = Option::LogicTrick(std::to_string(RT_FOREST_MQ_BLOCK_PUZZLE));
|
||||
mTrickOptions[RT_FOREST_MQ_JS_HALLWAY_SWITCH] = Option::LogicTrick(std::to_string(RT_FOREST_MQ_JS_HALLWAY_SWITCH));
|
||||
mTrickOptions[RT_FOREST_MQ_HOOKSHOT_HALLWAY_SWITCH] = Option::LogicTrick(std::to_string(RT_FOREST_MQ_HOOKSHOT_HALLWAY_SWITCH));
|
||||
mTrickOptions[RT_FOREST_MQ_RANG_HALLWAY_SWITCH] = Option::LogicTrick(std::to_string(RT_FOREST_MQ_RANG_HALLWAY_SWITCH));
|
||||
mTrickOptions[RT_FIRE_BOSS_DOOR_JUMP] = Option::LogicTrick(std::to_string(RT_FIRE_BOSS_DOOR_JUMP));
|
||||
mTrickOptions[RT_FIRE_SOT] = Option::LogicTrick(std::to_string(RT_FIRE_SOT));
|
||||
mTrickOptions[RT_FIRE_STRENGTH] = Option::LogicTrick(std::to_string(RT_FIRE_STRENGTH));
|
||||
mTrickOptions[RT_FIRE_SCARECROW] = Option::LogicTrick(std::to_string(RT_FIRE_SCARECROW));
|
||||
mTrickOptions[RT_FIRE_FLAME_MAZE] = Option::LogicTrick(std::to_string(RT_FIRE_FLAME_MAZE));
|
||||
mTrickOptions[RT_FIRE_MQ_NEAR_BOSS] = Option::LogicTrick(std::to_string(RT_FIRE_MQ_NEAR_BOSS));
|
||||
mTrickOptions[RT_FIRE_MQ_BLOCKED_CHEST] = Option::LogicTrick(std::to_string(RT_FIRE_MQ_BLOCKED_CHEST));
|
||||
mTrickOptions[RT_FIRE_MQ_BK_CHEST] = Option::LogicTrick(std::to_string(RT_FIRE_MQ_BK_CHEST));
|
||||
mTrickOptions[RT_FIRE_MQ_CLIMB] = Option::LogicTrick(std::to_string(RT_FIRE_MQ_CLIMB));
|
||||
mTrickOptions[RT_FIRE_MQ_MAZE_SIDE_ROOM] = Option::LogicTrick(std::to_string(RT_FIRE_MQ_MAZE_SIDE_ROOM));
|
||||
mTrickOptions[RT_FIRE_MQ_MAZE_HOVERS] = Option::LogicTrick(std::to_string(RT_FIRE_MQ_MAZE_HOVERS));
|
||||
mTrickOptions[RT_FIRE_MQ_MAZE_JUMP] = Option::LogicTrick(std::to_string(RT_FIRE_MQ_MAZE_JUMP));
|
||||
mTrickOptions[RT_FIRE_MQ_ABOVE_MAZE_GS] = Option::LogicTrick(std::to_string(RT_FIRE_MQ_ABOVE_MAZE_GS));
|
||||
mTrickOptions[RT_FIRE_MQ_FLAME_MAZE] = Option::LogicTrick(std::to_string(RT_FIRE_MQ_FLAME_MAZE));
|
||||
mTrickOptions[RT_WATER_LONGSHOT_TORCH] = Option::LogicTrick(std::to_string(RT_WATER_LONGSHOT_TORCH));
|
||||
mTrickOptions[RT_WATER_CRACKED_WALL_HOVERS] = Option::LogicTrick(std::to_string(RT_WATER_CRACKED_WALL_HOVERS));
|
||||
mTrickOptions[RT_WATER_CRACKED_WALL] = Option::LogicTrick(std::to_string(RT_WATER_CRACKED_WALL));
|
||||
mTrickOptions[RT_WATER_BK_REGION] = Option::LogicTrick(std::to_string(RT_WATER_BK_REGION));
|
||||
mTrickOptions[RT_WATER_NORTH_BASEMENT_LEDGE_JUMP] = Option::LogicTrick(std::to_string(RT_WATER_NORTH_BASEMENT_LEDGE_JUMP));
|
||||
mTrickOptions[RT_WATER_BK_JUMP_DIVE] = Option::LogicTrick(std::to_string(RT_WATER_BK_JUMP_DIVE));
|
||||
mTrickOptions[RT_WATER_FW_CENTRAL_GS] = Option::LogicTrick(std::to_string(RT_WATER_FW_CENTRAL_GS));
|
||||
mTrickOptions[RT_WATER_IRONS_CENTRAL_GS] = Option::LogicTrick(std::to_string(RT_WATER_IRONS_CENTRAL_GS));
|
||||
mTrickOptions[RT_WATER_CENTRAL_BOW] = Option::LogicTrick(std::to_string(RT_WATER_CENTRAL_BOW));
|
||||
mTrickOptions[RT_WATER_HOOKSHOT_FALLING_PLATFORM_GS] = Option::LogicTrick(std::to_string(RT_WATER_HOOKSHOT_FALLING_PLATFORM_GS));
|
||||
mTrickOptions[RT_WATER_RANG_FALLING_PLATFORM_GS] = Option::LogicTrick(std::to_string(RT_WATER_RANG_FALLING_PLATFORM_GS));
|
||||
mTrickOptions[RT_WATER_RIVER_GS] = Option::LogicTrick(std::to_string(RT_WATER_RIVER_GS));
|
||||
mTrickOptions[RT_WATER_DRAGON_JUMP_DIVE] = Option::LogicTrick(std::to_string(RT_WATER_DRAGON_JUMP_DIVE));
|
||||
mTrickOptions[RT_WATER_ADULT_DRAGON] = Option::LogicTrick(std::to_string(RT_WATER_ADULT_DRAGON));
|
||||
mTrickOptions[RT_WATER_CHILD_DRAGON] = Option::LogicTrick(std::to_string(RT_WATER_CHILD_DRAGON));
|
||||
mTrickOptions[RT_WATER_MQ_CENTRAL_PILLAR] = Option::LogicTrick(std::to_string(RT_WATER_MQ_CENTRAL_PILLAR));
|
||||
mTrickOptions[RT_WATER_MQ_LOCKED_GS] = Option::LogicTrick(std::to_string(RT_WATER_MQ_LOCKED_GS));
|
||||
mTrickOptions[RT_LENS_SHADOW] = Option::LogicTrick(std::to_string(RT_LENS_SHADOW));
|
||||
mTrickOptions[RT_LENS_SHADOW_PLATFORM] = Option::LogicTrick(std::to_string(RT_LENS_SHADOW_PLATFORM));
|
||||
mTrickOptions[RT_LENS_BONGO] = Option::LogicTrick(std::to_string(RT_LENS_BONGO));
|
||||
mTrickOptions[RT_SHADOW_UMBRELLA] = Option::LogicTrick(std::to_string(RT_SHADOW_UMBRELLA));
|
||||
mTrickOptions[RT_SHADOW_UMBRELLA_GS] = Option::LogicTrick(std::to_string(RT_SHADOW_UMBRELLA_GS));
|
||||
mTrickOptions[RT_SHADOW_FREESTANDING_KEY] = Option::LogicTrick(std::to_string(RT_SHADOW_FREESTANDING_KEY));
|
||||
mTrickOptions[RT_SHADOW_STATUE] = Option::LogicTrick(std::to_string(RT_SHADOW_STATUE));
|
||||
mTrickOptions[RT_SHADOW_BONGO] = Option::LogicTrick(std::to_string(RT_SHADOW_BONGO));
|
||||
mTrickOptions[RT_LENS_SHADOW_MQ] = Option::LogicTrick(std::to_string(RT_LENS_SHADOW_MQ));
|
||||
mTrickOptions[RT_LENS_SHADOW_MQ_INVISIBLE_BLADES] = Option::LogicTrick(std::to_string(RT_LENS_SHADOW_MQ_INVISIBLE_BLADES));
|
||||
mTrickOptions[RT_LENS_SHADOW_MQ_PLATFORM] = Option::LogicTrick(std::to_string(RT_LENS_SHADOW_MQ_PLATFORM));
|
||||
mTrickOptions[RT_LENS_SHADOW_MQ_DEADHAND] = Option::LogicTrick(std::to_string(RT_LENS_SHADOW_MQ_DEADHAND));
|
||||
mTrickOptions[RT_SHADOW_MQ_GAP] = Option::LogicTrick(std::to_string(RT_SHADOW_MQ_GAP));
|
||||
mTrickOptions[RT_SHADOW_MQ_INVISIBLE_BLADES] = Option::LogicTrick(std::to_string(RT_SHADOW_MQ_INVISIBLE_BLADES));
|
||||
mTrickOptions[RT_SHADOW_MQ_HUGE_PIT] = Option::LogicTrick(std::to_string(RT_SHADOW_MQ_HUGE_PIT));
|
||||
mTrickOptions[RT_SHADOW_MQ_WINDY_WALKWAY] = Option::LogicTrick(std::to_string(RT_SHADOW_MQ_WINDY_WALKWAY));
|
||||
mTrickOptions[RT_LENS_SPIRIT] = Option::LogicTrick(std::to_string(RT_LENS_SPIRIT));
|
||||
mTrickOptions[RT_SPIRIT_CHILD_CHU] = Option::LogicTrick(std::to_string(RT_SPIRIT_CHILD_CHU));
|
||||
mTrickOptions[RT_SPIRIT_LOBBY_GS] = Option::LogicTrick(std::to_string(RT_SPIRIT_LOBBY_GS));
|
||||
mTrickOptions[RT_SPIRIT_LOWER_ADULT_SWITCH] = Option::LogicTrick(std::to_string(RT_SPIRIT_LOWER_ADULT_SWITCH));
|
||||
mTrickOptions[RT_SPIRIT_LOBBY_JUMP] = Option::LogicTrick(std::to_string(RT_SPIRIT_LOBBY_JUMP));
|
||||
mTrickOptions[RT_SPIRIT_PLATFORM_HOOKSHOT] = Option::LogicTrick(std::to_string(RT_SPIRIT_PLATFORM_HOOKSHOT));
|
||||
mTrickOptions[RT_SPIRIT_MAP_CHEST] = Option::LogicTrick(std::to_string(RT_SPIRIT_MAP_CHEST));
|
||||
mTrickOptions[RT_SPIRIT_SUN_CHEST] = Option::LogicTrick(std::to_string(RT_SPIRIT_SUN_CHEST));
|
||||
mTrickOptions[RT_SPIRIT_WALL] = Option::LogicTrick(std::to_string(RT_SPIRIT_WALL));
|
||||
mTrickOptions[RT_LENS_SPIRIT_MQ] = Option::LogicTrick(std::to_string(RT_LENS_SPIRIT_MQ));
|
||||
mTrickOptions[RT_SPIRIT_MQ_SUN_BLOCK_SOT] = Option::LogicTrick(std::to_string(RT_SPIRIT_MQ_SUN_BLOCK_SOT));
|
||||
mTrickOptions[RT_SPIRIT_MQ_SUN_BLOCK_GS] = Option::LogicTrick(std::to_string(RT_SPIRIT_MQ_SUN_BLOCK_GS));
|
||||
mTrickOptions[RT_SPIRIT_MQ_LOWER_ADULT] = Option::LogicTrick(std::to_string(RT_SPIRIT_MQ_LOWER_ADULT));
|
||||
mTrickOptions[RT_SPIRIT_MQ_FROZEN_EYE] = Option::LogicTrick(std::to_string(RT_SPIRIT_MQ_FROZEN_EYE));
|
||||
mTrickOptions[RT_ICE_BLOCK_GS] = Option::LogicTrick(std::to_string(RT_ICE_BLOCK_GS));
|
||||
mTrickOptions[RT_ICE_MQ_RED_ICE_GS] = Option::LogicTrick(std::to_string(RT_ICE_MQ_RED_ICE_GS));
|
||||
mTrickOptions[RT_ICE_MQ_SCARECROW] = Option::LogicTrick(std::to_string(RT_ICE_MQ_SCARECROW));
|
||||
mTrickOptions[RT_LENS_GTG] = Option::LogicTrick(std::to_string(RT_LENS_GTG));
|
||||
mTrickOptions[RT_GTG_WITHOUT_HOOKSHOT] = Option::LogicTrick(std::to_string(RT_GTG_WITHOUT_HOOKSHOT));
|
||||
mTrickOptions[RT_GTG_FAKE_WALL] = Option::LogicTrick(std::to_string(RT_GTG_FAKE_WALL));
|
||||
mTrickOptions[RT_LENS_GTG_MQ] = Option::LogicTrick(std::to_string(RT_LENS_GTG_MQ));
|
||||
mTrickOptions[RT_GTG_MQ_WITH_HOOKSHOT] = Option::LogicTrick(std::to_string(RT_GTG_MQ_WITH_HOOKSHOT));
|
||||
mTrickOptions[RT_GTG_MQ_WIHTOUT_HOOKSHOT] = Option::LogicTrick(std::to_string(RT_GTG_MQ_WIHTOUT_HOOKSHOT));
|
||||
mTrickOptions[RT_LENS_GANON] = Option::LogicTrick(std::to_string(RT_LENS_GANON));
|
||||
mTrickOptions[RT_GANON_SPIRIT_TRIAL_HOOKSHOT] = Option::LogicTrick(std::to_string(RT_GANON_SPIRIT_TRIAL_HOOKSHOT));
|
||||
mTrickOptions[RT_LENS_GANON_MQ] = Option::LogicTrick(std::to_string(RT_LENS_GANON_MQ));
|
||||
mTrickOptions[RT_GANON_MQ_FIRE_TRIAL] = Option::LogicTrick(std::to_string(RT_GANON_MQ_FIRE_TRIAL));
|
||||
mTrickOptions[RT_GANON_MQ_SHADOW_TRIAL] = Option::LogicTrick(std::to_string(RT_GANON_MQ_SHADOW_TRIAL));
|
||||
mTrickOptions[RT_GANON_MQ_LIGHT_TRIAL] = Option::LogicTrick(std::to_string(RT_GANON_MQ_LIGHT_TRIAL));
|
||||
mTrickOptions[RT_VISIBLE_COLLISION] = Option::LogicTrick("Pass Through Visible One-Way Collision");
|
||||
mTrickOptions[RT_GROTTOS_WITHOUT_AGONY] = Option::LogicTrick("Hidden Grottos without Stone of Agony");
|
||||
mTrickOptions[RT_FEWER_TUNIC_REQUIREMENTS] = Option::LogicTrick("Fewer Tunic Requirements");
|
||||
mTrickOptions[RT_RUSTED_SWITCHES] = Option::LogicTrick("Hammer Rusted Switches Through Walls");
|
||||
mTrickOptions[RT_FLAMING_CHESTS] = Option::LogicTrick("Flaming Chests");
|
||||
mTrickOptions[RT_BUNNY_HOOD_JUMPS] = Option::LogicTrick("Bunny Hood Jumps");
|
||||
mTrickOptions[RT_DAMAGE_BOOST_SIMPLE] = Option::LogicTrick("Simple damage boosts");
|
||||
mTrickOptions[RT_HOVER_BOOST_SIMPLE] = Option::LogicTrick("Simple hover boosts");
|
||||
mTrickOptions[RT_KF_ADULT_GS] = Option::LogicTrick("Adult Kokiri Forest GS with Hover Boots");
|
||||
mTrickOptions[RT_LW_BRIDGE] = Option::LogicTrick("Jump onto the Lost Woods Bridge as Adult with Nothing");
|
||||
mTrickOptions[RT_LW_MIDO_BACKFLIP] = Option::LogicTrick("Backflip over Mido as Adult");
|
||||
mTrickOptions[RT_LW_GS_BEAN] = Option::LogicTrick("Lost Woods Adult GS without Bean");
|
||||
mTrickOptions[RT_HC_STORMS_GS] = Option::LogicTrick("Hyrule Castle Storms Grotto GS with Just Boomerang");
|
||||
mTrickOptions[RT_KAK_MAN_ON_ROOF] = Option::LogicTrick("Man on Roof without Hookshot");
|
||||
mTrickOptions[RT_KAK_TOWER_GS] = Option::LogicTrick("Kakariko Tower GS with Jump Slash");
|
||||
mTrickOptions[RT_KAK_ADULT_WINDMILL_POH] = Option::LogicTrick("Windmill PoH as Adult with Nothing");
|
||||
mTrickOptions[RT_KAK_CHILD_WINDMILL_POH] = Option::LogicTrick("Windmill PoH as Child with Precise Jump Slash");
|
||||
mTrickOptions[RT_KAK_ROOFTOP_GS] = Option::LogicTrick("Kakariko Rooftop GS with Hover Boots");
|
||||
mTrickOptions[RT_GY_POH] = Option::LogicTrick("Graveyard Freestanding PoH with Boomerang");
|
||||
mTrickOptions[RT_GY_CHILD_DAMPE_RACE_POH] = Option::LogicTrick("Second Dampe Race as Child");
|
||||
mTrickOptions[RT_GY_SHADOW_FIRE_ARROWS] = Option::LogicTrick("Shadow Temple Entry with Fire Arrows");
|
||||
mTrickOptions[RT_DMT_SOIL_GS] = Option::LogicTrick("Death Mountain Trail Soil GS without Destroying Boulder");
|
||||
mTrickOptions[RT_DMT_BOMBABLE] = Option::LogicTrick("Death Mountain Trail Chest with Strength");
|
||||
mTrickOptions[RT_DMT_HOOKSHOT_LOWER_GS] = Option::LogicTrick("Death Mountain Trail Lower Red Rock GS with Hookshot");
|
||||
mTrickOptions[RT_DMT_HOVERS_LOWER_GS] = Option::LogicTrick("Death Mountain Trail Lower Red Rock GS with Hover Boots");
|
||||
mTrickOptions[RT_DMT_BEAN_LOWER_GS] = Option::LogicTrick("Death Mountain Trail Lower Red Rock GS with Magic Bean");
|
||||
mTrickOptions[RT_DMT_JS_LOWER_GS] = Option::LogicTrick("Death Mountain Trail Lower Red Rock GS with Jump Slash");
|
||||
mTrickOptions[RT_DMT_CLIMB_HOVERS] = Option::LogicTrick("Death Mountain Trail Climb with Hover Boots");
|
||||
mTrickOptions[RT_DMT_UPPER_GS] = Option::LogicTrick("Death Mountain Trail Upper Red Rock GS without Hammer");
|
||||
mTrickOptions[RT_DMT_BOLERO_BIGGORON] = Option::LogicTrick("Deliver Eye Drops with Bolero of Fire");
|
||||
mTrickOptions[RT_GC_POT] = Option::LogicTrick("Goron City Spinning Pot PoH with Bombchu");
|
||||
mTrickOptions[RT_GC_POT_STRENGTH] = Option::LogicTrick("Goron City Spinning Pot PoH with Strength");
|
||||
mTrickOptions[RT_GC_ROLLING_STRENGTH] = Option::LogicTrick("Rolling Goron (Hot Rodder Goron) as Child with Strength");
|
||||
mTrickOptions[RT_GC_LEFTMOST] = Option::LogicTrick("Goron City Maze Left Chest with Hover Boots");
|
||||
mTrickOptions[RT_GC_GROTTO] = Option::LogicTrick("Goron City Grotto with Hookshot While Taking Damage");
|
||||
mTrickOptions[RT_GC_LINK_GORON_DINS] = Option::LogicTrick("Stop Link the Goron with Din\'s Fire");
|
||||
mTrickOptions[RT_DMC_HOVER_BEAN_POH] = Option::LogicTrick("Crater\'s Bean PoH with Hover Boots");
|
||||
mTrickOptions[RT_DMC_BOLERO_JUMP] = Option::LogicTrick("Death Mountain Crater Jump to Bolero");
|
||||
mTrickOptions[RT_DMC_BOULDER_JS] = Option::LogicTrick("Death Mountain Crater Upper to Lower with Hammer");
|
||||
mTrickOptions[RT_DMC_BOULDER_SKIP] = Option::LogicTrick("Death Mountain Crater Upper to Lower Boulder Skip");
|
||||
mTrickOptions[RT_ZR_LOWER] = Option::LogicTrick("Zora\'s River Lower Freestanding PoH as Adult with Nothing");
|
||||
mTrickOptions[RT_ZR_UPPER] = Option::LogicTrick("Zora\'s River Upper Freestanding PoH as Adult with Nothing");
|
||||
mTrickOptions[RT_ZR_HOVERS] = Option::LogicTrick("Zora\'s Domain Entry with Hover Boots");
|
||||
mTrickOptions[RT_ZR_CUCCO] = Option::LogicTrick("Zora\'s Domain Entry with Cucco");
|
||||
mTrickOptions[RT_ZD_KING_ZORA_SKIP] = Option::LogicTrick("Skip King Zora as Adult with Nothing");
|
||||
mTrickOptions[RT_ZD_GS] = Option::LogicTrick("Zora\'s Domain GS with No Additional Items");
|
||||
mTrickOptions[RT_LH_LAB_WALL_GS] = Option::LogicTrick("Lake Hylia Lab Wall GS with Jump Slash");
|
||||
mTrickOptions[RT_LH_LAB_DIVING] = Option::LogicTrick("Lake Hylia Lab Dive without Gold Scale");
|
||||
mTrickOptions[RT_LH_WATER_HOOKSHOT] = Option::LogicTrick("Water Temple Entry without Iron Boots using Hookshot");
|
||||
mTrickOptions[RT_GV_CRATE_HOVERS] = Option::LogicTrick("Gerudo Valley Crate PoH as Adult with Hover Boots");
|
||||
mTrickOptions[RT_GF_KITCHEN] = Option::LogicTrick("Thieves\' Hideout \"Kitchen\" with No Additional Items");
|
||||
mTrickOptions[RT_GF_JUMP] = Option::LogicTrick("Gerudo\'s Fortress Ledge Jumps");
|
||||
mTrickOptions[RT_HW_BUNNY_CROSSING] = Option::LogicTrick("Wasteland Crossing with Bunny Hood");
|
||||
mTrickOptions[RT_HW_CROSSING] = Option::LogicTrick("Wasteland Crossing without Hover Boots or Longshot");
|
||||
mTrickOptions[RT_LENS_HW] = Option::LogicTrick("Lensless Wasteland");
|
||||
mTrickOptions[RT_HW_REVERSE] = Option::LogicTrick("Reverse Wasteland");
|
||||
mTrickOptions[RT_COLOSSUS_GS] = Option::LogicTrick("Colossus Hill GS with Hookshot");
|
||||
mTrickOptions[RT_DEKU_BASEMENT_GS] = Option::LogicTrick("Deku Tree Basement Vines GS with Jump Slash");
|
||||
mTrickOptions[RT_DEKU_B1_SKIP] = Option::LogicTrick("Deku Tree Basement without Slingshot");
|
||||
mTrickOptions[RT_DEKU_B1_BOW_WEBS] = Option::LogicTrick("Deku Tree Basement Web to Gohma with Bow");
|
||||
mTrickOptions[RT_DEKU_MQ_COMPASS_GS] = Option::LogicTrick("Deku Tree MQ Compass Room GS Boulders with Just Hammer");
|
||||
mTrickOptions[RT_DEKU_MQ_LOG] = Option::LogicTrick("Deku Tree MQ Roll Under the Spiked Log");
|
||||
mTrickOptions[RT_DC_SCARECROW_GS] = Option::LogicTrick("Dodongo\'s Cavern Scarecrow GS with Armos Statue");
|
||||
mTrickOptions[RT_DC_VINES_GS] = Option::LogicTrick("Dodongo\'s Cavern Vines GS from Below with Longshot");
|
||||
mTrickOptions[RT_DC_STAIRCASE] = Option::LogicTrick("Dodongo\'s Cavern Staircase with Bow");
|
||||
mTrickOptions[RT_DC_SLINGSHOT_SKIP] = Option::LogicTrick("Dodongo\'s Cavern Child Slingshot Skips");
|
||||
mTrickOptions[RT_DC_SCRUB_ROOM] = Option::LogicTrick("Dodongo\'s Cavern Two Scrub Room with Strength");
|
||||
mTrickOptions[RT_DC_JUMP] = Option::LogicTrick("Dodongo\'s Cavern Spike Trap Room Jump without Hover Boots");
|
||||
mTrickOptions[RT_DC_HAMMER_FLOOR] = Option::LogicTrick("Dodongo\'s Cavern Smash the Boss Lobby Floor");
|
||||
mTrickOptions[RT_DC_MQ_CHILD_BOMBS] = Option::LogicTrick("Dodongo\'s Cavern MQ Early Bomb Bag Area as Child");
|
||||
mTrickOptions[RT_DC_MQ_CHILD_EYES] = Option::LogicTrick("Dodongo\'s Cavern MQ Light the Eyes with Strength as Child");
|
||||
mTrickOptions[RT_DC_MQ_ADULT_EYES] = Option::LogicTrick("Dodongo\'s Cavern MQ Light the Eyes with Strength as Adult");
|
||||
mTrickOptions[RT_JABU_ALCOVE_JUMP_DIVE] = Option::LogicTrick("Jabu Underwater Alcove as Adult with Jump Dive");
|
||||
mTrickOptions[RT_JABU_BOSS_HOVER] = Option::LogicTrick("Jabu Near Boss Room with Hover Boots");
|
||||
mTrickOptions[RT_JABU_NEAR_BOSS_RANGED] = Option::LogicTrick("Jabu Near Boss Ceiling Switch/GS without Boomerang or Explosives");
|
||||
mTrickOptions[RT_JABU_NEAR_BOSS_EXPLOSIVES] = Option::LogicTrick("Jabu Near Boss Ceiling Switch with Explosives");
|
||||
mTrickOptions[RT_LENS_JABU_MQ] = Option::LogicTrick("Jabu MQ without Lens of Truth");
|
||||
mTrickOptions[RT_JABU_MQ_RANG_JUMP] = Option::LogicTrick("Jabu MQ Compass Chest with Boomerang");
|
||||
mTrickOptions[RT_JABU_MQ_SOT_GS] = Option::LogicTrick("Jabu MQ Song of Time Block GS with Boomerang");
|
||||
mTrickOptions[RT_LENS_BOTW] = Option::LogicTrick("Bottom of the Well without Lens of Truth");
|
||||
mTrickOptions[RT_BOTW_CHILD_DEADHAND] = Option::LogicTrick("Child Dead Hand without Kokiri Sword");
|
||||
mTrickOptions[RT_BOTW_BASEMENT] = Option::LogicTrick("Bottom of the Well Map Chest with Strength & Sticks");
|
||||
mTrickOptions[RT_BOTW_MQ_PITS] = Option::LogicTrick("Bottom of the Well MQ Jump Over the Pits");
|
||||
mTrickOptions[RT_BOTW_MQ_DEADHAND_KEY] = Option::LogicTrick("Bottom of the Well MQ Dead Hand Freestanding Key with Boomerang");
|
||||
mTrickOptions[RT_FOREST_FIRST_GS] = Option::LogicTrick("Forest Temple First Room GS with Difficult-to-Use Weapons");
|
||||
mTrickOptions[RT_FOREST_OUTDOORS_EAST_GS] = Option::LogicTrick("Forest Temple East Courtyard GS with Boomerang");
|
||||
mTrickOptions[RT_FOREST_VINES] = Option::LogicTrick("Forest Temple East Courtyard Vines with Hookshot");
|
||||
mTrickOptions[RT_FOREST_OUTDOORS_LEDGE] = Option::LogicTrick("Forest Temple NE Outdoors Ledge with Hover Boots");
|
||||
mTrickOptions[RT_FOREST_DOORFRAME] = Option::LogicTrick("Forest Temple East Courtyard Door Frame with Hover Boots");
|
||||
mTrickOptions[RT_FOREST_OUTSIDE_BACKDOOR] = Option::LogicTrick("Forest Temple Outside Backdoor with Jump Slash");
|
||||
mTrickOptions[RT_FOREST_MQ_WELL_SWIM] = Option::LogicTrick("Swim Through Forest Temple MQ Well with Hookshot");
|
||||
mTrickOptions[RT_FOREST_MQ_BLOCK_PUZZLE] = Option::LogicTrick("Skip Forest Temple MQ Block Puzzle with Bombchu");
|
||||
mTrickOptions[RT_FOREST_MQ_JS_HALLWAY_SWITCH] = Option::LogicTrick("Forest Temple MQ Twisted Hallway Switch with Jump Slash");
|
||||
mTrickOptions[RT_FOREST_MQ_HOOKSHOT_HALLWAY_SWITCH] = Option::LogicTrick("Forest Temple MQ Twisted Hallway Switch with Hookshot");
|
||||
mTrickOptions[RT_FOREST_MQ_RANG_HALLWAY_SWITCH] = Option::LogicTrick("Forest Temple MQ Twisted Hallway Switch with Boomerang");
|
||||
mTrickOptions[RT_FIRE_BOSS_DOOR_JUMP] = Option::LogicTrick("Fire Temple Boss Door without Hover Boots or Pillar");
|
||||
mTrickOptions[RT_FIRE_SOT] = Option::LogicTrick("Fire Temple Song of Time Room GS without Song of Time");
|
||||
mTrickOptions[RT_FIRE_STRENGTH] = Option::LogicTrick("Fire Temple Climb without Strength");
|
||||
mTrickOptions[RT_FIRE_SCARECROW] = Option::LogicTrick("Fire Temple East Tower without Scarecrow\'s Song");
|
||||
mTrickOptions[RT_FIRE_FLAME_MAZE] = Option::LogicTrick("Fire Temple Flame Wall Maze Skip");
|
||||
mTrickOptions[RT_FIRE_MQ_NEAR_BOSS] = Option::LogicTrick("Fire Temple MQ Chest Near Boss without Breaking Crate");
|
||||
mTrickOptions[RT_FIRE_MQ_BLOCKED_CHEST] = Option::LogicTrick("Fire Temple MQ Big Lava Room Blocked Door without Hookshot");
|
||||
mTrickOptions[RT_FIRE_MQ_BK_CHEST] = Option::LogicTrick("Fire Temple MQ Boss Key Chest without Bow");
|
||||
mTrickOptions[RT_FIRE_MQ_CLIMB] = Option::LogicTrick("Fire Temple MQ Climb without Fire Source");
|
||||
mTrickOptions[RT_FIRE_MQ_MAZE_SIDE_ROOM] = Option::LogicTrick("Fire Temple MQ Lizalfos Maze Side Room without Box");
|
||||
mTrickOptions[RT_FIRE_MQ_MAZE_HOVERS] = Option::LogicTrick("Fire Temple MQ Lower to Upper Lizalfos Maze with Hover Boots");
|
||||
mTrickOptions[RT_FIRE_MQ_MAZE_JUMP] = Option::LogicTrick("Fire Temple MQ Lower to Upper Lizalfos Maze with Precise Jump");
|
||||
mTrickOptions[RT_FIRE_MQ_ABOVE_MAZE_GS] = Option::LogicTrick("Fire Temple MQ Above Flame Wall Maze GS from Below with Longshot");
|
||||
mTrickOptions[RT_FIRE_MQ_FLAME_MAZE] = Option::LogicTrick("Fire Temple MQ Flame Wall Maze Skip");
|
||||
mTrickOptions[RT_WATER_LONGSHOT_TORCH] = Option::LogicTrick("Water Temple Torch Longshot");
|
||||
mTrickOptions[RT_WATER_CRACKED_WALL_HOVERS] = Option::LogicTrick("Water Temple Cracked Wall with Hover Boots");
|
||||
mTrickOptions[RT_WATER_CRACKED_WALL] = Option::LogicTrick("Water Temple Cracked Wall with No Additional Items");
|
||||
mTrickOptions[RT_WATER_BK_REGION] = Option::LogicTrick("Water Temple Boss Key Region with Hover Boots");
|
||||
mTrickOptions[RT_WATER_NORTH_BASEMENT_LEDGE_JUMP] = Option::LogicTrick("Water Temple North Basement Ledge with Precise Jump");
|
||||
mTrickOptions[RT_WATER_BK_JUMP_DIVE] = Option::LogicTrick("Water Temple Boss Key Jump Dive");
|
||||
mTrickOptions[RT_WATER_FW_CENTRAL_GS] = Option::LogicTrick("Water Temple Central Pillar GS with Farore\'s Wind");
|
||||
mTrickOptions[RT_WATER_IRONS_CENTRAL_GS] = Option::LogicTrick("Water Temple Central Pillar GS with Iron Boots");
|
||||
mTrickOptions[RT_WATER_CENTRAL_BOW] = Option::LogicTrick("Water Temple Central Bow Target without Longshot or Hover Boots");
|
||||
mTrickOptions[RT_WATER_HOOKSHOT_FALLING_PLATFORM_GS] = Option::LogicTrick("Water Temple Falling Platform Room GS with Hookshot");
|
||||
mTrickOptions[RT_WATER_RANG_FALLING_PLATFORM_GS] = Option::LogicTrick("Water Temple Falling Platform Room GS with Boomerang");
|
||||
mTrickOptions[RT_WATER_RIVER_GS] = Option::LogicTrick("Water Temple River GS without Iron Boots");
|
||||
mTrickOptions[RT_WATER_DRAGON_JUMP_DIVE] = Option::LogicTrick("Water Temple Dragon Statue Jump Dive");
|
||||
mTrickOptions[RT_WATER_ADULT_DRAGON] = Option::LogicTrick("Water Temple Dragon Statue Switch from Above the Water as Adult");
|
||||
mTrickOptions[RT_WATER_CHILD_DRAGON] = Option::LogicTrick("Water Temple Dragon Statue Switch from Above the Water as Child");
|
||||
mTrickOptions[RT_WATER_MQ_CENTRAL_PILLAR] = Option::LogicTrick("Water Temple MQ Central Pillar with Fire Arrows");
|
||||
mTrickOptions[RT_WATER_MQ_LOCKED_GS] = Option::LogicTrick("Water Temple MQ North Basement GS without Small Key");
|
||||
mTrickOptions[RT_LENS_SHADOW] = Option::LogicTrick("Shadow Temple Stationary Objects without Lens of Truth");
|
||||
mTrickOptions[RT_LENS_SHADOW_PLATFORM] = Option::LogicTrick("Shadow Temple Invisible Moving Platform without Lens of Truth");
|
||||
mTrickOptions[RT_LENS_BONGO] = Option::LogicTrick("Shadow Temple Bongo Bongo without Lens of Truth");
|
||||
mTrickOptions[RT_SHADOW_UMBRELLA] = Option::LogicTrick("Shadow Temple Stone Umbrella Skip");
|
||||
mTrickOptions[RT_SHADOW_UMBRELLA_GS] = Option::LogicTrick("Shadow Temple Falling Spikes GS with Hover Boots");
|
||||
mTrickOptions[RT_SHADOW_FREESTANDING_KEY] = Option::LogicTrick("Shadow Temple Freestanding Key with Bombchu");
|
||||
mTrickOptions[RT_SHADOW_STATUE] = Option::LogicTrick("Shadow Temple River Statue with Bombchu");
|
||||
mTrickOptions[RT_SHADOW_BONGO] = Option::LogicTrick("Shadow Temple Bongo Bongo without projectiles");
|
||||
mTrickOptions[RT_LENS_SHADOW_MQ] = Option::LogicTrick("Shadow Temple MQ Stationary Objects without Lens of Truth");
|
||||
mTrickOptions[RT_LENS_SHADOW_MQ_INVISIBLE_BLADES] = Option::LogicTrick("Shadow Temple MQ Invisible Blades Silver Rupees without Lens of Truth");
|
||||
mTrickOptions[RT_LENS_SHADOW_MQ_PLATFORM] = Option::LogicTrick("Shadow Temple MQ Invisible Moving Platform without Lens of Truth");
|
||||
mTrickOptions[RT_LENS_SHADOW_MQ_DEADHAND] = Option::LogicTrick("Shadow Temple MQ 2nd Dead Hand without Lens of Truth");
|
||||
mTrickOptions[RT_SHADOW_MQ_GAP] = Option::LogicTrick("Shadow Temple MQ Truth Spinner Gap with Longshot");
|
||||
mTrickOptions[RT_SHADOW_MQ_INVISIBLE_BLADES] = Option::LogicTrick("Shadow Temple MQ Invisible Blades without Song of Time");
|
||||
mTrickOptions[RT_SHADOW_MQ_HUGE_PIT] = Option::LogicTrick("Shadow Temple MQ Lower Huge Pit without Fire Source");
|
||||
mTrickOptions[RT_SHADOW_MQ_WINDY_WALKWAY] = Option::LogicTrick("Shadow Temple MQ Windy Walkway Reverse without Hover Boots");
|
||||
mTrickOptions[RT_LENS_SPIRIT] = Option::LogicTrick("Spirit Temple without Lens of Truth");
|
||||
mTrickOptions[RT_SPIRIT_CHILD_CHU] = Option::LogicTrick("Spirit Temple Child Side Bridge with Bombchu");
|
||||
mTrickOptions[RT_SPIRIT_LOBBY_GS] = Option::LogicTrick("Spirit Temple Main Room GS with Boomerang");
|
||||
mTrickOptions[RT_SPIRIT_LOWER_ADULT_SWITCH] = Option::LogicTrick("Spirit Temple Lower Adult Switch with Bombs");
|
||||
mTrickOptions[RT_SPIRIT_LOBBY_JUMP] = Option::LogicTrick("Spirit Temple Main Room Jump from Hands to Upper Ledges");
|
||||
mTrickOptions[RT_SPIRIT_PLATFORM_HOOKSHOT] = Option::LogicTrick("Spirit Temple Main Room Hookshot to Boss Platform");
|
||||
mTrickOptions[RT_SPIRIT_MAP_CHEST] = Option::LogicTrick("Spirit Temple Map Chest with Bow");
|
||||
mTrickOptions[RT_SPIRIT_SUN_CHEST] = Option::LogicTrick("Spirit Temple Sun Block Room Chest with Bow");
|
||||
mTrickOptions[RT_SPIRIT_WALL] = Option::LogicTrick("Spirit Temple Shifting Wall with No Additional Items");
|
||||
mTrickOptions[RT_LENS_SPIRIT_MQ] = Option::LogicTrick("Spirit Temple MQ without Lens of Truth");
|
||||
mTrickOptions[RT_SPIRIT_MQ_SUN_BLOCK_SOT] = Option::LogicTrick("Spirit Temple MQ Sun Block Room as Child without Song of Time");
|
||||
mTrickOptions[RT_SPIRIT_MQ_SUN_BLOCK_GS] = Option::LogicTrick("Spirit Temple MQ Sun Block Room GS with Boomerang");
|
||||
mTrickOptions[RT_SPIRIT_MQ_LOWER_ADULT] = Option::LogicTrick("Spirit Temple MQ Lower Adult without Fire Arrows");
|
||||
mTrickOptions[RT_SPIRIT_MQ_FROZEN_EYE] = Option::LogicTrick("Spirit Temple MQ Frozen Eye Switch without Fire");
|
||||
mTrickOptions[RT_ICE_BLOCK_GS] = Option::LogicTrick("Ice Cavern Block Room GS with Hover Boots");
|
||||
mTrickOptions[RT_ICE_MQ_RED_ICE_GS] = Option::LogicTrick("Ice Cavern MQ Red Ice GS without Song of Time");
|
||||
mTrickOptions[RT_ICE_MQ_SCARECROW] = Option::LogicTrick("Ice Cavern MQ Scarecrow GS with No Additional Items");
|
||||
mTrickOptions[RT_LENS_GTG] = Option::LogicTrick("Gerudo Training Ground without Lens of Truth");
|
||||
mTrickOptions[RT_GTG_WITHOUT_HOOKSHOT] = Option::LogicTrick("Gerudo Training Ground Left Side Silver Rupees without Hookshot");
|
||||
mTrickOptions[RT_GTG_FAKE_WALL] = Option::LogicTrick("Reach Gerudo Training Ground Fake Wall Ledge with Hover Boots");
|
||||
mTrickOptions[RT_LENS_GTG_MQ] = Option::LogicTrick("Gerudo Training Ground MQ without Lens of Truth");
|
||||
mTrickOptions[RT_GTG_MQ_WITH_HOOKSHOT] = Option::LogicTrick("Gerudo Training Ground MQ Left Side Silver Rupees with Hookshot");
|
||||
mTrickOptions[RT_GTG_MQ_WIHTOUT_HOOKSHOT] = Option::LogicTrick("Gerudo Training Ground MQ Left Side Silver Rupees without Hookshot");
|
||||
mTrickOptions[RT_LENS_GANON] = Option::LogicTrick("Ganon\'s Castle without Lens of Truth");
|
||||
mTrickOptions[RT_GANON_SPIRIT_TRIAL_HOOKSHOT] = Option::LogicTrick("Spirit Trial without Hookshot");
|
||||
mTrickOptions[RT_LENS_GANON_MQ] = Option::LogicTrick("Ganon\'s Castle MQ without Lens of Truth");
|
||||
mTrickOptions[RT_GANON_MQ_FIRE_TRIAL] = Option::LogicTrick("Fire Trial MQ with Hookshot");
|
||||
mTrickOptions[RT_GANON_MQ_SHADOW_TRIAL] = Option::LogicTrick("Shadow Trial MQ Torch with Bow");
|
||||
mTrickOptions[RT_GANON_MQ_LIGHT_TRIAL] = Option::LogicTrick("Light Trial MQ without Hookshot");
|
||||
|
||||
mOptionGroups[RSG_LOGIC] = OptionGroup::SubGroup("Logic Options", {
|
||||
&mOptions[RSK_LOGIC_RULES],
|
||||
@ -548,6 +548,11 @@ void Settings::CreateOptions() {
|
||||
&mTrickOptions[RT_GANON_MQ_SHADOW_TRIAL],
|
||||
&mTrickOptions[RT_GANON_MQ_LIGHT_TRIAL],
|
||||
}, false);
|
||||
int i = 0;
|
||||
for (const auto trick : mOptionGroups[RSG_TRICKS].GetOptions()) {
|
||||
mTrickNameToEnum[std::string(trick->GetName())] = static_cast<RandomizerTrick>(i);
|
||||
i++;
|
||||
}
|
||||
// TODO: Glitches
|
||||
mOptionGroups[RSG_AREA_ACCESS_IMGUI] = OptionGroup::SubGroup("Area Access", {
|
||||
&mOptions[RSK_FOREST],
|
||||
@ -1686,18 +1691,20 @@ void Settings::FinalizeSettings(const std::set<RandomizerCheck>& excludedLocatio
|
||||
mOptions[RSK_LINKS_POCKET].SetSelectedIndex(RO_LINKS_POCKET_DUNGEON_REWARD);
|
||||
}
|
||||
|
||||
ctx->AddExcludedOptions();
|
||||
for (const auto locationKey : ctx->everyPossibleLocation) {
|
||||
if (const auto location = ctx->GetItemLocation(locationKey); excludedLocations.contains(location->GetRandomizerCheck())) {
|
||||
location->GetExcludedOption()->SetSelectedIndex(1);
|
||||
} else {
|
||||
location->GetExcludedOption()->SetSelectedIndex(0);
|
||||
if (!ctx->IsSpoilerLoaded()) {
|
||||
ctx->AddExcludedOptions();
|
||||
for (const auto locationKey : ctx->everyPossibleLocation) {
|
||||
if (const auto location = ctx->GetItemLocation(locationKey); excludedLocations.contains(location->GetRandomizerCheck())) {
|
||||
location->GetExcludedOption()->SetSelectedIndex(1);
|
||||
} else {
|
||||
location->GetExcludedOption()->SetSelectedIndex(0);
|
||||
}
|
||||
}
|
||||
// Tricks
|
||||
ResetTrickOptions();
|
||||
for (const auto randomizerTrick : enabledTricks) {
|
||||
mTrickOptions[randomizerTrick].SetSelectedIndex(1);
|
||||
}
|
||||
}
|
||||
// Tricks
|
||||
ResetTrickOptions();
|
||||
for (const auto randomizerTrick : enabledTricks) {
|
||||
mTrickOptions[randomizerTrick].SetSelectedIndex(1);
|
||||
}
|
||||
if (!mOptions[RSK_SHUFFLE_KOKIRI_SWORD]) {
|
||||
if (mOptions[RSK_STARTING_KOKIRI_SWORD]) {
|
||||
@ -2197,12 +2204,13 @@ void Settings::ParseJson(nlohmann::json spoilerFileJson) {
|
||||
}
|
||||
break;
|
||||
// Uses Ammo Drops option for now. "Off" not yet implemented
|
||||
// TODO: Change to Ammo Drops
|
||||
case RSK_ENABLE_BOMBCHU_DROPS:
|
||||
if (it.value() == "On") {
|
||||
if (it.value() == "Yes") {
|
||||
mOptions[index].SetSelectedIndex(RO_AMMO_DROPS_ON);
|
||||
} else if (it.value() == "On + Bombchu") {
|
||||
mOptions[index].SetSelectedIndex(RO_AMMO_DROPS_ON_PLUS_BOMBCHU);
|
||||
} else if (it.value() == "Off") {
|
||||
// } else if (it.value() == "On + Bombchu") {
|
||||
// mOptions[index].SetSelectedIndex(RO_AMMO_DROPS_ON_PLUS_BOMBCHU);
|
||||
} else if (it.value() == "No") {
|
||||
mOptions[index].SetSelectedIndex(RO_AMMO_DROPS_OFF);
|
||||
}
|
||||
break;
|
||||
@ -2484,8 +2492,7 @@ void Settings::ParseJson(nlohmann::json spoilerFileJson) {
|
||||
|
||||
nlohmann::json enabledTricksJson = spoilerFileJson["enabledTricks"];
|
||||
for (auto it = enabledTricksJson.begin(); it != enabledTricksJson.end(); ++it) {
|
||||
std::string numericValueString = it.value();
|
||||
const auto rt = static_cast<RandomizerTrick>(std::stoi(numericValueString));
|
||||
const RandomizerTrick rt = mTrickNameToEnum[it.value()];
|
||||
GetTrickOption(rt).SetSelectedIndex(RO_GENERIC_ON);
|
||||
}
|
||||
}
|
||||
|
@ -191,5 +191,6 @@ class Settings {
|
||||
std::string mHash;
|
||||
std::string mSeedString;
|
||||
uint32_t mFinalSeed = 0;
|
||||
std::unordered_map<std::string, RandomizerTrick> mTrickNameToEnum;
|
||||
};
|
||||
} // namespace Rando
|
||||
|
@ -1025,10 +1025,10 @@ void FileChoose_UpdateRandomizer() {
|
||||
|
||||
if (CVarGetInteger("gRandomizerNewFileDropped", 0) != 0 || !(Randomizer_IsSeedGenerated() || Randomizer_IsSpoilerLoaded()) &&
|
||||
SpoilerFileExists(CVarGetString("gSpoilerLog", "")) && !fileSelectSpoilerFileLoaded) {
|
||||
const char* fileLoc = CVarGetString("gSpoilerLog", "");
|
||||
if (CVarGetInteger("gRandomizerNewFileDropped", 0) != 0) {
|
||||
CVarSetString("gSpoilerLog", CVarGetString("gRandomizerDroppedFile", ""));
|
||||
}
|
||||
const char* fileLoc = CVarGetString("gSpoilerLog", "");
|
||||
CVarSetInteger("gRandomizerNewFileDropped", 0);
|
||||
CVarSetString("gRandomizerDroppedFile", "");
|
||||
Randomizer_ParseSpoiler(fileLoc);
|
||||
|
Loading…
Reference in New Issue
Block a user