From 9caf11a5db4abbae49acacf9af266729fec5043b Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Sat, 11 Jan 2025 17:39:06 +0000 Subject: [PATCH 1/6] WIP well rename --- .../Enhancements/debugger/debugSaveEditor.h | 12 +- .../hint_list/hint_list_exclude_dungeon.cpp | 32 ++-- .../randomizer/3drando/item_pool.cpp | 2 +- soh/soh/Enhancements/randomizer/dungeon.cpp | 56 +++--- soh/soh/Enhancements/randomizer/entrance.cpp | 4 +- soh/soh/Enhancements/randomizer/location.cpp | 7 + soh/soh/Enhancements/randomizer/location.h | 5 + .../dungeons/bottom_of_the_well.cpp | 160 +++++++++--------- .../location_access/overworld/kakariko.cpp | 2 +- .../Enhancements/randomizer/location_list.cpp | 92 +++++----- .../Enhancements/randomizer/randomizer.cpp | 16 +- .../Enhancements/randomizer/randomizerTypes.h | 110 ++++++------ .../Enhancements/randomizer/randomizer_inf.h | 12 +- 13 files changed, 271 insertions(+), 239 deletions(-) diff --git a/soh/soh/Enhancements/debugger/debugSaveEditor.h b/soh/soh/Enhancements/debugger/debugSaveEditor.h index 8eb939ec899..0956ff803ee 100644 --- a/soh/soh/Enhancements/debugger/debugSaveEditor.h +++ b/soh/soh/Enhancements/debugger/debugSaveEditor.h @@ -837,13 +837,13 @@ const std::vector flagTables = { { RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_10, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_10" }, { RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_11, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_11" }, { RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_12, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_12" }, - { RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1, "RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1" }, - { RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2, "RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2" }, - { RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3, "RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3" }, - { RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1, "RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1" }, - { RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2, "RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2" }, + { RAND_INF_BOTW_FAKE_WALL_SOUTH_POT, "RAND_INF_BOTW_FAKE_WALL_SOUTH_POT" }, + { RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT, "RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT" }, + { RAND_INF_BOTW_FAKE_WALL_NORTH_POT, "RAND_INF_BOTW_FAKE_WALL_NORTH_POT" }, + { RAND_INF_BOTW_ENTRYWAY_EAST_POT, "RAND_INF_BOTW_ENTRYWAY_EAST_POT" }, + { RAND_INF_BOTW_ENTRYWAY_WEST_POT, "RAND_INF_BOTW_ENTRYWAY_WEST_POT" }, { RAND_INF_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1, "RAND_INF_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1" }, - { RAND_INF_BOTTOM_OF_THE_WELL_UNDERWATER_POT, "RAND_INF_BOTTOM_OF_THE_WELL_UNDERWATER_POT" }, + { RAND_INF_BOTW_SUNKEN_POT, "RAND_INF_BOTW_SUNKEN_POT" }, { RAND_INF_ICE_CAVERN_HALL_POT_1, "RAND_INF_ICE_CAVERN_HALL_POT_1" }, { RAND_INF_ICE_CAVERN_HALL_POT_2, "RAND_INF_ICE_CAVERN_HALL_POT_2" }, { RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_1, "RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_1" }, diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp index 2e0350e7c17..27dac5e76d8 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp @@ -1548,32 +1548,32 @@ hintTextTable[RHT_SHADOW_TEMPLE_MAP_CHEST] = HintText(CustomMessage("They say th /*-------------------------- | BOTTOM OF THE WELL | ---------------------------*/ - hintTextTable[RHT_BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST] = HintText(CustomMessage("They say that the #Eye of Truth in the well# reveals #[[1]]#.", + hintTextTable[RHT_BOTW_WEST_FAKE_WALL_CHEST] = HintText(CustomMessage("They say that the #Eye of Truth in the well# reveals #[[1]]#.", /*german*/ "Man erzählt sich, daß das #Auge der Wahrheit im Brunnen# #[[1]]# offenbare.", /*french*/ "Selon moi, l'#oeil de vérité dans le Puits# révèle #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, el #Ojo de la Verdad en el pozo# revela #[[1]]#. - hintTextTable[RHT_BOTTOM_OF_THE_WELL_FRONT_CENTER_BOMBABLE_CHEST] = HintText(CustomMessage("They say that #gruesome debris# in the well hides #[[1]]#.", + hintTextTable[RHT_BOTW_SOUTH_RUBBLE_CHEST] = HintText(CustomMessage("They say that #gruesome debris# in the well hides #[[1]]#.", /*german*/ "Man erzählt sich, daß #grauenvolle Trümmer# im Brunnen #[[1]]# verbergen würden.", /*french*/ "Selon moi, des #débris dans le Puits# cachent #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, unos #horripilantes escombros# del pozo esconden #[[1]]#. - hintTextTable[RHT_BOTTOM_OF_THE_WELL_RIGHT_BOTTOM_FAKE_WALL_CHEST] = HintText(CustomMessage("They say that the #Eye of Truth in the well# reveals #[[1]]#.", + hintTextTable[RHT_BOTW_EAST_FAKE_WALL_CHEST] = HintText(CustomMessage("They say that the #Eye of Truth in the well# reveals #[[1]]#.", /*german*/ "Man erzählt sich, daß das #Auge der Wahrheit im Brunnen# #[[1]]# offenbare.", /*french*/ "Selon moi, l'#oeil de vérité dans le Puits# révèle #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, el #Ojo de la Verdad en el pozo# revela #[[1]]#. - hintTextTable[RHT_BOTTOM_OF_THE_WELL_COMPASS_CHEST] = HintText(CustomMessage("They say that a #hidden entrance to a cage# in the well leads to #[[1]]#.", + hintTextTable[RHT_BOTW_CENTRAL_WEST_CHEST] = HintText(CustomMessage("They say that a #hidden entrance to a cage# in the well leads to #[[1]]#.", /*german*/ "Man erzählt sich, daß ein #verborgener Eingang zu einem Käfig# im Brunnen zu #[[1]]# führe.", /*french*/ "Selon moi, dans un #chemin caché dans le Puits# gît #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, la #entrada oculta de una celda# del pozo conduce a #[[1]]#. - hintTextTable[RHT_BOTTOM_OF_THE_WELL_CENTER_SKULLTULA_CHEST] = HintText(CustomMessage("They say that a #spider guarding a cage# in the well protects #[[1]]#.", + hintTextTable[RHT_BOTW_SKULLTULA_CHEST] = HintText(CustomMessage("They say that a #spider guarding a cage# in the well protects #[[1]]#.", /*german*/ "Man erzählt sich, daß eine #einen Käfig schützende Spinne# im Brunnen #[[1]]# schütze.", /*french*/ "Selon moi, l'#araignée dans la cage du Puits# protège #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, una #araña protegiendo una celda# del pozo guarda #[[1]]#. - hintTextTable[RHT_BOTTOM_OF_THE_WELL_BACK_LEFT_BOMBABLE_CHEST] = HintText(CustomMessage("They say that #gruesome debris# in the well hides #[[1]]#.", + hintTextTable[RHT_BOTW_NORTH_RUBBLE_CHEST] = HintText(CustomMessage("They say that #gruesome debris# in the well hides #[[1]]#.", /*german*/ "Man erzählt sich, daß #grauenvolle Trümmer# im Brunnen #[[1]]# verbergen würde.", /*french*/ "Selon moi, des #débris dans le Puits# cachent #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, unos #horripilantes escombros# del pozo esconden #[[1]]#. @@ -1583,12 +1583,12 @@ hintTextTable[RHT_SHADOW_TEMPLE_MAP_CHEST] = HintText(CustomMessage("They say th /*french*/ "Selon moi, le #trésor invisible du Poigneur# est #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, el #secreto invisible de la Mano Muerta# esconde #[[1]]#. - hintTextTable[RHT_BOTTOM_OF_THE_WELL_UNDERWATER_FRONT_CHEST] = HintText(CustomMessage("They say that a #royal melody in the well# uncovers #[[1]]#.", + hintTextTable[RHT_BOTW_SOUTH_SUNKEN_CHEST] = HintText(CustomMessage("They say that a #royal melody in the well# uncovers #[[1]]#.", /*german*/ "Man erzählt sich, daß eine #königliche Melodie im Brunnen# #[[1]]# enthüllen würde.", /*french*/ "Selon moi, la #mélodie royale révèle dans le Puits# #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, una #melodía real en el pozo# revela #[[1]]#. - hintTextTable[RHT_BOTTOM_OF_THE_WELL_UNDERWATER_LEFT_CHEST] = HintText(CustomMessage("They say that a #royal melody in the well# uncovers #[[1]]#.", + hintTextTable[RHT_BOTW_WEST_SUNKEN_CHEST] = HintText(CustomMessage("They say that a #royal melody in the well# uncovers #[[1]]#.", /*german*/ "Man erzählt sich, daß eine #königliche Melodie im Brunnen# #[[1]]# enthüllen würde.", /*french*/ "Selon moi, la #mélodie royale révèle dans le Puits# #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, una #melodía real en el pozo# revela #[[1]]#. @@ -1608,7 +1608,7 @@ hintTextTable[RHT_SHADOW_TEMPLE_MAP_CHEST] = HintText(CustomMessage("They say th /*french*/ "Selon moi, #dans une cage# du Puits gît #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, #entre rejas# en el pozo yace #[[1]]#. - hintTextTable[RHT_BOTTOM_OF_THE_WELL_FREESTANDING_KEY] = HintText(CustomMessage("They say that #inside a coffin# hides #[[1]]#.", + hintTextTable[RHT_BOTW_COFFIN_KEY] = HintText(CustomMessage("They say that #inside a coffin# hides #[[1]]#.", /*german*/ "Man erzählt sich, daß #in einem Sarg# #[[1]]# verborgen läge.", /*french*/ "Selon moi, dans #un cercueil# gît #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, en el #interior de un ataúd# yace #[[1]]#. @@ -1663,10 +1663,22 @@ hintTextTable[RHT_SHADOW_TEMPLE_MAP_CHEST] = HintText(CustomMessage("They say th /*french*/ "Selon moi, une #Skulltula embarrée dans la crypte au fonds du Puits# a #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, una #Skulltula encerrada en una cripta# del pozo otorga #[[1]]#. - hintTextTable[RHT_POT_BOTTOM_OF_THE_WELL] = HintText(CustomMessage("They say that a #pot in Bottom of the Well# contains #[[1]]#.", + hintTextTable[RHT_POT_BOTW] = HintText(CustomMessage("They say that a #pot in Bottom of the Well# contains #[[1]]#.", /*german*/ "", /*french*/ "Selon moi, une #jarre dans le Puits# contient #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_ENTRYWAY_WEST_POT] = HintText(CustomMessage("They say that a #pot to the Right of the Well's entrance# contains #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_ENTRYWAY_EAST_POT] = HintText(CustomMessage("They say that a #pot to the Left of the Well's entrance# contains #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_SUNKEN_POT] = HintText(CustomMessage("They say that a #sunken pot in the Well# contains #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_FAKE_WALL_SOUTH_POT] = HintText(CustomMessage("They say that the #southern pot behind a fake wall in a Well# contains #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_FAKE_WALL_CENTRAL_POT] = HintText(CustomMessage("They say that the #central pot behind a fake wall in a Well# contains #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_FAKE_WALL_NORTH_POT] = HintText(CustomMessage("They say that the #northern pot behind a fake wall in a Well# contains #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTTOM_OF_THE_WELL_HEART] = HintText(CustomMessage("They say that a #heart within the well# hides #[[1]]#.", /*german*/ "", /*french*/ "Selon moi, un #coeur dans le Puits# cache #[[1]]#.", {QM_RED, QM_GREEN})); diff --git a/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp b/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp index 6f908de2203..5d99637d905 100644 --- a/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp @@ -681,7 +681,7 @@ static void PlaceVanillaFairies() { ctx->PlaceItemInLocation(RC_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY, GetJunkItem(), false, true); ctx->PlaceItemInLocation(RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY, GetJunkItem(), false, true); } else { - ctx->PlaceItemInLocation(RC_BOTTOM_OF_THE_WELL_BASEMENT_SUN_FAIRY, GetJunkItem(), false, true); + ctx->PlaceItemInLocation(RC_BOTW_B3_SUN_FAIRY, GetJunkItem(), false, true); } if (ctx->GetDungeon(Rando::ICE_CAVERN)->IsVanilla()) { ctx->PlaceItemInLocation(RC_ICE_CAVERN_ENTRANCE_STORMS_FAIRY, GetJunkItem(), false, true); diff --git a/soh/soh/Enhancements/randomizer/dungeon.cpp b/soh/soh/Enhancements/randomizer/dungeon.cpp index 85afc0d3ef6..c8b7fa66e8e 100644 --- a/soh/soh/Enhancements/randomizer/dungeon.cpp +++ b/soh/soh/Enhancements/randomizer/dungeon.cpp @@ -1004,31 +1004,31 @@ Dungeons::Dungeons() { RG_BOTTOM_OF_THE_WELL_SMALL_KEY, RG_BOTTOM_OF_THE_WELL_KEY_RING, RG_NONE, RA_BOTTOM_OF_THE_WELL, 3, 2, RSK_MQ_BOTTOM_OF_THE_WELL, { // Vanilla Locations - RC_BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST, - RC_BOTTOM_OF_THE_WELL_FRONT_CENTER_BOMBABLE_CHEST, - RC_BOTTOM_OF_THE_WELL_RIGHT_BOTTOM_FAKE_WALL_CHEST, - RC_BOTTOM_OF_THE_WELL_COMPASS_CHEST, - RC_BOTTOM_OF_THE_WELL_CENTER_SKULLTULA_CHEST, - RC_BOTTOM_OF_THE_WELL_BACK_LEFT_BOMBABLE_CHEST, - RC_BOTTOM_OF_THE_WELL_LENS_OF_TRUTH_CHEST, - RC_BOTTOM_OF_THE_WELL_INVISIBLE_CHEST, - RC_BOTTOM_OF_THE_WELL_UNDERWATER_FRONT_CHEST, - RC_BOTTOM_OF_THE_WELL_UNDERWATER_LEFT_CHEST, - RC_BOTTOM_OF_THE_WELL_MAP_CHEST, - RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST, - RC_BOTTOM_OF_THE_WELL_LIKE_LIKE_CHEST, - RC_BOTTOM_OF_THE_WELL_FREESTANDING_KEY, - RC_BOTTOM_OF_THE_WELL_GS_LIKE_LIKE_CAGE, - RC_BOTTOM_OF_THE_WELL_GS_EAST_INNER_ROOM, - RC_BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM, + RC_BOTW_WEST_FAKE_WALL_CHEST, + RC_BOTW_SOUTH_RUBBLE_CHEST, + RC_BOTW_EAST_FAKE_WALL_CHEST, + RC_BOTW_B1_CENTRAL_WEST_CHEST, + RC_BOTW_B1_CENTRAL_EAST_CHEST, + RC_BOTW_NORTH_RUBBLE_CHEST, + RC_BOTW_DEAD_HAND_CHEST, + RC_BOTW_INVISIBLE_CHEST, + RC_BOTW_SOUTH_SUNKEN_CHEST, + RC_BOTW_WEST_SUNKEN_CHEST, + RC_BOTW_B3_CHEST, + RC_BOTW_3_HIDDEN_PITS_CHEST, + RC_BOTW_OUTER_CAGE_CHEST, + RC_BOTW_COFFIN_KEY, + RC_BOTW_OUTER_CAGE_GS, + RC_BOTW_CENTER_EAST_ROOM_GS, + RC_BOTW_CENTER_WEST_ROOM_GS, RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_LEFT_RUPEE, RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_BACK_LEFT_RUPEE, RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_MIDDLE_RUPEE, RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_BACK_RIGHT_RUPEE, RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_RIGHT_RUPEE, - RC_BOTTOM_OF_THE_WELL_COFFIN_ROOM_FRONT_LEFT_HEART, - RC_BOTTOM_OF_THE_WELL_COFFIN_ROOM_MIDDLE_RIGHT_HEART, - RC_BOTTOM_OF_THE_WELL_BASEMENT_SUN_FAIRY, + RC_BOTW_SOUTHEAST_COFFIN_HEART, + RC_BOTW_OPEN_COFFIN_HEART, + RC_BOTW_B3_SUN_FAIRY, }, { // MQ Locations @@ -1062,15 +1062,15 @@ Dungeons::Dungeons() { RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8, RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9, RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_11, + RC_BOTW_B3_WEST_POT_GROUP_FRONT, RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12, - RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1, - RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2, - RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3, - RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1, - RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2, - RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1, - RC_BOTTOM_OF_THE_WELL_UNDERWATER_POT, + RC_BOTW_FAKE_WALL_SOUTH_POT, + RC_BOTW_FAKE_WALL_CENTRAL_POT, + RC_BOTW_FAKE_WALL_NORTH_POT, + RC_BOTW_ENTRYWAY_WEST_POT, + RC_BOTW_ENTRYWAY_EAST_POT, + RC_BOTW_3_HIDDEN_PITS_POT, + RC_BOTW_SUNKEN_POT, }, { // MQ Pots diff --git a/soh/soh/Enhancements/randomizer/entrance.cpp b/soh/soh/Enhancements/randomizer/entrance.cpp index 1e28aa2c34b..98c7ec63853 100644 --- a/soh/soh/Enhancements/randomizer/entrance.cpp +++ b/soh/soh/Enhancements/randomizer/entrance.cpp @@ -877,8 +877,8 @@ int EntranceShuffler::ShuffleAllEntrances() { { EntranceType::Dungeon, RR_SPIRIT_TEMPLE_ENTRYWAY, RR_DESERT_COLOSSUS_OUTSIDE_TEMPLE, ENTR_DESERT_COLOSSUS_OUTSIDE_TEMPLE } }, { { EntranceType::Dungeon, RR_GRAVEYARD_WARP_PAD_REGION, RR_SHADOW_TEMPLE_ENTRYWAY, ENTR_SHADOW_TEMPLE_ENTRANCE }, { EntranceType::Dungeon, RR_SHADOW_TEMPLE_ENTRYWAY, RR_GRAVEYARD_WARP_PAD_REGION, ENTR_GRAVEYARD_OUTSIDE_TEMPLE } }, - { { EntranceType::Dungeon, RR_KAK_WELL, RR_BOTTOM_OF_THE_WELL_ENTRYWAY, ENTR_BOTTOM_OF_THE_WELL_ENTRANCE }, - { EntranceType::Dungeon, RR_BOTTOM_OF_THE_WELL_ENTRYWAY, RR_KAK_WELL, ENTR_KAKARIKO_VILLAGE_OUTSIDE_BOTTOM_OF_THE_WELL } }, + { { EntranceType::Dungeon, RR_KAK_WELL, RR_BOTW_ENTRYWAY, ENTR_BOTTOM_OF_THE_WELL_ENTRANCE }, + { EntranceType::Dungeon, RR_BOTW_ENTRYWAY, RR_KAK_WELL, ENTR_KAKARIKO_VILLAGE_OUTSIDE_BOTTOM_OF_THE_WELL } }, { { EntranceType::Dungeon, RR_ZORAS_FOUNTAIN, RR_ICE_CAVERN_ENTRYWAY, ENTR_ICE_CAVERN_ENTRANCE }, { EntranceType::Dungeon, RR_ICE_CAVERN_ENTRYWAY, RR_ZORAS_FOUNTAIN, ENTR_ZORAS_FOUNTAIN_OUTSIDE_ICE_CAVERN } }, { { EntranceType::Dungeon, RR_GERUDO_FORTRESS, RR_GERUDO_TRAINING_GROUND_ENTRYWAY, ENTR_GERUDO_TRAINING_GROUND_ENTRANCE }, diff --git a/soh/soh/Enhancements/randomizer/location.cpp b/soh/soh/Enhancements/randomizer/location.cpp index 20dc211a8f7..6e85fcbcbfe 100644 --- a/soh/soh/Enhancements/randomizer/location.cpp +++ b/soh/soh/Enhancements/randomizer/location.cpp @@ -377,6 +377,13 @@ Rando::Location Rando::Location::Pot(RandomizerCheck rc, RandomizerCheckQuest qu return {rc, quest_, RCTYPE_POT, area_, ACTOR_OBJ_TSUBO, scene_, actorParams_, std::move(shortName_), std::move(spoilerName_), hintKey, vanillaItem, false, collectionCheck }; } +Rando::Location Rando::Location::Pot(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_, + SceneID scene_, int32_t actorParams_, std::string&& shortName_, + RandomizerHintTextKey hintKey, + RandomizerGet vanillaItem, SpoilerCollectionCheck collectionCheck) { + return {rc, quest_, RCTYPE_POT, area_, ACTOR_OBJ_TSUBO, scene_, actorParams_, std::move(shortName_), hintKey, vanillaItem, false, + collectionCheck }; +} Rando::Location Rando::Location::HintStone(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_, SceneID scene_, int32_t actorParams_, std::string&& shortName_) { return { rc, quest_, RCTYPE_GOSSIP_STONE, area_, ACTOR_EN_GS, scene_, actorParams_, std::move(shortName_), RHT_NONE, RG_NONE, false }; diff --git a/soh/soh/Enhancements/randomizer/location.h b/soh/soh/Enhancements/randomizer/location.h index 9de741dbf51..338f7c4a793 100644 --- a/soh/soh/Enhancements/randomizer/location.h +++ b/soh/soh/Enhancements/randomizer/location.h @@ -175,6 +175,11 @@ class Location { RandomizerHintTextKey hintKey, RandomizerGet vanillaItem, SpoilerCollectionCheck collectionCheck); + static Location Pot(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_, SceneID scene_, + int32_t actorParams_, std::string&& shortName_, + RandomizerHintTextKey hintKey, RandomizerGet vanillaItem, + SpoilerCollectionCheck collectionCheck); + static Location OtherHint(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_, ActorID actorId_, SceneID scene_, std::string&& shortName_, std::string&& spoilerName_); diff --git a/soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp b/soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp index 588d32bf18c..592577391bb 100644 --- a/soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp +++ b/soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp @@ -6,131 +6,133 @@ using namespace Rando; void RegionTable_Init_BottomOfTheWell() { // Vanilla/MQ Decider - areaTable[RR_BOTTOM_OF_THE_WELL_ENTRYWAY] = Region("Bottom of the Well Entryway", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, {}, { + areaTable[RR_BOTW_ENTRYWAY] = Region("Bottom of the Well Entryway", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, {}, { //Exits //Technically involves an fake wall, but passing it lensless is intended in vanilla and it is well telegraphed - Entrance(RR_BOTTOM_OF_THE_WELL_PERIMETER, []{return ctx->GetDungeon(Rando::BOTTOM_OF_THE_WELL)->IsVanilla() && logic->IsChild && logic->CanPassEnemy(RE_BIG_SKULLTULA);}), - Entrance(RR_BOTTOM_OF_THE_WELL_MQ_PERIMETER, []{return ctx->GetDungeon(Rando::BOTTOM_OF_THE_WELL)->IsMQ() && logic->IsChild;}), - Entrance(RR_KAK_WELL, []{return true;}), + Entrance(RR_BOTW_PERIMETER, []{return ctx->GetDungeon(Rando::BOTTOM_OF_THE_WELL)->IsVanilla() && logic->IsChild && logic->CanPassEnemy(RE_BIG_SKULLTULA);}), + Entrance(RR_BOTW_MQ_PERIMETER, []{return ctx->GetDungeon(Rando::BOTTOM_OF_THE_WELL)->IsMQ() && logic->IsChild;}), + Entrance(RR_KAK_WELL, []{return true;}), }); #pragma region Vanilla - areaTable[RR_BOTTOM_OF_THE_WELL_PERIMETER] = Region("Bottom of the Well Perimeter", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, { + areaTable[RR_BOTW_PERIMETER] = Region("Bottom of the Well Perimeter", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, { //Events EventAccess(&logic->StickPot, []{return true;}), EventAccess(&logic->NutPot, []{return true;}), EventAccess(&logic->LoweredWaterInsideBotw, []{return logic->CanUse(RG_ZELDAS_LULLABY);}), }, { //Locations - LOCATION(RC_BOTTOM_OF_THE_WELL_FRONT_CENTER_BOMBABLE_CHEST, logic->HasExplosives()), - LOCATION(RC_BOTTOM_OF_THE_WELL_FREESTANDING_KEY, (logic->HasItem(RG_BRONZE_SCALE) || logic->LoweredWaterInsideBotw) && logic->CanUse(RG_STICKS) || logic->CanUse(RG_DINS_FIRE)), - LOCATION(RC_BOTTOM_OF_THE_WELL_UNDERWATER_FRONT_CHEST, logic->LoweredWaterInsideBotw), - LOCATION(RC_BOTTOM_OF_THE_WELL_UNDERWATER_LEFT_CHEST, logic->LoweredWaterInsideBotw), - LOCATION(RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_UNDERWATER_POT, (logic->CanBreakPots() && logic->LoweredWaterInsideBotw) || logic->CanUse(RG_BOOMERANG)), + LOCATION(RC_BOTW_SOUTH_RUBBLE_CHEST, logic->HasExplosives()), + LOCATION(RC_BOTW_COFFIN_KEY, (logic->HasItem(RG_BRONZE_SCALE) || logic->LoweredWaterInsideBotw) && logic->CanUse(RG_STICKS) || logic->CanUse(RG_DINS_FIRE)), + LOCATION(RC_BOTW_SOUTH_SUNKEN_CHEST, logic->LoweredWaterInsideBotw), + LOCATION(RC_BOTW_WEST_SUNKEN_CHEST, logic->LoweredWaterInsideBotw), + LOCATION(RC_BOTW_ENTRYWAY_WEST_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_ENTRYWAY_EAST_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_SUNKEN_POT, (logic->CanBreakPots() && logic->LoweredWaterInsideBotw) || logic->CanUse(RG_BOOMERANG)), }, { //Exits - Entrance(RR_BOTTOM_OF_THE_WELL_ENTRYWAY, []{return logic->IsChild && logic->CanPassEnemy(RE_BIG_SKULLTULA);}), - Entrance(RR_BOTTOM_OF_THE_WELL_BEHIND_FAKE_WALLS, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), - Entrance(RR_BOTTOM_OF_THE_WELL_SOUTHWEST_ROOM, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), - Entrance(RR_BOTTOM_OF_THE_WELL_KEESE_BEAMOS_ROOM, []{return logic->IsChild && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 3);}), - Entrance(RR_BOTTOM_OF_THE_WELL_COFFIN_ROOM, []{return logic->LoweredWaterInsideBotw || logic->HasItem(RG_BRONZE_SCALE);}), - Entrance(RR_BOTTOM_OF_THE_WELL_DEAD_HAND_ROOM, []{return logic->LoweredWaterInsideBotw && logic->IsChild;}), + Entrance(RR_BOTW_ENTRYWAY, []{return logic->IsChild && logic->CanPassEnemy(RE_BIG_SKULLTULA);}), + Entrance(RR_BOTW_REQUIRES_LENS, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), + Entrance(RR_BOTW_SOUTHWEST_ROOM, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), + Entrance(RR_BOTW_3_HIDDEN_PITS_ROOM, []{return logic->IsChild && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 3);}), + Entrance(RR_BOTW_COFFIN_ROOM, []{return logic->LoweredWaterInsideBotw || logic->HasItem(RG_BRONZE_SCALE);}), + Entrance(RR_BOTW_DEAD_HAND_ROOM, []{return logic->LoweredWaterInsideBotw && logic->IsChild;}), //Falling down into basement requires nothing, but falling down somewhere specific requires lens or lens trick //kinda questionable given several drops are blocked by rocks, but that's how it was handled before and on N64 - Entrance(RR_BOTTOM_OF_THE_WELL_BASEMENT, []{return true;}), + Entrance(RR_BOTW_B3, []{return true;}), + Entrance(RR_BOTW_OUTER_CAGE, []{return false;}), }); //This region combines the Middle with the perimeter's hidden areas. If a warp puts link into the middle without crossing the perimeter or using lens, it will need it's own region - areaTable[RR_BOTTOM_OF_THE_WELL_BEHIND_FAKE_WALLS] = Region("Bottom of the Well Behind Fake Walls", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { + areaTable[RR_BOTW_REQUIRES_LENS] = Region("Bottom of the Well Requires Lens", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST, true), - LOCATION(RC_BOTTOM_OF_THE_WELL_RIGHT_BOTTOM_FAKE_WALL_CHEST, true), - LOCATION(RC_BOTTOM_OF_THE_WELL_COMPASS_CHEST, true), + LOCATION(RC_BOTW_WEST_FAKE_WALL_CHEST, true), + LOCATION(RC_BOTW_EAST_FAKE_WALL_CHEST, true), + LOCATION(RC_BOTW_B1_CENTRAL_WEST_CHEST, true), //N64 has no extra check here, but I can't get past without dealing with the spider or taking a hit - LOCATION(RC_BOTTOM_OF_THE_WELL_CENTER_SKULLTULA_CHEST, logic->CanPassEnemy(RE_BIG_SKULLTULA) || logic->TakeDamage()), + LOCATION(RC_BOTW_B1_CENTRAL_EAST_CHEST, logic->CanPassEnemy(RE_BIG_SKULLTULA) || logic->TakeDamage()), //Not technically behind a wall, but still logically needs lens due to pits - LOCATION(RC_BOTTOM_OF_THE_WELL_BACK_LEFT_BOMBABLE_CHEST, logic->HasExplosives()), + LOCATION(RC_BOTW_NORTH_RUBBLE_CHEST, logic->HasExplosives()), }, { //Exits - Entrance(RR_BOTTOM_OF_THE_WELL_PERIMETER, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), - Entrance(RR_BOTTOM_OF_THE_WELL_INNER_ROOMS, []{return logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 3);}), - Entrance(RR_BOTTOM_OF_THE_WELL_BASEMENT, []{return true;}), - Entrance(RR_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), + Entrance(RR_BOTW_PERIMETER, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), + Entrance(RR_BOTW_CENTRAL_ROOMS, []{return logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 3);}), + Entrance(RR_BOTW_B3, []{return true;}), + Entrance(RR_BOTW_B3_PLATFORM, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), }); //This area can be reached without lens in logic from basement, but that could require silver rupees if they are shuffled. - areaTable[RR_BOTTOM_OF_THE_WELL_SOUTHWEST_ROOM] = Region("Bottom of the Well Southwest Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { + areaTable[RR_BOTW_SOUTHWEST_ROOM] = Region("Bottom of the Well Southwest Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3, logic->CanBreakPots()), + LOCATION(RC_BOTW_FAKE_WALL_SOUTH_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_FAKE_WALL_CENTRAL_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_FAKE_WALL_NORTH_POT, logic->CanBreakPots()), }, { //Exits - Entrance(RR_BOTTOM_OF_THE_WELL_PERIMETER, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), + Entrance(RR_BOTW_PERIMETER, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), }); //Passing through this area needs lens, but entering doesn't, so that the fire keese can be killed without crossing the pits if enemy drops are ever shuffled - areaTable[RR_BOTTOM_OF_THE_WELL_KEESE_BEAMOS_ROOM] = Region("Bottom of the Well Keese-Beamos Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { + areaTable[RR_BOTW_3_HIDDEN_PITS_ROOM] = Region("Bottom of the Well 3 Hidden Pits Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST, ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH)), - LOCATION(RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1, logic->CanBreakPots() && (ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH))), + LOCATION(RC_BOTW_3_HIDDEN_PITS_CHEST, ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH)), + LOCATION(RC_BOTW_3_HIDDEN_PITS_POT, logic->CanBreakPots() && (ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH))), }, { //Exits - Entrance(RR_BOTTOM_OF_THE_WELL_PERIMETER, []{return logic->IsChild && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 3) && (ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH));}), - Entrance(RR_BOTTOM_OF_THE_WELL_LIKE_LIKE_CAGE, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), + Entrance(RR_BOTW_PERIMETER, []{return logic->IsChild && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 3) && (ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH));}), + Entrance(RR_BOTW_OUTER_CAGE, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), //not sure if this lens check is needed, these holes are a bit too easy to find, but it matches existing logic - Entrance(RR_BOTTOM_OF_THE_WELL_BASEMENT_USEFUL_BOMB_FLOWERS, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), + Entrance(RR_BOTW_B3_EAST_BOMB_FLOWERS, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), }); - areaTable[RR_BOTTOM_OF_THE_WELL_LIKE_LIKE_CAGE] = Region("Bottom of the Well Like-Like Cage", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { + areaTable[RR_BOTW_OUTER_CAGE] = Region("Bottom of the Well Outer Cage", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTTOM_OF_THE_WELL_LIKE_LIKE_CHEST, true), - LOCATION(RC_BOTTOM_OF_THE_WELL_GS_LIKE_LIKE_CAGE, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)), + LOCATION(RC_BOTW_OUTER_CAGE_CHEST, true), + LOCATION(RC_BOTW_OUTER_CAGE_GS, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)), }, { //Exits - Entrance(RR_BOTTOM_OF_THE_WELL_KEESE_BEAMOS_ROOM, []{return true;}), + Entrance(RR_BOTW_3_HIDDEN_PITS_ROOM, []{return true;}), + Entrance(RR_BOTW_PERIMETER, []{return false;}), }); //If the player can voidwarp into one of these rooms they will need splitting up, and Fake walls will need specifying into middle and the rest moved to perimeter - areaTable[RR_BOTTOM_OF_THE_WELL_INNER_ROOMS] = Region("Bottom of the Well Inner Rooms", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, { + areaTable[RR_BOTW_CENTRAL_ROOMS] = Region("Bottom of the Well Central Rooms", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, { //Events EventAccess(&logic->DekuBabaSticks, []{return logic->CanGetDekuBabaSticks();}), EventAccess(&logic->DekuBabaNuts, []{return logic->CanGetDekuBabaNuts();}), }, { //Locations - LOCATION(RC_BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)), - LOCATION(RC_BOTTOM_OF_THE_WELL_GS_EAST_INNER_ROOM, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)), + LOCATION(RC_BOTW_CENTER_WEST_ROOM_GS, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)), + LOCATION(RC_BOTW_CENTER_EAST_ROOM_GS, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)), }, { //Exits - Entrance(RR_BOTTOM_OF_THE_WELL_BEHIND_FAKE_WALLS, []{return logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 3);}), + Entrance(RR_BOTW_REQUIRES_LENS, []{return logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 3);}), }); - areaTable[RR_BOTTOM_OF_THE_WELL_COFFIN_ROOM] = Region("Bottom of the Well Coffin Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { + areaTable[RR_BOTW_COFFIN_ROOM] = Region("Bottom of the Well Coffin Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTTOM_OF_THE_WELL_FREESTANDING_KEY, logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW)), - LOCATION(RC_BOTTOM_OF_THE_WELL_COFFIN_ROOM_FRONT_LEFT_HEART, logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW)), - LOCATION(RC_BOTTOM_OF_THE_WELL_COFFIN_ROOM_MIDDLE_RIGHT_HEART, logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW)), + LOCATION(RC_BOTW_COFFIN_KEY, logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW)), + LOCATION(RC_BOTW_SOUTHEAST_COFFIN_HEART, logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW)), + LOCATION(RC_BOTW_OPEN_COFFIN_HEART, logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW)), }, { //Exits - Entrance(RR_BOTTOM_OF_THE_WELL_PERIMETER, []{return logic->LoweredWaterInsideBotw || logic->HasItem(RG_BRONZE_SCALE);}), + Entrance(RR_BOTW_PERIMETER, []{return logic->LoweredWaterInsideBotw || logic->HasItem(RG_BRONZE_SCALE);}), }); - areaTable[RR_BOTTOM_OF_THE_WELL_DEAD_HAND_ROOM] = Region("Bottom of the Well Dead Hand Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { + areaTable[RR_BOTW_DEAD_HAND_ROOM] = Region("Bottom of the Well Dead Hand Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTTOM_OF_THE_WELL_LENS_OF_TRUTH_CHEST, logic->CanKillEnemy(RE_DEAD_HAND)), - LOCATION(RC_BOTTOM_OF_THE_WELL_INVISIBLE_CHEST, (ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH))), + LOCATION(RC_BOTW_DEAD_HAND_CHEST, logic->CanKillEnemy(RE_DEAD_HAND)), + LOCATION(RC_BOTW_INVISIBLE_CHEST, (ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH))), }, { //Exits //This assumes we spawned in dead hand's room, if whatever trick made this relevant instead puts us in the previous room, remove the kill Dead Hand check. - Entrance(RR_BOTTOM_OF_THE_WELL_PERIMETER, []{return logic->IsChild && logic->CanKillEnemy(RE_DEAD_HAND);}), + Entrance(RR_BOTW_PERIMETER, []{return logic->IsChild && logic->CanKillEnemy(RE_DEAD_HAND);}), }); - areaTable[RR_BOTTOM_OF_THE_WELL_BASEMENT] = Region("Bottom of the Well Basement", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { + areaTable[RR_BOTW_B3] = Region("Bottom of the Well B3", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTTOM_OF_THE_WELL_MAP_CHEST, logic->BlastOrSmash()), + LOCATION(RC_BOTW_B3_CHEST, logic->BlastOrSmash()), LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_1, logic->CanBreakPots()), LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_2, logic->CanBreakPots()), LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_3, logic->CanBreakPots()), @@ -141,27 +143,27 @@ void RegionTable_Init_BottomOfTheWell() { LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8, logic->CanBreakPots()), LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9, logic->CanBreakPots()), LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_11, logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_WEST_POT_GROUP_FRONT, logic->CanBreakPots()), LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_SUN_FAIRY, logic->CanUse(RG_SUNS_SONG)), + LOCATION(RC_BOTW_B3_SUN_FAIRY, logic->CanUse(RG_SUNS_SONG)), }, { //Exits - Entrance(RR_BOTTOM_OF_THE_WELL_SOUTHWEST_ROOM, []{return logic->IsChild && logic->CanPassEnemy(RE_BIG_SKULLTULA);}), + Entrance(RR_BOTW_SOUTHWEST_ROOM, []{return logic->IsChild && logic->CanPassEnemy(RE_BIG_SKULLTULA);}), //It's possible top abuse boulder's limited range of collision detection to detonate the flowers through the boulder with bow, but this is a glitch //the exact range is just past the furthest away plank in the green goo section - Entrance(RR_BOTTOM_OF_THE_WELL_BASEMENT_USEFUL_BOMB_FLOWERS, []{return Here(RR_BOTTOM_OF_THE_WELL_BASEMENT, []{return logic->BlastOrSmash() || logic->CanUse(RG_DINS_FIRE) || (logic->CanUse(RG_STICKS) && ctx->GetTrickOption(RT_BOTW_BASEMENT));});}), + Entrance(RR_BOTW_B3_EAST_BOMB_FLOWERS, []{return Here(RR_BOTW_B3, []{return logic->BlastOrSmash() || logic->CanUse(RG_DINS_FIRE) || (logic->CanUse(RG_STICKS) && ctx->GetTrickOption(RT_BOTW_BASEMENT));});}), }); - areaTable[RR_BOTTOM_OF_THE_WELL_BASEMENT_USEFUL_BOMB_FLOWERS] = Region("Bottom of the Well Basement Useful Bomb Flowers", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { + areaTable[RR_BOTW_B3_EAST_BOMB_FLOWERS] = Region("Bottom of the Well Basement Useful Bomb Flowers", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - //Assumes RR_BOTTOM_OF_THE_WELL_BASEMENT access - LOCATION(RC_BOTTOM_OF_THE_WELL_MAP_CHEST, logic->HasItem(RG_GORONS_BRACELET)), + //Assumes RR_BOTW_B3 access + LOCATION(RC_BOTW_B3_CHEST, logic->HasItem(RG_GORONS_BRACELET)), }, { //Exits - Entrance(RR_BOTTOM_OF_THE_WELL_BASEMENT, []{return logic->CanDetonateUprightBombFlower();}), + Entrance(RR_BOTW_B3, []{return logic->CanDetonateUprightBombFlower();}), }); - areaTable[RR_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM] = Region("Bottom of the Well Basement Platform", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { + areaTable[RR_BOTW_B3_PLATFORM] = Region("Bottom of the Well Basement Platform", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_LEFT_RUPEE, true), LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_BACK_LEFT_RUPEE, true), @@ -170,17 +172,17 @@ void RegionTable_Init_BottomOfTheWell() { LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_RIGHT_RUPEE, true), }, { //Exits - Entrance(RR_BOTTOM_OF_THE_WELL_BASEMENT, []{return true;}), + Entrance(RR_BOTW_B3, []{return true;}), }); #pragma endregion #pragma region MQ - areaTable[RR_BOTTOM_OF_THE_WELL_MQ_PERIMETER] = Region("Bottom of the Well MQ Perimeter", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, { + areaTable[RR_BOTW_MQ_PERIMETER] = Region("Bottom of the Well MQ Perimeter", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, { //Events //technically obsolete due to a wonder item fairy which only needs a projectile, but we don't have an event var for it yet - EventAccess(&logic->FairyPot, []{return Here(RR_BOTTOM_OF_THE_WELL_MQ_PERIMETER, []{return logic->BlastOrSmash();}) && logic->CanHitEyeTargets();}), + EventAccess(&logic->FairyPot, []{return Here(RR_BOTW_MQ_PERIMETER, []{return logic->BlastOrSmash();}) && logic->CanHitEyeTargets();}), //It is possible to hit the water switch with a pot from RR_BOTTOM_OF_THE_WELL_MQ_MIDDLE, however the hitbox for making it activate is very unintuitive //You have to throw the pot from further back to hit the switch from the front instead of the top, trying to hit the "fingers" directly //This unintuitiveness means it should be a trick. ZL is needed to get a clear path to carry the pot @@ -188,13 +190,13 @@ void RegionTable_Init_BottomOfTheWell() { }, { //Locations //Implies CanBreakPots() - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT, Here(RR_BOTTOM_OF_THE_WELL_MQ_PERIMETER, []{return logic->BlastOrSmash();}) && logic->CanHitEyeTargets()), + LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT, Here(RR_BOTW_MQ_PERIMETER, []{return logic->BlastOrSmash();}) && logic->CanHitEyeTargets()), LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_BOMB_LEFT_HEART, logic->HasExplosives()), LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_BOMB_RIGHT_HEART, logic->HasExplosives()), }, { //Exits - Entrance(RR_BOTTOM_OF_THE_WELL_ENTRYWAY, []{return logic->IsChild;}), - Entrance(RR_BOTTOM_OF_THE_WELL_MQ_WEST_ROOM_SWITCH, []{return Here(RR_BOTTOM_OF_THE_WELL_MQ_PERIMETER, []{return logic->BlastOrSmash();}) && logic->CanPassEnemy(RE_BIG_SKULLTULA);}), + Entrance(RR_BOTW_ENTRYWAY, []{return logic->IsChild;}), + Entrance(RR_BOTTOM_OF_THE_WELL_MQ_WEST_ROOM_SWITCH, []{return Here(RR_BOTW_MQ_PERIMETER, []{return logic->BlastOrSmash();}) && logic->CanPassEnemy(RE_BIG_SKULLTULA);}), Entrance(RR_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM, []{return (logic->LoweredWaterInsideBotw || logic->HasItem(RG_BRONZE_SCALE)) && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 2);}), Entrance(RR_BOTTOM_OF_THE_WELL_MQ_LOCKED_CAGE, []{return logic->IsChild && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 2) && logic->CanUseProjectile();}), Entrance(RR_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_ROOM, []{return logic->IsChild && logic->LoweredWaterInsideBotw;}), @@ -207,7 +209,7 @@ void RegionTable_Init_BottomOfTheWell() { EventAccess(&logic->OpenedWestRoomMQBotw, []{return true;}), }, {}, { //Exits - Entrance(RR_BOTTOM_OF_THE_WELL_MQ_PERIMETER, []{return logic->BlastOrSmash() && (logic->CanPassEnemy(RE_BIG_SKULLTULA) || ctx->GetTrickOption(RT_BOTW_MQ_PITS));}), + Entrance(RR_BOTW_MQ_PERIMETER, []{return logic->BlastOrSmash() && (logic->CanPassEnemy(RE_BIG_SKULLTULA) || ctx->GetTrickOption(RT_BOTW_MQ_PITS));}), Entrance(RR_BOTTOM_OF_THE_WELL_MQ_MIDDLE, []{return (bool)ctx->GetTrickOption(RT_BOTW_MQ_PITS);}), Entrance(RR_BOTTOM_OF_THE_WELL_MQ_BASEMENT, []{return true;}), }); @@ -219,7 +221,7 @@ void RegionTable_Init_BottomOfTheWell() { LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM_MIDDLE_LEFT_HEART, logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW)), }, { //Exits - Entrance(RR_BOTTOM_OF_THE_WELL_MQ_PERIMETER, []{return (logic->LoweredWaterInsideBotw || logic->HasItem(RG_BRONZE_SCALE)) && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 2);}), + Entrance(RR_BOTW_MQ_PERIMETER, []{return (logic->LoweredWaterInsideBotw || logic->HasItem(RG_BRONZE_SCALE)) && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 2);}), }); areaTable[RR_BOTTOM_OF_THE_WELL_MQ_LOCKED_CAGE] = Region("Bottom of the Well MQ Locked Cage", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, { @@ -227,7 +229,7 @@ void RegionTable_Init_BottomOfTheWell() { EventAccess(&logic->OpenedMiddleHoleMQBotw, []{return logic->HasExplosives();}), }, {}, { //Exits - Entrance(RR_BOTTOM_OF_THE_WELL_MQ_PERIMETER, []{return logic->IsChild && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 2);}), + Entrance(RR_BOTW_MQ_PERIMETER, []{return logic->IsChild && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 2);}), }); areaTable[RR_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_ROOM] = Region("Bottom of the Well MQ Dead Hand Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { @@ -237,7 +239,7 @@ void RegionTable_Init_BottomOfTheWell() { }, { //Exits //This assumes we spawned in dead hand's room, if whatever trick made this relevant instead puts us in the previous room, remove the kill Dead Hand check. - Entrance(RR_BOTTOM_OF_THE_WELL_MQ_PERIMETER, []{return logic->IsChild && logic->CanKillEnemy(RE_DEAD_HAND);}), + Entrance(RR_BOTW_MQ_PERIMETER, []{return logic->IsChild && logic->CanKillEnemy(RE_DEAD_HAND);}), }); areaTable[RR_BOTTOM_OF_THE_WELL_MQ_MIDDLE] = Region("Bottom of the Well MQ Middle", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { @@ -277,7 +279,7 @@ void RegionTable_Init_BottomOfTheWell() { LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY, logic->CanUse(RG_SUNS_SONG)), }, { //Exits - Entrance(RR_BOTTOM_OF_THE_WELL_MQ_PERIMETER, []{return true;}), + Entrance(RR_BOTW_MQ_PERIMETER, []{return true;}), }); areaTable[RR_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SWITCH_PLATFORM] = Region("Bottom of the Well MQ Basement Switch Platform", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { diff --git a/soh/soh/Enhancements/randomizer/location_access/overworld/kakariko.cpp b/soh/soh/Enhancements/randomizer/location_access/overworld/kakariko.cpp index 7d22f30a02e..44c7c36b0be 100644 --- a/soh/soh/Enhancements/randomizer/location_access/overworld/kakariko.cpp +++ b/soh/soh/Enhancements/randomizer/location_access/overworld/kakariko.cpp @@ -237,6 +237,6 @@ void RegionTable_Init_Kakariko() { areaTable[RR_KAK_WELL] = Region("Kak Behind Gate", "Kakariko Village", {RA_KAKARIKO_VILLAGE}, NO_DAY_NIGHT_CYCLE, {}, {}, { //Exits Entrance(RR_KAKARIKO_VILLAGE, []{return logic->IsAdult || logic->HasItem(RG_BRONZE_SCALE) || logic->DrainWell;}), - Entrance(RR_BOTTOM_OF_THE_WELL_ENTRYWAY, []{return logic->IsChild || (logic->DrainWell && ctx->GetOption(RSK_SHUFFLE_DUNGEON_ENTRANCES).IsNot(RO_DUNGEON_ENTRANCE_SHUFFLE_OFF));}), + Entrance(RR_BOTW_ENTRYWAY, []{return logic->IsChild || (logic->DrainWell && ctx->GetOption(RSK_SHUFFLE_DUNGEON_ENTRANCES).IsNot(RO_DUNGEON_ENTRANCE_SHUFFLE_OFF));}), }); } \ No newline at end of file diff --git a/soh/soh/Enhancements/randomizer/location_list.cpp b/soh/soh/Enhancements/randomizer/location_list.cpp index 19ee1c7d094..8dd82ee67d5 100644 --- a/soh/soh/Enhancements/randomizer/location_list.cpp +++ b/soh/soh/Enhancements/randomizer/location_list.cpp @@ -538,20 +538,20 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_SHADOW_TEMPLE_MQ_FREESTANDING_KEY] = Location::Collectable(RC_SHADOW_TEMPLE_MQ_FREESTANDING_KEY, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_ITEM00, SCENE_SHADOW_TEMPLE, 1553, 0x06, "MQ Freestanding Key", RHT_SHADOW_TEMPLE_MQ_FREESTANDING_KEY, RG_SHADOW_TEMPLE_SMALL_KEY, true); // Bottom of the Well Vanilla - locationTable[RC_BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 22600, 0x08, "Front Left Fake Wall Chest", RHT_BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST, RG_BOTTOM_OF_THE_WELL_SMALL_KEY, true); - locationTable[RC_BOTTOM_OF_THE_WELL_FRONT_CENTER_BOMBABLE_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_FRONT_CENTER_BOMBABLE_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 20578, 0x02, "Front Center Bombable Chest", RHT_BOTTOM_OF_THE_WELL_FRONT_CENTER_BOMBABLE_CHEST, RG_BOMBCHU_10); - locationTable[RC_BOTTOM_OF_THE_WELL_RIGHT_BOTTOM_FAKE_WALL_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_RIGHT_BOTTOM_FAKE_WALL_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 22597, 0x05, "Right Bottom Fake Wall Chest", RHT_BOTTOM_OF_THE_WELL_RIGHT_BOTTOM_FAKE_WALL_CHEST, RG_BOTTOM_OF_THE_WELL_SMALL_KEY, true); - locationTable[RC_BOTTOM_OF_THE_WELL_COMPASS_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_COMPASS_CHEST, RCQUEST_VANILLA, RCTYPE_COMPASS, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 2049, 0x01, "Compass Chest", RHT_BOTTOM_OF_THE_WELL_COMPASS_CHEST, RG_BOTTOM_OF_THE_WELL_COMPASS, true); - locationTable[RC_BOTTOM_OF_THE_WELL_CENTER_SKULLTULA_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_CENTER_SKULLTULA_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 20558, 0x0E, "Center Skulltula Chest", RHT_BOTTOM_OF_THE_WELL_CENTER_SKULLTULA_CHEST, RG_DEKU_NUTS_5); - locationTable[RC_BOTTOM_OF_THE_WELL_BACK_LEFT_BOMBABLE_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_BACK_LEFT_BOMBABLE_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 23684, 0x04, "Back Left Bombable Chest", RHT_BOTTOM_OF_THE_WELL_BACK_LEFT_BOMBABLE_CHEST, RG_DEKU_NUTS_10); - locationTable[RC_BOTTOM_OF_THE_WELL_LENS_OF_TRUTH_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_LENS_OF_TRUTH_CHEST, RCQUEST_VANILLA, RCTYPE_BOSS_HEART_OR_OTHER_REWARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 4419, 0x03, "Lens of Truth Chest", RHT_BOTTOM_OF_THE_WELL_LENS_OF_TRUTH_CHEST, RG_LENS_OF_TRUTH, true); - locationTable[RC_BOTTOM_OF_THE_WELL_INVISIBLE_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_INVISIBLE_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 27348, 0x14, "Invisible Chest", RHT_BOTTOM_OF_THE_WELL_INVISIBLE_CHEST, RG_HUGE_RUPEE); - locationTable[RC_BOTTOM_OF_THE_WELL_UNDERWATER_FRONT_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_UNDERWATER_FRONT_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 23760, 0x10, "Underwater Front Chest", RHT_BOTTOM_OF_THE_WELL_UNDERWATER_FRONT_CHEST, RG_BOMBS_10); - locationTable[RC_BOTTOM_OF_THE_WELL_UNDERWATER_LEFT_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_UNDERWATER_LEFT_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 22793, 0x09, "Underwater Left Chest", RHT_BOTTOM_OF_THE_WELL_UNDERWATER_LEFT_CHEST, RG_RECOVERY_HEART); - locationTable[RC_BOTTOM_OF_THE_WELL_MAP_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_MAP_CHEST, RCQUEST_VANILLA, RCTYPE_MAP, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 2087, 0x07, "Map Chest", RHT_BOTTOM_OF_THE_WELL_MAP_CHEST, RG_BOTTOM_OF_THE_WELL_MAP, true); - locationTable[RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 21802, 0x0A, "Fire Keese Chest", RHT_BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST, RG_DEKU_SHIELD); - locationTable[RC_BOTTOM_OF_THE_WELL_LIKE_LIKE_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_LIKE_LIKE_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 21836, 0x0C, "Like Like Chest", RHT_BOTTOM_OF_THE_WELL_LIKE_LIKE_CHEST, RG_HYLIAN_SHIELD); - locationTable[RC_BOTTOM_OF_THE_WELL_FREESTANDING_KEY] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_FREESTANDING_KEY, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 273, 0x01, "Freestanding Key", RHT_BOTTOM_OF_THE_WELL_FREESTANDING_KEY, RG_BOTTOM_OF_THE_WELL_SMALL_KEY, true); + locationTable[RC_BOTW_WEST_FAKE_WALL_CHEST] = Location::Chest(RC_BOTW_WEST_FAKE_WALL_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 22600, 0x08, "West Fake Wall Chest", RHT_BOTW_WEST_FAKE_WALL_CHEST, RG_BOTTOM_OF_THE_WELL_SMALL_KEY, true); + locationTable[RC_BOTW_SOUTH_RUBBLE_CHEST] = Location::Chest(RC_BOTW_SOUTH_RUBBLE_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 20578, 0x02, "South Rubble Chest", RHT_BOTW_SOUTH_RUBBLE_CHEST, RG_BOMBCHU_10); + locationTable[RC_BOTW_EAST_FAKE_WALL_CHEST] = Location::Chest(RC_BOTW_EAST_FAKE_WALL_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 22597, 0x05, "East Fake Wall Chest", RHT_BOTW_EAST_FAKE_WALL_CHEST, RG_BOTTOM_OF_THE_WELL_SMALL_KEY, true); + locationTable[RC_BOTW_B1_CENTRAL_WEST_CHEST] = Location::Chest(RC_BOTW_B1_CENTRAL_WEST_CHEST, RCQUEST_VANILLA, RCTYPE_COMPASS, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 2049, 0x01, "Central West Chest", RHT_BOTW_CENTRAL_WEST_CHEST, RG_BOTTOM_OF_THE_WELL_COMPASS, true); + locationTable[RC_BOTW_B1_CENTRAL_EAST_CHEST] = Location::Chest(RC_BOTW_B1_CENTRAL_EAST_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 20558, 0x0E, "Skulltula Chest", RHT_BOTW_SKULLTULA_CHEST, RG_DEKU_NUTS_5); + locationTable[RC_BOTW_NORTH_RUBBLE_CHEST] = Location::Chest(RC_BOTW_NORTH_RUBBLE_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 23684, 0x04, "North Rubble Chest", RHT_BOTW_NORTH_RUBBLE_CHEST, RG_DEKU_NUTS_10); + locationTable[RC_BOTW_DEAD_HAND_CHEST] = Location::Chest(RC_BOTW_DEAD_HAND_CHEST, RCQUEST_VANILLA, RCTYPE_BOSS_HEART_OR_OTHER_REWARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 4419, 0x03, "Lens of Truth Chest", RHT_BOTTOM_OF_THE_WELL_LENS_OF_TRUTH_CHEST, RG_LENS_OF_TRUTH, true); + locationTable[RC_BOTW_INVISIBLE_CHEST] = Location::Chest(RC_BOTW_INVISIBLE_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 27348, 0x14, "Invisible Chest", RHT_BOTTOM_OF_THE_WELL_INVISIBLE_CHEST, RG_HUGE_RUPEE); + locationTable[RC_BOTW_SOUTH_SUNKEN_CHEST] = Location::Chest(RC_BOTW_SOUTH_SUNKEN_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 23760, 0x10, "South Sunken Chest", RHT_BOTW_SOUTH_SUNKEN_CHEST, RG_BOMBS_10); + locationTable[RC_BOTW_WEST_SUNKEN_CHEST] = Location::Chest(RC_BOTW_WEST_SUNKEN_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 22793, 0x09, "West Sunken Chest", RHT_BOTW_WEST_SUNKEN_CHEST, RG_RECOVERY_HEART); + locationTable[RC_BOTW_B3_CHEST] = Location::Chest(RC_BOTW_B3_CHEST, RCQUEST_VANILLA, RCTYPE_MAP, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 2087, 0x07, "Map Chest", RHT_BOTTOM_OF_THE_WELL_MAP_CHEST, RG_BOTTOM_OF_THE_WELL_MAP, true); + locationTable[RC_BOTW_3_HIDDEN_PITS_CHEST] = Location::Chest(RC_BOTW_3_HIDDEN_PITS_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 21802, 0x0A, "Fire Keese Chest", RHT_BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST, RG_DEKU_SHIELD); + locationTable[RC_BOTW_OUTER_CAGE_CHEST] = Location::Chest(RC_BOTW_OUTER_CAGE_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 21836, 0x0C, "Like Like Chest", RHT_BOTTOM_OF_THE_WELL_LIKE_LIKE_CHEST, RG_HYLIAN_SHIELD); + locationTable[RC_BOTW_COFFIN_KEY] = Location::Collectable(RC_BOTW_COFFIN_KEY, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 273, 0x01, "Coffin Key", RHT_BOTW_COFFIN_KEY, RG_BOTTOM_OF_THE_WELL_SMALL_KEY, true); // Bottom of the Well Master Quest locationTable[RC_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST, RCQUEST_MQ, RCTYPE_MAP, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 2083, 0x03, "MQ Map Chest", RHT_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST, RG_BOTTOM_OF_THE_WELL_MAP, true); locationTable[RC_BOTTOM_OF_THE_WELL_MQ_LENS_OF_TRUTH_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_MQ_LENS_OF_TRUTH_CHEST, RCQUEST_MQ, RCTYPE_BOSS_HEART_OR_OTHER_REWARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, -20159, 0x01, "MQ Lens of Truth Chest", RHT_BOTTOM_OF_THE_WELL_MQ_LENS_OF_TRUTH_CHEST, RG_LENS_OF_TRUTH, true); @@ -740,9 +740,9 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_SHADOW_TEMPLE_MQ_GS_AFTER_SHIP] = Location::GSToken(RC_SHADOW_TEMPLE_MQ_GS_AFTER_SHIP, RCQUEST_MQ, SCENE_SHADOW_TEMPLE, 10000, 0x10, "MQ GS After Ship", RHT_SHADOW_TEMPLE_MQ_GS_AFTER_SHIP); locationTable[RC_SHADOW_TEMPLE_MQ_GS_NEAR_BOSS] = Location::GSToken(RC_SHADOW_TEMPLE_MQ_GS_NEAR_BOSS, RCQUEST_MQ, SCENE_SHADOW_TEMPLE, 9988, 0x04, "MQ GS Near Boss", RHT_SHADOW_TEMPLE_MQ_GS_NEAR_BOSS); // Bottom of the Well - locationTable[RC_BOTTOM_OF_THE_WELL_GS_LIKE_LIKE_CAGE] = Location::GSToken(RC_BOTTOM_OF_THE_WELL_GS_LIKE_LIKE_CAGE, RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, 10241, 0x01, "GS Like Like Cage", RHT_BOTTOM_OF_THE_WELL_GS_LIKE_LIKE_CAGE); - locationTable[RC_BOTTOM_OF_THE_WELL_GS_EAST_INNER_ROOM] = Location::GSToken(RC_BOTTOM_OF_THE_WELL_GS_EAST_INNER_ROOM, RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, 10242, 0x02, "GS East Inner Room", RHT_BOTTOM_OF_THE_WELL_GS_EAST_INNER_ROOM); - locationTable[RC_BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM] = Location::GSToken(RC_BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM, RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, 10244, 0x04, "GS West Inner Room", RHT_BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM); + locationTable[RC_BOTW_OUTER_CAGE_GS] = Location::GSToken(RC_BOTW_OUTER_CAGE_GS, RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, 10241, 0x01, "GS Like Like Cage", RHT_BOTTOM_OF_THE_WELL_GS_LIKE_LIKE_CAGE); + locationTable[RC_BOTW_CENTER_EAST_ROOM_GS] = Location::GSToken(RC_BOTW_CENTER_EAST_ROOM_GS, RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, 10242, 0x02, "GS East Inner Room", RHT_BOTTOM_OF_THE_WELL_GS_EAST_INNER_ROOM); + locationTable[RC_BOTW_CENTER_WEST_ROOM_GS] = Location::GSToken(RC_BOTW_CENTER_WEST_ROOM_GS, RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, 10244, 0x04, "GS West Inner Room", RHT_BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM); locationTable[RC_BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT] = Location::GSToken(RC_BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT, RCQUEST_MQ, SCENE_BOTTOM_OF_THE_WELL, 10241, 0x01, "MQ GS Basement", RHT_BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT); locationTable[RC_BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM] = Location::GSToken(RC_BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM, RCQUEST_MQ, SCENE_BOTTOM_OF_THE_WELL, 10244, 0x04, "MQ GS Coffin Room", RHT_BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM); locationTable[RC_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM] = Location::GSToken(RC_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM, RCQUEST_MQ, SCENE_BOTTOM_OF_THE_WELL, 10242, 0x02, "MQ GS West Inner Room", RHT_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM); @@ -1377,25 +1377,25 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_16] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_16, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(337, -300), "Ganons Tower Pot 16", "Ganons Castle Ganons Tower Pot 16", RHT_POT_GANONS_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_16)); locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_17] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_17, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(299, -340), "Ganons Tower Pot 17", "Ganons Castle Ganons Tower Pot 17", RHT_POT_GANONS_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_17)); locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_18] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_18, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(260, -380), "Ganons Tower Pot 18", "Ganons Castle Ganons Tower Pot 18", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_1, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-95, -673), "Basement Pot 1", "Bottom Of The Well Basement Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_1)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_2, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(75, -598), "Basement Pot 2", "Bottom Of The Well Basement Pot 2", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_2)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_3, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(270, -1151), "Basement Pot 3", "Bottom Of The Well Basement Pot 3", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_3)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_4] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_4, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1254), "Basement Pot 4", "Bottom Of The Well Basement Pot 4", RHT_POT_BOTTOM_OF_THE_WELL, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_4)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_5] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_5, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(378, -1089), "Basement Pot 5", "Bottom Of The Well Basement Pot 5", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_5)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_6] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_6, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(665, -1252), "Basement Pot 6", "Bottom Of The Well Basement Pot 6", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_6)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_7] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_7, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1345), "Basement Pot 7", "Bottom Of The Well Basement Pot 7", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_7)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(562, -1304), "Basement Pot 8", "Bottom Of The Well Basement Pot 8", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_8)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(313, -1086), "Basement Pot 9", "Bottom Of The Well Basement Pot 9", RHT_POT_BOTTOM_OF_THE_WELL, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_9)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(618, -1254), "Basement Pot 10", "Bottom Of The Well Basement Pot 10", RHT_POT_BOTTOM_OF_THE_WELL, RG_DEKU_STICK_1, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_10)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_11] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_11, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(257, -1099), "Basement Pot 11", "Bottom Of The Well Basement Pot 11", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_11)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(296, -1206), "Basement Pot 12", "Bottom Of The Well Basement Pot 12", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_12)); - locationTable[RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-969, 55), "Left Side Pot 1", "Bottom Of The Well Left Side Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1)); - locationTable[RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-966, 9), "Left Side Pot 2", "Bottom Of The Well Left Side Pot 2", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2)); - locationTable[RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-965, -32), "Left Side Pot 3", "Bottom Of The Well Left Side Pot 3", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3)); - locationTable[RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-41, 389), "Near Entrance Pot 1", "Bottom Of The Well Near Entrance Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_DEKU_STICK_1, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1)); - locationTable[RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(36, 389), "Near Entrance Pot 2", "Bottom Of The Well Near Entrance Pot 2", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2)); - locationTable[RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(874, -1294), "Fire Keese Pot 1", "Bottom Of The Well Fire Keese Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1)); - locationTable[RC_BOTTOM_OF_THE_WELL_UNDERWATER_POT] = Location::Pot(RC_BOTTOM_OF_THE_WELL_UNDERWATER_POT, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(3, -1641), "Underwater Pot", "Bottom Of The Well Underwater Pot", RHT_POT_BOTTOM_OF_THE_WELL, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_UNDERWATER_POT)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_1, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-95, -673), "Basement Pot 1", "Bottom Of The Well Basement Pot 1", RHT_POT_BOTW, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_1)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_2, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(75, -598), "Basement Pot 2", "Bottom Of The Well Basement Pot 2", RHT_POT_BOTW, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_2)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_3, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(270, -1151), "Basement Pot 3", "Bottom Of The Well Basement Pot 3", RHT_POT_BOTW, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_3)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_4] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_4, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1254), "Basement Pot 4", "Bottom Of The Well Basement Pot 4", RHT_POT_BOTW, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_4)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_5] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_5, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(378, -1089), "Basement Pot 5", "Bottom Of The Well Basement Pot 5", RHT_POT_BOTW, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_5)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_6] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_6, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(665, -1252), "Basement Pot 6", "Bottom Of The Well Basement Pot 6", RHT_POT_BOTW, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_6)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_7] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_7, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1345), "Basement Pot 7", "Bottom Of The Well Basement Pot 7", RHT_POT_BOTW, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_7)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(562, -1304), "Basement Pot 8", "Bottom Of The Well Basement Pot 8", RHT_POT_BOTW, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_8)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(313, -1086), "Basement Pot 9", "Bottom Of The Well Basement Pot 9", RHT_POT_BOTW, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_9)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(618, -1254), "Basement Pot 10", "Bottom Of The Well Basement Pot 10", RHT_POT_BOTW, RG_DEKU_STICK_1, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_10)); + locationTable[RC_BOTW_B3_WEST_POT_GROUP_FRONT] = Location::Pot(RC_BOTW_B3_WEST_POT_GROUP_FRONT, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(257, -1099), "Basement Pot 11", "Bottom Of The Well Basement Pot 11", RHT_POT_BOTW, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_11)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(296, -1206), "Basement Pot 12", "Bottom Of The Well Basement Pot 12", RHT_POT_BOTW, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_12)); + locationTable[RC_BOTW_FAKE_WALL_SOUTH_POT] = Location::Pot(RC_BOTW_FAKE_WALL_SOUTH_POT, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-969, 55), "Fake Wall South Pot", RHT_BOTW_FAKE_WALL_SOUTH_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_FAKE_WALL_SOUTH_POT)); + locationTable[RC_BOTW_FAKE_WALL_CENTRAL_POT] = Location::Pot(RC_BOTW_FAKE_WALL_CENTRAL_POT, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-966, 9), "Fake Wall Central Pot", RHT_BOTW_FAKE_WALL_CENTRAL_POT, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT)); + locationTable[RC_BOTW_FAKE_WALL_NORTH_POT] = Location::Pot(RC_BOTW_FAKE_WALL_NORTH_POT, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-965, -32), "Fake Wall North Pot", RHT_BOTW_FAKE_WALL_NORTH_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_FAKE_WALL_NORTH_POT)); + locationTable[RC_BOTW_ENTRYWAY_WEST_POT] = Location::Pot(RC_BOTW_ENTRYWAY_WEST_POT, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-41, 389), "Entryway West Pot", RHT_BOTW_ENTRYWAY_EAST_POT, RG_DEKU_STICK_1, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_ENTRYWAY_EAST_POT)); + locationTable[RC_BOTW_ENTRYWAY_EAST_POT] = Location::Pot(RC_BOTW_ENTRYWAY_EAST_POT, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(36, 389), "Entryway East Pot", RHT_BOTW_ENTRYWAY_WEST_POT, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_ENTRYWAY_WEST_POT)); + locationTable[RC_BOTW_3_HIDDEN_PITS_POT] = Location::Pot(RC_BOTW_3_HIDDEN_PITS_POT, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(874, -1294), "Fire Keese Pot 1", "Bottom Of The Well Fire Keese Pot 1", RHT_POT_BOTW, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1)); + locationTable[RC_BOTW_SUNKEN_POT] = Location::Pot(RC_BOTW_SUNKEN_POT, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(3, -1641), "Sunken Pot", RHT_BOTW_SUNKEN_POT, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_SUNKEN_POT)); locationTable[RC_ICE_CAVERN_HALL_POT_1] = Location::Pot(RC_ICE_CAVERN_HALL_POT_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-206, 449), "Hall Pot 1", "Ice Cavern Hall Pot 1", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HALL_POT_1)); locationTable[RC_ICE_CAVERN_HALL_POT_2] = Location::Pot(RC_ICE_CAVERN_HALL_POT_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-203, 492), "Hall Pot 2", "Ice Cavern Hall Pot 2", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HALL_POT_2)); locationTable[RC_ICE_CAVERN_SPINNING_BLADE_POT_1] = Location::Pot(RC_ICE_CAVERN_SPINNING_BLADE_POT_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(433, -732), "Spinning Blade Pot 1", "Ice Cavern Spinning Blade Pot 1", RHT_POT_ICE_CAVERN, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_1)); @@ -1496,13 +1496,13 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4303, -2657), "MQ Spike Baricade Pot", "Shadow Temple MQ Spike Baricade Pot", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT)); locationTable[RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4575, -811), "MQ Dead Hand Pot 1", "Shadow Temple MQ Dead Hand Pot 1", RHT_POT_SHADOW_TEMPLE, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1)); locationTable[RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4036, -811), "MQ Dead Hand Pot 2", "Shadow Temple MQ Dead Hand Pot 2", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(339, -377), "MQ Inner Lobby Pot 1", "Bottom Of The Well MQ Inner Lobby Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(416, -377), "MQ Inner Lobby Pot 2", "Bottom Of The Well MQ Inner Lobby Pot 2", RHT_POT_BOTTOM_OF_THE_WELL, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(269, -376), "MQ Inner Lobby Pot 3", "Bottom Of The Well MQ Inner Lobby Pot 3", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(421, -174), "MQ Outer Lobby Pot", "Bottom Of The Well MQ Outer Lobby Pot", RHT_POT_BOTTOM_OF_THE_WELL, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_1, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(288, -1240), "MQ East Inner Pot 1", "Bottom Of The Well MQ East Inner Room Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_1)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_2, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(438, -1234), "MQ East Inner Pot 2", "Bottom Of The Well MQ East Inner Room Pot 2", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_2)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_3, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(444, -1114), "MQ East Inner Pot 3", "Bottom Of The Well MQ East Inner Room Pot 3", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_3)); + locationTable[RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(339, -377), "MQ Inner Lobby Pot 1", "Bottom Of The Well MQ Inner Lobby Pot 1", RHT_POT_BOTW, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1)); + locationTable[RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(416, -377), "MQ Inner Lobby Pot 2", "Bottom Of The Well MQ Inner Lobby Pot 2", RHT_POT_BOTW, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2)); + locationTable[RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(269, -376), "MQ Inner Lobby Pot 3", "Bottom Of The Well MQ Inner Lobby Pot 3", RHT_POT_BOTW, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3)); + locationTable[RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(421, -174), "MQ Outer Lobby Pot", "Bottom Of The Well MQ Outer Lobby Pot", RHT_POT_BOTW, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT)); + locationTable[RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_1, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(288, -1240), "MQ East Inner Pot 1", "Bottom Of The Well MQ East Inner Room Pot 1", RHT_POT_BOTW, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_1)); + locationTable[RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_2, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(438, -1234), "MQ East Inner Pot 2", "Bottom Of The Well MQ East Inner Room Pot 2", RHT_POT_BOTW, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_2)); + locationTable[RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_3, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(444, -1114), "MQ East Inner Pot 3", "Bottom Of The Well MQ East Inner Room Pot 3", RHT_POT_BOTW, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_3)); locationTable[RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-357, 957), "MQ Entrance Pot 1", "Fire Temple MQ Entrance Pot 1", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1)); locationTable[RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_2] = Location::Pot(RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(356, 959), "MQ Entrance Pot 2", "Fire Temple MQ Entrance Pot 2", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2)); locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(187, -1449), "MQ Before Mini Boss Pot 1", "Fire Temple MQ Before Mini Boss Pot 1", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1)); @@ -1808,7 +1808,7 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY] = Location::Fairy(RC_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY, RCQUEST_VANILLA,RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(0x1000, 54), "Beamos Song of Storms Fairy", "Beamos Song of Storms Fairy", RHT_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY)); locationTable[RC_SHADOW_TEMPLE_PIT_STORM_FAIRY] = Location::Fairy(RC_SHADOW_TEMPLE_PIT_STORM_FAIRY, RCQUEST_VANILLA,RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(0x1000, 3339), "Pit Room Song of Storms Fairy", "Pit Room Song of Storms Fairy", RHT_SHADOW_TEMPLE_PIT_STORM_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_PIT_STORM_FAIRY)); locationTable[RC_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY] = Location::Fairy(RC_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY, RCQUEST_VANILLA,RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(0x1000, -127), "Wind Hint Sun's Song Fairy", "Wind Hint Sun's Song Fairy", RHT_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_SUN_FAIRY] = Location::Fairy(RC_BOTTOM_OF_THE_WELL_BASEMENT_SUN_FAIRY, RCQUEST_VANILLA,RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -1531), "Basement Sun's Song Fairy", "Basement Sun's Song Fairy", RHT_BOTTOM_OF_THE_WELL_BASEMENT_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_SUN_FAIRY)); + locationTable[RC_BOTW_B3_SUN_FAIRY] = Location::Fairy(RC_BOTW_B3_SUN_FAIRY, RCQUEST_VANILLA,RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -1531), "Basement Sun's Song Fairy", "Basement Sun's Song Fairy", RHT_BOTTOM_OF_THE_WELL_BASEMENT_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_SUN_FAIRY)); locationTable[RC_ICE_CAVERN_ENTRANCE_STORMS_FAIRY] = Location::Fairy(RC_ICE_CAVERN_ENTRANCE_STORMS_FAIRY, RCQUEST_VANILLA,RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(0x1000, 1186), "Entrance Song of Storms Fairy", "Ice Cavern Entrance Song of Storms Fairy", RHT_ICE_CAVERN_ENTRANCE_STORMS_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_ENTRANCE_STORMS_FAIRY)); locationTable[RC_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY] = Location::Fairy(RC_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY, RCQUEST_VANILLA,RCAREA_GERUDO_TRAINING_GROUND,SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(0x1000, -445), "Entrance Song of Storms Fairy", "GTG Entrance Song of Storms Fairy", RHT_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY)); locationTable[RC_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY] = Location::Fairy(RC_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY, RCQUEST_VANILLA,RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(0x1000, 587), "Spirit Trial Beamos Sun's Song Fairy", "Spirit Trial Beamos Sun's Song Fairy", RHT_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY)); @@ -1986,8 +1986,8 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_MIDDLE_RUPEE] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_MIDDLE_RUPEE, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(47, -805), "Basement Platform Middle Rupee", RHT_BOTTOM_OF_THE_WELL_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_MIDDLE_RUPEE)); locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_BACK_RIGHT_RUPEE] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_BACK_RIGHT_RUPEE, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(94, -762), "Basement Platform Back Right Rupee", RHT_BOTTOM_OF_THE_WELL_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_BACK_RIGHT_RUPEE)); locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_RIGHT_RUPEE] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_RIGHT_RUPEE, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-85, -710), "Basement Platform Right Rupee", RHT_BOTTOM_OF_THE_WELL_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_RIGHT_RUPEE)); - locationTable[RC_BOTTOM_OF_THE_WELL_COFFIN_ROOM_FRONT_LEFT_HEART] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_COFFIN_ROOM_FRONT_LEFT_HEART, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-1947, -625), "Coffin Room Front Left Heart", RHT_BOTTOM_OF_THE_WELL_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_COFFIN_ROOM_FRONT_LEFT_HEART)); - locationTable[RC_BOTTOM_OF_THE_WELL_COFFIN_ROOM_MIDDLE_RIGHT_HEART] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_COFFIN_ROOM_MIDDLE_RIGHT_HEART, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-2144, -859), "Coffin Room Middle Right Heart", RHT_BOTTOM_OF_THE_WELL_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_COFFIN_ROOM_MIDDLE_RIGHT_HEART)); + locationTable[RC_BOTW_SOUTHEAST_COFFIN_HEART] = Location::Collectable(RC_BOTW_SOUTHEAST_COFFIN_HEART, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-1947, -625), "Coffin Room Front Left Heart", RHT_BOTTOM_OF_THE_WELL_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_COFFIN_ROOM_FRONT_LEFT_HEART)); + locationTable[RC_BOTW_OPEN_COFFIN_HEART] = Location::Collectable(RC_BOTW_OPEN_COFFIN_HEART, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-2144, -859), "Coffin Room Middle Right Heart", RHT_BOTTOM_OF_THE_WELL_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_COFFIN_ROOM_MIDDLE_RIGHT_HEART)); locationTable[RC_ICE_CAVERN_LOBBY_RUPEE] = Location::Collectable(RC_ICE_CAVERN_LOBBY_RUPEE, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-105, 854), "Lobby Rupee", RHT_ICE_CAVERN_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_LOBBY_RUPEE)); locationTable[RC_ICE_CAVERN_MAP_ROOM_LEFT_HEART] = Location::Collectable(RC_ICE_CAVERN_MAP_ROOM_LEFT_HEART, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1171, -2258), "Map Room Left Heart", RHT_ICE_CAVERN_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MAP_ROOM_LEFT_HEART)); diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index 0d22167555b..0ded5ae42d9 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -1331,15 +1331,15 @@ std::map rcToRandomizerInf = { { RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_8 }, { RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_9 }, { RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_10 }, - { RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_11, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_11 }, + { RC_BOTW_B3_WEST_POT_GROUP_FRONT, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_11 }, { RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_12 }, - { RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1, RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1 }, - { RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2, RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2 }, - { RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3, RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3 }, - { RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1, RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1 }, - { RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2, RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2 }, - { RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1, RAND_INF_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1 }, - { RC_BOTTOM_OF_THE_WELL_UNDERWATER_POT, RAND_INF_BOTTOM_OF_THE_WELL_UNDERWATER_POT }, + { RC_BOTW_FAKE_WALL_SOUTH_POT, RAND_INF_BOTW_FAKE_WALL_SOUTH_POT }, + { RC_BOTW_FAKE_WALL_CENTRAL_POT, RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT }, + { RC_BOTW_FAKE_WALL_NORTH_POT, RAND_INF_BOTW_FAKE_WALL_NORTH_POT }, + { RC_BOTW_ENTRYWAY_WEST_POT, RAND_INF_BOTW_ENTRYWAY_EAST_POT }, + { RC_BOTW_ENTRYWAY_EAST_POT, RAND_INF_BOTW_ENTRYWAY_WEST_POT }, + { RC_BOTW_3_HIDDEN_PITS_POT, RAND_INF_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1 }, + { RC_BOTW_SUNKEN_POT, RAND_INF_BOTW_SUNKEN_POT }, { RC_ICE_CAVERN_HALL_POT_1, RAND_INF_ICE_CAVERN_HALL_POT_1 }, { RC_ICE_CAVERN_HALL_POT_2, RAND_INF_ICE_CAVERN_HALL_POT_2 }, { RC_ICE_CAVERN_SPINNING_BLADE_POT_1, RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_1 }, diff --git a/soh/soh/Enhancements/randomizer/randomizerTypes.h b/soh/soh/Enhancements/randomizer/randomizerTypes.h index 72dd800e601..f71ef6eac3c 100644 --- a/soh/soh/Enhancements/randomizer/randomizerTypes.h +++ b/soh/soh/Enhancements/randomizer/randomizerTypes.h @@ -496,7 +496,7 @@ typedef enum { RR_WATER_TEMPLE_ENTRYWAY, RR_SPIRIT_TEMPLE_ENTRYWAY, RR_SHADOW_TEMPLE_ENTRYWAY, - RR_BOTTOM_OF_THE_WELL_ENTRYWAY, + RR_BOTW_ENTRYWAY, RR_ICE_CAVERN_ENTRYWAY, RR_GERUDO_TRAINING_GROUND_ENTRYWAY, RR_GANONS_CASTLE_ENTRYWAY, @@ -892,19 +892,19 @@ typedef enum { RR_SHADOW_TEMPLE_BOSS_ENTRYWAY, RR_SHADOW_TEMPLE_BOSS_ROOM, - RR_BOTTOM_OF_THE_WELL_PERIMETER, - RR_BOTTOM_OF_THE_WELL_BEHIND_FAKE_WALLS, - RR_BOTTOM_OF_THE_WELL_SOUTHWEST_ROOM, - RR_BOTTOM_OF_THE_WELL_KEESE_BEAMOS_ROOM, - RR_BOTTOM_OF_THE_WELL_LIKE_LIKE_CAGE, - RR_BOTTOM_OF_THE_WELL_INNER_ROOMS, - RR_BOTTOM_OF_THE_WELL_COFFIN_ROOM, - RR_BOTTOM_OF_THE_WELL_DEAD_HAND_ROOM, - RR_BOTTOM_OF_THE_WELL_BASEMENT, - RR_BOTTOM_OF_THE_WELL_BASEMENT_USEFUL_BOMB_FLOWERS, - RR_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM, - - RR_BOTTOM_OF_THE_WELL_MQ_PERIMETER, + RR_BOTW_PERIMETER, + RR_BOTW_REQUIRES_LENS, + RR_BOTW_SOUTHWEST_ROOM, + RR_BOTW_3_HIDDEN_PITS_ROOM, + RR_BOTW_OUTER_CAGE, + RR_BOTW_CENTRAL_ROOMS, + RR_BOTW_COFFIN_ROOM, + RR_BOTW_DEAD_HAND_ROOM, + RR_BOTW_B3, + RR_BOTW_B3_EAST_BOMB_FLOWERS, + RR_BOTW_B3_PLATFORM, + + RR_BOTW_MQ_PERIMETER, RR_BOTTOM_OF_THE_WELL_MQ_WEST_ROOM_SWITCH, RR_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM, RR_BOTTOM_OF_THE_WELL_MQ_LOCKED_CAGE, @@ -1447,23 +1447,23 @@ typedef enum { RC_JABU_JABUS_BELLY_MQ_GS_INVISIBLE_ENEMIES_ROOM, RC_JABU_JABUS_BELLY_MQ_GS_NEAR_BOSS, RC_JABU_JABUS_BELLY_BARINADE_HEART, - RC_BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST, - RC_BOTTOM_OF_THE_WELL_FRONT_CENTER_BOMBABLE_CHEST, - RC_BOTTOM_OF_THE_WELL_BACK_LEFT_BOMBABLE_CHEST, - RC_BOTTOM_OF_THE_WELL_UNDERWATER_LEFT_CHEST, - RC_BOTTOM_OF_THE_WELL_FREESTANDING_KEY, - RC_BOTTOM_OF_THE_WELL_COMPASS_CHEST, - RC_BOTTOM_OF_THE_WELL_CENTER_SKULLTULA_CHEST, - RC_BOTTOM_OF_THE_WELL_RIGHT_BOTTOM_FAKE_WALL_CHEST, - RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST, - RC_BOTTOM_OF_THE_WELL_LIKE_LIKE_CHEST, - RC_BOTTOM_OF_THE_WELL_MAP_CHEST, - RC_BOTTOM_OF_THE_WELL_UNDERWATER_FRONT_CHEST, - RC_BOTTOM_OF_THE_WELL_INVISIBLE_CHEST, - RC_BOTTOM_OF_THE_WELL_LENS_OF_TRUTH_CHEST, - RC_BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM, - RC_BOTTOM_OF_THE_WELL_GS_EAST_INNER_ROOM, - RC_BOTTOM_OF_THE_WELL_GS_LIKE_LIKE_CAGE, + RC_BOTW_WEST_FAKE_WALL_CHEST, + RC_BOTW_SOUTH_RUBBLE_CHEST, + RC_BOTW_NORTH_RUBBLE_CHEST, + RC_BOTW_WEST_SUNKEN_CHEST, + RC_BOTW_COFFIN_KEY, + RC_BOTW_B1_CENTRAL_WEST_CHEST, + RC_BOTW_B1_CENTRAL_EAST_CHEST, + RC_BOTW_EAST_FAKE_WALL_CHEST, + RC_BOTW_3_HIDDEN_PITS_CHEST, + RC_BOTW_OUTER_CAGE_CHEST, + RC_BOTW_B3_CHEST, + RC_BOTW_SOUTH_SUNKEN_CHEST, + RC_BOTW_INVISIBLE_CHEST, + RC_BOTW_DEAD_HAND_CHEST, + RC_BOTW_CENTER_WEST_ROOM_GS, + RC_BOTW_CENTER_EAST_ROOM_GS, + RC_BOTW_OUTER_CAGE_GS, RC_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST, RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY, RC_BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST, @@ -1961,15 +1961,15 @@ typedef enum { RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8, RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9, RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_11, + RC_BOTW_B3_WEST_POT_GROUP_FRONT, RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12, - RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1, - RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2, - RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3, - RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1, - RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2, - RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1, - RC_BOTTOM_OF_THE_WELL_UNDERWATER_POT, + RC_BOTW_FAKE_WALL_SOUTH_POT, + RC_BOTW_FAKE_WALL_CENTRAL_POT, + RC_BOTW_FAKE_WALL_NORTH_POT, + RC_BOTW_ENTRYWAY_WEST_POT, + RC_BOTW_ENTRYWAY_EAST_POT, + RC_BOTW_3_HIDDEN_PITS_POT, + RC_BOTW_SUNKEN_POT, RC_FOREST_TEMPLE_LOBBY_POT_1, RC_FOREST_TEMPLE_LOBBY_POT_2, RC_FOREST_TEMPLE_LOBBY_POT_3, @@ -2553,8 +2553,8 @@ typedef enum { RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_MIDDLE_RUPEE, RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_BACK_RIGHT_RUPEE, RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_RIGHT_RUPEE, - RC_BOTTOM_OF_THE_WELL_COFFIN_ROOM_FRONT_LEFT_HEART, - RC_BOTTOM_OF_THE_WELL_COFFIN_ROOM_MIDDLE_RIGHT_HEART, + RC_BOTW_SOUTHEAST_COFFIN_HEART, + RC_BOTW_OPEN_COFFIN_HEART, RC_ICE_CAVERN_LOBBY_RUPEE, RC_ICE_CAVERN_MAP_ROOM_LEFT_HEART, RC_ICE_CAVERN_MAP_ROOM_MIDDLE_HEART, @@ -2806,7 +2806,7 @@ typedef enum { RC_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY, RC_SHADOW_TEMPLE_PIT_STORM_FAIRY, RC_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY, - RC_BOTTOM_OF_THE_WELL_BASEMENT_SUN_FAIRY, + RC_BOTW_B3_SUN_FAIRY, RC_ICE_CAVERN_ENTRANCE_STORMS_FAIRY, RC_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY, RC_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY, @@ -4039,18 +4039,18 @@ typedef enum { RHT_JABU_JABUS_BELLY_MQ_GS_INVISIBLE_ENEMIES_ROOM, RHT_JABU_JABUS_BELLY_MQ_GS_NEAR_BOSS, RHT_JABU_JABUS_BELLY_BARINADE_HEART, - RHT_BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST, - RHT_BOTTOM_OF_THE_WELL_FRONT_CENTER_BOMBABLE_CHEST, - RHT_BOTTOM_OF_THE_WELL_BACK_LEFT_BOMBABLE_CHEST, - RHT_BOTTOM_OF_THE_WELL_UNDERWATER_LEFT_CHEST, - RHT_BOTTOM_OF_THE_WELL_FREESTANDING_KEY, - RHT_BOTTOM_OF_THE_WELL_COMPASS_CHEST, - RHT_BOTTOM_OF_THE_WELL_CENTER_SKULLTULA_CHEST, - RHT_BOTTOM_OF_THE_WELL_RIGHT_BOTTOM_FAKE_WALL_CHEST, + RHT_BOTW_WEST_FAKE_WALL_CHEST, + RHT_BOTW_SOUTH_RUBBLE_CHEST, + RHT_BOTW_NORTH_RUBBLE_CHEST, + RHT_BOTW_WEST_SUNKEN_CHEST, + RHT_BOTW_COFFIN_KEY, + RHT_BOTW_CENTRAL_WEST_CHEST, + RHT_BOTW_SKULLTULA_CHEST, + RHT_BOTW_EAST_FAKE_WALL_CHEST, RHT_BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST, RHT_BOTTOM_OF_THE_WELL_LIKE_LIKE_CHEST, RHT_BOTTOM_OF_THE_WELL_MAP_CHEST, - RHT_BOTTOM_OF_THE_WELL_UNDERWATER_FRONT_CHEST, + RHT_BOTW_SOUTH_SUNKEN_CHEST, RHT_BOTTOM_OF_THE_WELL_INVISIBLE_CHEST, RHT_BOTTOM_OF_THE_WELL_LENS_OF_TRUTH_CHEST, RHT_BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM, @@ -4841,7 +4841,13 @@ typedef enum { RHT_POT_SHADOW_TEMPLE, RHT_POT_SPIRIT_TEMPLE, RHT_POT_GANONS_CASTLE, - RHT_POT_BOTTOM_OF_THE_WELL, + RHT_POT_BOTW, + RHT_BOTW_ENTRYWAY_EAST_POT, + RHT_BOTW_ENTRYWAY_WEST_POT, + RHT_BOTW_SUNKEN_POT, + RHT_BOTW_FAKE_WALL_SOUTH_POT, + RHT_BOTW_FAKE_WALL_CENTRAL_POT, + RHT_BOTW_FAKE_WALL_NORTH_POT, RHT_POT_ICE_CAVERN, // Ganon Line RHT_GANON_JOKE01, diff --git a/soh/soh/Enhancements/randomizer/randomizer_inf.h b/soh/soh/Enhancements/randomizer/randomizer_inf.h index c66c06fabb4..75b80ad0de8 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_inf.h +++ b/soh/soh/Enhancements/randomizer/randomizer_inf.h @@ -529,13 +529,13 @@ typedef enum { RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_10, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_11, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_12, - RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1, - RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2, - RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3, - RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1, - RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2, + RAND_INF_BOTW_FAKE_WALL_SOUTH_POT, + RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT, + RAND_INF_BOTW_FAKE_WALL_NORTH_POT, + RAND_INF_BOTW_ENTRYWAY_EAST_POT, + RAND_INF_BOTW_ENTRYWAY_WEST_POT, RAND_INF_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1, - RAND_INF_BOTTOM_OF_THE_WELL_UNDERWATER_POT, + RAND_INF_BOTW_SUNKEN_POT, RAND_INF_ICE_CAVERN_HALL_POT_1, RAND_INF_ICE_CAVERN_HALL_POT_2, RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_1, From ddfe33fce868465e7b43bd24a772a595d88ff0d2 Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Sun, 12 Jan 2025 21:59:56 +0000 Subject: [PATCH 2/6] rename BotW related things --- .../Enhancements/debugger/debugSaveEditor.h | 70 +-- .../randomizer/3drando/hint_list.cpp | 4 +- .../hint_list/hint_list_exclude_dungeon.cpp | 266 +++++---- .../3drando/hint_list/hint_list_item.cpp | 14 +- .../randomizer/3drando/item_pool.cpp | 16 +- .../Enhancements/randomizer/Plandomizer.cpp | 20 +- soh/soh/Enhancements/randomizer/dungeon.cpp | 92 ++-- soh/soh/Enhancements/randomizer/item_list.cpp | 508 +++++++++--------- soh/soh/Enhancements/randomizer/location.cpp | 9 +- soh/soh/Enhancements/randomizer/location.h | 2 + .../dungeons/bottom_of_the_well.cpp | 230 ++++---- .../Enhancements/randomizer/location_list.cpp | 158 +++--- soh/soh/Enhancements/randomizer/logic.cpp | 18 +- soh/soh/Enhancements/randomizer/logic.h | 2 +- .../Enhancements/randomizer/randomizer.cpp | 88 +-- .../Enhancements/randomizer/randomizerTypes.h | 207 ++++--- .../randomizer/randomizer_check_objects.cpp | 4 +- .../randomizer/randomizer_check_tracker.cpp | 6 +- .../Enhancements/randomizer/randomizer_inf.h | 74 +-- soh/soh/Enhancements/randomizer/settings.cpp | 2 +- 20 files changed, 947 insertions(+), 843 deletions(-) diff --git a/soh/soh/Enhancements/debugger/debugSaveEditor.h b/soh/soh/Enhancements/debugger/debugSaveEditor.h index 0956ff803ee..ae1fb517994 100644 --- a/soh/soh/Enhancements/debugger/debugSaveEditor.h +++ b/soh/soh/Enhancements/debugger/debugSaveEditor.h @@ -825,24 +825,24 @@ const std::vector flagTables = { { RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_16, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_16" }, { RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_17, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_17" }, { RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18" }, - { RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_1, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_1" }, - { RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_2, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_2" }, - { RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_3, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_3" }, - { RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_4, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_4" }, - { RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_5, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_5" }, - { RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_6, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_6" }, - { RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_7, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_7" }, - { RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_8, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_8" }, - { RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_9, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_9" }, - { RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_10, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_10" }, - { RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_11, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_11" }, - { RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_12, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_12" }, + { RAND_INF_BOTW_B3_WEST_CENTER_POT, "RAND_INF_BOTW_B3_WEST_CENTER_POT" }, + { RAND_INF_BOTW_B3_EAST_CENTER_POT, "RAND_INF_BOTW_B3_EAST_CENTER_POT" }, + { RAND_INF_BOTW_B3_WEST_V_MID_NORTH_POT, "RAND_INF_BOTW_B3_WEST_V_MID_NORTH_POT" }, + { RAND_INF_BOTW_B3_EAST_V_MIDDLE_POT, "RAND_INF_BOTW_B3_EAST_V_MIDDLE_POT" }, + { RAND_INF_BOTW_B3_WEST_V_SOUTHMOST_POT, "RAND_INF_BOTW_B3_WEST_V_SOUTHMOST_POT" }, + { RAND_INF_BOTW_B3_EAST_V_SOUTHMOST_POT, "RAND_INF_BOTW_B3_EAST_V_SOUTHMOST_POT" }, + { RAND_INF_BOTW_B3_EAST_V_NORTHMOST_POT, "RAND_INF_BOTW_B3_EAST_V_NORTHMOST_POT" }, + { RAND_INF_BOTW_B3_EAST_V_MID_NORTH_POT, "RAND_INF_BOTW_B3_EAST_V_MID_NORTH_POT" }, + { RAND_INF_BOTW_B3_WEST_V_MID_SOUTH_POT, "RAND_INF_BOTW_B3_WEST_V_MID_SOUTH_POT" }, + { RAND_INF_BOTW_B3_EAST_V_MID_SOUTH_POT, "RAND_INF_BOTW_B3_EAST_V_MID_SOUTH_POT" }, + { RAND_INF_BOTW_B3_WEST_V_MIDDLE_POT, "RAND_INF_BOTW_B3_WEST_V_MIDDLE_POT" }, + { RAND_INF_BOTW_B3_WEST_V_NORTHMOST_POT, "RAND_INF_BOTW_B3_WEST_V_NORTHMOST_POT" }, { RAND_INF_BOTW_FAKE_WALL_SOUTH_POT, "RAND_INF_BOTW_FAKE_WALL_SOUTH_POT" }, { RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT, "RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT" }, { RAND_INF_BOTW_FAKE_WALL_NORTH_POT, "RAND_INF_BOTW_FAKE_WALL_NORTH_POT" }, { RAND_INF_BOTW_ENTRYWAY_EAST_POT, "RAND_INF_BOTW_ENTRYWAY_EAST_POT" }, { RAND_INF_BOTW_ENTRYWAY_WEST_POT, "RAND_INF_BOTW_ENTRYWAY_WEST_POT" }, - { RAND_INF_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1, "RAND_INF_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1" }, + { RAND_INF_BOTW_3_HIDDEN_PITS_POT, "RAND_INF_BOTW_3_HIDDEN_PITS_POT" }, { RAND_INF_BOTW_SUNKEN_POT, "RAND_INF_BOTW_SUNKEN_POT" }, { RAND_INF_ICE_CAVERN_HALL_POT_1, "RAND_INF_ICE_CAVERN_HALL_POT_1" }, { RAND_INF_ICE_CAVERN_HALL_POT_2, "RAND_INF_ICE_CAVERN_HALL_POT_2" }, @@ -942,13 +942,13 @@ const std::vector flagTables = { { RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT, "RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT" }, { RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1, "RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1" }, { RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2, "RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2" }, - { RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1" }, - { RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2" }, - { RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3" }, - { RAND_INF_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT" }, - { RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_1, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_1" }, - { RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_2, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_2" }, - { RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_3, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_3" }, + { RAND_INF_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT, "RAND_INF_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT" }, + { RAND_INF_BOTW_MQ_WOODEN_X_ROOM_EAST_POT, "RAND_INF_BOTW_MQ_WOODEN_X_ROOM_EAST_POT" }, + { RAND_INF_BOTW_MQ_WOODEN_X_ROOM_WEST_POT, "RAND_INF_BOTW_MQ_WOODEN_X_ROOM_WEST_POT" }, + { RAND_INF_BOTW_MQ_CAGED_POT, "RAND_INF_BOTW_MQ_CAGED_POT" }, + { RAND_INF_BOTW_MQ_EAST_INNER_ROOM_FAR_POT, "RAND_INF_BOTW_MQ_EAST_INNER_ROOM_FAR_POT" }, + { RAND_INF_BOTW_MQ_EAST_INNER_ROOM_MID_POT, "RAND_INF_BOTW_MQ_EAST_INNER_ROOM_MID_POT" }, + { RAND_INF_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT, "RAND_INF_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT" }, { RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1, "RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1" }, { RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2, "RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2" }, { RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1, "RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1" }, @@ -1294,7 +1294,14 @@ const std::vector flagTables = { { RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_1, "RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_1" }, { RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_2, "RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_2" }, { RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_3, "RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_3" }, - { RAND_INF_BOTTOM_OF_THE_WELL_COFFIN_ROOM_MIDDLE_RIGHT_HEART, "RAND_INF_BOTTOM_OF_THE_WELL_COFFIN_ROOM_MIDDLE_RIGHT_HEART" }, + { RAND_INF_BOTW_B3_PLATFORM_NORTH_RUPEE, "RAND_INF_BOTW_B3_PLATFORM_NORTH_RUPEE" }, + { RAND_INF_RHT_BOTW_B3_PLATFORM_NORTHWEST_RUPEE, "RAND_INF_RHT_BOTW_B3_PLATFORM_NORTHWEST_RUPEE" }, + { RAND_INF_RHT_BOTW_B3_PLATFORM_NORTHEAST_RUPEE, "RAND_INF_RHT_BOTW_B3_PLATFORM_NORTHEAST_RUPEE" }, + { RAND_INF_RHT_BOTW_B3_PLATFORM_WEST_RUPEE, "RAND_INF_RHT_BOTW_B3_PLATFORM_WEST_RUPEE" }, + { RAND_INF_RHT_BOTW_B3_PLATFORM_EAST_RUPEE, "RAND_INF_RHT_BOTW_B3_PLATFORM_EAST_RUPEE" }, + { RAND_INF_BOTW_SOUTHEAST_COFFIN_HEART, "RAND_INF_BOTW_SOUTHEAST_COFFIN_HEART" }, + { RAND_INF_RHT_BOTW_B3_PLATFORM_EAST_RUPEE, "RAND_INF_RHT_BOTW_B3_PLATFORM_EAST_RUPEE" }, + { RAND_INF_BOTW_OPEN_COFFIN_HEART, "RAND_INF_BOTW_OPEN_COFFIN_HEART" }, { RAND_INF_GERUDO_TRAINING_GROUND_BEAMOS_SOUTH_HEART, "RAND_INF_GERUDO_TRAINING_GROUND_BEAMOS_SOUTH_HEART" }, { RAND_INF_GERUDO_TRAINING_GROUND_BEAMOS_EAST_HEART, "RAND_INF_GERUDO_TRAINING_GROUND_BEAMOS_EAST_HEART" }, { RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_HEART_1, "RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_HEART_1" }, @@ -1328,13 +1335,13 @@ const std::vector flagTables = { { RAND_INF_SHADOW_TEMPLE_MQ_AFTER_SHIP_UPPER_LEFT_HEART, "RAND_INF_SHADOW_TEMPLE_MQ_AFTER_SHIP_UPPER_LEFT_HEART" }, { RAND_INF_SHADOW_TEMPLE_MQ_AFTER_SHIP_UPPER_RIGHT_HEART, "RAND_INF_SHADOW_TEMPLE_MQ_AFTER_SHIP_UPPER_RIGHT_HEART" }, { RAND_INF_SHADOW_TEMPLE_MQ_AFTER_SHIP_LOWER_HEART, "RAND_INF_SHADOW_TEMPLE_MQ_AFTER_SHIP_LOWER_HEART" }, - { RAND_INF_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM_FRONT_RIGHT_HEART, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM_FRONT_RIGHT_HEART" }, - { RAND_INF_BOTTOM_OF_THE_WELL_MQ_BOMB_LEFT_HEART, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_BOMB_LEFT_HEART" }, - { RAND_INF_BOTTOM_OF_THE_WELL_MQ_BOMB_RIGHT_HEART, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_BOMB_RIGHT_HEART" }, - { RAND_INF_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM_MIDDLE_LEFT_HEART, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM_MIDDLE_LEFT_HEART" }, - { RAND_INF_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_FRONT_HEART, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_FRONT_HEART" }, - { RAND_INF_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_LEFT_HEART, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_LEFT_HEART" }, - { RAND_INF_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_RIGHT_HEART, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_RIGHT_HEART" }, + { RAND_INF_BOTW_MQ_NORTHEAST_COFFIN_HEART, "RAND_INF_BOTW_MQ_NORTHEAST_COFFIN_HEART" }, + { RAND_INF_BOTW_MQ_RUBBLE_NORTH_HEART, "RAND_INF_BOTW_MQ_RUBBLE_NORTH_HEART" }, + { RAND_INF_BOTW_MQ_RUBBLE_SOUTH_HEART, "RAND_INF_BOTW_MQ_RUBBLE_SOUTH_HEART" }, + { RAND_INF_BOTW_MQ_SOUTH_COFFIN_HEART, "RAND_INF_BOTW_MQ_SOUTH_COFFIN_HEART" }, + { RAND_INF_MQ_B3_SOUTH_HEART, "RAND_INF_MQ_B3_SOUTH_HEART" }, + { RAND_INF_MQ_B3_NORTHWEST_HEART, "RAND_INF_MQ_B3_NORTHWEST_HEART" }, + { RAND_INF_MQ_B3_NORTHEAST_HEART, "RAND_INF_MQ_B3_NORTHEAST_HEART" }, { RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_HEART, "RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_HEART" }, { RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART, "RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART" }, { RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART, "RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART" }, @@ -1536,7 +1543,7 @@ const std::vector flagTables = { { RAND_INF_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY, "RAND_INF_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY" }, { RAND_INF_SHADOW_TEMPLE_PIT_STORM_FAIRY, "RAND_INF_SHADOW_TEMPLE_PIT_STORM_FAIRY" }, { RAND_INF_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY, "RAND_INF_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY" }, - { RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_SUN_FAIRY, "RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_SUN_FAIRY" }, + { RAND_INF_BOTW_B3_SUN_FAIRY, "RAND_INF_BOTW_B3_SUN_FAIRY" }, { RAND_INF_ICE_CAVERN_ENTRANCE_STORMS_FAIRY, "RAND_INF_ICE_CAVERN_ENTRANCE_STORMS_FAIRY" }, { RAND_INF_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY, "RAND_INF_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY" }, { RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY, "RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY" }, @@ -1549,8 +1556,9 @@ const std::vector flagTables = { { RAND_INF_SHADOW_TEMPLE_MQ_BEAMOS_STORM_FAIRY, "RAND_INF_SHADOW_TEMPLE_MQ_BEAMOS_STORM_FAIRY" }, { RAND_INF_SHADOW_TEMPLE_MQ_PIT_STORM_FAIRY, "RAND_INF_SHADOW_TEMPLE_MQ_PIT_STORM_FAIRY" }, { RAND_INF_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY, "RAND_INF_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY" }, - { RAND_INF_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY" }, - { RAND_INF_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY, "RAND_INF_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY" }, + { RAND_INF_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY, "RAND_INF_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY" }, + { RAND_INF_BOTW_MQ_B3_SUN_FAIRY, "RAND_INF_BOTW_MQ_B3_SUN_FAIRY" }, + } }, }; diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list.cpp index 49d090a260a..66cd6fc61e6 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list.cpp @@ -766,7 +766,7 @@ void StaticData::HintTable_Init() { /*french*/ "Selon moi, la récompense ultime de #l'épreuve des voleurs# est #[[1]]#.", {QM_RED, QM_GREEN})), // /*spanish*/el premio final de la #instrucción de las bandidas# brinda #[[1]]#. - hintTextTable[RHT_BOTTOM_OF_THE_WELL_LENS_OF_TRUTH_CHEST] = HintText(CustomMessage("They say that #Dead Hand in the well# holds #[[1]]#.", + hintTextTable[RHT_BOTW_DEAD_HAND_CHEST] = HintText(CustomMessage("They say that #Dead Hand in the well# holds #[[1]]#.", /*german*/ "Man erzählt sich, daß der #Hirnsauger im Brunnen# #[[1]]# hielte.", /*french*/ "Selon moi, le #Poigneur dans le Puits# cache #[[1]]#.", {QM_RED, QM_GREEN}), // /*spanish*/la #Mano Muerta del pozo# concede #[[1]]#. @@ -780,7 +780,7 @@ void StaticData::HintTable_Init() { /*french*/ "Selon moi, le #spectre qui réside dans le Puits# a #[[1]]#.", {QM_RED, QM_GREEN})}); // /*spanish*/el #temido morador del pozo# concede #[[1]]#. - hintTextTable[RHT_BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST] = HintText(CustomMessage("They say that #Dead Hand in the well# holds #[[1]]#.", + hintTextTable[RHT_BOTW_MQ_DEAD_HAND_CHEST] = HintText(CustomMessage("They say that #Dead Hand in the well# holds #[[1]]#.", /*german*/ "Man erzählt sich, daß der #Hirnsauger im Brunnen# #[[1]]# hielte.", /*french*/ "Selon moi, le #Poigneur dans le Puits# cache #[[1]]#.", {QM_RED, QM_GREEN}), // /*spanish*/la #Mano Muerta del pozo# concede #[[1]]#. diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp index 27dac5e76d8..77c6c7386e7 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp @@ -1548,102 +1548,103 @@ hintTextTable[RHT_SHADOW_TEMPLE_MAP_CHEST] = HintText(CustomMessage("They say th /*-------------------------- | BOTTOM OF THE WELL | ---------------------------*/ - hintTextTable[RHT_BOTW_WEST_FAKE_WALL_CHEST] = HintText(CustomMessage("They say that the #Eye of Truth in the well# reveals #[[1]]#.", - /*german*/ "Man erzählt sich, daß das #Auge der Wahrheit im Brunnen# #[[1]]# offenbare.", - /*french*/ "Selon moi, l'#oeil de vérité dans le Puits# révèle #[[1]]#.", {QM_RED, QM_GREEN})); - // /*spanish*/ Según dicen, el #Ojo de la Verdad en el pozo# revela #[[1]]#. + //RANDOTODO retranslate + hintTextTable[RHT_BOTW_WEST_FAKE_WALL_CHEST] = HintText(CustomMessage("They say that the #Eye of Truth in the well's south wall# reveals #[[1]]#.", + /*german*/ "Man erzählt sich, daß das #Auge der Wahrheit im Brunnen# #[[1]]# offenbare.", + /*french*/ "Selon moi, l'#oeil de vérité dans le Puits# révèle #[[1]]#.", {QM_RED, QM_GREEN})); + // /*spanish*/ Según dicen, el #Ojo de la Verdad en el pozo# revela #[[1]]#. hintTextTable[RHT_BOTW_SOUTH_RUBBLE_CHEST] = HintText(CustomMessage("They say that #gruesome debris# in the well hides #[[1]]#.", - /*german*/ "Man erzählt sich, daß #grauenvolle Trümmer# im Brunnen #[[1]]# verbergen würden.", - /*french*/ "Selon moi, des #débris dans le Puits# cachent #[[1]]#.", {QM_RED, QM_GREEN})); - // /*spanish*/ Según dicen, unos #horripilantes escombros# del pozo esconden #[[1]]#. - - hintTextTable[RHT_BOTW_EAST_FAKE_WALL_CHEST] = HintText(CustomMessage("They say that the #Eye of Truth in the well# reveals #[[1]]#.", - /*german*/ "Man erzählt sich, daß das #Auge der Wahrheit im Brunnen# #[[1]]# offenbare.", - /*french*/ "Selon moi, l'#oeil de vérité dans le Puits# révèle #[[1]]#.", {QM_RED, QM_GREEN})); - // /*spanish*/ Según dicen, el #Ojo de la Verdad en el pozo# revela #[[1]]#. + /*german*/ "Man erzählt sich, daß #grauenvolle Trümmer# im Brunnen #[[1]]# verbergen würden.", + /*french*/ "Selon moi, des #débris dans le Puits# cachent #[[1]]#.", {QM_RED, QM_GREEN})); + // /*spanish*/ Según dicen, unos #horripilantes escombros# del pozo esconden #[[1]]#. + //RANDOTODO retranslate + hintTextTable[RHT_BOTW_EAST_FAKE_WALL_CHEST] = HintText(CustomMessage("They say that the #Eye of Truth in the well's east wall# shows #[[1]]#.", + /*german*/ "Man erzählt sich, daß das #Auge der Wahrheit im Brunnen# #[[1]]# offenbare.", + /*french*/ "Selon moi, l'#oeil de vérité dans le Puits# révèle #[[1]]#.", {QM_RED, QM_GREEN})); + // /*spanish*/ Según dicen, el #Ojo de la Verdad en el pozo# revela #[[1]]#. hintTextTable[RHT_BOTW_CENTRAL_WEST_CHEST] = HintText(CustomMessage("They say that a #hidden entrance to a cage# in the well leads to #[[1]]#.", - /*german*/ "Man erzählt sich, daß ein #verborgener Eingang zu einem Käfig# im Brunnen zu #[[1]]# führe.", - /*french*/ "Selon moi, dans un #chemin caché dans le Puits# gît #[[1]]#.", {QM_RED, QM_GREEN})); - // /*spanish*/ Según dicen, la #entrada oculta de una celda# del pozo conduce a #[[1]]#. - - hintTextTable[RHT_BOTW_SKULLTULA_CHEST] = HintText(CustomMessage("They say that a #spider guarding a cage# in the well protects #[[1]]#.", - /*german*/ "Man erzählt sich, daß eine #einen Käfig schützende Spinne# im Brunnen #[[1]]# schütze.", - /*french*/ "Selon moi, l'#araignée dans la cage du Puits# protège #[[1]]#.", {QM_RED, QM_GREEN})); - // /*spanish*/ Según dicen, una #araña protegiendo una celda# del pozo guarda #[[1]]#. - - hintTextTable[RHT_BOTW_NORTH_RUBBLE_CHEST] = HintText(CustomMessage("They say that #gruesome debris# in the well hides #[[1]]#.", - /*german*/ "Man erzählt sich, daß #grauenvolle Trümmer# im Brunnen #[[1]]# verbergen würde.", - /*french*/ "Selon moi, des #débris dans le Puits# cachent #[[1]]#.", {QM_RED, QM_GREEN})); - // /*spanish*/ Según dicen, unos #horripilantes escombros# del pozo esconden #[[1]]#. - - hintTextTable[RHT_BOTTOM_OF_THE_WELL_INVISIBLE_CHEST] = HintText(CustomMessage("They say that #Dead Hand's invisible secret# is #[[1]]#.", - /*german*/ "Man erzählt sich, daß das #unsichtbare Geheimnis der toten Hand# #[[1]]# sei.", - /*french*/ "Selon moi, le #trésor invisible du Poigneur# est #[[1]]#.", {QM_RED, QM_GREEN})); - // /*spanish*/ Según dicen, el #secreto invisible de la Mano Muerta# esconde #[[1]]#. - - hintTextTable[RHT_BOTW_SOUTH_SUNKEN_CHEST] = HintText(CustomMessage("They say that a #royal melody in the well# uncovers #[[1]]#.", - /*german*/ "Man erzählt sich, daß eine #königliche Melodie im Brunnen# #[[1]]# enthüllen würde.", - /*french*/ "Selon moi, la #mélodie royale révèle dans le Puits# #[[1]]#.", {QM_RED, QM_GREEN})); - // /*spanish*/ Según dicen, una #melodía real en el pozo# revela #[[1]]#. + /*german*/ "Man erzählt sich, daß ein #verborgener Eingang zu einem Käfig# im Brunnen zu #[[1]]# führe.", + /*french*/ "Selon moi, dans un #chemin caché dans le Puits# gît #[[1]]#.", {QM_RED, QM_GREEN})); + // /*spanish*/ Según dicen, la #entrada oculta de una celda# del pozo conduce a #[[1]]#. + + hintTextTable[RHT_BOTW_CENTRAL_EAST_CHEST] = HintText(CustomMessage("They say that a #spider guarding a cage# in the well protects #[[1]]#.", + /*german*/ "Man erzählt sich, daß eine #einen Käfig schützende Spinne# im Brunnen #[[1]]# schütze.", + /*french*/ "Selon moi, l'#araignée dans la cage du Puits# protège #[[1]]#.", {QM_RED, QM_GREEN})); + // /*spanish*/ Según dicen, una #araña protegiendo una celda# del pozo guarda #[[1]]#. + //RANDOTODO retranslate + hintTextTable[RHT_BOTW_NORTH_RUBBLE_CHEST] = HintText(CustomMessage("They say that #trapped debris# in the well hoardes #[[1]]#.", + /*german*/ "Man erzählt sich, daß #grauenvolle Trümmer# im Brunnen #[[1]]# verbergen würde.", + /*french*/ "Selon moi, des #débris dans le Puits# cachent #[[1]]#.", {QM_RED, QM_GREEN})); + // /*spanish*/ Según dicen, unos #horripilantes escombros# del pozo esconden #[[1]]#. + + hintTextTable[RHT_BOTW_INVISIBLE_CHEST] = HintText(CustomMessage("They say that #Dead Hand's invisible secret# is #[[1]]#.", + /*german*/ "Man erzählt sich, daß das #unsichtbare Geheimnis der toten Hand# #[[1]]# sei.", + /*french*/ "Selon moi, le #trésor invisible du Poigneur# est #[[1]]#.", {QM_RED, QM_GREEN})); + // /*spanish*/ Según dicen, el #secreto invisible de la Mano Muerta# esconde #[[1]]#. + //RANDOTODO retranslate + hintTextTable[RHT_BOTW_SOUTH_SUNKEN_CHEST] = HintText(CustomMessage("They say that a #sunken on the path to well's tomb# lie #[[1]]#.", + /*german*/ "Man erzählt sich, daß eine #königliche Melodie im Brunnen# #[[1]]# enthüllen würde.", + /*french*/ "Selon moi, la #mélodie royale révèle dans le Puits# #[[1]]#.", {QM_RED, QM_GREEN})); + // /*spanish*/ Según dicen, una #melodía real en el pozo# revela #[[1]]#. hintTextTable[RHT_BOTW_WEST_SUNKEN_CHEST] = HintText(CustomMessage("They say that a #royal melody in the well# uncovers #[[1]]#.", - /*german*/ "Man erzählt sich, daß eine #königliche Melodie im Brunnen# #[[1]]# enthüllen würde.", - /*french*/ "Selon moi, la #mélodie royale révèle dans le Puits# #[[1]]#.", {QM_RED, QM_GREEN})); - // /*spanish*/ Según dicen, una #melodía real en el pozo# revela #[[1]]#. - - hintTextTable[RHT_BOTTOM_OF_THE_WELL_MAP_CHEST] = HintText(CustomMessage("They say that in the #depths of the well# lies #[[1]]#.", - /*german*/ "Man erzählt sich, daß in den #Tiefen des Brunnens# #[[1]]# läge.", - /*french*/ "Selon moi, #dans le coeur du Puits# gît #[[1]]#.", {QM_RED, QM_GREEN})); - // /*spanish*/ Según dicen, en las #profundidades del pozo# yace #[[1]]#. - - hintTextTable[RHT_BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST] = HintText(CustomMessage("They say that #perilous pits# in the well guard the path to #[[1]]#.", - /*german*/ "Man erzählt sich, daß #gefährliche Gruben# im Brunnen den Pfad zu #[[1]]# bewachen würden.", - /*french*/ "Selon moi, #trois trous# dans le Puits protègent #[[1]]#.", {QM_RED, QM_GREEN})); - // /*spanish*/ Según dicen, #peligrosos fosos# del pozo conducen a #[[1]]#. - - hintTextTable[RHT_BOTTOM_OF_THE_WELL_LIKE_LIKE_CHEST] = HintText(CustomMessage("They say that #locked in a cage# in the well lies #[[1]]#.", - /*german*/ "Man erzählt sich, daß #in einem Käfig eingeschlossen# im Brunnen #[[1]]# läge.", - /*french*/ "Selon moi, #dans une cage# du Puits gît #[[1]]#.", {QM_RED, QM_GREEN})); - // /*spanish*/ Según dicen, #entre rejas# en el pozo yace #[[1]]#. - - hintTextTable[RHT_BOTW_COFFIN_KEY] = HintText(CustomMessage("They say that #inside a coffin# hides #[[1]]#.", - /*german*/ "Man erzählt sich, daß #in einem Sarg# #[[1]]# verborgen läge.", - /*french*/ "Selon moi, dans #un cercueil# gît #[[1]]#.", {QM_RED, QM_GREEN})); - // /*spanish*/ Según dicen, en el #interior de un ataúd# yace #[[1]]#. - - hintTextTable[RHT_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST] = HintText(CustomMessage("They say that a #royal melody in the well# uncovers #[[1]]#.", - /*german*/ "Man erzählt sich, daß eine #königliche Melodie im Brunnen# #[[1]]# enthüllen würde.", - /*french*/ "Selon moi, la #mélodie royale révèle dans le Puits# #[[1]]#.", {QM_RED, QM_GREEN})); - // /*spanish*/ Según dicen, una #melodía real en el pozo# revela #[[1]]#. - - hintTextTable[RHT_BOTTOM_OF_THE_WELL_MQ_LENS_OF_TRUTH_CHEST] = HintText(CustomMessage("They say that an #army of the dead# in the well guards #[[1]]#.", - /*german*/ "Man erzählt sich, daß eine #Armee der Toten# im Brunnen #[[1]]# bewachen würde.", - /*french*/ "Selon moi, l'#armée des morts# dans le Puits protège #[[1]]#.", {QM_RED, QM_GREEN})); - // /*spanish*/ Según dicen, un #ejército del más allá# del pozo guarda #[[1]]#. - - hintTextTable[RHT_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_FREESTANDING_KEY] = HintText(CustomMessage("They say that #Dead Hand's explosive secret# is #[[1]]#.", - /*german*/ "Man erzählt sich, daß das #explosive Geheimnis der toten Hand# #[[1]]# sei.", - /*french*/ "Selon moi, le #secret explosif du Poigneur# est #[[1]]#.", {QM_RED, QM_GREEN})); - // /*spanish*/ Según dicen, el #explosivo secreto de la Mano Muerta# esconde #[[1]]#. - - hintTextTable[RHT_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY] = HintText(CustomMessage("They say that an #invisible path in the well# leads to #[[1]]#.", - /*german*/ "Man erzählt sich, daß ein #unsichtbarer Pfad im Brunnen# zu #[[1]]# führe.", - /*french*/ "Selon moi, dans un #chemin caché dans le Puits# gît #[[1]]#.", {QM_RED, QM_GREEN})); - // /*spanish*/ Según dicen, un #camino invisible del pozo# conduce a #[[1]]#. + /*german*/ "Man erzählt sich, daß eine #königliche Melodie im Brunnen# #[[1]]# enthüllen würde.", + /*french*/ "Selon moi, la #mélodie royale révèle dans le Puits# #[[1]]#.", {QM_RED, QM_GREEN})); + // /*spanish*/ Según dicen, una #melodía real en el pozo# revela #[[1]]#. + + hintTextTable[RHT_BOTW_B3_CHEST] = HintText(CustomMessage("They say that in the #depths of the well# lies #[[1]]#.", + /*german*/ "Man erzählt sich, daß in den #Tiefen des Brunnens# #[[1]]# läge.", + /*french*/ "Selon moi, #dans le coeur du Puits# gît #[[1]]#.", {QM_RED, QM_GREEN})); + // /*spanish*/ Según dicen, en las #profundidades del pozo# yace #[[1]]#. + + hintTextTable[RHT_BOTW_3_HIDDEN_PITS_CHEST] = HintText(CustomMessage("They say that #perilous pits# in the well guard the path to #[[1]]#.", + /*german*/ "Man erzählt sich, daß #gefährliche Gruben# im Brunnen den Pfad zu #[[1]]# bewachen würden.", + /*french*/ "Selon moi, #trois trous# dans le Puits protègent #[[1]]#.", {QM_RED, QM_GREEN})); + // /*spanish*/ Según dicen, #peligrosos fosos# del pozo conducen a #[[1]]#. + + hintTextTable[RHT_BOTW_OUTER_CAGE_CHEST] = HintText(CustomMessage("They say that #locked in a cage# in the well lies #[[1]]#.", + /*german*/ "Man erzählt sich, daß #in einem Käfig eingeschlossen# im Brunnen #[[1]]# läge.", + /*french*/ "Selon moi, #dans une cage# du Puits gît #[[1]]#.", {QM_RED, QM_GREEN})); + // /*spanish*/ Según dicen, #entre rejas# en el pozo yace #[[1]]#. + //RANDOTODO retranslate + hintTextTable[RHT_BOTW_COFFIN_KEY] = HintText(CustomMessage("They say that #deep in a crypt# hides #[[1]]#.", + /*german*/ "Man erzählt sich, daß #in einem Sarg# #[[1]]# verborgen läge.", + /*french*/ "Selon moi, dans #un cercueil# gît #[[1]]#.", {QM_RED, QM_GREEN})); + // /*spanish*/ Según dicen, en el #interior de un ataúd# yace #[[1]]#. + //RANDOTODO retranslate + hintTextTable[RHT_BOTW_MQ_WOODEN_X_CHEST] = HintText(CustomMessage("They say that the #X in the well# marks the spot of #[[1]]#.", + /*german*/ "Man erzählt sich, daß eine #königliche Melodie im Brunnen# #[[1]]# enthüllen würde.", + /*french*/ "Selon moi, la #mélodie royale révèle dans le Puits# #[[1]]#.", {QM_RED, QM_GREEN})); + // /*spanish*/ Según dicen, una #melodía real en el pozo# revela #[[1]]#. + + hintTextTable[RHT_BOTW_MQ_REDEAD_CHEST] = HintText(CustomMessage("They say that an #army of the dead# in the well guards #[[1]]#.", + /*german*/ "Man erzählt sich, daß eine #Armee der Toten# im Brunnen #[[1]]# bewachen würde.", + /*french*/ "Selon moi, l'#armée des morts# dans le Puits protège #[[1]]#.", {QM_RED, QM_GREEN})); + // /*spanish*/ Según dicen, un #ejército del más allá# del pozo guarda #[[1]]#. + + hintTextTable[RHT_BOTW_MQ_DEAD_HAND_RUBBLE_KEY] = HintText(CustomMessage("They say that #Dead Hand's explosive secret# is #[[1]]#.", + /*german*/ "Man erzählt sich, daß das #explosive Geheimnis der toten Hand# #[[1]]# sei.", + /*french*/ "Selon moi, le #secret explosif du Poigneur# est #[[1]]#.", {QM_RED, QM_GREEN})); + // /*spanish*/ Según dicen, el #explosivo secreto de la Mano Muerta# esconde #[[1]]#. + + hintTextTable[RHT_BOTW_MQ_EAST_INNER_ROOM_KEY] = HintText(CustomMessage("They say that an #invisible path in the well# leads to #[[1]]#.", + /*german*/ "Man erzählt sich, daß ein #unsichtbarer Pfad im Brunnen# zu #[[1]]# führe.", + /*french*/ "Selon moi, dans un #chemin caché dans le Puits# gît #[[1]]#.", {QM_RED, QM_GREEN})); + // /*spanish*/ Según dicen, un #camino invisible del pozo# conduce a #[[1]]#. hintTextTable[RHT_BOTTOM_OF_THE_WELL_GS_LIKE_LIKE_CAGE] = HintText(CustomMessage("They say that a #spider locked in a cage# in the well holds #[[1]]#.", /*german*/ "Man erzählt sich, daß eine #in einem Käfig eingeschlossene Spinne# im Brunnen #[[1]]# besäße.", /*french*/ "Selon moi, une #Skulltula dans une cage au fonds du Puits# a #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, una #Skulltula enjaulada# del pozo otorga #[[1]]#. - - hintTextTable[RHT_BOTTOM_OF_THE_WELL_GS_EAST_INNER_ROOM] = HintText(CustomMessage("They say that an #invisible path in the well# leads to #[[1]]#.", + //RANDOTODO retranslate + hintTextTable[RHT_BOTTOM_OF_THE_WELL_GS_EAST_INNER_ROOM] = HintText(CustomMessage("They say that an #invisible path in the well# leads to a spider with #[[1]]#.", /*german*/ "Man erzählt sich, daß ein #unsichtbarer Pfad im Brunnen# zu #[[1]]# führe.", /*french*/ "Selon moi, une #Skulltula dans le chemin invisible au fonds du Puits# a #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, un #camino invisible del pozo# conduce a una Skulltula que otorga #[[1]]#. - - hintTextTable[RHT_BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM] = HintText(CustomMessage("They say that a #spider locked in a crypt# within the well guards #[[1]]#.", + //RANDOTODO retranslate + hintTextTable[RHT_BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM] = HintText(CustomMessage("They say that a #spider under a gravestone# within the well guards #[[1]]#.", /*german*/ "Man erzählt sich, daß eine #in einer Krypta eingeschlossene Spinne# im Brunnen #[[1]]# bewache.", /*french*/ "Selon moi, une #Skulltula embarrée dans la crypte au fonds du Puits# a #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, una #Skulltula encerrada en una cripta# del pozo otorga #[[1]]#. @@ -1657,49 +1658,104 @@ hintTextTable[RHT_SHADOW_TEMPLE_MAP_CHEST] = HintText(CustomMessage("They say th /*german*/ "Man erzählt sich, daß eine #nahe der Toten kriechende Spinne# im Brunnen #[[1]]# besäße.", /*french*/ "Selon moi, une #Skulltula près des cercueils au fonds du Puits# a #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, una #Skulltula junto a los muertos# del pozo otorga #[[1]]#. - - hintTextTable[RHT_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM] = HintText(CustomMessage("They say that a #spider locked in a crypt# within the well guards #[[1]]#.", + //RANDOTODO retranslate + hintTextTable[RHT_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM] = HintText(CustomMessage("They say that a #spider surrounded by unseen foes# within the well guards #[[1]]#.", /*german*/ "Man erzählt sich, daß eine #in einer Krypta eingeschlossene Spinne# im Brunnen #[[1]]# bewache.", /*french*/ "Selon moi, une #Skulltula embarrée dans la crypte au fonds du Puits# a #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, una #Skulltula encerrada en una cripta# del pozo otorga #[[1]]#. - hintTextTable[RHT_POT_BOTW] = HintText(CustomMessage("They say that a #pot in Bottom of the Well# contains #[[1]]#.", - /*german*/ "", - /*french*/ "Selon moi, une #jarre dans le Puits# contient #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_3_HIDDEN_PITS_POT] = HintText(CustomMessage("They say that a #pot watching 3 pit traps# holds #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_ENTRYWAY_WEST_POT] = HintText(CustomMessage("They say that a #pot to the Right of the Well's entrance# contains #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_ENTRYWAY_WEST_POT] = HintText(CustomMessage("They say that a #pot to the right of the well's entrance# contains #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_ENTRYWAY_EAST_POT] = HintText(CustomMessage("They say that a #pot to the Left of the Well's entrance# contains #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_ENTRYWAY_EAST_POT] = HintText(CustomMessage("They say that a #pot to the left of the well's entrance# contains #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_SUNKEN_POT] = HintText(CustomMessage("They say that a #sunken pot in the Well# contains #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_SUNKEN_POT] = HintText(CustomMessage("They say that a #sunken pot in the well# contains #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_FAKE_WALL_SOUTH_POT] = HintText(CustomMessage("They say that the #southern pot behind a fake wall in a Well# contains #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_FAKE_WALL_SOUTH_POT] = HintText(CustomMessage("They say that the #southern pot behind a fake wall# in a well contains #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_FAKE_WALL_CENTRAL_POT] = HintText(CustomMessage("They say that the #central pot behind a fake wall in a Well# contains #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_FAKE_WALL_CENTRAL_POT] = HintText(CustomMessage("They say that the #central pot behind a fake wall# in a well contains #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_FAKE_WALL_NORTH_POT] = HintText(CustomMessage("They say that the #northern pot behind a fake wall in a Well# contains #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_FAKE_WALL_NORTH_POT] = HintText(CustomMessage("They say that the #northern pot behind a fake wall# in a well contains #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTTOM_OF_THE_WELL_HEART] = HintText(CustomMessage("They say that a #heart within the well# hides #[[1]]#.", - /*german*/ "", - /*french*/ "Selon moi, un #coeur dans le Puits# cache #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_B3_WEST_CENTER_POT] = HintText(CustomMessage("They say that the #western pot looking over the well's slime# contains #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTTOM_OF_THE_WELL_RUPEE] = HintText(CustomMessage("They say that a #hidden path through the floor# in the well leads to #[[1]]#.", - /*german*/ "", - /*french*/ "Selon moi, un #passage caché sous le sol# dans le puits mène à #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_B3_EAST_CENTER_POT] = HintText(CustomMessage("They say that the #eastern pot looking over the well's slime# contains #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTTOM_OF_THE_WELL_BASEMENT_SUN_FAIRY] = HintText(CustomMessage("They say that an #calling the sun a dead end# within the well reveals #[[1]]#.", - /*german*/ "!!!", - /*french*/ "Selon moi, #appeler le soleil dans une impasse# à l’intérieur du puits révèle #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_B3_WEST_V_NORTHMOST_POT] = HintText(CustomMessage("They say that the well's #Front Pot formation's right wing# is #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_B3_WEST_V_MID_NORTH_POT] = HintText(CustomMessage("They say that the well's #Front Pot formation's right hand# is #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_B3_WEST_V_MIDDLE_POT] = HintText(CustomMessage("They say that the well's #Front Pot formation is led# by #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_B3_WEST_V_MID_SOUTH_POT] = HintText(CustomMessage("They say that the well's #Front Pot formation's left hand# is #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_B3_WEST_V_SOUTHMOST_POT] = HintText(CustomMessage("They say that the well's #Front Pot formation's left wing# is #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_B3_EAST_V_NORTHMOST_POT] = HintText(CustomMessage("They say that the well's #Rear Pot formation's right wing# is #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_B3_EAST_V_MID_NORTH_POT] = HintText(CustomMessage("They say that the well's #Rear Pot formation's right hand# is #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_B3_EAST_V_MIDDLE_POT] = HintText(CustomMessage("They say that the well's #Rear Pot formation is led# by #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_B3_EAST_V_MID_SOUTH_POT] = HintText(CustomMessage("They say that the well's #Rear Pot formation's left hand# is #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_B3_EAST_V_SOUTHMOST_POT] = HintText(CustomMessage("They say that the well's #Rear Pot formation's left wing# is #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_MQ_WOODEN_X_ROOM_WEST_POT] = HintText(CustomMessage("They say that #a pot to the left of a switch in the well# contains #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT] = HintText(CustomMessage("They say that #a pot under a switch in the well# contains #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_MQ_WOODEN_X_ROOM_EAST_POT] = HintText(CustomMessage("They say that #a pot to the right of a switch in the well# contains #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_MQ_CAGED_POT] = HintText(CustomMessage("They say that #a pot caged in the well# contains #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY] = HintText(CustomMessage("They say that an #calling the sun in an empty cell# within the well reveals #[[1]]#.", + hintTextTable[RHT_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT] = HintText(CustomMessage("They say that #a doorside pot sitting on nothing# in the well contains #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_MQ_EAST_INNER_ROOM_MID_POT] = HintText(CustomMessage("They say that #a pot sitting on the corner of nothing# in the well contains #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_MQ_EAST_INNER_ROOM_FAR_POT] = HintText(CustomMessage("They say that #a ledgeside pot sitting on nothing# in the well contains #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_SOUTHEAST_COFFIN_HEART] = HintText(CustomMessage("They say that in #well's doorside coffin# rests #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_OPEN_COFFIN_HEART] = HintText(CustomMessage("They say that in #an open casket# rests #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RC_BOTW_MQ_RUBBLE_NORTH_HEART] = HintText(CustomMessage("They say that #a chamber hidden by rubble# stores #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RC_BOTW_MQ_RUBBLE_SOUTH_HEART] = HintText(CustomMessage("They say that #under rubble near the well's entrance# lies #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_MQ_NORTHEAST_COFFIN_HEART] = HintText(CustomMessage("They say that #waking the doorside dead# in a well reveals #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_MQ_SOUTH_COFFIN_HEART] = HintText(CustomMessage("They say that #a coffin across from a lit torch# hides #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_MQ_B3_SOUTH_HEART] = HintText(CustomMessage("They say the first thing #boulders in the well# guard is #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_MQ_B3_NORTHWEST_HEART] = HintText(CustomMessage("They say the second thing #boulders in the well# guard is #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_MQ_B3_NORTHEAST_HEART] = HintText(CustomMessage("They say the third thing #boulders in the well# guard is #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_B3_PLATFORM_NORTH_RUPEE] = HintText(CustomMessage("They say that after falling #through the fake floor# in the Well, #[[1]]# points north.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_B3_PLATFORM_NORTHWEST_RUPEE] = HintText(CustomMessage("They say that after falling #through the fake floor# in the Well, #[[1]]# points northwest.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_B3_PLATFORM_NORTHEAST_RUPEE] = HintText(CustomMessage("They say that after falling #through the fake floor# in the Well, #[[1]]# points northeast.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_B3_PLATFORM_WEST_RUPEE] = HintText(CustomMessage("They say that after falling #through the fake floor# in the Well, #[[1]]# points west.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_B3_PLATFORM_EAST_RUPEE] = HintText(CustomMessage("They say that after falling #through the fake floor# in the Well, #[[1]]# points east.", {QM_RED, QM_GREEN})); + //RANDOTODO retranslate + hintTextTable[RHT_BOTW_B3_SUN_FAIRY] = HintText(CustomMessage("They say that an #calling the sun in a basement guarded by pots# reveals #[[1]]#.", + /*german*/ "!!!", + /*french*/ "Selon moi, #appeler le soleil dans une impasse# à l’intérieur du puits révèle #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY] = HintText(CustomMessage("They say that an #calling the sun in an empty cell# within the well reveals #[[1]]#.", /*german*/ "!!!", /*french*/ "Selon moi, #appeler le soleil dans une cellule vide# à l’intérieur du puits révèle #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY] = HintText(CustomMessage("They say that an #calling the sun a dead end# within the well reveals #[[1]]#.", + hintTextTable[RHT_BOTW_MQ_B3_SUN_FAIRY] = HintText(CustomMessage("They say that an #calling the sun at a dead end# within the well reveals #[[1]]#.", /*german*/ "!!!", /*french*/ "Selon moi, #appeler le soleil dans une impasse# à l’intérieur du puits révèle #[[1]]#.", {QM_RED, QM_GREEN})); - /*-------------------------- | ICE CAVERN | ---------------------------*/ diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp index cd33fd44171..841eb109200 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp @@ -1029,7 +1029,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("some creepy blueprints", /*german*/"einige gruselige Blaupausen", /*french*/"un plan sinistre")}); // /*spanish*/unos planos siniestras - hintTextTable[RHT_BOTTOM_OF_THE_WELL_MAP] = HintText(CustomMessage("the Bottom of the Well Map", /*german*/"die Karte des Grund des Brunnens", /*french*/"la carte du fond du Puits"), + hintTextTable[RHT_BOTW_MAP] = HintText(CustomMessage("the Bottom of the Well Map", /*german*/"die Karte des Grund des Brunnens", /*french*/"la carte du fond du Puits"), // /*spanish*/el mapa del Fondo del pozo { CustomMessage("a dungeon map", /*german*/"eine Karte", /*french*/"une carte") @@ -1139,7 +1139,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a creepy magnetic needle", /*german*/"eine gruselige Magnetnadel", /*french*/"une aimant sinistre")}); // /*spanish*/un imán siniestra - hintTextTable[RHT_BOTTOM_OF_THE_WELL_COMPASS] = HintText(CustomMessage("the Bottom of the Well Compass", /*german*/"der Kompaß des Grund des Brunnens", /*french*/"la boussole du fond du Puits"), + hintTextTable[RHT_BOTW_COMPASS] = HintText(CustomMessage("the Bottom of the Well Compass", /*german*/"der Kompaß des Grund des Brunnens", /*french*/"la boussole du fond du Puits"), // /*spanish*/la brújula del Fondo del pozo { CustomMessage("a compass", /*german*/"ein Kompaß", /*french*/"une boussole") @@ -1302,7 +1302,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a creepy lockpick", /*german*/"ein gruseliger Dietrich", /*french*/"un crochet à porte sinistre")}); // /*spanish*/una apertura portentosa siniestra:a - hintTextTable[RHT_GERUDO_TRAINING_GROUND_SMALL_KEY] = HintText(CustomMessage("a Gerudo Training Ground Small Key", /*german*/"ein kleiner Schlüssel des Gerudo-Trainingsgeländes", /*french*/"une petite clé du Gymnase Gerudo"), + hintTextTable[RHT_GTG_SMALL_KEY] = HintText(CustomMessage("a Gerudo Training Ground Small Key", /*german*/"ein kleiner Schlüssel des Gerudo-Trainingsgeländes", /*french*/"une petite clé du Gymnase Gerudo"), // /*spanish*/una llave pequeña del Centro de Instrucción Gerudo { CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé") @@ -1332,7 +1332,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("an imprisoned lockpick", /*german*/"ein gefangener Dietrich", /*french*/"un crochet à porte emprisonné")}); // /*spanish*/una apertura portentosa encarcelada - hintTextTable[RHT_BOTTOM_OF_THE_WELL_SMALL_KEY] = HintText(CustomMessage("a Bottom of the Well Small Key", /*german*/"ein kleiner Schlüssel des Grund des Brunnens", /*french*/"une petite clé du fond du Puits"), + hintTextTable[RHT_BOTW_SMALL_KEY] = HintText(CustomMessage("a Bottom of the Well Small Key", /*german*/"ein kleiner Schlüssel des Grund des Brunnens", /*french*/"une petite clé du fond du Puits"), // /*spanish*/una llave pequeña del Fondo del pozo { CustomMessage("a small key", /*german*/"ein kleiner Schlüssel", /*french*/"une petite clé") @@ -1437,7 +1437,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a creepy skeleton key", /*german*/"ein gruseliger Skelettschlüssel", /*french*/"des crochets à porte sinistres")}); // /*spanish*/un anillo tenebroso contra cerrojos - hintTextTable[RHT_GERUDO_TRAINING_GROUND_KEY_RING] = HintText(CustomMessage("a Gerudo Training Ground Key Ring", /*german*/"ein Schlüsselbund des Gerudo-Trainingsgeländes", /*french*/"un trousseau de clés du Gymnase Gerudo"), + hintTextTable[RHT_GTG_KEY_RING] = HintText(CustomMessage("a Gerudo Training Ground Key Ring", /*german*/"ein Schlüsselbund des Gerudo-Trainingsgeländes", /*french*/"un trousseau de clés du Gymnase Gerudo"), // /*spanish*/un llavero del Centro de Instrucción Gerudo { CustomMessage("a key ring", /*german*/"ein Schlüsselbund", /*french*/"un trousseau de clés") @@ -1467,7 +1467,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("an imprisoned skeleton key", /*german*/"ein gefangener Skelettschlüssel", /*french*/"des crochets à porte emprisonnés")}); // /*spanish*/un anillo enjaulado contra cerrojos - hintTextTable[RHT_BOTTOM_OF_THE_WELL_KEY_RING] = HintText(CustomMessage("a Bottom of the Well Key Ring", /*german*/"ein Schlüsselbund des Grund des Brunnens", /*french*/"un trousseau de clés du fond du Puits"), + hintTextTable[RHT_BOTW_KEY_RING] = HintText(CustomMessage("a Bottom of the Well Key Ring", /*german*/"ein Schlüsselbund des Grund des Brunnens", /*french*/"un trousseau de clés du fond du Puits"), // /*spanish*/un llavero del Fondo del pozo { CustomMessage("a key ring", /*german*/"ein Schlüsselbund", /*french*/"un trousseau de clés") @@ -1921,7 +1921,7 @@ void StaticData::HintTable_Init_Item() { CustomMessage("a victory valentine", /*german*/"ein siegreicher Valentin", /*french*/"un amour gagnant")}); // /*spanish*/el amor victorioso - hintTextTable[RHT_TREASURE_GAME_GREEN_RUPEE] = HintText(CustomMessage("a Green Rupee", /*german*/"ein grüner Rubin", /*french*/"un rubis vert"), + hintTextTable[RHT_LOSER_GREEN_RUPEE] = HintText(CustomMessage("a Green Rupee", /*german*/"ein grüner Rubin", /*french*/"un rubis vert"), // /*spanish*/una rupia verde { CustomMessage("some rupees", /*german*/"einige Rubine", /*french*/"une quantité de rubis") diff --git a/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp b/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp index 5d99637d905..1b4486a4be2 100644 --- a/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp @@ -268,8 +268,8 @@ const std::array GTG_Vanilla = { RG_HUGE_RUPEE, }; const std::array GTG_MQ = { - RG_TREASURE_GAME_GREEN_RUPEE, - RG_TREASURE_GAME_GREEN_RUPEE, + RG_LOSER_GREEN_RUPEE, + RG_LOSER_GREEN_RUPEE, RG_ARROWS_10, RG_GREEN_RUPEE, RG_PURPLE_RUPEE, @@ -678,8 +678,8 @@ static void PlaceVanillaFairies() { ctx->PlaceItemInLocation(RC_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY, GetJunkItem(), false, true); } if (ctx->GetDungeon(Rando::BOTTOM_OF_THE_WELL)->IsMQ()) { - ctx->PlaceItemInLocation(RC_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY, GetJunkItem(), false, true); - ctx->PlaceItemInLocation(RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY, GetJunkItem(), false, true); + ctx->PlaceItemInLocation(RC_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY, GetJunkItem(), false, true); + ctx->PlaceItemInLocation(RC_BOTW_MQ_B3_SUN_FAIRY, GetJunkItem(), false, true); } else { ctx->PlaceItemInLocation(RC_BOTW_B3_SUN_FAIRY, GetJunkItem(), false, true); } @@ -1222,9 +1222,9 @@ void GenerateItemPool() { //Plentiful small keys if (ctx->GetOption(RSK_KEYSANITY).Is(RO_DUNGEON_ITEM_LOC_ANYWHERE) || ctx->GetOption(RSK_KEYSANITY).Is(RO_DUNGEON_ITEM_LOC_ANY_DUNGEON) || ctx->GetOption(RSK_KEYSANITY).Is(RO_DUNGEON_ITEM_LOC_OVERWORLD)) { if (ctx->GetDungeon(Rando::BOTTOM_OF_THE_WELL)->HasKeyRing()) { - AddItemToPool(PendingJunkPool, RG_BOTTOM_OF_THE_WELL_KEY_RING); + AddItemToPool(PendingJunkPool, RG_BOTW_KEY_RING); } else { - AddItemToPool(PendingJunkPool, RG_BOTTOM_OF_THE_WELL_SMALL_KEY); + AddItemToPool(PendingJunkPool, RG_BOTW_SMALL_KEY); } if (ctx->GetDungeon(Rando::FOREST_TEMPLE)->HasKeyRing()) { AddItemToPool(PendingJunkPool, RG_FOREST_TEMPLE_KEY_RING); @@ -1252,9 +1252,9 @@ void GenerateItemPool() { AddItemToPool(PendingJunkPool, RG_SHADOW_TEMPLE_SMALL_KEY); } if (ctx->GetDungeon(Rando::GERUDO_TRAINING_GROUND)->HasKeyRing()) { - AddItemToPool(PendingJunkPool, RG_GERUDO_TRAINING_GROUND_KEY_RING); + AddItemToPool(PendingJunkPool, RG_GTG_KEY_RING); } else { - AddItemToPool(PendingJunkPool, RG_GERUDO_TRAINING_GROUND_SMALL_KEY); + AddItemToPool(PendingJunkPool, RG_GTG_SMALL_KEY); } if (ctx->GetDungeon(Rando::GANONS_CASTLE)->HasKeyRing()) { AddItemToPool(PendingJunkPool, RG_GANONS_CASTLE_KEY_RING); diff --git a/soh/soh/Enhancements/randomizer/Plandomizer.cpp b/soh/soh/Enhancements/randomizer/Plandomizer.cpp index 3fc97eec78d..5e0f4e6e1bc 100644 --- a/soh/soh/Enhancements/randomizer/Plandomizer.cpp +++ b/soh/soh/Enhancements/randomizer/Plandomizer.cpp @@ -184,7 +184,7 @@ std::unordered_map itemImageMap = { { RG_WATER_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, { RG_SPIRIT_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, { RG_SHADOW_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, - { RG_BOTTOM_OF_THE_WELL_MAP, "ITEM_DUNGEON_MAP" }, + { RG_BOTW_MAP, "ITEM_DUNGEON_MAP" }, { RG_ICE_CAVERN_MAP, "ITEM_DUNGEON_MAP" }, { RG_DEKU_TREE_COMPASS, "ITEM_COMPASS" }, { RG_DODONGOS_CAVERN_COMPASS, "ITEM_COMPASS" }, @@ -194,7 +194,7 @@ std::unordered_map itemImageMap = { { RG_WATER_TEMPLE_COMPASS, "ITEM_COMPASS" }, { RG_SPIRIT_TEMPLE_COMPASS, "ITEM_COMPASS" }, { RG_SHADOW_TEMPLE_COMPASS, "ITEM_COMPASS" }, - { RG_BOTTOM_OF_THE_WELL_COMPASS, "ITEM_COMPASS" }, + { RG_BOTW_COMPASS, "ITEM_COMPASS" }, { RG_ICE_CAVERN_COMPASS, "ITEM_COMPASS" }, { RG_FOREST_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, { RG_FIRE_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, @@ -207,8 +207,8 @@ std::unordered_map itemImageMap = { { RG_WATER_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, { RG_SPIRIT_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, { RG_SHADOW_TEMPLE_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_BOTTOM_OF_THE_WELL_SMALL_KEY, "ITEM_KEY_SMALL" }, - { RG_GERUDO_TRAINING_GROUND_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_BOTW_SMALL_KEY, "ITEM_KEY_SMALL" }, + { RG_GTG_SMALL_KEY, "ITEM_KEY_SMALL" }, { RG_GERUDO_FORTRESS_SMALL_KEY, "ITEM_KEY_SMALL" }, { RG_GANONS_CASTLE_SMALL_KEY, "ITEM_KEY_SMALL" }, { RG_TREASURE_GAME_SMALL_KEY, "ITEM_KEY_SMALL" }, @@ -228,7 +228,7 @@ std::unordered_map itemImageMap = { { RG_RED_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, { RG_PURPLE_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, { RG_HUGE_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, - { RG_TREASURE_GAME_GREEN_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, + { RG_LOSER_GREEN_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, { RG_PIECE_OF_HEART, "ITEM_HEART_PIECE" }, { RG_HEART_CONTAINER, "ITEM_HEART_CONTAINER" }, { RG_ICE_TRAP, "ITEM_ICE_TRAP" }, @@ -299,11 +299,11 @@ ImVec4 plandomizerGetItemColor(Rando::Item randoItem) { } else if (randoItem.GetRandomizerGet() == RG_SHADOW_TEMPLE_SMALL_KEY || randoItem.GetRandomizerGet() == RG_SHADOW_TEMPLE_KEY_RING) { itemColor = ImVec4( 0.49f, 0.06f, 0.69f, 1.0f ); - } else if (randoItem.GetRandomizerGet() == RG_BOTTOM_OF_THE_WELL_SMALL_KEY || - randoItem.GetRandomizerGet() == RG_BOTTOM_OF_THE_WELL_KEY_RING) { + } else if (randoItem.GetRandomizerGet() == RG_BOTW_SMALL_KEY || + randoItem.GetRandomizerGet() == RG_BOTW_KEY_RING) { itemColor = ImVec4( 0.89f, 0.43f, 1.0f, 1.0f ); - } else if (randoItem.GetRandomizerGet() == RG_GERUDO_TRAINING_GROUND_SMALL_KEY || - randoItem.GetRandomizerGet() == RG_GERUDO_TRAINING_GROUND_KEY_RING) { + } else if (randoItem.GetRandomizerGet() == RG_GTG_SMALL_KEY || + randoItem.GetRandomizerGet() == RG_GTG_KEY_RING) { itemColor = ImVec4( 1.0f, 1.0f, 0, 1.0f ); } else if (randoItem.GetRandomizerGet() == RG_GERUDO_FORTRESS_SMALL_KEY || randoItem.GetRandomizerGet() == RG_GERUDO_FORTRESS_KEY_RING) { @@ -324,7 +324,7 @@ ImVec4 plandomizerGetItemColor(Rando::Item randoItem) { } if (randoItem.GetRandomizerGet() >= RG_GREEN_RUPEE && randoItem.GetRandomizerGet() <= RG_HUGE_RUPEE) { if (randoItem.GetRandomizerGet() == RG_GREG_RUPEE || randoItem.GetRandomizerGet() == RG_GREEN_RUPEE - || randoItem.GetRandomizerGet() == RG_TREASURE_GAME_GREEN_RUPEE) { + || randoItem.GetRandomizerGet() == RG_LOSER_GREEN_RUPEE) { itemColor = ImVec4( 0.02f, 0.76f, 0.18f, 1.0f ); } else if (randoItem.GetRandomizerGet() == RG_BLUE_RUPEE) { itemColor = ImVec4( 0.33f, 0.71f, 0.87f, 1.0f ); diff --git a/soh/soh/Enhancements/randomizer/dungeon.cpp b/soh/soh/Enhancements/randomizer/dungeon.cpp index c8b7fa66e8e..ec350c3d7a8 100644 --- a/soh/soh/Enhancements/randomizer/dungeon.cpp +++ b/soh/soh/Enhancements/randomizer/dungeon.cpp @@ -1000,15 +1000,15 @@ Dungeons::Dungeons() { RC_BONGO_BONGO, }); dungeonList[BOTTOM_OF_THE_WELL] = DungeonInfo( - "Bottom of the Well", RHT_BOTTOM_OF_THE_WELL, RG_BOTTOM_OF_THE_WELL_MAP, RG_BOTTOM_OF_THE_WELL_COMPASS, - RG_BOTTOM_OF_THE_WELL_SMALL_KEY, RG_BOTTOM_OF_THE_WELL_KEY_RING, RG_NONE, RA_BOTTOM_OF_THE_WELL, 3, 2, RSK_MQ_BOTTOM_OF_THE_WELL, + "Bottom of the Well", RHT_BOTTOM_OF_THE_WELL, RG_BOTW_MAP, RG_BOTW_COMPASS, + RG_BOTW_SMALL_KEY, RG_BOTW_KEY_RING, RG_NONE, RA_BOTTOM_OF_THE_WELL, 3, 2, RSK_MQ_BOTTOM_OF_THE_WELL, { // Vanilla Locations RC_BOTW_WEST_FAKE_WALL_CHEST, RC_BOTW_SOUTH_RUBBLE_CHEST, RC_BOTW_EAST_FAKE_WALL_CHEST, - RC_BOTW_B1_CENTRAL_WEST_CHEST, - RC_BOTW_B1_CENTRAL_EAST_CHEST, + RC_BOTW_CENTRAL_WEST_CHEST, + RC_BOTW_CENTRAL_EAST_CHEST, RC_BOTW_NORTH_RUBBLE_CHEST, RC_BOTW_DEAD_HAND_CHEST, RC_BOTW_INVISIBLE_CHEST, @@ -1021,49 +1021,49 @@ Dungeons::Dungeons() { RC_BOTW_OUTER_CAGE_GS, RC_BOTW_CENTER_EAST_ROOM_GS, RC_BOTW_CENTER_WEST_ROOM_GS, - RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_LEFT_RUPEE, - RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_BACK_LEFT_RUPEE, - RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_MIDDLE_RUPEE, - RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_BACK_RIGHT_RUPEE, - RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_RIGHT_RUPEE, + RC_BOTW_B3_PLATFORM_WEST_RUPEE, + RC_BOTW_B3_PLATFORM_NORTHWEST_RUPEE, + RC_BOTW_B3_PLATFORM_NORTH_RUPEE, + RC_BOTW_B3_PLATFORM_NORTHEAST_RUPEE, + RC_BOTW_B3_PLATFORM_EAST_RUPEE, RC_BOTW_SOUTHEAST_COFFIN_HEART, RC_BOTW_OPEN_COFFIN_HEART, RC_BOTW_B3_SUN_FAIRY, }, { // MQ Locations - RC_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST, - RC_BOTTOM_OF_THE_WELL_MQ_LENS_OF_TRUTH_CHEST, - RC_BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST, - RC_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_FREESTANDING_KEY, - RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY, - RC_BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT, - RC_BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM, - RC_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM, - RC_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM_FRONT_RIGHT_HEART, - RC_BOTTOM_OF_THE_WELL_MQ_BOMB_LEFT_HEART, - RC_BOTTOM_OF_THE_WELL_MQ_BOMB_RIGHT_HEART, - RC_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM_MIDDLE_LEFT_HEART, - RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_FRONT_HEART, - RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_LEFT_HEART, - RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_RIGHT_HEART, - RC_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY, - RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY, + RC_BOTW_MQ_WOODEN_X_CHEST, + RC_BOTW_MQ_REDEAD_CHEST, + RC_BOTW_MQ_DEAD_HAND_CHEST, + RC_BOTW_MQ_DEAD_HAND_RUBBLE_KEY, + RC_BOTW_MQ_EAST_INNER_ROOM_KEY, + RC_BOTW_MQ_B3_GS, + RC_BOTW_MQ_COFFIN_ROOM_GS, + RC_BOTW_MQ_WEST_CENTER_ROOM_GS, + RC_BOTW_MQ_NORTHEAST_COFFIN_HEART, + RC_BOTW_MQ_RUBBLE_NORTH_HEART, + RC_BOTW_MQ_RUBBLE_SOUTH_HEART, + RC_BOTW_MQ_SOUTH_COFFIN_HEART, + RC_BOTW_MQ_B3_SOUTH_HEART, + RC_BOTW_MQ_B3_NORTHWEST_HEART, + RC_BOTW_MQ_B3_NORTHEAST_HEART, + RC_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY, + RC_BOTW_MQ_B3_SUN_FAIRY, }, { // Vanilla Pots - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_1, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_2, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_3, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_4, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_5, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_6, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_7, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10, - RC_BOTW_B3_WEST_POT_GROUP_FRONT, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12, + RC_BOTW_B3_WEST_CENTER_POT, + RC_BOTW_B3_EAST_CENTER_POT, + RC_BOTW_B3_WEST_V_MID_NORTH_POT, + RC_BOTW_B3_EAST_V_MIDDLE_POT, + RC_BOTW_B3_WEST_V_SOUTHMOST_POT, + RC_BOTW_B3_EAST_V_SOUTHMOST_POT, + RC_BOTW_B3_EAST_V_NORTHMOST_POT, + RC_BOTW_B3_EAST_V_MID_NORTH_POT, + RC_BOTW_B3_WEST_V_MID_SOUTH_POT, + RC_BOTW_B3_EAST_V_MID_SOUTH_POT, + RC_BOTW_B3_WEST_V_MIDDLE_POT, + RC_BOTW_B3_WEST_V_NORTHMOST_POT, RC_BOTW_FAKE_WALL_SOUTH_POT, RC_BOTW_FAKE_WALL_CENTRAL_POT, RC_BOTW_FAKE_WALL_NORTH_POT, @@ -1074,13 +1074,13 @@ Dungeons::Dungeons() { }, { // MQ Pots - RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1, - RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2, - RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3, - RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT, - RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_1, - RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_2, - RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_3, + RC_BOTW_MQ_EAST_INNER_ROOM_MID_POT, + RC_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT, + RC_BOTW_MQ_WOODEN_X_ROOM_EAST_POT, + RC_BOTW_MQ_WOODEN_X_ROOM_WEST_POT, + RC_BOTW_MQ_CAGED_POT, + RC_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT, + RC_BOTW_MQ_EAST_INNER_ROOM_FAR_POT, }, {}, {}); dungeonList[ICE_CAVERN] = DungeonInfo("Ice Cavern", RHT_ICE_CAVERN, RG_ICE_CAVERN_MAP, RG_ICE_CAVERN_COMPASS, @@ -1145,7 +1145,7 @@ Dungeons::Dungeons() { {}); dungeonList[GERUDO_TRAINING_GROUND] = DungeonInfo("Gerudo Training Ground", RHT_GERUDO_TRAINING_GROUND, RG_NONE, RG_NONE, - RG_GERUDO_TRAINING_GROUND_SMALL_KEY, RG_GERUDO_TRAINING_GROUND_KEY_RING, RG_NONE, RA_GERUDO_TRAINING_GROUND, 9, 3, RSK_MQ_GTG, + RG_GTG_SMALL_KEY, RG_GTG_KEY_RING, RG_NONE, RA_GERUDO_TRAINING_GROUND, 9, 3, RSK_MQ_GTG, { // Vanilla Locations RC_GERUDO_TRAINING_GROUND_LOBBY_LEFT_CHEST, diff --git a/soh/soh/Enhancements/randomizer/item_list.cpp b/soh/soh/Enhancements/randomizer/item_list.cpp index 2fbcc0cccef..563a33f3a9e 100644 --- a/soh/soh/Enhancements/randomizer/item_list.cpp +++ b/soh/soh/Enhancements/randomizer/item_list.cpp @@ -12,330 +12,330 @@ std::unordered_map Rando::StaticData::itemNameToEnum void Rando::StaticData::InitItemTable() { auto logic = Context::GetInstance()->GetLogic(); - itemTable[RG_NONE] = Item(RG_NONE, Text{ "No Item", "Rien", "Kein Artikel" }, ITEMTYPE_EVENT, GI_RUPEE_GREEN, false, LOGIC_NONE, RHT_NONE, ITEM_NONE, 0, 0, 0, 0, 0, ITEM_CATEGORY_JUNK, MOD_NONE); - // Randomizer Get Randomizer Get Name Text Type Get Item ID Adv. Logic Value Hint Text Key Item ID Object ID Draw ID Text ID field Chest Animation Item Category Mod Index - itemTable[RG_KOKIRI_SWORD] = Item(RG_KOKIRI_SWORD, Text{ "Kokiri Sword", "Épée Kokiri", "Kokiri-Schwert" }, ITEMTYPE_EQUIP, GI_SWORD_KOKIRI, true, LOGIC_KOKIRI_SWORD, RHT_KOKIRI_SWORD, ITEM_SWORD_KOKIRI, OBJECT_GI_SWORD_1, GID_SWORD_KOKIRI, 0xA4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_MASTER_SWORD] = Item(RG_MASTER_SWORD, Text{ "Master Sword", "Épée de Legende", "Master-Schwert"}, ITEMTYPE_EQUIP, 0xE0, true, LOGIC_MASTER_SWORD, RHT_MASTER_SWORD, ITEM_SWORD_MASTER, OBJECT_TOKI_OBJECTS, GID_SWORD_BGS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_NONE] = Item(RG_NONE, Text{"No Item", "Rien", "Kein Artikel" }, ITEMTYPE_EVENT, GI_RUPEE_GREEN, false, LOGIC_NONE, RHT_NONE, ITEM_NONE, 0, 0, 0, 0, 0, ITEM_CATEGORY_JUNK, MOD_NONE); + // Randomizer Get Randomizer Get Name Text Type Get Item ID Adv. Logic Value Hint Text Key Item ID Object ID Draw ID Text ID field Chest Animation Item Category Mod Index + itemTable[RG_KOKIRI_SWORD] = Item(RG_KOKIRI_SWORD, Text{"Kokiri Sword", "Épée Kokiri", "Kokiri-Schwert" }, ITEMTYPE_EQUIP, GI_SWORD_KOKIRI, true, LOGIC_KOKIRI_SWORD, RHT_KOKIRI_SWORD, ITEM_SWORD_KOKIRI, OBJECT_GI_SWORD_1, GID_SWORD_KOKIRI, 0xA4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_MASTER_SWORD] = Item(RG_MASTER_SWORD, Text{"Master Sword", "Épée de Legende", "Master-Schwert"}, ITEMTYPE_EQUIP, 0xE0, true, LOGIC_MASTER_SWORD, RHT_MASTER_SWORD, ITEM_SWORD_MASTER, OBJECT_TOKI_OBJECTS, GID_SWORD_BGS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_MASTER_SWORD].SetCustomDrawFunc(Randomizer_DrawMasterSword); - itemTable[RG_GIANTS_KNIFE] = Item(RG_GIANTS_KNIFE, Text{ "Giant's Knife", "Lame des Géants", "Langschwert" }, ITEMTYPE_EQUIP, GI_SWORD_KNIFE, true, LOGIC_NONE, RHT_GIANTS_KNIFE, ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x4B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BIGGORON_SWORD] = Item(RG_BIGGORON_SWORD, Text{ "Biggoron's Sword", "Épée de Biggoron", "Biggoron-Schwert" }, ITEMTYPE_EQUIP, GI_SWORD_BGS, true, LOGIC_BIGGORON_SWORD, RHT_BIGGORON_SWORD, ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x0C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_DEKU_SHIELD] = Item(RG_DEKU_SHIELD, Text{ "Deku Shield", "Bouclier Mojo", "Deku-Schild" }, ITEMTYPE_EQUIP, GI_SHIELD_DEKU, false, LOGIC_DEKU_SHIELD, RHT_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_HYLIAN_SHIELD] = Item(RG_HYLIAN_SHIELD, Text{ "Hylian Shield", "Bouclier Hylien", "Hylia-Schild" }, ITEMTYPE_EQUIP, GI_SHIELD_HYLIAN, false, LOGIC_HYLIAN_SHIELD, RHT_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_MIRROR_SHIELD] = Item(RG_MIRROR_SHIELD, Text{ "Mirror Shield", "Bouclier Miroir", "Spiegelschild" }, ITEMTYPE_EQUIP, GI_SHIELD_MIRROR, true, LOGIC_MIRROR_SHIELD, RHT_MIRROR_SHIELD, ITEM_SHIELD_MIRROR, OBJECT_GI_SHIELD_3, GID_SHIELD_MIRROR, 0x4E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GORON_TUNIC] = Item(RG_GORON_TUNIC, Text{ "Goron Tunic", "Tunique Goron", "Goronen-Tunika" }, ITEMTYPE_EQUIP, GI_TUNIC_GORON, true, LOGIC_GORON_TUNIC, RHT_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_ZORA_TUNIC] = Item(RG_ZORA_TUNIC, Text{ "Zora Tunic", "Tunique Zora", "Zora-Tunika" }, ITEMTYPE_EQUIP, GI_TUNIC_ZORA, true, LOGIC_ZORA_TUNIC, RHT_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_IRON_BOOTS] = Item(RG_IRON_BOOTS, Text{ "Iron Boots", "Bottes de plomb", "Eisenstiefel" }, ITEMTYPE_EQUIP, GI_BOOTS_IRON, true, LOGIC_IRON_BOOTS, RHT_IRON_BOOTS, ITEM_BOOTS_IRON, OBJECT_GI_BOOTS_2, GID_BOOTS_IRON, 0x53, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_HOVER_BOOTS] = Item(RG_HOVER_BOOTS, Text{ "Hover Boots", "Bottes de airs", "Gleitstiefel" }, ITEMTYPE_EQUIP, GI_BOOTS_HOVER, true, LOGIC_HOVER_BOOTS, RHT_HOVER_BOOTS, ITEM_BOOTS_HOVER, OBJECT_GI_HOVERBOOTS, GID_BOOTS_HOVER, 0x54, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOOMERANG] = Item(RG_BOOMERANG, Text{ "Boomerang", "Boomerang", "Bumerang" }, ITEMTYPE_ITEM, GI_BOOMERANG, true, LOGIC_BOOMERANG, RHT_BOOMERANG, ITEM_BOOMERANG, OBJECT_GI_BOOMERANG, GID_BOOMERANG, 0x35, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_LENS_OF_TRUTH] = Item(RG_LENS_OF_TRUTH, Text{ "Lens of Truth", "Monocle de Vérité", "Auge der Wahrheit" }, ITEMTYPE_ITEM, GI_LENS, true, LOGIC_LENS_OF_TRUTH, RHT_LENS_OF_TRUTH, ITEM_LENS, OBJECT_GI_GLASSES, GID_LENS, 0x39, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_MEGATON_HAMMER] = Item(RG_MEGATON_HAMMER, Text{ "Megaton Hammer", "Masse des Titans", "Stahlhammer" }, ITEMTYPE_ITEM, GI_HAMMER, true, LOGIC_HAMMER, RHT_MEGATON_HAMMER, ITEM_HAMMER, OBJECT_GI_HAMMER, GID_HAMMER, 0x38, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_STONE_OF_AGONY] = Item(RG_STONE_OF_AGONY, Text{ "Stone of Agony", "Pierre de Souffrance", "Stein des Wissens" }, ITEMTYPE_ITEM, GI_STONE_OF_AGONY, true, LOGIC_STONE_OF_AGONY, RHT_STONE_OF_AGONY, ITEM_STONE_OF_AGONY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, 0x68, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_DINS_FIRE] = Item(RG_DINS_FIRE, Text{ "Din's Fire", "Feu de Din", "Dins Feuerinferno" }, ITEMTYPE_ITEM, GI_DINS_FIRE, true, LOGIC_DINS_FIRE, RHT_DINS_FIRE, ITEM_DINS_FIRE, OBJECT_GI_GODDESS, GID_DINS_FIRE, 0xAD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_FARORES_WIND] = Item(RG_FARORES_WIND, Text{ "Farore's Wind", "Vent de Farore", "Farores Donnersturm" }, ITEMTYPE_ITEM, GI_FARORES_WIND, true, LOGIC_FARORES_WIND, RHT_FARORES_WIND, ITEM_FARORES_WIND, OBJECT_GI_GODDESS, GID_FARORES_WIND, 0xAE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_NAYRUS_LOVE] = Item(RG_NAYRUS_LOVE, Text{ "Nayru's Love", "Amour de Nayru", "Nayrus Umarmung" }, ITEMTYPE_ITEM, GI_NAYRUS_LOVE, true, LOGIC_NAYRUS_LOVE, RHT_NAYRUS_LOVE, ITEM_NAYRUS_LOVE, OBJECT_GI_GODDESS, GID_NAYRUS_LOVE, 0xAF, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_FIRE_ARROWS] = Item(RG_FIRE_ARROWS, Text{ "Fire Arrow", "Flèche de Feu", "Feuerpfeil" }, ITEMTYPE_ITEM, GI_ARROW_FIRE, true, LOGIC_FIRE_ARROWS, RHT_FIRE_ARROWS, ITEM_ARROW_FIRE, OBJECT_GI_M_ARROW, GID_ARROW_FIRE, 0x70, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ICE_ARROWS] = Item(RG_ICE_ARROWS, Text{ "Ice Arrow", "Flèche de Glace", "Eispfeil" }, ITEMTYPE_ITEM, GI_ARROW_ICE, true, LOGIC_ICE_ARROWS, RHT_ICE_ARROWS, ITEM_ARROW_ICE, OBJECT_GI_M_ARROW, GID_ARROW_ICE, 0x71, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_LIGHT_ARROWS] = Item(RG_LIGHT_ARROWS, Text{ "Light Arrow", "Flèche de Lumière", "Lichtpfeil" }, ITEMTYPE_ITEM, GI_ARROW_LIGHT, true, LOGIC_LIGHT_ARROWS, RHT_LIGHT_ARROWS, ITEM_ARROW_LIGHT, OBJECT_GI_M_ARROW, GID_ARROW_LIGHT, 0x72, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GERUDO_MEMBERSHIP_CARD] = Item(RG_GERUDO_MEMBERSHIP_CARD, Text{ "Gerudo Membership Card", "Carte Gerudo", "Gerudo-Pass" }, ITEMTYPE_ITEM, GI_GERUDO_CARD, true, LOGIC_GERUDO_CARD, RHT_GERUDO_MEMBERSHIP_CARD, ITEM_GERUDO_CARD, OBJECT_GI_GERUDO, GID_GERUDO_CARD, 0x7B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_MAGIC_BEAN] = Item(RG_MAGIC_BEAN, Text{ "Magic Bean", "Haricots Magiques", "Wundererbse" }, ITEMTYPE_ITEM, GI_BEAN, true, LOGIC_MAGIC_BEAN, RHT_MAGIC_BEAN, ITEM_BEAN, OBJECT_GI_BEAN, GID_BEAN, 0x48, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_MAGIC_BEAN_PACK] = Item(RG_MAGIC_BEAN_PACK, Text{ "Magic Bean Pack", "Paquet de Haricots Magiques", "Wundererbsen-Packung" }, ITEMTYPE_ITEM, RG_MAGIC_BEAN_PACK, true, LOGIC_MAGIC_BEAN, RHT_MAGIC_BEAN_PACK, RG_MAGIC_BEAN_PACK, OBJECT_GI_BEAN, GID_BEAN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_DOUBLE_DEFENSE] = Item(RG_DOUBLE_DEFENSE, Text{ "Double Defense", "Double Défence", "Doppelte Verteidigung" }, ITEMTYPE_ITEM, RG_DOUBLE_DEFENSE, true, LOGIC_DOUBLE_DEFENSE, RHT_DOUBLE_DEFENSE, RG_DOUBLE_DEFENSE, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xE9, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_GIANTS_KNIFE] = Item(RG_GIANTS_KNIFE, Text{"Giant's Knife", "Lame des Géants", "Langschwert" }, ITEMTYPE_EQUIP, GI_SWORD_KNIFE, true, LOGIC_NONE, RHT_GIANTS_KNIFE, ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x4B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BIGGORON_SWORD] = Item(RG_BIGGORON_SWORD, Text{"Biggoron's Sword", "Épée de Biggoron", "Biggoron-Schwert" }, ITEMTYPE_EQUIP, GI_SWORD_BGS, true, LOGIC_BIGGORON_SWORD, RHT_BIGGORON_SWORD, ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x0C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_DEKU_SHIELD] = Item(RG_DEKU_SHIELD, Text{"Deku Shield", "Bouclier Mojo", "Deku-Schild" }, ITEMTYPE_EQUIP, GI_SHIELD_DEKU, false, LOGIC_DEKU_SHIELD, RHT_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_HYLIAN_SHIELD] = Item(RG_HYLIAN_SHIELD, Text{"Hylian Shield", "Bouclier Hylien", "Hylia-Schild" }, ITEMTYPE_EQUIP, GI_SHIELD_HYLIAN, false, LOGIC_HYLIAN_SHIELD, RHT_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_MIRROR_SHIELD] = Item(RG_MIRROR_SHIELD, Text{"Mirror Shield", "Bouclier Miroir", "Spiegelschild" }, ITEMTYPE_EQUIP, GI_SHIELD_MIRROR, true, LOGIC_MIRROR_SHIELD, RHT_MIRROR_SHIELD, ITEM_SHIELD_MIRROR, OBJECT_GI_SHIELD_3, GID_SHIELD_MIRROR, 0x4E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_GORON_TUNIC] = Item(RG_GORON_TUNIC, Text{"Goron Tunic", "Tunique Goron", "Goronen-Tunika" }, ITEMTYPE_EQUIP, GI_TUNIC_GORON, true, LOGIC_GORON_TUNIC, RHT_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_ZORA_TUNIC] = Item(RG_ZORA_TUNIC, Text{"Zora Tunic", "Tunique Zora", "Zora-Tunika" }, ITEMTYPE_EQUIP, GI_TUNIC_ZORA, true, LOGIC_ZORA_TUNIC, RHT_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_IRON_BOOTS] = Item(RG_IRON_BOOTS, Text{"Iron Boots", "Bottes de plomb", "Eisenstiefel" }, ITEMTYPE_EQUIP, GI_BOOTS_IRON, true, LOGIC_IRON_BOOTS, RHT_IRON_BOOTS, ITEM_BOOTS_IRON, OBJECT_GI_BOOTS_2, GID_BOOTS_IRON, 0x53, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_HOVER_BOOTS] = Item(RG_HOVER_BOOTS, Text{"Hover Boots", "Bottes de airs", "Gleitstiefel" }, ITEMTYPE_EQUIP, GI_BOOTS_HOVER, true, LOGIC_HOVER_BOOTS, RHT_HOVER_BOOTS, ITEM_BOOTS_HOVER, OBJECT_GI_HOVERBOOTS, GID_BOOTS_HOVER, 0x54, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BOOMERANG] = Item(RG_BOOMERANG, Text{"Boomerang", "Boomerang", "Bumerang" }, ITEMTYPE_ITEM, GI_BOOMERANG, true, LOGIC_BOOMERANG, RHT_BOOMERANG, ITEM_BOOMERANG, OBJECT_GI_BOOMERANG, GID_BOOMERANG, 0x35, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_LENS_OF_TRUTH] = Item(RG_LENS_OF_TRUTH, Text{"Lens of Truth", "Monocle de Vérité", "Auge der Wahrheit" }, ITEMTYPE_ITEM, GI_LENS, true, LOGIC_LENS_OF_TRUTH, RHT_LENS_OF_TRUTH, ITEM_LENS, OBJECT_GI_GLASSES, GID_LENS, 0x39, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_MEGATON_HAMMER] = Item(RG_MEGATON_HAMMER, Text{"Megaton Hammer", "Masse des Titans", "Stahlhammer" }, ITEMTYPE_ITEM, GI_HAMMER, true, LOGIC_HAMMER, RHT_MEGATON_HAMMER, ITEM_HAMMER, OBJECT_GI_HAMMER, GID_HAMMER, 0x38, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_STONE_OF_AGONY] = Item(RG_STONE_OF_AGONY, Text{"Stone of Agony", "Pierre de Souffrance", "Stein des Wissens" }, ITEMTYPE_ITEM, GI_STONE_OF_AGONY, true, LOGIC_STONE_OF_AGONY, RHT_STONE_OF_AGONY, ITEM_STONE_OF_AGONY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, 0x68, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_DINS_FIRE] = Item(RG_DINS_FIRE, Text{"Din's Fire", "Feu de Din", "Dins Feuerinferno" }, ITEMTYPE_ITEM, GI_DINS_FIRE, true, LOGIC_DINS_FIRE, RHT_DINS_FIRE, ITEM_DINS_FIRE, OBJECT_GI_GODDESS, GID_DINS_FIRE, 0xAD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_FARORES_WIND] = Item(RG_FARORES_WIND, Text{"Farore's Wind", "Vent de Farore", "Farores Donnersturm" }, ITEMTYPE_ITEM, GI_FARORES_WIND, true, LOGIC_FARORES_WIND, RHT_FARORES_WIND, ITEM_FARORES_WIND, OBJECT_GI_GODDESS, GID_FARORES_WIND, 0xAE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_NAYRUS_LOVE] = Item(RG_NAYRUS_LOVE, Text{"Nayru's Love", "Amour de Nayru", "Nayrus Umarmung" }, ITEMTYPE_ITEM, GI_NAYRUS_LOVE, true, LOGIC_NAYRUS_LOVE, RHT_NAYRUS_LOVE, ITEM_NAYRUS_LOVE, OBJECT_GI_GODDESS, GID_NAYRUS_LOVE, 0xAF, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_FIRE_ARROWS] = Item(RG_FIRE_ARROWS, Text{"Fire Arrow", "Flèche de Feu", "Feuerpfeil" }, ITEMTYPE_ITEM, GI_ARROW_FIRE, true, LOGIC_FIRE_ARROWS, RHT_FIRE_ARROWS, ITEM_ARROW_FIRE, OBJECT_GI_M_ARROW, GID_ARROW_FIRE, 0x70, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_ICE_ARROWS] = Item(RG_ICE_ARROWS, Text{"Ice Arrow", "Flèche de Glace", "Eispfeil" }, ITEMTYPE_ITEM, GI_ARROW_ICE, true, LOGIC_ICE_ARROWS, RHT_ICE_ARROWS, ITEM_ARROW_ICE, OBJECT_GI_M_ARROW, GID_ARROW_ICE, 0x71, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_LIGHT_ARROWS] = Item(RG_LIGHT_ARROWS, Text{"Light Arrow", "Flèche de Lumière", "Lichtpfeil" }, ITEMTYPE_ITEM, GI_ARROW_LIGHT, true, LOGIC_LIGHT_ARROWS, RHT_LIGHT_ARROWS, ITEM_ARROW_LIGHT, OBJECT_GI_M_ARROW, GID_ARROW_LIGHT, 0x72, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_GERUDO_MEMBERSHIP_CARD] = Item(RG_GERUDO_MEMBERSHIP_CARD, Text{"Gerudo Membership Card", "Carte Gerudo", "Gerudo-Pass" }, ITEMTYPE_ITEM, GI_GERUDO_CARD, true, LOGIC_GERUDO_CARD, RHT_GERUDO_MEMBERSHIP_CARD, ITEM_GERUDO_CARD, OBJECT_GI_GERUDO, GID_GERUDO_CARD, 0x7B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_MAGIC_BEAN] = Item(RG_MAGIC_BEAN, Text{"Magic Bean", "Haricots Magiques", "Wundererbse" }, ITEMTYPE_ITEM, GI_BEAN, true, LOGIC_MAGIC_BEAN, RHT_MAGIC_BEAN, ITEM_BEAN, OBJECT_GI_BEAN, GID_BEAN, 0x48, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_MAGIC_BEAN_PACK] = Item(RG_MAGIC_BEAN_PACK, Text{"Magic Bean Pack", "Paquet de Haricots Magiques", "Wundererbsen-Packung" }, ITEMTYPE_ITEM, RG_MAGIC_BEAN_PACK, true, LOGIC_MAGIC_BEAN, RHT_MAGIC_BEAN_PACK, RG_MAGIC_BEAN_PACK, OBJECT_GI_BEAN, GID_BEAN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_DOUBLE_DEFENSE] = Item(RG_DOUBLE_DEFENSE, Text{"Double Defense", "Double Défence", "Doppelte Verteidigung" }, ITEMTYPE_ITEM, RG_DOUBLE_DEFENSE, true, LOGIC_DOUBLE_DEFENSE, RHT_DOUBLE_DEFENSE, RG_DOUBLE_DEFENSE, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xE9, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DOUBLE_DEFENSE].SetCustomDrawFunc(Randomizer_DrawDoubleDefense); // Trade Quest Items - itemTable[RG_WEIRD_EGG] = Item(RG_WEIRD_EGG, Text{ "Weird Egg", "Oeuf Curieux", "Seltsames Ei" }, ITEMTYPE_ITEM, GI_WEIRD_EGG, true, LOGIC_WEIRD_EGG, RHT_WEIRD_EGG, ITEM_WEIRD_EGG, OBJECT_GI_EGG, GID_EGG, 0x9A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ZELDAS_LETTER] = Item(RG_ZELDAS_LETTER, Text{ "Zelda's Letter", "Lettre de Zelda", "Zeldas Brief" }, ITEMTYPE_ITEM, GI_LETTER_ZELDA, true, LOGIC_ZELDAS_LETTER, RHT_ZELDAS_LETTER, ITEM_LETTER_ZELDA, OBJECT_GI_LETTER, GID_LETTER_ZELDA, 0x69, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_POCKET_EGG] = Item(RG_POCKET_EGG, Text{ "Pocket Egg", "Oeuf de poche", "Ei" }, ITEMTYPE_ITEM, GI_POCKET_EGG, true, LOGIC_POCKET_EGG, RHT_POCKET_EGG, ITEM_POCKET_EGG, OBJECT_GI_EGG, GID_EGG, 0x01, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_COJIRO] = Item(RG_COJIRO, Text{ "Cojiro", "P'tit Poulet", "Henni" }, ITEMTYPE_ITEM, GI_COJIRO, true, LOGIC_COJIRO, RHT_COJIRO, ITEM_COJIRO, OBJECT_GI_NIWATORI, GID_COJIRO, 0x02, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ODD_MUSHROOM] = Item(RG_ODD_MUSHROOM, Text{ "Odd Mushroom", "Champigon Suspect", "Schimmelpilz" }, ITEMTYPE_ITEM, GI_ODD_MUSHROOM, true, LOGIC_ODD_MUSHROOM, RHT_ODD_MUSHROOM, ITEM_ODD_MUSHROOM, OBJECT_GI_MUSHROOM, GID_ODD_MUSHROOM, 0x03, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ODD_POTION] = Item(RG_ODD_POTION, Text{ "Odd Potion", "Mixture Suspecte", "Modertrank" }, ITEMTYPE_ITEM, GI_ODD_POTION, true, LOGIC_ODD_POULTICE, RHT_ODD_POTION, ITEM_ODD_POTION, OBJECT_GI_POWDER, GID_ODD_POTION, 0x04, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_POACHERS_SAW] = Item(RG_POACHERS_SAW, Text{ "Poacher's Saw", "Scie du Chasseur", "Säge" }, ITEMTYPE_ITEM, GI_SAW, true, LOGIC_POACHERS_SAW, RHT_POACHERS_SAW, ITEM_SAW, OBJECT_GI_SAW, GID_SAW, 0x05, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BROKEN_SWORD] = Item(RG_BROKEN_SWORD, Text{ "Broken Goron's Sword", "Épée Brisée de Goron", "Zerbrochenes Goronen-Schwert" }, ITEMTYPE_ITEM, GI_SWORD_BROKEN, true, LOGIC_BROKEN_SWORD, RHT_BROKEN_SWORD, ITEM_SWORD_BROKEN, OBJECT_GI_BROKENSWORD, GID_SWORD_BROKEN, 0x08, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_PRESCRIPTION] = Item(RG_PRESCRIPTION, Text{ "Prescription", "Ordonnance", "Rezept" }, ITEMTYPE_ITEM, GI_PRESCRIPTION, true, LOGIC_PRESCRIPTION, RHT_PRESCRIPTION, ITEM_PRESCRIPTION, OBJECT_GI_PRESCRIPTION, GID_PRESCRIPTION, 0x09, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_EYEBALL_FROG] = Item(RG_EYEBALL_FROG, Text{ "Eyeball Frog", "Crapaud-qui-louche", "Glotzfrosch" }, ITEMTYPE_ITEM, GI_FROG, true, LOGIC_EYEBALL_FROG, RHT_EYEBALL_FROG, ITEM_FROG, OBJECT_GI_FROG, GID_FROG, 0x0D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_EYEDROPS] = Item(RG_EYEDROPS, Text{ "World's Finest Eyedrops", "Super Gouttes", "Augentropfen" }, ITEMTYPE_ITEM, GI_EYEDROPS, true, LOGIC_EYEDROPS, RHT_EYEDROPS, ITEM_EYEDROPS, OBJECT_GI_EYE_LOTION, GID_EYEDROPS, 0x0E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_CLAIM_CHECK] = Item(RG_CLAIM_CHECK, Text{ "Claim Check", "Certificat", "Zertifikat" }, ITEMTYPE_ITEM, GI_CLAIM_CHECK, true, LOGIC_CLAIM_CHECK, RHT_CLAIM_CHECK, ITEM_CLAIM_CHECK, OBJECT_GI_TICKETSTONE, GID_CLAIM_CHECK, 0x0A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_WEIRD_EGG] = Item(RG_WEIRD_EGG, Text{"Weird Egg", "Oeuf Curieux", "Seltsames Ei" }, ITEMTYPE_ITEM, GI_WEIRD_EGG, true, LOGIC_WEIRD_EGG, RHT_WEIRD_EGG, ITEM_WEIRD_EGG, OBJECT_GI_EGG, GID_EGG, 0x9A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_ZELDAS_LETTER] = Item(RG_ZELDAS_LETTER, Text{"Zelda's Letter", "Lettre de Zelda", "Zeldas Brief" }, ITEMTYPE_ITEM, GI_LETTER_ZELDA, true, LOGIC_ZELDAS_LETTER, RHT_ZELDAS_LETTER, ITEM_LETTER_ZELDA, OBJECT_GI_LETTER, GID_LETTER_ZELDA, 0x69, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_POCKET_EGG] = Item(RG_POCKET_EGG, Text{"Pocket Egg", "Oeuf de poche", "Ei" }, ITEMTYPE_ITEM, GI_POCKET_EGG, true, LOGIC_POCKET_EGG, RHT_POCKET_EGG, ITEM_POCKET_EGG, OBJECT_GI_EGG, GID_EGG, 0x01, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_COJIRO] = Item(RG_COJIRO, Text{"Cojiro", "P'tit Poulet", "Henni" }, ITEMTYPE_ITEM, GI_COJIRO, true, LOGIC_COJIRO, RHT_COJIRO, ITEM_COJIRO, OBJECT_GI_NIWATORI, GID_COJIRO, 0x02, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_ODD_MUSHROOM] = Item(RG_ODD_MUSHROOM, Text{"Odd Mushroom", "Champigon Suspect", "Schimmelpilz" }, ITEMTYPE_ITEM, GI_ODD_MUSHROOM, true, LOGIC_ODD_MUSHROOM, RHT_ODD_MUSHROOM, ITEM_ODD_MUSHROOM, OBJECT_GI_MUSHROOM, GID_ODD_MUSHROOM, 0x03, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_ODD_POTION] = Item(RG_ODD_POTION, Text{"Odd Potion", "Mixture Suspecte", "Modertrank" }, ITEMTYPE_ITEM, GI_ODD_POTION, true, LOGIC_ODD_POULTICE, RHT_ODD_POTION, ITEM_ODD_POTION, OBJECT_GI_POWDER, GID_ODD_POTION, 0x04, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_POACHERS_SAW] = Item(RG_POACHERS_SAW, Text{"Poacher's Saw", "Scie du Chasseur", "Säge" }, ITEMTYPE_ITEM, GI_SAW, true, LOGIC_POACHERS_SAW, RHT_POACHERS_SAW, ITEM_SAW, OBJECT_GI_SAW, GID_SAW, 0x05, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BROKEN_SWORD] = Item(RG_BROKEN_SWORD, Text{"Broken Goron's Sword", "Épée Brisée de Goron", "Zerbrochenes Goronen-Schwert" }, ITEMTYPE_ITEM, GI_SWORD_BROKEN, true, LOGIC_BROKEN_SWORD, RHT_BROKEN_SWORD, ITEM_SWORD_BROKEN, OBJECT_GI_BROKENSWORD, GID_SWORD_BROKEN, 0x08, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_PRESCRIPTION] = Item(RG_PRESCRIPTION, Text{"Prescription", "Ordonnance", "Rezept" }, ITEMTYPE_ITEM, GI_PRESCRIPTION, true, LOGIC_PRESCRIPTION, RHT_PRESCRIPTION, ITEM_PRESCRIPTION, OBJECT_GI_PRESCRIPTION, GID_PRESCRIPTION, 0x09, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_EYEBALL_FROG] = Item(RG_EYEBALL_FROG, Text{"Eyeball Frog", "Crapaud-qui-louche", "Glotzfrosch" }, ITEMTYPE_ITEM, GI_FROG, true, LOGIC_EYEBALL_FROG, RHT_EYEBALL_FROG, ITEM_FROG, OBJECT_GI_FROG, GID_FROG, 0x0D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_EYEDROPS] = Item(RG_EYEDROPS, Text{"World's Finest Eyedrops", "Super Gouttes", "Augentropfen" }, ITEMTYPE_ITEM, GI_EYEDROPS, true, LOGIC_EYEDROPS, RHT_EYEDROPS, ITEM_EYEDROPS, OBJECT_GI_EYE_LOTION, GID_EYEDROPS, 0x0E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_CLAIM_CHECK] = Item(RG_CLAIM_CHECK, Text{"Claim Check", "Certificat", "Zertifikat" }, ITEMTYPE_ITEM, GI_CLAIM_CHECK, true, LOGIC_CLAIM_CHECK, RHT_CLAIM_CHECK, ITEM_CLAIM_CHECK, OBJECT_GI_TICKETSTONE, GID_CLAIM_CHECK, 0x0A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); // Skulltula Token - itemTable[RG_GOLD_SKULLTULA_TOKEN] = Item(RG_GOLD_SKULLTULA_TOKEN, Text{ "Gold Skulltula Token", "Symbole de Skulltula d'Or", "Goldenes Skulltula-Symbol" }, ITEMTYPE_TOKEN, GI_SKULL_TOKEN, true, LOGIC_GOLD_SKULLTULA_TOKENS, RHT_GOLD_SKULLTULA_TOKEN, ITEM_SKULL_TOKEN, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, 0xB4, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SKULLTULA_TOKEN, MOD_NONE); + itemTable[RG_GOLD_SKULLTULA_TOKEN] = Item(RG_GOLD_SKULLTULA_TOKEN, Text{"Gold Skulltula Token", "Symbole de Skulltula d'Or", "Goldenes Skulltula-Symbol" }, ITEMTYPE_TOKEN, GI_SKULL_TOKEN, true, LOGIC_GOLD_SKULLTULA_TOKENS, RHT_GOLD_SKULLTULA_TOKEN, ITEM_SKULL_TOKEN, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, 0xB4, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SKULLTULA_TOKEN, MOD_NONE); // Progressive Items - itemTable[RG_PROGRESSIVE_HOOKSHOT] = Item(RG_PROGRESSIVE_HOOKSHOT, Text{ "Progressive Hookshot", "Grappin (prog.)", "Progressiver Fanghaken" }, ITEMTYPE_ITEM, 0x80, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_PROGRESSIVE_HOOKSHOT, true); - itemTable[RG_PROGRESSIVE_STRENGTH] = Item(RG_PROGRESSIVE_STRENGTH, Text{ "Strength Upgrade", "Amélioration de Force (prog.)", "Progressives Kraft-Upgrade" }, ITEMTYPE_ITEM, 0x81, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_PROGRESSIVE_STRENGTH, true); - itemTable[RG_PROGRESSIVE_BOMB_BAG] = Item(RG_PROGRESSIVE_BOMB_BAG, Text{ "Progressive Bomb Bag", "Sac de Bombes (prog.)", "Progressive Bombentasche" }, ITEMTYPE_ITEM, 0x82, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_PROGRESSIVE_BOMB_BAG, true); - itemTable[RG_PROGRESSIVE_BOW] = Item(RG_PROGRESSIVE_BOW, Text{ "Progressive Bow", "Arc (prog.)", "Progressiver Bogen" }, ITEMTYPE_ITEM, 0x83, true, LOGIC_PROGRESSIVE_BOW, RHT_PROGRESSIVE_BOW, true); - itemTable[RG_PROGRESSIVE_SLINGSHOT] = Item(RG_PROGRESSIVE_SLINGSHOT, Text{ "Progressive Slingshot", "Lance-Pierre (prog.)", "Progressive Steinschleuder" }, ITEMTYPE_ITEM, 0x84, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_PROGRESSIVE_SLINGSHOT, true); - itemTable[RG_PROGRESSIVE_WALLET] = Item(RG_PROGRESSIVE_WALLET, Text{ "Progressive Wallet", "Bourse (prog.)", "Progressive Geldbörse" }, ITEMTYPE_ITEM, 0x85, true, LOGIC_PROGRESSIVE_WALLET, RHT_PROGRESSIVE_WALLET, true); - itemTable[RG_PROGRESSIVE_SCALE] = Item(RG_PROGRESSIVE_SCALE, Text{ "Progressive Scale", "Écaille (prog.)", "Progressive Schuppe" }, ITEMTYPE_ITEM, 0x86, true, LOGIC_PROGRESSIVE_SCALE, RHT_PROGRESSIVE_SCALE, true); - itemTable[RG_PROGRESSIVE_NUT_UPGRADE] = Item(RG_PROGRESSIVE_NUT_UPGRADE, Text{ "Progressive Nut Capacity", "Capacité de Noix (prog.)", "Progressive Nuß-Kapazität" }, ITEMTYPE_ITEM, 0x87, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_PROGRESSIVE_NUT_UPGRADE, true); - itemTable[RG_PROGRESSIVE_STICK_UPGRADE] = Item(RG_PROGRESSIVE_STICK_UPGRADE, Text{ "Progressive Stick Capacity", "Capacité de Bâtons (prog.)", "Progressive Stab-Kapazität" }, ITEMTYPE_ITEM, 0x88, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_PROGRESSIVE_STICK_UPGRADE, true); - itemTable[RG_PROGRESSIVE_BOMBCHUS] = Item(RG_PROGRESSIVE_BOMBCHUS, Text{ "Progressive Bombchu", "Missiles (prog.)", "Progressive Krabbelminen" }, ITEMTYPE_ITEM, 0x89, true, LOGIC_BOMBCHUS, RHT_PROGRESSIVE_BOMBCHUS, RG_PROGRESSIVE_BOMBCHUS, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, true); - itemTable[RG_PROGRESSIVE_MAGIC_METER] = Item(RG_PROGRESSIVE_MAGIC_METER, Text{ "Progressive Magic Meter", "Jauge de Magie (prog.)", "Progressives Magisches Maß" }, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_PROGRESSIVE_MAGIC_METER, true); - itemTable[RG_PROGRESSIVE_OCARINA] = Item(RG_PROGRESSIVE_OCARINA, Text{ "Progressive Ocarina", "Ocarina (prog.)", "Progressive Okarina" }, ITEMTYPE_ITEM, 0x8B, true, LOGIC_PROGRESSIVE_OCARINA, RHT_PROGRESSIVE_OCARINA, true); - itemTable[RG_PROGRESSIVE_GORONSWORD] = Item(RG_PROGRESSIVE_GORONSWORD, Text{ "Progressive Goron Sword", "Épée Goron (prog.)", "Progressives Goronen-Schwert" }, ITEMTYPE_ITEM, 0xD4, true, LOGIC_PROGRESSIVE_GIANT_KNIFE, RHT_PROGRESSIVE_GORONSWORD, true); + itemTable[RG_PROGRESSIVE_HOOKSHOT] = Item(RG_PROGRESSIVE_HOOKSHOT, Text{"Progressive Hookshot", "Grappin (prog.)", "Progressiver Fanghaken" }, ITEMTYPE_ITEM, 0x80, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_PROGRESSIVE_HOOKSHOT, true); + itemTable[RG_PROGRESSIVE_STRENGTH] = Item(RG_PROGRESSIVE_STRENGTH, Text{"Strength Upgrade", "Amélioration de Force (prog.)", "Progressives Kraft-Upgrade" }, ITEMTYPE_ITEM, 0x81, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_PROGRESSIVE_STRENGTH, true); + itemTable[RG_PROGRESSIVE_BOMB_BAG] = Item(RG_PROGRESSIVE_BOMB_BAG, Text{"Progressive Bomb Bag", "Sac de Bombes (prog.)", "Progressive Bombentasche" }, ITEMTYPE_ITEM, 0x82, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_PROGRESSIVE_BOMB_BAG, true); + itemTable[RG_PROGRESSIVE_BOW] = Item(RG_PROGRESSIVE_BOW, Text{"Progressive Bow", "Arc (prog.)", "Progressiver Bogen" }, ITEMTYPE_ITEM, 0x83, true, LOGIC_PROGRESSIVE_BOW, RHT_PROGRESSIVE_BOW, true); + itemTable[RG_PROGRESSIVE_SLINGSHOT] = Item(RG_PROGRESSIVE_SLINGSHOT, Text{"Progressive Slingshot", "Lance-Pierre (prog.)", "Progressive Steinschleuder" }, ITEMTYPE_ITEM, 0x84, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_PROGRESSIVE_SLINGSHOT, true); + itemTable[RG_PROGRESSIVE_WALLET] = Item(RG_PROGRESSIVE_WALLET, Text{"Progressive Wallet", "Bourse (prog.)", "Progressive Geldbörse" }, ITEMTYPE_ITEM, 0x85, true, LOGIC_PROGRESSIVE_WALLET, RHT_PROGRESSIVE_WALLET, true); + itemTable[RG_PROGRESSIVE_SCALE] = Item(RG_PROGRESSIVE_SCALE, Text{"Progressive Scale", "Écaille (prog.)", "Progressive Schuppe" }, ITEMTYPE_ITEM, 0x86, true, LOGIC_PROGRESSIVE_SCALE, RHT_PROGRESSIVE_SCALE, true); + itemTable[RG_PROGRESSIVE_NUT_UPGRADE] = Item(RG_PROGRESSIVE_NUT_UPGRADE, Text{"Progressive Nut Capacity", "Capacité de Noix (prog.)", "Progressive Nuß-Kapazität" }, ITEMTYPE_ITEM, 0x87, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_PROGRESSIVE_NUT_UPGRADE, true); + itemTable[RG_PROGRESSIVE_STICK_UPGRADE] = Item(RG_PROGRESSIVE_STICK_UPGRADE, Text{"Progressive Stick Capacity", "Capacité de Bâtons (prog.)", "Progressive Stab-Kapazität" }, ITEMTYPE_ITEM, 0x88, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_PROGRESSIVE_STICK_UPGRADE, true); + itemTable[RG_PROGRESSIVE_BOMBCHUS] = Item(RG_PROGRESSIVE_BOMBCHUS, Text{"Progressive Bombchu", "Missiles (prog.)", "Progressive Krabbelminen" }, ITEMTYPE_ITEM, 0x89, true, LOGIC_BOMBCHUS, RHT_PROGRESSIVE_BOMBCHUS, RG_PROGRESSIVE_BOMBCHUS, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, true); + itemTable[RG_PROGRESSIVE_MAGIC_METER] = Item(RG_PROGRESSIVE_MAGIC_METER, Text{"Progressive Magic Meter", "Jauge de Magie (prog.)", "Progressives Magisches Maß" }, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_PROGRESSIVE_MAGIC_METER, true); + itemTable[RG_PROGRESSIVE_OCARINA] = Item(RG_PROGRESSIVE_OCARINA, Text{"Progressive Ocarina", "Ocarina (prog.)", "Progressive Okarina" }, ITEMTYPE_ITEM, 0x8B, true, LOGIC_PROGRESSIVE_OCARINA, RHT_PROGRESSIVE_OCARINA, true); + itemTable[RG_PROGRESSIVE_GORONSWORD] = Item(RG_PROGRESSIVE_GORONSWORD, Text{"Progressive Goron Sword", "Épée Goron (prog.)", "Progressives Goronen-Schwert" }, ITEMTYPE_ITEM, 0xD4, true, LOGIC_PROGRESSIVE_GIANT_KNIFE, RHT_PROGRESSIVE_GORONSWORD, true); // Bottles - itemTable[RG_EMPTY_BOTTLE] = Item(RG_EMPTY_BOTTLE, Text{ "Empty Bottle", "Bouteille Vide", "Leere Flasche" }, ITEMTYPE_ITEM, GI_BOTTLE, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_MILK, ITEM_BOTTLE, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x42, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOTTLE_WITH_MILK] = Item(RG_BOTTLE_WITH_MILK, Text{ "Bottle with Milk", "Bouteille avec du Lait", "Flasche mit Milch" }, ITEMTYPE_ITEM, GI_MILK_BOTTLE, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_MILK, ITEM_MILK_BOTTLE, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOTTLE_WITH_RED_POTION] = Item(RG_BOTTLE_WITH_RED_POTION, Text{ "Bottle with Red Potion", "Bouteille avec une Potion Rouge", "Flasche mit rotem Elixier" }, ITEMTYPE_ITEM, 0x8C, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_RED_POTION, RG_BOTTLE_WITH_RED_POTION, OBJECT_GI_LIQUID, GID_POTION_RED, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_GREEN_POTION] = Item(RG_BOTTLE_WITH_GREEN_POTION, Text{ "Bottle with Green Potion", "Bouteille avec une Potion Verte", "Flasche mit grünem Elixier" }, ITEMTYPE_ITEM, 0x8D, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_GREEN_POTION, RG_BOTTLE_WITH_GREEN_POTION, OBJECT_GI_LIQUID, GID_POTION_GREEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_BLUE_POTION] = Item(RG_BOTTLE_WITH_BLUE_POTION, Text{ "Bottle with Blue Potion", "Bouteille avec une Potion Bleue", "Flasche mit blauem Elixier" }, ITEMTYPE_ITEM, 0x8E, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BLUE_POTION, RG_BOTTLE_WITH_BLUE_POTION, OBJECT_GI_LIQUID, GID_POTION_BLUE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_FAIRY] = Item(RG_BOTTLE_WITH_FAIRY, Text{ "Bottle with Fairy", "Bouteille avec une Fée", "Flasche mit Fee" }, ITEMTYPE_ITEM, 0x8F, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_FAIRY, RG_BOTTLE_WITH_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_FISH] = Item(RG_BOTTLE_WITH_FISH, Text{ "Bottle with Fish", "Bouteille avec un Poisson", "Flasche mit Fisch" }, ITEMTYPE_ITEM, 0x90, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_FISH, RG_BOTTLE_WITH_FISH, OBJECT_GI_FISH, GID_FISH, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_BLUE_FIRE] = Item(RG_BOTTLE_WITH_BLUE_FIRE, Text{ "Bottle with Blue Fire", "Bouteille avec une Flamme Bleue", "Flasche mit blauem Feuer" }, ITEMTYPE_ITEM, 0x91, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BLUE_FIRE, RG_BOTTLE_WITH_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_BUGS] = Item(RG_BOTTLE_WITH_BUGS, Text{ "Bottle with Bugs", "Bouteille avec des Insectes", "Flasche mit Wanzen" }, ITEMTYPE_ITEM, 0x92, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BUGS, RG_BOTTLE_WITH_BUGS, OBJECT_GI_INSECT, GID_BUG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BOTTLE_WITH_POE] = Item(RG_BOTTLE_WITH_POE, Text{ "Bottle with Poe", "Bouteille avec un Esprit", "Flasche mit einem Geist" }, ITEMTYPE_ITEM, 0x94, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_POE, RG_BOTTLE_WITH_POE, OBJECT_GI_GHOST, GID_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_RUTOS_LETTER] = Item(RG_RUTOS_LETTER, Text{ "Bottle with Ruto's Letter", "Bouteille avec la Lettre de Ruto", "Flasche mit Rutos Brief" }, ITEMTYPE_ITEM, GI_LETTER_RUTO, true, LOGIC_RUTOS_LETTER, RHT_RUTOS_LETTER, ITEM_LETTER_RUTO, OBJECT_GI_BOTTLE_LETTER, GID_LETTER_RUTO, 0x99, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOTTLE_WITH_BIG_POE] = Item(RG_BOTTLE_WITH_BIG_POE, Text{ "Bottle with Big Poe", "Bouteille avec une Âme", "Flasche mit Seele" }, ITEMTYPE_ITEM, 0x93, true, LOGIC_BOTTLE_WITH_BIG_POE, RHT_BOTTLE_WITH_BIG_POE, RG_BOTTLE_WITH_BIG_POE, OBJECT_GI_GHOST, GID_BIG_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_EMPTY_BOTTLE] = Item(RG_EMPTY_BOTTLE, Text{"Empty Bottle", "Bouteille Vide", "Leere Flasche" }, ITEMTYPE_ITEM, GI_BOTTLE, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_MILK, ITEM_BOTTLE, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x42, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BOTTLE_WITH_MILK] = Item(RG_BOTTLE_WITH_MILK, Text{"Bottle with Milk", "Bouteille avec du Lait", "Flasche mit Milch" }, ITEMTYPE_ITEM, GI_MILK_BOTTLE, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_MILK, ITEM_MILK_BOTTLE, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BOTTLE_WITH_RED_POTION] = Item(RG_BOTTLE_WITH_RED_POTION, Text{"Bottle with Red Potion", "Bouteille avec une Potion Rouge", "Flasche mit rotem Elixier" }, ITEMTYPE_ITEM, 0x8C, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_RED_POTION, RG_BOTTLE_WITH_RED_POTION, OBJECT_GI_LIQUID, GID_POTION_RED, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOTTLE_WITH_GREEN_POTION] = Item(RG_BOTTLE_WITH_GREEN_POTION, Text{"Bottle with Green Potion", "Bouteille avec une Potion Verte", "Flasche mit grünem Elixier" }, ITEMTYPE_ITEM, 0x8D, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_GREEN_POTION, RG_BOTTLE_WITH_GREEN_POTION, OBJECT_GI_LIQUID, GID_POTION_GREEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOTTLE_WITH_BLUE_POTION] = Item(RG_BOTTLE_WITH_BLUE_POTION, Text{"Bottle with Blue Potion", "Bouteille avec une Potion Bleue", "Flasche mit blauem Elixier" }, ITEMTYPE_ITEM, 0x8E, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BLUE_POTION, RG_BOTTLE_WITH_BLUE_POTION, OBJECT_GI_LIQUID, GID_POTION_BLUE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOTTLE_WITH_FAIRY] = Item(RG_BOTTLE_WITH_FAIRY, Text{"Bottle with Fairy", "Bouteille avec une Fée", "Flasche mit Fee" }, ITEMTYPE_ITEM, 0x8F, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_FAIRY, RG_BOTTLE_WITH_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOTTLE_WITH_FISH] = Item(RG_BOTTLE_WITH_FISH, Text{"Bottle with Fish", "Bouteille avec un Poisson", "Flasche mit Fisch" }, ITEMTYPE_ITEM, 0x90, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_FISH, RG_BOTTLE_WITH_FISH, OBJECT_GI_FISH, GID_FISH, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOTTLE_WITH_BLUE_FIRE] = Item(RG_BOTTLE_WITH_BLUE_FIRE, Text{"Bottle with Blue Fire", "Bouteille avec une Flamme Bleue", "Flasche mit blauem Feuer" }, ITEMTYPE_ITEM, 0x91, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BLUE_FIRE, RG_BOTTLE_WITH_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOTTLE_WITH_BUGS] = Item(RG_BOTTLE_WITH_BUGS, Text{"Bottle with Bugs", "Bouteille avec des Insectes", "Flasche mit Wanzen" }, ITEMTYPE_ITEM, 0x92, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_BUGS, RG_BOTTLE_WITH_BUGS, OBJECT_GI_INSECT, GID_BUG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BOTTLE_WITH_POE] = Item(RG_BOTTLE_WITH_POE, Text{"Bottle with Poe", "Bouteille avec un Esprit", "Flasche mit einem Geist" }, ITEMTYPE_ITEM, 0x94, true, LOGIC_BOTTLES, RHT_BOTTLE_WITH_POE, RG_BOTTLE_WITH_POE, OBJECT_GI_GHOST, GID_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_RUTOS_LETTER] = Item(RG_RUTOS_LETTER, Text{"Bottle with Ruto's Letter", "Bouteille avec la Lettre de Ruto", "Flasche mit Rutos Brief" }, ITEMTYPE_ITEM, GI_LETTER_RUTO, true, LOGIC_RUTOS_LETTER, RHT_RUTOS_LETTER, ITEM_LETTER_RUTO, OBJECT_GI_BOTTLE_LETTER, GID_LETTER_RUTO, 0x99, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BOTTLE_WITH_BIG_POE] = Item(RG_BOTTLE_WITH_BIG_POE, Text{"Bottle with Big Poe", "Bouteille avec une Âme", "Flasche mit Seele" }, ITEMTYPE_ITEM, 0x93, true, LOGIC_BOTTLE_WITH_BIG_POE, RHT_BOTTLE_WITH_BIG_POE, RG_BOTTLE_WITH_BIG_POE, OBJECT_GI_GHOST, GID_BIG_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); // Songs - itemTable[RG_ZELDAS_LULLABY] = Item(RG_ZELDAS_LULLABY, Text{ "Zelda's Lullaby", "Berceuse de Zelda", "Zeldas Wiegenlied" }, ITEMTYPE_SONG, 0xC1, true, LOGIC_ZELDAS_LULLABY, RHT_ZELDAS_LULLABY, ITEM_SONG_LULLABY, OBJECT_GI_MELODY, GID_SONG_ZELDA, 0xD4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_EPONAS_SONG] = Item(RG_EPONAS_SONG, Text{ "Epona's Song", "Chant d'Epona", "Eponas Lied" }, ITEMTYPE_SONG, 0xC2, true, LOGIC_EPONAS_SONG, RHT_EPONAS_SONG, ITEM_SONG_EPONA, OBJECT_GI_MELODY, GID_SONG_EPONA, 0xD2, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SARIAS_SONG] = Item(RG_SARIAS_SONG, Text{ "Saria's Song", "Chant de Saria", "Salias Lied" }, ITEMTYPE_SONG, 0xC3, true, LOGIC_SARIAS_SONG, RHT_SARIAS_SONG, ITEM_SONG_SARIA, OBJECT_GI_MELODY, GID_SONG_SARIA, 0xD1, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SUNS_SONG] = Item(RG_SUNS_SONG, Text{ "Sun's Song", "Chant du Soleil", "Hymne der Sonne" }, ITEMTYPE_SONG, 0xC4, true, LOGIC_SUNS_SONG, RHT_SUNS_SONG, ITEM_SONG_SUN, OBJECT_GI_MELODY, GID_SONG_SUN, 0xD3, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SONG_OF_TIME] = Item(RG_SONG_OF_TIME, Text{ "Song of Time", "Chant du Temps", "Hymne der Zeit" }, ITEMTYPE_SONG, 0xC5, true, LOGIC_SONG_OF_TIME, RHT_SONG_OF_TIME, ITEM_SONG_TIME, OBJECT_GI_MELODY, GID_SONG_TIME, 0xD5, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SONG_OF_STORMS] = Item(RG_SONG_OF_STORMS, Text{ "Song of Storms", "Chant des Tempêtes", "Hymne des Sturms" }, ITEMTYPE_SONG, 0xC6, true, LOGIC_SONG_OF_STORMS, RHT_SONG_OF_STORMS, ITEM_SONG_STORMS, OBJECT_GI_MELODY, GID_SONG_STORM, 0xD6, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_MINUET_OF_FOREST] = Item(RG_MINUET_OF_FOREST, Text{ "Minuet of Forest", "Menuet des Bois", "Menuett des Waldes" }, ITEMTYPE_SONG, 0xBB, true, LOGIC_MINUET_OF_FOREST, RHT_MINUET_OF_FOREST, ITEM_SONG_MINUET, OBJECT_GI_MELODY, GID_SONG_MINUET, 0x73, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOLERO_OF_FIRE] = Item(RG_BOLERO_OF_FIRE, Text{ "Bolero of Fire", "Boléro du Feu", "Bolero des Feuers" }, ITEMTYPE_SONG, 0xBC, true, LOGIC_BOLERO_OF_FIRE, RHT_BOLERO_OF_FIRE, ITEM_SONG_BOLERO, OBJECT_GI_MELODY, GID_SONG_BOLERO, 0x74, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SERENADE_OF_WATER] = Item(RG_SERENADE_OF_WATER, Text{ "Serenade of Water", "Sérénade de l'Eau", "Serenade des Wassers" }, ITEMTYPE_SONG, 0xBD, true, LOGIC_SERENADE_OF_WATER, RHT_SERENADE_OF_WATER, ITEM_SONG_SERENADE, OBJECT_GI_MELODY, GID_SONG_SERENADE, 0x75, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_NOCTURNE_OF_SHADOW] = Item(RG_NOCTURNE_OF_SHADOW, Text{ "Nocturne of Shadow", "Nocturne de l'Ombre", "Nocturne des Schattens" }, ITEMTYPE_SONG, 0xBF, true, LOGIC_NOCTURNE_OF_SHADOW, RHT_NOCTURNE_OF_SHADOW, ITEM_SONG_NOCTURNE, OBJECT_GI_MELODY, GID_SONG_NOCTURNE, 0x77, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_REQUIEM_OF_SPIRIT] = Item(RG_REQUIEM_OF_SPIRIT, Text{ "Requiem of Spirit", "Requiem des Esprits", "Requiem der Geister" }, ITEMTYPE_SONG, 0xBE, true, LOGIC_REQUIEM_OF_SPIRIT, RHT_REQUIEM_OF_SPIRIT, ITEM_SONG_REQUIEM, OBJECT_GI_MELODY, GID_SONG_REQUIEM, 0x76, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_PRELUDE_OF_LIGHT] = Item(RG_PRELUDE_OF_LIGHT, Text{ "Prelude of Light", "Prélude de la Lumière", "Kantate des Lichts" }, ITEMTYPE_SONG, 0xC0, true, LOGIC_PRELUDE_OF_LIGHT, RHT_PRELUDE_OF_LIGHT, ITEM_SONG_PRELUDE, OBJECT_GI_MELODY, GID_SONG_PRELUDE, 0x78, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_ZELDAS_LULLABY] = Item(RG_ZELDAS_LULLABY, Text{"Zelda's Lullaby", "Berceuse de Zelda", "Zeldas Wiegenlied" }, ITEMTYPE_SONG, 0xC1, true, LOGIC_ZELDAS_LULLABY, RHT_ZELDAS_LULLABY, ITEM_SONG_LULLABY, OBJECT_GI_MELODY, GID_SONG_ZELDA, 0xD4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_EPONAS_SONG] = Item(RG_EPONAS_SONG, Text{"Epona's Song", "Chant d'Epona", "Eponas Lied" }, ITEMTYPE_SONG, 0xC2, true, LOGIC_EPONAS_SONG, RHT_EPONAS_SONG, ITEM_SONG_EPONA, OBJECT_GI_MELODY, GID_SONG_EPONA, 0xD2, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SARIAS_SONG] = Item(RG_SARIAS_SONG, Text{"Saria's Song", "Chant de Saria", "Salias Lied" }, ITEMTYPE_SONG, 0xC3, true, LOGIC_SARIAS_SONG, RHT_SARIAS_SONG, ITEM_SONG_SARIA, OBJECT_GI_MELODY, GID_SONG_SARIA, 0xD1, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SUNS_SONG] = Item(RG_SUNS_SONG, Text{"Sun's Song", "Chant du Soleil", "Hymne der Sonne" }, ITEMTYPE_SONG, 0xC4, true, LOGIC_SUNS_SONG, RHT_SUNS_SONG, ITEM_SONG_SUN, OBJECT_GI_MELODY, GID_SONG_SUN, 0xD3, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SONG_OF_TIME] = Item(RG_SONG_OF_TIME, Text{"Song of Time", "Chant du Temps", "Hymne der Zeit" }, ITEMTYPE_SONG, 0xC5, true, LOGIC_SONG_OF_TIME, RHT_SONG_OF_TIME, ITEM_SONG_TIME, OBJECT_GI_MELODY, GID_SONG_TIME, 0xD5, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SONG_OF_STORMS] = Item(RG_SONG_OF_STORMS, Text{"Song of Storms", "Chant des Tempêtes", "Hymne des Sturms" }, ITEMTYPE_SONG, 0xC6, true, LOGIC_SONG_OF_STORMS, RHT_SONG_OF_STORMS, ITEM_SONG_STORMS, OBJECT_GI_MELODY, GID_SONG_STORM, 0xD6, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_MINUET_OF_FOREST] = Item(RG_MINUET_OF_FOREST, Text{"Minuet of Forest", "Menuet des Bois", "Menuett des Waldes" }, ITEMTYPE_SONG, 0xBB, true, LOGIC_MINUET_OF_FOREST, RHT_MINUET_OF_FOREST, ITEM_SONG_MINUET, OBJECT_GI_MELODY, GID_SONG_MINUET, 0x73, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BOLERO_OF_FIRE] = Item(RG_BOLERO_OF_FIRE, Text{"Bolero of Fire", "Boléro du Feu", "Bolero des Feuers" }, ITEMTYPE_SONG, 0xBC, true, LOGIC_BOLERO_OF_FIRE, RHT_BOLERO_OF_FIRE, ITEM_SONG_BOLERO, OBJECT_GI_MELODY, GID_SONG_BOLERO, 0x74, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SERENADE_OF_WATER] = Item(RG_SERENADE_OF_WATER, Text{"Serenade of Water", "Sérénade de l'Eau", "Serenade des Wassers" }, ITEMTYPE_SONG, 0xBD, true, LOGIC_SERENADE_OF_WATER, RHT_SERENADE_OF_WATER, ITEM_SONG_SERENADE, OBJECT_GI_MELODY, GID_SONG_SERENADE, 0x75, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_NOCTURNE_OF_SHADOW] = Item(RG_NOCTURNE_OF_SHADOW, Text{"Nocturne of Shadow", "Nocturne de l'Ombre", "Nocturne des Schattens" }, ITEMTYPE_SONG, 0xBF, true, LOGIC_NOCTURNE_OF_SHADOW, RHT_NOCTURNE_OF_SHADOW, ITEM_SONG_NOCTURNE, OBJECT_GI_MELODY, GID_SONG_NOCTURNE, 0x77, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_REQUIEM_OF_SPIRIT] = Item(RG_REQUIEM_OF_SPIRIT, Text{"Requiem of Spirit", "Requiem des Esprits", "Requiem der Geister" }, ITEMTYPE_SONG, 0xBE, true, LOGIC_REQUIEM_OF_SPIRIT, RHT_REQUIEM_OF_SPIRIT, ITEM_SONG_REQUIEM, OBJECT_GI_MELODY, GID_SONG_REQUIEM, 0x76, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_PRELUDE_OF_LIGHT] = Item(RG_PRELUDE_OF_LIGHT, Text{"Prelude of Light", "Prélude de la Lumière", "Kantate des Lichts" }, ITEMTYPE_SONG, 0xC0, true, LOGIC_PRELUDE_OF_LIGHT, RHT_PRELUDE_OF_LIGHT, ITEM_SONG_PRELUDE, OBJECT_GI_MELODY, GID_SONG_PRELUDE, 0x78, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); // Maps and Compasses - itemTable[RG_DEKU_TREE_MAP] = Item(RG_DEKU_TREE_MAP, Text{ "Great Deku Tree Map", "Carte de l'Arbre Mojo", "Karte des Deku-Baums" }, ITEMTYPE_MAP, 0xA5, false, LOGIC_MAP_DEKU_TREE, RHT_DEKU_TREE_MAP, RG_DEKU_TREE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_DODONGOS_CAVERN_MAP] = Item(RG_DODONGOS_CAVERN_MAP, Text{ "Dodongo's Cavern Map", "Carte de la Caverne Dodongo", "Karte der Dodongo-Höhle" }, ITEMTYPE_MAP, 0xA6, false, LOGIC_MAP_DODONGOS_CAVERN, RHT_DODONGOS_CAVERN_MAP, RG_DODONGOS_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_JABU_JABUS_BELLY_MAP] = Item(RG_JABU_JABUS_BELLY_MAP, Text{ "Jabu-Jabu's Belly Map", "Carte du Ventre de Jabu-Jabu", "Karte des Jabu-Jabu-Bauchs" }, ITEMTYPE_MAP, 0xA7, false, LOGIC_MAP_JABU_JABUS_BELLY, RHT_JABU_JABUS_BELLY_MAP, RG_JABU_JABUS_BELLY_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_FOREST_TEMPLE_MAP] = Item(RG_FOREST_TEMPLE_MAP, Text{ "Forest Temple Map", "Carte du Temple de la Forêt", "Karte des Waldtempels" }, ITEMTYPE_MAP, 0xA8, false, LOGIC_MAP_FOREST_TEMPLE, RHT_FOREST_TEMPLE_MAP, RG_FOREST_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_FIRE_TEMPLE_MAP] = Item(RG_FIRE_TEMPLE_MAP, Text{ "Fire Temple Map", "Carte due Temple de Feu", "Karte des Feuertempels" }, ITEMTYPE_MAP, 0xA9, false, LOGIC_MAP_FIRE_TEMPLE, RHT_FIRE_TEMPLE_MAP, RG_FIRE_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_WATER_TEMPLE_MAP] = Item(RG_WATER_TEMPLE_MAP, Text{ "Water Temple Map", "Carte du Temple de l'Eau", "Karte des Wassertempels" }, ITEMTYPE_MAP, 0xAA, false, LOGIC_MAP_WATER_TEMPLE, RHT_WATER_TEMPLE_MAP, RG_WATER_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_SPIRIT_TEMPLE_MAP] = Item(RG_SPIRIT_TEMPLE_MAP, Text{ "Spirit Temple Map", "Carte due Temple de l'Esprit", "Karte des Geistertempels" }, ITEMTYPE_MAP, 0xAB, false, LOGIC_MAP_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_MAP, RG_SPIRIT_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_SHADOW_TEMPLE_MAP] = Item(RG_SHADOW_TEMPLE_MAP, Text{ "Shadow Temple Map", "Carte du Temple de l'Ombre", "Karte des Schattentempels" }, ITEMTYPE_MAP, 0xAC, false, LOGIC_MAP_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_MAP, RG_SHADOW_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_BOTTOM_OF_THE_WELL_MAP] = Item(RG_BOTTOM_OF_THE_WELL_MAP, Text{ "Bottom of the Well Map", "Carte du Puits", "Karte des Grund des Brunnens" }, ITEMTYPE_MAP, 0xAD, false, LOGIC_MAP_BOTTOM_OF_THE_WELL, RHT_BOTTOM_OF_THE_WELL_MAP, RG_BOTTOM_OF_THE_WELL_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_ICE_CAVERN_MAP] = Item(RG_ICE_CAVERN_MAP, Text{ "Ice Cavern Map", "Carte de la Caverne Polaire", "Karte der Eishöhle" }, ITEMTYPE_MAP, 0xAE, false, LOGIC_MAP_ICE_CAVERN, RHT_ICE_CAVERN_MAP, RG_ICE_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_DEKU_TREE_COMPASS] = Item(RG_DEKU_TREE_COMPASS, Text{ "Great Deku Tree Compass", "Boussole de l'Arbre Mojo", "Kompaß des Deku-Baums" }, ITEMTYPE_COMPASS, 0x9B, false, LOGIC_COMPASS_DEKU_TREE, RHT_DEKU_TREE_COMPASS, RG_DEKU_TREE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_DEKU_TREE_MAP] = Item(RG_DEKU_TREE_MAP, Text{"Great Deku Tree Map", "Carte de l'Arbre Mojo", "Karte des Deku-Baums" }, ITEMTYPE_MAP, 0xA5, false, LOGIC_MAP_DEKU_TREE, RHT_DEKU_TREE_MAP, RG_DEKU_TREE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_DODONGOS_CAVERN_MAP] = Item(RG_DODONGOS_CAVERN_MAP, Text{"Dodongo's Cavern Map", "Carte de la Caverne Dodongo", "Karte der Dodongo-Höhle" }, ITEMTYPE_MAP, 0xA6, false, LOGIC_MAP_DODONGOS_CAVERN, RHT_DODONGOS_CAVERN_MAP, RG_DODONGOS_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_JABU_JABUS_BELLY_MAP] = Item(RG_JABU_JABUS_BELLY_MAP, Text{"Jabu-Jabu's Belly Map", "Carte du Ventre de Jabu-Jabu", "Karte des Jabu-Jabu-Bauchs" }, ITEMTYPE_MAP, 0xA7, false, LOGIC_MAP_JABU_JABUS_BELLY, RHT_JABU_JABUS_BELLY_MAP, RG_JABU_JABUS_BELLY_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_FOREST_TEMPLE_MAP] = Item(RG_FOREST_TEMPLE_MAP, Text{"Forest Temple Map", "Carte du Temple de la Forêt", "Karte des Waldtempels" }, ITEMTYPE_MAP, 0xA8, false, LOGIC_MAP_FOREST_TEMPLE, RHT_FOREST_TEMPLE_MAP, RG_FOREST_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_FIRE_TEMPLE_MAP] = Item(RG_FIRE_TEMPLE_MAP, Text{"Fire Temple Map", "Carte due Temple de Feu", "Karte des Feuertempels" }, ITEMTYPE_MAP, 0xA9, false, LOGIC_MAP_FIRE_TEMPLE, RHT_FIRE_TEMPLE_MAP, RG_FIRE_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_WATER_TEMPLE_MAP] = Item(RG_WATER_TEMPLE_MAP, Text{"Water Temple Map", "Carte du Temple de l'Eau", "Karte des Wassertempels" }, ITEMTYPE_MAP, 0xAA, false, LOGIC_MAP_WATER_TEMPLE, RHT_WATER_TEMPLE_MAP, RG_WATER_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_SPIRIT_TEMPLE_MAP] = Item(RG_SPIRIT_TEMPLE_MAP, Text{"Spirit Temple Map", "Carte due Temple de l'Esprit", "Karte des Geistertempels" }, ITEMTYPE_MAP, 0xAB, false, LOGIC_MAP_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_MAP, RG_SPIRIT_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_SHADOW_TEMPLE_MAP] = Item(RG_SHADOW_TEMPLE_MAP, Text{"Shadow Temple Map", "Carte du Temple de l'Ombre", "Karte des Schattentempels" }, ITEMTYPE_MAP, 0xAC, false, LOGIC_MAP_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_MAP, RG_SHADOW_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_BOTW_MAP] = Item(RG_BOTW_MAP, Text{"Bottom of the Well Map", "Carte du Puits", "Karte des Grund des Brunnens" }, ITEMTYPE_MAP, 0xAD, false, LOGIC_MAP_BOTW, RHT_BOTW_MAP, RG_BOTW_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_ICE_CAVERN_MAP] = Item(RG_ICE_CAVERN_MAP, Text{"Ice Cavern Map", "Carte de la Caverne Polaire", "Karte der Eishöhle" }, ITEMTYPE_MAP, 0xAE, false, LOGIC_MAP_ICE_CAVERN, RHT_ICE_CAVERN_MAP, RG_ICE_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_DEKU_TREE_COMPASS] = Item(RG_DEKU_TREE_COMPASS, Text{"Great Deku Tree Compass", "Boussole de l'Arbre Mojo", "Kompaß des Deku-Baums" }, ITEMTYPE_COMPASS, 0x9B, false, LOGIC_COMPASS_DEKU_TREE, RHT_DEKU_TREE_COMPASS, RG_DEKU_TREE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DEKU_TREE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_DODONGOS_CAVERN_COMPASS] = Item(RG_DODONGOS_CAVERN_COMPASS, Text{ "Dodongo's Cavern Compass", "Boussole de la Caverne Dodongo", "Kompaß der Dodongo-Höhle" }, ITEMTYPE_COMPASS, 0x9C, false, LOGIC_COMPASS_DODONGOS_CAVERN, RHT_DODONGOS_CAVERN_COMPASS, RG_DODONGOS_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_DODONGOS_CAVERN_COMPASS] = Item(RG_DODONGOS_CAVERN_COMPASS, Text{"Dodongo's Cavern Compass", "Boussole de la Caverne Dodongo", "Kompaß der Dodongo-Höhle" }, ITEMTYPE_COMPASS, 0x9C, false, LOGIC_COMPASS_DODONGOS_CAVERN, RHT_DODONGOS_CAVERN_COMPASS, RG_DODONGOS_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_DODONGOS_CAVERN_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_JABU_JABUS_BELLY_COMPASS] = Item(RG_JABU_JABUS_BELLY_COMPASS, Text{ "Jabu-Jabu's Belly Compass", "Boussole du Ventre de Jabu-Jabu", "Kompaß des Jabu-Jabu-Bauchs" }, ITEMTYPE_COMPASS, 0x9D, false, LOGIC_COMPASS_JABU_JABUS_BELLY, RHT_JABU_JABUS_BELLY_COMPASS, RG_JABU_JABUS_BELLY_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_JABU_JABUS_BELLY_COMPASS] = Item(RG_JABU_JABUS_BELLY_COMPASS, Text{"Jabu-Jabu's Belly Compass", "Boussole du Ventre de Jabu-Jabu", "Kompaß des Jabu-Jabu-Bauchs" }, ITEMTYPE_COMPASS, 0x9D, false, LOGIC_COMPASS_JABU_JABUS_BELLY,RHT_JABU_JABUS_BELLY_COMPASS, RG_JABU_JABUS_BELLY_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_JABU_JABUS_BELLY_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_FOREST_TEMPLE_COMPASS] = Item(RG_FOREST_TEMPLE_COMPASS, Text{ "Forest Temple Compass", "Boussole du Temple de la Forêt", "Kompaß des Waldtempels" }, ITEMTYPE_COMPASS, 0x9E, false, LOGIC_COMPASS_FOREST_TEMPLE, RHT_FOREST_TEMPLE_COMPASS, RG_FOREST_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_FOREST_TEMPLE_COMPASS] = Item(RG_FOREST_TEMPLE_COMPASS, Text{"Forest Temple Compass", "Boussole du Temple de la Forêt", "Kompaß des Waldtempels" }, ITEMTYPE_COMPASS, 0x9E, false, LOGIC_COMPASS_FOREST_TEMPLE, RHT_FOREST_TEMPLE_COMPASS, RG_FOREST_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_FIRE_TEMPLE_COMPASS] = Item(RG_FIRE_TEMPLE_COMPASS, Text{ "Fire Temple Compass", "Boussole du Temple du Feu", "Kompaß des Feuertempels" }, ITEMTYPE_COMPASS, 0x9F, false, LOGIC_COMPASS_FIRE_TEMPLE, RHT_FIRE_TEMPLE_COMPASS, RG_FIRE_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_FIRE_TEMPLE_COMPASS] = Item(RG_FIRE_TEMPLE_COMPASS, Text{"Fire Temple Compass", "Boussole du Temple du Feu", "Kompaß des Feuertempels" }, ITEMTYPE_COMPASS, 0x9F, false, LOGIC_COMPASS_FIRE_TEMPLE, RHT_FIRE_TEMPLE_COMPASS, RG_FIRE_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_FIRE_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_WATER_TEMPLE_COMPASS] = Item(RG_WATER_TEMPLE_COMPASS, Text{ "Water Temple Compass", "Boussole du Temple de l'Eau", "Kompaß des Wassertempels" }, ITEMTYPE_COMPASS, 0xA0, false, LOGIC_COMPASS_WATER_TEMPLE, RHT_WATER_TEMPLE_COMPASS, RG_WATER_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_WATER_TEMPLE_COMPASS] = Item(RG_WATER_TEMPLE_COMPASS, Text{"Water Temple Compass", "Boussole du Temple de l'Eau", "Kompaß des Wassertempels" }, ITEMTYPE_COMPASS, 0xA0, false, LOGIC_COMPASS_WATER_TEMPLE, RHT_WATER_TEMPLE_COMPASS, RG_WATER_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_WATER_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_SPIRIT_TEMPLE_COMPASS] = Item(RG_SPIRIT_TEMPLE_COMPASS, Text{ "Spirit Temple Compass", "Boussole due Temple de l'Esprit", "Kompaß des Geistertempels" }, ITEMTYPE_COMPASS, 0xA1, false, LOGIC_COMPASS_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_COMPASS, RG_SPIRIT_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_SPIRIT_TEMPLE_COMPASS] = Item(RG_SPIRIT_TEMPLE_COMPASS, Text{"Spirit Temple Compass", "Boussole due Temple de l'Esprit", "Kompaß des Geistertempels" }, ITEMTYPE_COMPASS, 0xA1, false, LOGIC_COMPASS_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_COMPASS, RG_SPIRIT_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_SHADOW_TEMPLE_COMPASS] = Item(RG_SHADOW_TEMPLE_COMPASS, Text{ "Shadow Temple Compass", "Boussole du Temple de l'Ombre", "Kompaß des Schattentempels" }, ITEMTYPE_COMPASS, 0xA2, false, LOGIC_COMPASS_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_COMPASS, RG_SHADOW_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_SHADOW_TEMPLE_COMPASS] = Item(RG_SHADOW_TEMPLE_COMPASS, Text{"Shadow Temple Compass", "Boussole du Temple de l'Ombre", "Kompaß des Schattentempels" }, ITEMTYPE_COMPASS, 0xA2, false, LOGIC_COMPASS_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_COMPASS, RG_SHADOW_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_BOTTOM_OF_THE_WELL_COMPASS] = Item(RG_BOTTOM_OF_THE_WELL_COMPASS, Text{ "Bottom of the Well Compass", "Boussole du Puits", "Kompaß des Grund des Brunnens" }, ITEMTYPE_COMPASS, 0xA3, false, LOGIC_COMPASS_BOTTOM_OF_THE_WELL, RHT_BOTTOM_OF_THE_WELL_COMPASS, RG_BOTTOM_OF_THE_WELL_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_BOTTOM_OF_THE_WELL_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); - itemTable[RG_ICE_CAVERN_COMPASS] = Item(RG_ICE_CAVERN_COMPASS, Text{ "Ice Cavern Compass", "Boussole de la Caverne Polaire", "Kompaß der Eishöhle" }, ITEMTYPE_COMPASS, 0xA4, false, LOGIC_COMPASS_ICE_CAVERN, RHT_ICE_CAVERN_COMPASS, RG_ICE_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_BOTW_COMPASS] = Item(RG_BOTW_COMPASS, Text{"Bottom of the Well Compass", "Boussole du Puits", "Kompaß des Grund des Brunnens" }, ITEMTYPE_COMPASS, 0xA3, false, LOGIC_COMPASS_BOTW, RHT_BOTW_COMPASS, RG_BOTW_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_BOTW_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); + itemTable[RG_ICE_CAVERN_COMPASS] = Item(RG_ICE_CAVERN_COMPASS, Text{"Ice Cavern Compass", "Boussole de la Caverne Polaire", "Kompaß der Eishöhle" }, ITEMTYPE_COMPASS, 0xA4, false, LOGIC_COMPASS_ICE_CAVERN, RHT_ICE_CAVERN_COMPASS, RG_ICE_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_ICE_CAVERN_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass); // Boss Keys - itemTable[RG_FOREST_TEMPLE_BOSS_KEY] = Item(RG_FOREST_TEMPLE_BOSS_KEY, Text{ "Forest Temple Boss Key", "Clé d'Or du Temple de la Forêt", "Master-Schlüssel des Waldtempels" }, ITEMTYPE_BOSSKEY, 0x95, true, LOGIC_BOSS_KEY_FOREST_TEMPLE, RHT_FOREST_TEMPLE_BOSS_KEY, RG_FOREST_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + itemTable[RG_FOREST_TEMPLE_BOSS_KEY] = Item(RG_FOREST_TEMPLE_BOSS_KEY, Text{"Forest Temple Boss Key", "Clé d'Or du Temple de la Forêt", "Master-Schlüssel des Waldtempels" }, ITEMTYPE_BOSSKEY, 0x95, true, LOGIC_BOSS_KEY_FOREST_TEMPLE, RHT_FOREST_TEMPLE_BOSS_KEY, RG_FOREST_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_FIRE_TEMPLE_BOSS_KEY] = Item(RG_FIRE_TEMPLE_BOSS_KEY, Text{ "Fire Temple Boss Key", "Clé d'Or du Temple du Feu", "Master-Schlüssel des Feuertempels" }, ITEMTYPE_BOSSKEY, 0x96, true, LOGIC_BOSS_KEY_FIRE_TEMPLE, RHT_FIRE_TEMPLE_BOSS_KEY, RG_FIRE_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + itemTable[RG_FIRE_TEMPLE_BOSS_KEY] = Item(RG_FIRE_TEMPLE_BOSS_KEY, Text{"Fire Temple Boss Key", "Clé d'Or du Temple du Feu", "Master-Schlüssel des Feuertempels" }, ITEMTYPE_BOSSKEY, 0x96, true, LOGIC_BOSS_KEY_FIRE_TEMPLE, RHT_FIRE_TEMPLE_BOSS_KEY, RG_FIRE_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_FIRE_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_WATER_TEMPLE_BOSS_KEY] = Item(RG_WATER_TEMPLE_BOSS_KEY, Text{ "Water Temple Boss Key", "Clé d'Or du Temple de l'Eau", "Master-Schlüssel des Wassertempels" }, ITEMTYPE_BOSSKEY, 0x97, true, LOGIC_BOSS_KEY_WATER_TEMPLE, RHT_WATER_TEMPLE_BOSS_KEY, RG_WATER_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + itemTable[RG_WATER_TEMPLE_BOSS_KEY] = Item(RG_WATER_TEMPLE_BOSS_KEY, Text{"Water Temple Boss Key", "Clé d'Or du Temple de l'Eau", "Master-Schlüssel des Wassertempels" }, ITEMTYPE_BOSSKEY, 0x97, true, LOGIC_BOSS_KEY_WATER_TEMPLE, RHT_WATER_TEMPLE_BOSS_KEY, RG_WATER_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_WATER_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_SPIRIT_TEMPLE_BOSS_KEY] = Item(RG_SPIRIT_TEMPLE_BOSS_KEY, Text{ "Spirit Temple Boss Key", "Clé d'Or du Temple de l'Esprit", "Master-Schlüssel des Geistertempels" }, ITEMTYPE_BOSSKEY, 0x98, true, LOGIC_BOSS_KEY_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_BOSS_KEY, RG_SPIRIT_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + itemTable[RG_SPIRIT_TEMPLE_BOSS_KEY] = Item(RG_SPIRIT_TEMPLE_BOSS_KEY, Text{"Spirit Temple Boss Key", "Clé d'Or du Temple de l'Esprit", "Master-Schlüssel des Geistertempels" }, ITEMTYPE_BOSSKEY, 0x98, true, LOGIC_BOSS_KEY_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_BOSS_KEY, RG_SPIRIT_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_SHADOW_TEMPLE_BOSS_KEY] = Item( RG_SHADOW_TEMPLE_BOSS_KEY, Text{ "Shadow Temple Boss Key", "Clé d'Or du Temple de l'Ombre", "Master-Schlüssel des Schattentempels" }, ITEMTYPE_BOSSKEY, 0x99, true, LOGIC_BOSS_KEY_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_BOSS_KEY, RG_SHADOW_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + itemTable[RG_SHADOW_TEMPLE_BOSS_KEY] = Item( RG_SHADOW_TEMPLE_BOSS_KEY, Text{"Shadow Temple Boss Key", "Clé d'Or du Temple de l'Ombre", "Master-Schlüssel des Schattentempels" }, ITEMTYPE_BOSSKEY, 0x99, true, LOGIC_BOSS_KEY_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_BOSS_KEY, RG_SHADOW_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_GANONS_CASTLE_BOSS_KEY] = Item(RG_GANONS_CASTLE_BOSS_KEY, Text{ "Ganon's Castle Boss Key", "Clé d'Or du Château de Ganon", "Master-Schlüssel von Ganons Schloß" }, ITEMTYPE_BOSSKEY, 0x9A, true, LOGIC_BOSS_KEY_GANONS_CASTLE, RHT_GANONS_CASTLE_BOSS_KEY, RG_GANONS_CASTLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); + itemTable[RG_GANONS_CASTLE_BOSS_KEY] = Item(RG_GANONS_CASTLE_BOSS_KEY, Text{"Ganon's Castle Boss Key", "Clé d'Or du Château de Ganon", "Master-Schlüssel von Ganons Schloß" }, ITEMTYPE_BOSSKEY, 0x9A, true, LOGIC_BOSS_KEY_GANONS_CASTLE, RHT_GANONS_CASTLE_BOSS_KEY, RG_GANONS_CASTLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY,MOD_RANDOMIZER); itemTable[RG_GANONS_CASTLE_BOSS_KEY].SetCustomDrawFunc(Randomizer_DrawBossKey); - itemTable[RG_FOREST_TEMPLE_SMALL_KEY] = Item(RG_FOREST_TEMPLE_SMALL_KEY, Text{ "Forest Temple Small Key", "Petite Clé du Temple de la Forêt", "Kleiner Schlüssel für den Waldtempel" }, ITEMTYPE_SMALLKEY, 0xAF, true, LOGIC_FOREST_TEMPLE_KEYS, RHT_FOREST_TEMPLE_SMALL_KEY, RG_FOREST_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_FOREST_TEMPLE_SMALL_KEY] = Item(RG_FOREST_TEMPLE_SMALL_KEY, Text{"Forest Temple Small Key", "Petite Clé du Temple de la Forêt", "Kleiner Schlüssel für den Waldtempel" }, ITEMTYPE_SMALLKEY, 0xAF, true, LOGIC_FOREST_TEMPLE_KEYS, RHT_FOREST_TEMPLE_SMALL_KEY, RG_FOREST_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_FIRE_TEMPLE_SMALL_KEY] = Item(RG_FIRE_TEMPLE_SMALL_KEY, Text{ "Fire Temple Small Key", "Petite Clé du Temple du Feu", "Kleiner Schlüssel für den Feuertempel" }, ITEMTYPE_SMALLKEY, 0xB0, true, LOGIC_FIRE_TEMPLE_KEYS, RHT_FIRE_TEMPLE_SMALL_KEY, RG_FIRE_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_FIRE_TEMPLE_SMALL_KEY] = Item(RG_FIRE_TEMPLE_SMALL_KEY, Text{"Fire Temple Small Key", "Petite Clé du Temple du Feu", "Kleiner Schlüssel für den Feuertempel" }, ITEMTYPE_SMALLKEY, 0xB0, true, LOGIC_FIRE_TEMPLE_KEYS, RHT_FIRE_TEMPLE_SMALL_KEY, RG_FIRE_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_FIRE_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_WATER_TEMPLE_SMALL_KEY] = Item(RG_WATER_TEMPLE_SMALL_KEY, Text{ "Water Temple Small Key", "Petite Clé du Temple de l'Eau", "Kleiner Schlüssel für den Wassertempel" }, ITEMTYPE_SMALLKEY, 0xB1, true, LOGIC_WATER_TEMPLE_KEYS, RHT_WATER_TEMPLE_SMALL_KEY, RG_WATER_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_WATER_TEMPLE_SMALL_KEY] = Item(RG_WATER_TEMPLE_SMALL_KEY, Text{"Water Temple Small Key", "Petite Clé du Temple de l'Eau", "Kleiner Schlüssel für den Wassertempel" }, ITEMTYPE_SMALLKEY, 0xB1, true, LOGIC_WATER_TEMPLE_KEYS, RHT_WATER_TEMPLE_SMALL_KEY, RG_WATER_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_WATER_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_SPIRIT_TEMPLE_SMALL_KEY] = Item(RG_SPIRIT_TEMPLE_SMALL_KEY, Text{ "Spirit Temple Small Key", "Petite Clé du Temple de l'Esprit", "Kleiner Schlüssel für den Geistertempel" }, ITEMTYPE_SMALLKEY, 0xB2, true, LOGIC_SPIRIT_TEMPLE_KEYS, RHT_SPIRIT_TEMPLE_SMALL_KEY, RG_SPIRIT_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_SPIRIT_TEMPLE_SMALL_KEY] = Item(RG_SPIRIT_TEMPLE_SMALL_KEY, Text{"Spirit Temple Small Key", "Petite Clé du Temple de l'Esprit", "Kleiner Schlüssel für den Geistertempel" }, ITEMTYPE_SMALLKEY, 0xB2, true, LOGIC_SPIRIT_TEMPLE_KEYS, RHT_SPIRIT_TEMPLE_SMALL_KEY, RG_SPIRIT_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_SHADOW_TEMPLE_SMALL_KEY] = Item(RG_SHADOW_TEMPLE_SMALL_KEY, Text{ "Shadow Temple Small Key", "Petite Clé du Temple de l'Ombre", "Kleiner Schlüssel für den Schattentempel" }, ITEMTYPE_SMALLKEY, 0xB3, true, LOGIC_SHADOW_TEMPLE_KEYS, RHT_SHADOW_TEMPLE_SMALL_KEY, RG_SHADOW_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_SHADOW_TEMPLE_SMALL_KEY] = Item(RG_SHADOW_TEMPLE_SMALL_KEY, Text{"Shadow Temple Small Key", "Petite Clé du Temple de l'Ombre", "Kleiner Schlüssel für den Schattentempel" }, ITEMTYPE_SMALLKEY, 0xB3, true, LOGIC_SHADOW_TEMPLE_KEYS, RHT_SHADOW_TEMPLE_SMALL_KEY, RG_SHADOW_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_BOTTOM_OF_THE_WELL_SMALL_KEY] = Item(RG_BOTTOM_OF_THE_WELL_SMALL_KEY, Text{ "Bottom of the Well Small Key", "Petite Clé du Puits", "Kleiner Schlüssel für den Grund des Brunnens" }, ITEMTYPE_SMALLKEY, 0xB4, true, LOGIC_BOTTOM_OF_THE_WELL_KEYS, RHT_BOTTOM_OF_THE_WELL_SMALL_KEY, RG_BOTTOM_OF_THE_WELL_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_BOTTOM_OF_THE_WELL_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_GERUDO_TRAINING_GROUND_SMALL_KEY] = Item(RG_GERUDO_TRAINING_GROUND_SMALL_KEY, Text{ "Training Ground Small Key", "Petite Clé du Gymnase Gerudo", "Kleiner Schlüssel für das Gerudo-Trainingsgelände" }, ITEMTYPE_SMALLKEY, 0xB5, true, LOGIC_GERUDO_TRAINING_GROUND_KEYS, RHT_GERUDO_TRAINING_GROUND_SMALL_KEY, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_GERUDO_TRAINING_GROUND_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_GERUDO_FORTRESS_SMALL_KEY] = Item(RG_GERUDO_FORTRESS_SMALL_KEY, Text{ "Gerudo Fortress Small Key", "Petite Clé du Repaire des Voleurs", "Kleiner Schlüssel für die Gerudo-Festung" }, ITEMTYPE_FORTRESS_SMALLKEY, 0xB6, true, LOGIC_GERUDO_FORTRESS_KEYS, RHT_GERUDO_FORTRESS_SMALL_KEY, RG_GERUDO_FORTRESS_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_BOTW_SMALL_KEY] = Item(RG_BOTW_SMALL_KEY, Text{"Bottom of the Well Small Key", "Petite Clé du Puits", "Kleiner Schlüssel für den Grund des Brunnens" }, ITEMTYPE_SMALLKEY, 0xB4, true, LOGIC_BOTW_KEYS, RHT_BOTW_SMALL_KEY, RG_BOTW_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_BOTW_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); + itemTable[RG_GTG_SMALL_KEY] = Item(RG_GTG_SMALL_KEY, Text{"Training Ground Small Key", "Petite Clé du Gymnase Gerudo", "Kleiner Schlüssel für das Gerudo-Trainingsgelände" }, ITEMTYPE_SMALLKEY, 0xB5, true, LOGIC_GTG_KEYS, RHT_GTG_SMALL_KEY, RG_GTG_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_GTG_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); + itemTable[RG_GERUDO_FORTRESS_SMALL_KEY] = Item(RG_GERUDO_FORTRESS_SMALL_KEY, Text{"Gerudo Fortress Small Key", "Petite Clé du Repaire des Voleurs", "Kleiner Schlüssel für die Gerudo-Festung" }, ITEMTYPE_FORTRESS_SMALLKEY, 0xB6, true, LOGIC_GERUDO_FORTRESS_KEYS, RHT_GERUDO_FORTRESS_SMALL_KEY,RG_GERUDO_FORTRESS_SMALL_KEY,OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_GERUDO_FORTRESS_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_GANONS_CASTLE_SMALL_KEY] = Item(RG_GANONS_CASTLE_SMALL_KEY, Text{ "Ganon's Castle Small Key", "Petite Clé du Château de Ganon", "Kleiner Schlüssel für Ganons Schloß" }, ITEMTYPE_SMALLKEY, 0xB7, true, LOGIC_GANONS_CASTLE_KEYS, RHT_GANONS_CASTLE_SMALL_KEY, RG_GANONS_CASTLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_GANONS_CASTLE_SMALL_KEY] = Item(RG_GANONS_CASTLE_SMALL_KEY, Text{"Ganon's Castle Small Key", "Petite Clé du Château de Ganon", "Kleiner Schlüssel für Ganons Schloß" }, ITEMTYPE_SMALLKEY, 0xB7, true, LOGIC_GANONS_CASTLE_KEYS, RHT_GANONS_CASTLE_SMALL_KEY, RG_GANONS_CASTLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_GANONS_CASTLE_SMALL_KEY].SetCustomDrawFunc(Randomizer_DrawSmallKey); - itemTable[RG_TREASURE_GAME_SMALL_KEY] = Item(RG_TREASURE_GAME_SMALL_KEY, Text{ "Chest Game Small Key", "Petite Clé du jeu la Chasse-aux-Trésors", "Kleiner Schlüssel für das Truhenspiel" }, ITEMTYPE_SMALLKEY, GI_DOOR_KEY, true, LOGIC_TREASURE_GAME_KEYS, RHT_TREASURE_GAME_SMALL_KEY, ITEM_KEY_SMALL, OBJECT_GI_KEY, GID_KEY_SMALL, 0xF3, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_NONE); + itemTable[RG_TREASURE_GAME_SMALL_KEY] = Item(RG_TREASURE_GAME_SMALL_KEY, Text{"Chest Game Small Key", "Petite Clé du jeu la Chasse-aux-Trésors", "Kleiner Schlüssel für das Truhenspiel" }, ITEMTYPE_SMALLKEY, GI_DOOR_KEY, true, LOGIC_TREASURE_GAME_KEYS, RHT_TREASURE_GAME_SMALL_KEY, ITEM_KEY_SMALL, OBJECT_GI_KEY, GID_KEY_SMALL, 0xF3, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_NONE); // Key Rings - itemTable[RG_FOREST_TEMPLE_KEY_RING] = Item(RG_FOREST_TEMPLE_KEY_RING, Text{ "Forest Temple Key Ring", "Trousseau du Temple de la Forêt", "Schlüsselbund für den Waldtempel" }, ITEMTYPE_SMALLKEY, 0xD5, true, LOGIC_FOREST_TEMPLE_KEYS, RHT_FOREST_TEMPLE_KEY_RING, RG_FOREST_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_FOREST_TEMPLE_KEY_RING] = Item(RG_FOREST_TEMPLE_KEY_RING, Text{"Forest Temple Key Ring", "Trousseau du Temple de la Forêt", "Schlüsselbund für den Waldtempel" }, ITEMTYPE_SMALLKEY, 0xD5, true, LOGIC_FOREST_TEMPLE_KEYS, RHT_FOREST_TEMPLE_KEY_RING, RG_FOREST_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_FOREST_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_FIRE_TEMPLE_KEY_RING] = Item(RG_FIRE_TEMPLE_KEY_RING, Text{ "Fire Temple Key Ring", "Trousseau du Temple du Feu", "Schlüsselbund für den Feuertempel" }, ITEMTYPE_SMALLKEY, 0xD6, true, LOGIC_FIRE_TEMPLE_KEYS, RHT_FIRE_TEMPLE_KEY_RING, RG_FIRE_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_FIRE_TEMPLE_KEY_RING] = Item(RG_FIRE_TEMPLE_KEY_RING, Text{"Fire Temple Key Ring", "Trousseau du Temple du Feu", "Schlüsselbund für den Feuertempel" }, ITEMTYPE_SMALLKEY, 0xD6, true, LOGIC_FIRE_TEMPLE_KEYS, RHT_FIRE_TEMPLE_KEY_RING, RG_FIRE_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_FIRE_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_WATER_TEMPLE_KEY_RING] = Item(RG_WATER_TEMPLE_KEY_RING, Text{ "Water Temple Key Ring", "Trousseau du Temple de l'Eau", "Schlüsselbund für den Wassertempel" }, ITEMTYPE_SMALLKEY, 0xD7, true, LOGIC_WATER_TEMPLE_KEYS, RHT_WATER_TEMPLE_KEY_RING, RG_WATER_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_WATER_TEMPLE_KEY_RING] = Item(RG_WATER_TEMPLE_KEY_RING, Text{"Water Temple Key Ring", "Trousseau du Temple de l'Eau", "Schlüsselbund für den Wassertempel" }, ITEMTYPE_SMALLKEY, 0xD7, true, LOGIC_WATER_TEMPLE_KEYS, RHT_WATER_TEMPLE_KEY_RING, RG_WATER_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_WATER_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_SPIRIT_TEMPLE_KEY_RING] = Item(RG_SPIRIT_TEMPLE_KEY_RING, Text{ "Spirit Temple Key Ring", "Trousseau du Temple de l'Esprit", "Schlüsselbund für den Geistertempel" }, ITEMTYPE_SMALLKEY, 0xD8, true, LOGIC_SPIRIT_TEMPLE_KEYS, RHT_SPIRIT_TEMPLE_KEY_RING, RG_SPIRIT_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_SPIRIT_TEMPLE_KEY_RING] = Item(RG_SPIRIT_TEMPLE_KEY_RING, Text{"Spirit Temple Key Ring", "Trousseau du Temple de l'Esprit", "Schlüsselbund für den Geistertempel" }, ITEMTYPE_SMALLKEY, 0xD8, true, LOGIC_SPIRIT_TEMPLE_KEYS, RHT_SPIRIT_TEMPLE_KEY_RING, RG_SPIRIT_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_SPIRIT_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_SHADOW_TEMPLE_KEY_RING] = Item(RG_SHADOW_TEMPLE_KEY_RING, Text{ "Shadow Temple Key Ring", "Trousseau du Temple de l'Ombre", "Schlüsselbund für den Schattentempel" }, ITEMTYPE_SMALLKEY, 0xD9, true, LOGIC_SHADOW_TEMPLE_KEYS, RHT_SHADOW_TEMPLE_KEY_RING, RG_SHADOW_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_SHADOW_TEMPLE_KEY_RING] = Item(RG_SHADOW_TEMPLE_KEY_RING, Text{"Shadow Temple Key Ring", "Trousseau du Temple de l'Ombre", "Schlüsselbund für den Schattentempel" }, ITEMTYPE_SMALLKEY, 0xD9, true, LOGIC_SHADOW_TEMPLE_KEYS, RHT_SHADOW_TEMPLE_KEY_RING, RG_SHADOW_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_SHADOW_TEMPLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_BOTTOM_OF_THE_WELL_KEY_RING] = Item(RG_BOTTOM_OF_THE_WELL_KEY_RING, Text{ "Bottom of the Well Key Ring", "Trousseau du Puits", "Schlüsselbund für den Grund des Brunnens" }, ITEMTYPE_SMALLKEY, 0xDA, true, LOGIC_BOTTOM_OF_THE_WELL_KEYS, RHT_BOTTOM_OF_THE_WELL_KEY_RING, RG_BOTTOM_OF_THE_WELL_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_BOTTOM_OF_THE_WELL_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_GERUDO_TRAINING_GROUND_KEY_RING] = Item(RG_GERUDO_TRAINING_GROUND_KEY_RING, Text{ "Training Ground Key Ring", "Trousseau du Gymnase Gerudo", "Schlüsselbund für das Gerudo-Trainingsgelände" }, ITEMTYPE_SMALLKEY, 0xDB, true, LOGIC_GERUDO_TRAINING_GROUND_KEYS, RHT_GERUDO_TRAINING_GROUND_KEY_RING, RG_GERUDO_TRAINING_GROUND_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); - itemTable[RG_GERUDO_TRAINING_GROUND_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_GERUDO_FORTRESS_KEY_RING] = Item(RG_GERUDO_FORTRESS_KEY_RING, Text{ "Gerudo Fortress Key Ring", "Trousseau du Repaire des Voleurs", "Schlüsselbund für die Gerudo-Festung" }, ITEMTYPE_FORTRESS_SMALLKEY, 0xDC, true, LOGIC_GERUDO_FORTRESS_KEYS, RHT_GERUDO_FORTRESS_KEY_RING, RG_GERUDO_FORTRESS_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_BOTW_KEY_RING] = Item(RG_BOTW_KEY_RING, Text{"Bottom of the Well Key Ring", "Trousseau du Puits", "Schlüsselbund für den Grund des Brunnens" }, ITEMTYPE_SMALLKEY, 0xDA, true, LOGIC_BOTW_KEYS, RHT_BOTW_KEY_RING, RG_BOTW_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_BOTW_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); + itemTable[RG_GTG_KEY_RING] = Item(RG_GTG_KEY_RING, Text{"Training Ground Key Ring", "Trousseau du Gymnase Gerudo", "Schlüsselbund für das Gerudo-Trainingsgelände" }, ITEMTYPE_SMALLKEY, 0xDB, true, LOGIC_GTG_KEYS, RHT_GTG_KEY_RING, RG_GTG_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_GTG_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); + itemTable[RG_GERUDO_FORTRESS_KEY_RING] = Item(RG_GERUDO_FORTRESS_KEY_RING, Text{"Gerudo Fortress Key Ring", "Trousseau du Repaire des Voleurs", "Schlüsselbund für die Gerudo-Festung" }, ITEMTYPE_FORTRESS_SMALLKEY, 0xDC, true, LOGIC_GERUDO_FORTRESS_KEYS, RHT_GERUDO_FORTRESS_KEY_RING, RG_GERUDO_FORTRESS_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_GERUDO_FORTRESS_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); - itemTable[RG_GANONS_CASTLE_KEY_RING] = Item(RG_GANONS_CASTLE_KEY_RING, Text{ "Ganon's Castle Key Ring", "Trousseau du Château de Ganon", "Schlüsselbund für Ganons Schloß" }, ITEMTYPE_SMALLKEY, 0xDD, true, LOGIC_GANONS_CASTLE_KEYS, RHT_GANONS_CASTLE_KEY_RING, RG_GANONS_CASTLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); + itemTable[RG_GANONS_CASTLE_KEY_RING] = Item(RG_GANONS_CASTLE_KEY_RING, Text{"Ganon's Castle Key Ring", "Trousseau du Château de Ganon", "Schlüsselbund für Ganons Schloß" }, ITEMTYPE_SMALLKEY, 0xDD, true, LOGIC_GANONS_CASTLE_KEYS, RHT_GANONS_CASTLE_KEY_RING, RG_GANONS_CASTLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER); itemTable[RG_GANONS_CASTLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing); // Dungeon Rewards - itemTable[RG_KOKIRI_EMERALD] = Item(RG_KOKIRI_EMERALD, Text{ "Kokiri's Emerald", "Émeraude Kokiri", "Kokiri-Smaragd" }, ITEMTYPE_DUNGEONREWARD, 0xCB, true, LOGIC_KOKIRI_EMERALD, RHT_KOKIRI_EMERALD, ITEM_KOKIRI_EMERALD, OBJECT_GI_JEWEL, GID_KOKIRI_EMERALD, 0x80, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GORON_RUBY] = Item(RG_GORON_RUBY, Text{ "Goron's Ruby", "Rubis Goron", "Goronen-Rubin" }, ITEMTYPE_DUNGEONREWARD, 0xCC, true, LOGIC_GORON_RUBY, RHT_GORON_RUBY, ITEM_GORON_RUBY, OBJECT_GI_JEWEL, GID_GORON_RUBY, 0x81, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ZORA_SAPPHIRE] = Item(RG_ZORA_SAPPHIRE, Text{ "Zora's Sapphire", "Saphir Zora", "Zora-Saphir" }, ITEMTYPE_DUNGEONREWARD, 0xCD, true, LOGIC_ZORA_SAPPHIRE, RHT_ZORA_SAPPHIRE, ITEM_ZORA_SAPPHIRE, OBJECT_GI_JEWEL, GID_ZORA_SAPPHIRE, 0x82, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_FOREST_MEDALLION] = Item(RG_FOREST_MEDALLION, Text{ "Forest Medallion", "Médaillon de la Forêt", "Amulett des Waldes" }, ITEMTYPE_DUNGEONREWARD, 0xCE, true, LOGIC_FOREST_MEDALLION, RHT_FOREST_MEDALLION, ITEM_MEDALLION_FOREST, OBJECT_GI_MEDAL, GID_MEDALLION_FOREST, 0x3E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_FIRE_MEDALLION] = Item(RG_FIRE_MEDALLION, Text{ "Fire Medallion", "Médaillon du Feu", "Amulett des Feuers" }, ITEMTYPE_DUNGEONREWARD, 0xCF, true, LOGIC_FIRE_MEDALLION, RHT_FIRE_MEDALLION, ITEM_MEDALLION_FIRE, OBJECT_GI_MEDAL, GID_MEDALLION_FIRE, 0x3C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_WATER_MEDALLION] = Item(RG_WATER_MEDALLION, Text{ "Water Medallion", "Médaillon de l'Eau", "Amulett des Wassers" }, ITEMTYPE_DUNGEONREWARD, 0xD0, true, LOGIC_WATER_MEDALLION, RHT_WATER_MEDALLION, ITEM_MEDALLION_WATER, OBJECT_GI_MEDAL, GID_MEDALLION_WATER, 0x3D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SPIRIT_MEDALLION] = Item(RG_SPIRIT_MEDALLION, Text{ "Spirit Medallion", "Médaillon de l'Esprit", "Amulett der Geister" }, ITEMTYPE_DUNGEONREWARD, 0xD1, true, LOGIC_SPIRIT_MEDALLION, RHT_SPIRIT_MEDALLION, ITEM_MEDALLION_SPIRIT, OBJECT_GI_MEDAL, GID_MEDALLION_SPIRIT, 0x3F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SHADOW_MEDALLION] = Item(RG_SHADOW_MEDALLION, Text{ "Shadow Medallion", "Médaillon de l'Ombre", "Amulett des Schattens" }, ITEMTYPE_DUNGEONREWARD, 0xD2, true, LOGIC_SHADOW_MEDALLION, RHT_SHADOW_MEDALLION, ITEM_MEDALLION_SHADOW, OBJECT_GI_MEDAL, GID_MEDALLION_SHADOW, 0x41, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_LIGHT_MEDALLION] = Item(RG_LIGHT_MEDALLION, Text{ "Light Medallion", "Médaillon de la Lumière", "Amulett des Lichts" }, ITEMTYPE_DUNGEONREWARD, 0xD3, true, LOGIC_LIGHT_MEDALLION, RHT_LIGHT_MEDALLION, ITEM_MEDALLION_LIGHT, OBJECT_GI_MEDAL, GID_MEDALLION_LIGHT, 0x40, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_KOKIRI_EMERALD] = Item(RG_KOKIRI_EMERALD, Text{"Kokiri's Emerald", "Émeraude Kokiri", "Kokiri-Smaragd" }, ITEMTYPE_DUNGEONREWARD, 0xCB, true, LOGIC_KOKIRI_EMERALD, RHT_KOKIRI_EMERALD, ITEM_KOKIRI_EMERALD, OBJECT_GI_JEWEL, GID_KOKIRI_EMERALD, 0x80, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_GORON_RUBY] = Item(RG_GORON_RUBY, Text{"Goron's Ruby", "Rubis Goron", "Goronen-Rubin" }, ITEMTYPE_DUNGEONREWARD, 0xCC, true, LOGIC_GORON_RUBY, RHT_GORON_RUBY, ITEM_GORON_RUBY, OBJECT_GI_JEWEL, GID_GORON_RUBY, 0x81, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_ZORA_SAPPHIRE] = Item(RG_ZORA_SAPPHIRE, Text{"Zora's Sapphire", "Saphir Zora", "Zora-Saphir" }, ITEMTYPE_DUNGEONREWARD, 0xCD, true, LOGIC_ZORA_SAPPHIRE, RHT_ZORA_SAPPHIRE, ITEM_ZORA_SAPPHIRE, OBJECT_GI_JEWEL, GID_ZORA_SAPPHIRE, 0x82, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_FOREST_MEDALLION] = Item(RG_FOREST_MEDALLION, Text{"Forest Medallion", "Médaillon de la Forêt", "Amulett des Waldes" }, ITEMTYPE_DUNGEONREWARD, 0xCE, true, LOGIC_FOREST_MEDALLION, RHT_FOREST_MEDALLION, ITEM_MEDALLION_FOREST, OBJECT_GI_MEDAL, GID_MEDALLION_FOREST, 0x3E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_FIRE_MEDALLION] = Item(RG_FIRE_MEDALLION, Text{"Fire Medallion", "Médaillon du Feu", "Amulett des Feuers" }, ITEMTYPE_DUNGEONREWARD, 0xCF, true, LOGIC_FIRE_MEDALLION, RHT_FIRE_MEDALLION, ITEM_MEDALLION_FIRE, OBJECT_GI_MEDAL, GID_MEDALLION_FIRE, 0x3C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_WATER_MEDALLION] = Item(RG_WATER_MEDALLION, Text{"Water Medallion", "Médaillon de l'Eau", "Amulett des Wassers" }, ITEMTYPE_DUNGEONREWARD, 0xD0, true, LOGIC_WATER_MEDALLION, RHT_WATER_MEDALLION, ITEM_MEDALLION_WATER, OBJECT_GI_MEDAL, GID_MEDALLION_WATER, 0x3D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SPIRIT_MEDALLION] = Item(RG_SPIRIT_MEDALLION, Text{"Spirit Medallion", "Médaillon de l'Esprit", "Amulett der Geister" }, ITEMTYPE_DUNGEONREWARD, 0xD1, true, LOGIC_SPIRIT_MEDALLION, RHT_SPIRIT_MEDALLION, ITEM_MEDALLION_SPIRIT, OBJECT_GI_MEDAL, GID_MEDALLION_SPIRIT, 0x3F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SHADOW_MEDALLION] = Item(RG_SHADOW_MEDALLION, Text{"Shadow Medallion", "Médaillon de l'Ombre", "Amulett des Schattens" }, ITEMTYPE_DUNGEONREWARD, 0xD2, true, LOGIC_SHADOW_MEDALLION, RHT_SHADOW_MEDALLION, ITEM_MEDALLION_SHADOW, OBJECT_GI_MEDAL, GID_MEDALLION_SHADOW, 0x41, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_LIGHT_MEDALLION] = Item(RG_LIGHT_MEDALLION, Text{"Light Medallion", "Médaillon de la Lumière", "Amulett des Lichts" }, ITEMTYPE_DUNGEONREWARD, 0xD3, true, LOGIC_LIGHT_MEDALLION, RHT_LIGHT_MEDALLION, ITEM_MEDALLION_LIGHT, OBJECT_GI_MEDAL, GID_MEDALLION_LIGHT, 0x40, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); // Generic Items - itemTable[RG_RECOVERY_HEART] = Item(RG_RECOVERY_HEART, Text{ "Recovery Heart", "Coeur de Vie", "Herz" }, ITEMTYPE_ITEM, GI_HEART, false, LOGIC_NONE, RHT_RECOVERY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_GREEN_RUPEE] = Item(RG_GREEN_RUPEE, Text{ "Green Rupee", "Rubis Vert", "Grüner Rubin" }, ITEMTYPE_ITEM, GI_RUPEE_GREEN, false, LOGIC_NONE, RHT_GREEN_RUPEE, ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0x6F, 0x00, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_GREG_RUPEE] = Item(RG_GREG_RUPEE, Text{ "Greg the Green Rupee", "Rubis Greg", "Greg Rubin" }, ITEMTYPE_ITEM, GI_RUPEE_GREEN, true, LOGIC_GREG, RHT_GREG_RUPEE, RG_GREG_RUPEE, OBJECT_GI_RUPY, GID_RUPEE_GREEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_BLUE_RUPEE] = Item(RG_BLUE_RUPEE, Text{ "Blue Rupee", "Rubis Bleu", "Blauer Rubin" }, ITEMTYPE_ITEM, GI_RUPEE_BLUE, false, LOGIC_NONE, RHT_BLUE_RUPEE, ITEM_RUPEE_BLUE, OBJECT_GI_RUPY, GID_RUPEE_BLUE, 0xCC, 0x01, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_RED_RUPEE] = Item(RG_RED_RUPEE, Text{ "Red Rupee", "Rubis Rouge", "Roter Rubin" }, ITEMTYPE_ITEM, GI_RUPEE_RED, false, LOGIC_NONE, RHT_RED_RUPEE, ITEM_RUPEE_RED, OBJECT_GI_RUPY, GID_RUPEE_RED, 0xF0, 0x02, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_PURPLE_RUPEE] = Item(RG_PURPLE_RUPEE, Text{ "Purple Rupee", "Rubis Pourpre", "Violetter Rubin" }, ITEMTYPE_ITEM, GI_RUPEE_PURPLE, false, LOGIC_NONE, RHT_PURPLE_RUPEE, ITEM_RUPEE_PURPLE, OBJECT_GI_RUPY, GID_RUPEE_PURPLE, 0xF1, 0x14, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_HUGE_RUPEE] = Item(RG_HUGE_RUPEE, Text{ "Huge Rupee", "Énorme Rubis", "Riesiger Rubin" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, false, LOGIC_NONE, RHT_HUGE_RUPEE, ITEM_RUPEE_GOLD, OBJECT_GI_RUPY, GID_RUPEE_GOLD, 0xF2, 0x13, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_PIECE_OF_HEART] = Item(RG_PIECE_OF_HEART, Text{ "Piece of Heart", "Quart de Coeur", "Herzstück" }, ITEMTYPE_ITEM, GI_HEART_PIECE, true, LOGIC_PIECE_OF_HEART, RHT_PIECE_OF_HEART, ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xC2, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_HEART_CONTAINER] = Item(RG_HEART_CONTAINER, Text{ "Heart Container", "Réceptacle de Coeur", "Herzcontainer" }, ITEMTYPE_ITEM, GI_HEART_CONTAINER_2, true, LOGIC_HEART_CONTAINER, RHT_HEART_CONTAINER, ITEM_HEART_CONTAINER, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xC6, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_ICE_TRAP] = Item(RG_ICE_TRAP, Text{ "Ice Trap", "Piège de Glace", "Eisfalle" }, ITEMTYPE_ITEM, RG_ICE_TRAP, false, LOGIC_NONE, RHT_ICE_TRAP, RG_ICE_TRAP, OBJECT_GI_RUPY, GID_RUPEE_GOLD, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_MILK] = Item(RG_MILK, Text{ "Milk", "Lait", "Milch" }, ITEMTYPE_ITEM, GI_MILK, false, LOGIC_NONE, RHT_NONE, ITEM_MILK, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_FISH] = Item(RG_FISH, Text{ "Fish", "Poisson", "Fisch" }, ITEMTYPE_ITEM, GI_FISH, false, LOGIC_NONE, RHT_NONE, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_RECOVERY_HEART] = Item(RG_RECOVERY_HEART, Text{"Recovery Heart", "Coeur de Vie", "Herz" }, ITEMTYPE_ITEM, GI_HEART, false, LOGIC_NONE, RHT_RECOVERY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_GREEN_RUPEE] = Item(RG_GREEN_RUPEE, Text{"Green Rupee", "Rubis Vert", "Grüner Rubin" }, ITEMTYPE_ITEM, GI_RUPEE_GREEN, false, LOGIC_NONE, RHT_GREEN_RUPEE, ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0x6F, 0x00, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_GREG_RUPEE] = Item(RG_GREG_RUPEE, Text{"Greg the Green Rupee", "Rubis Greg", "Greg Rubin" }, ITEMTYPE_ITEM, GI_RUPEE_GREEN, true, LOGIC_GREG, RHT_GREG_RUPEE, RG_GREG_RUPEE, OBJECT_GI_RUPY, GID_RUPEE_GREEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BLUE_RUPEE] = Item(RG_BLUE_RUPEE, Text{"Blue Rupee", "Rubis Bleu", "Blauer Rubin" }, ITEMTYPE_ITEM, GI_RUPEE_BLUE, false, LOGIC_NONE, RHT_BLUE_RUPEE, ITEM_RUPEE_BLUE, OBJECT_GI_RUPY, GID_RUPEE_BLUE, 0xCC, 0x01, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_RED_RUPEE] = Item(RG_RED_RUPEE, Text{"Red Rupee", "Rubis Rouge", "Roter Rubin" }, ITEMTYPE_ITEM, GI_RUPEE_RED, false, LOGIC_NONE, RHT_RED_RUPEE, ITEM_RUPEE_RED, OBJECT_GI_RUPY, GID_RUPEE_RED, 0xF0, 0x02, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_PURPLE_RUPEE] = Item(RG_PURPLE_RUPEE, Text{"Purple Rupee", "Rubis Pourpre", "Violetter Rubin" }, ITEMTYPE_ITEM, GI_RUPEE_PURPLE, false, LOGIC_NONE, RHT_PURPLE_RUPEE, ITEM_RUPEE_PURPLE, OBJECT_GI_RUPY, GID_RUPEE_PURPLE, 0xF1, 0x14, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_HUGE_RUPEE] = Item(RG_HUGE_RUPEE, Text{"Huge Rupee", "Énorme Rubis", "Riesiger Rubin" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, false, LOGIC_NONE, RHT_HUGE_RUPEE, ITEM_RUPEE_GOLD, OBJECT_GI_RUPY, GID_RUPEE_GOLD, 0xF2, 0x13, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_PIECE_OF_HEART] = Item(RG_PIECE_OF_HEART, Text{"Piece of Heart", "Quart de Coeur", "Herzstück" }, ITEMTYPE_ITEM, GI_HEART_PIECE, true, LOGIC_PIECE_OF_HEART, RHT_PIECE_OF_HEART, ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xC2, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_HEART_CONTAINER] = Item(RG_HEART_CONTAINER, Text{"Heart Container", "Réceptacle de Coeur", "Herzcontainer" }, ITEMTYPE_ITEM, GI_HEART_CONTAINER_2, true, LOGIC_HEART_CONTAINER, RHT_HEART_CONTAINER, ITEM_HEART_CONTAINER, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xC6, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_ICE_TRAP] = Item(RG_ICE_TRAP, Text{"Ice Trap", "Piège de Glace", "Eisfalle" }, ITEMTYPE_ITEM, RG_ICE_TRAP, false, LOGIC_NONE, RHT_ICE_TRAP, RG_ICE_TRAP, OBJECT_GI_RUPY, GID_RUPEE_GOLD, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_MILK] = Item(RG_MILK, Text{"Milk", "Lait", "Milch" }, ITEMTYPE_ITEM, GI_MILK, false, LOGIC_NONE, RHT_NONE, ITEM_MILK, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_FISH] = Item(RG_FISH, Text{"Fish", "Poisson", "Fisch" }, ITEMTYPE_ITEM, GI_FISH, false, LOGIC_NONE, RHT_NONE, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); // Refills - itemTable[RG_BOMBS_5] = Item(RG_BOMBS_5, Text{ "Bombs (5)", "Bombes (5)", "Bomben (5)" }, ITEMTYPE_REFILL, GI_BOMBS_5, false, LOGIC_NONE, RHT_BOMBS_5, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BOMBS_10] = Item(RG_BOMBS_10, Text{ "Bombs (10)", "Bombes (10)", "Bomben (10)" }, ITEMTYPE_REFILL, GI_BOMBS_10, false, LOGIC_NONE, RHT_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BOMBS_20] = Item(RG_BOMBS_20, Text{ "Bombs (20)", "Bombes (20)", "Bomben (20)" }, ITEMTYPE_REFILL, GI_BOMBS_20, false, LOGIC_NONE, RHT_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BOMBCHU_5] = Item(RG_BOMBCHU_5, Text{ "Bombchus (5)", "Missiles (5)", "Krabbelminen (5)" }, ITEMTYPE_REFILL, GI_BOMBCHUS_5, true, LOGIC_BOMBCHUS, RHT_BOMBCHUS_5, ITEM_BOMBCHUS_5, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BOMBCHU_10] = Item(RG_BOMBCHU_10, Text{ "Bombchus (10)", "Missiles (10)", "Krabbelminen (10)" }, ITEMTYPE_REFILL, GI_BOMBCHUS_10, true, LOGIC_BOMBCHUS, RHT_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BOMBCHU_20] = Item(RG_BOMBCHU_20, Text{ "Bombchus (20)", "Missiles (20)", "Krabbelminen (20)" }, ITEMTYPE_REFILL, GI_BOMBCHUS_20, true, LOGIC_BOMBCHUS, RHT_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_ARROWS_5] = Item(RG_ARROWS_5, Text{ "Arrows (5)", "Flèches (5)", "Pfeile (5)" }, ITEMTYPE_REFILL, GI_ARROWS_SMALL, false, LOGIC_NONE, RHT_ARROWS_5, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_ARROWS_10] = Item(RG_ARROWS_10, Text{ "Arrows (10)", "Flèches (10)", "Pfeile (10)" }, ITEMTYPE_REFILL, GI_ARROWS_MEDIUM, false, LOGIC_NONE, RHT_ARROWS_10, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_ARROWS_30] = Item(RG_ARROWS_30, Text{ "Arrows (30)", "Flèches (30)", "Pfeile (30)" }, ITEMTYPE_REFILL, GI_ARROWS_LARGE, false, LOGIC_NONE, RHT_ARROWS_30, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_DEKU_NUTS_5] = Item(RG_DEKU_NUTS_5, Text{ "Deku Nuts (5)", "Noix Mojo (5)", "Deku-Nüsse (5)" }, ITEMTYPE_REFILL, GI_NUTS_5, false, LOGIC_NONE, RHT_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_DEKU_NUTS_10] = Item(RG_DEKU_NUTS_10, Text{ "Deku Nuts (10)", "Noix Mojo (10)", "Deku-Nüsse (10)" }, ITEMTYPE_REFILL, GI_NUTS_10, false, LOGIC_NONE, RHT_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_DEKU_SEEDS_30] = Item(RG_DEKU_SEEDS_30, Text{ "Deku Seeds (30)", "Graines Mojo (30)", "Deku-Samen (30)" }, ITEMTYPE_REFILL, GI_SEEDS_30, false, LOGIC_NONE, RHT_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_DEKU_STICK_1] = Item(RG_DEKU_STICK_1, Text{ "Deku Stick (1)", "Bâton Mojo (1)", "Deku-Stab (1)" }, ITEMTYPE_REFILL, GI_STICKS_1, false, LOGIC_NONE, RHT_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_RED_POTION_REFILL] = Item(RG_RED_POTION_REFILL, Text{ "Red Potion Refill", "Recharge de Potion Rouge", "Nachfüllpackung des roten Elixiers" }, ITEMTYPE_REFILL, GI_POTION_RED, false, LOGIC_NONE, RHT_NONE, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_GREEN_POTION_REFILL] = Item(RG_GREEN_POTION_REFILL, Text{ "Green Potion Refill", "Recharge de Potion Verte", "Nachfüllpackung des grünen Elixiers" }, ITEMTYPE_REFILL, GI_POTION_GREEN, false, LOGIC_NONE, RHT_NONE, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); - itemTable[RG_BLUE_POTION_REFILL] = Item(RG_BLUE_POTION_REFILL, Text{ "Blue Potion Refill", "Recharge de Potion Bleue", "Nachfüllpackung des blauen Elixiers" }, ITEMTYPE_REFILL, GI_POTION_BLUE, false, LOGIC_NONE, RHT_NONE, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_BOMBS_5] = Item(RG_BOMBS_5, Text{"Bombs (5)", "Bombes (5)", "Bomben (5)" }, ITEMTYPE_REFILL, GI_BOMBS_5, false, LOGIC_NONE, RHT_BOMBS_5, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_BOMBS_10] = Item(RG_BOMBS_10, Text{"Bombs (10)", "Bombes (10)", "Bomben (10)" }, ITEMTYPE_REFILL, GI_BOMBS_10, false, LOGIC_NONE, RHT_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_BOMBS_20] = Item(RG_BOMBS_20, Text{"Bombs (20)", "Bombes (20)", "Bomben (20)" }, ITEMTYPE_REFILL, GI_BOMBS_20, false, LOGIC_NONE, RHT_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_BOMBCHU_5] = Item(RG_BOMBCHU_5, Text{"Bombchus (5)", "Missiles (5)", "Krabbelminen (5)" }, ITEMTYPE_REFILL, GI_BOMBCHUS_5, true, LOGIC_BOMBCHUS, RHT_BOMBCHUS_5, ITEM_BOMBCHUS_5, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_BOMBCHU_10] = Item(RG_BOMBCHU_10, Text{"Bombchus (10)", "Missiles (10)", "Krabbelminen (10)" }, ITEMTYPE_REFILL, GI_BOMBCHUS_10, true, LOGIC_BOMBCHUS, RHT_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_BOMBCHU_20] = Item(RG_BOMBCHU_20, Text{"Bombchus (20)", "Missiles (20)", "Krabbelminen (20)" }, ITEMTYPE_REFILL, GI_BOMBCHUS_20, true, LOGIC_BOMBCHUS, RHT_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_ARROWS_5] = Item(RG_ARROWS_5, Text{"Arrows (5)", "Flèches (5)", "Pfeile (5)" }, ITEMTYPE_REFILL, GI_ARROWS_SMALL, false, LOGIC_NONE, RHT_ARROWS_5, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_ARROWS_10] = Item(RG_ARROWS_10, Text{"Arrows (10)", "Flèches (10)", "Pfeile (10)" }, ITEMTYPE_REFILL, GI_ARROWS_MEDIUM, false, LOGIC_NONE, RHT_ARROWS_10, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_ARROWS_30] = Item(RG_ARROWS_30, Text{"Arrows (30)", "Flèches (30)", "Pfeile (30)" }, ITEMTYPE_REFILL, GI_ARROWS_LARGE, false, LOGIC_NONE, RHT_ARROWS_30, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_DEKU_NUTS_5] = Item(RG_DEKU_NUTS_5, Text{"Deku Nuts (5)", "Noix Mojo (5)", "Deku-Nüsse (5)" }, ITEMTYPE_REFILL, GI_NUTS_5, false, LOGIC_NONE, RHT_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_DEKU_NUTS_10] = Item(RG_DEKU_NUTS_10, Text{"Deku Nuts (10)", "Noix Mojo (10)", "Deku-Nüsse (10)" }, ITEMTYPE_REFILL, GI_NUTS_10, false, LOGIC_NONE, RHT_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_DEKU_SEEDS_30] = Item(RG_DEKU_SEEDS_30, Text{"Deku Seeds (30)", "Graines Mojo (30)", "Deku-Samen (30)" }, ITEMTYPE_REFILL, GI_SEEDS_30, false, LOGIC_NONE, RHT_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_DEKU_STICK_1] = Item(RG_DEKU_STICK_1, Text{"Deku Stick (1)", "Bâton Mojo (1)", "Deku-Stab (1)" }, ITEMTYPE_REFILL, GI_STICKS_1, false, LOGIC_NONE, RHT_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_RED_POTION_REFILL] = Item(RG_RED_POTION_REFILL, Text{"Red Potion Refill", "Recharge de Potion Rouge", "Nachfüllpackung des roten Elixiers" }, ITEMTYPE_REFILL, GI_POTION_RED, false, LOGIC_NONE, RHT_NONE, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_GREEN_POTION_REFILL] = Item(RG_GREEN_POTION_REFILL, Text{"Green Potion Refill", "Recharge de Potion Verte", "Nachfüllpackung des grünen Elixiers" }, ITEMTYPE_REFILL, GI_POTION_GREEN, false, LOGIC_NONE, RHT_NONE, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); + itemTable[RG_BLUE_POTION_REFILL] = Item(RG_BLUE_POTION_REFILL, Text{"Blue Potion Refill", "Recharge de Potion Bleue", "Nachfüllpackung des blauen Elixiers" }, ITEMTYPE_REFILL, GI_POTION_BLUE, false, LOGIC_NONE, RHT_NONE, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE); // Treasure Game - itemTable[RG_TREASURE_GAME_HEART] = Item(RG_TREASURE_GAME_HEART, Text{ "Piece of Heart (WINNER)", "Quart de Coeur (Chasse-aux-Trésors)", "Herzstück (Schatztruhenminispiel)" }, ITEMTYPE_ITEM, GI_HEART_PIECE_WIN, true, LOGIC_PIECE_OF_HEART, RHT_TREASURE_GAME_HEART, ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xFA, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_TREASURE_GAME_GREEN_RUPEE] = Item(RG_TREASURE_GAME_GREEN_RUPEE, Text{ "Green Rupee (LOSER)", "Rubis Vert (Chasse-aux-Trésors)", "Grüner Rubin (Schatztruhenminispiel)" }, ITEMTYPE_ITEM, GI_RUPEE_GREEN_LOSE, false, LOGIC_NONE, RHT_TREASURE_GAME_GREEN_RUPEE, ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0xF4, 0x00, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_TREASURE_GAME_HEART] = Item(RG_TREASURE_GAME_HEART, Text{"Piece of Heart (WINNER)", "Quart de Coeur (Chasse-aux-Trésors)", "Herzstück (Schatztruhenminispiel)" }, ITEMTYPE_ITEM, GI_HEART_PIECE_WIN, true, LOGIC_PIECE_OF_HEART, RHT_TREASURE_GAME_HEART, ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xFA, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_LOSER_GREEN_RUPEE] = Item(RG_LOSER_GREEN_RUPEE, Text{"Green Rupee (LOSER)", "Rubis Vert (Chasse-aux-Trésors)", "Grüner Rubin (Schatztruhenminispiel)" }, ITEMTYPE_ITEM, GI_RUPEE_GREEN_LOSE, false, LOGIC_NONE, RHT_LOSER_GREEN_RUPEE, ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0xF4, 0x00, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE); // Shop - itemTable[RG_BUY_DEKU_NUTS_5] = Item(RG_BUY_DEKU_NUTS_5, Text{ "Buy Deku Nut (5)", "Acheter: Noix Mojo (5)", "Deku-Nuß kaufen (5)" }, ITEMTYPE_SHOP, GI_NUTS_5_2, true, LOGIC_NUTS, RHT_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 15); - itemTable[RG_BUY_ARROWS_30] = Item(RG_BUY_ARROWS_30, Text{ "Buy Arrows (30)", "Acheter: Flèches (30)", "Pfeile kaufen (30)" }, ITEMTYPE_SHOP, GI_ARROWS_MEDIUM, true, LOGIC_BUY_ARROW, RHT_ARROWS_30, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 60); - itemTable[RG_BUY_ARROWS_50] = Item(RG_BUY_ARROWS_50, Text{ "Buy Arrows (50)", "Acheter: Flèches (50)", "Pfeile kaufen (50)" }, ITEMTYPE_SHOP, GI_ARROWS_LARGE, true, LOGIC_BUY_ARROW, RHT_ARROWS_30, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 90); - itemTable[RG_BUY_BOMBS_525] = Item(RG_BUY_BOMBS_525, Text{ "Buy Bombs (5) [25]", "Acheter: Bombes (5) [25]", "Bomben kaufen (5) [25]" }, ITEMTYPE_SHOP, GI_BOMBS_5, true, LOGIC_BUY_BOMB, RHT_BOMBS_5, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 25); - itemTable[RG_BUY_DEKU_NUTS_10] = Item(RG_BUY_DEKU_NUTS_10, Text{ "Buy Deku Nut (10)", "Acheter: Noix Mojo (10)", "Deku-Nuß kaufen (10)" }, ITEMTYPE_SHOP, GI_NUTS_10, true, LOGIC_NUTS, RHT_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); - itemTable[RG_BUY_DEKU_STICK_1] = Item(RG_BUY_DEKU_STICK_1, Text{ "Buy Deku Stick (1)", "Acheter: Bâton Mojo (1)", "Deku-Stab kaufen (1)" }, ITEMTYPE_SHOP, GI_STICKS_1, true, LOGIC_STICKS, RHT_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 10); - itemTable[RG_BUY_BOMBS_10] = Item(RG_BUY_BOMBS_10, Text{ "Buy Bombs (10)", "Acheter: Bombes (10)", "Bomben kaufen (10)" }, ITEMTYPE_SHOP, GI_BOMBS_10, true, LOGIC_BUY_BOMB, RHT_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); - itemTable[RG_BUY_FISH] = Item(RG_BUY_FISH, Text{ "Buy Fish", "Acheter: Poisson", "Fisch kaufen" }, ITEMTYPE_SHOP, GI_FISH, true, LOGIC_FISH_ACCESS, RHT_BOTTLE_WITH_FISH, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 200); - itemTable[RG_BUY_RED_POTION_30] = Item(RG_BUY_RED_POTION_30, Text{ "Buy Red Potion [30]", "Acheter: Potion Rouge [30]", "Rotes Elixier kaufen [30]" }, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BOTTLE_WITH_RED_POTION, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); - itemTable[RG_BUY_GREEN_POTION] = Item(RG_BUY_GREEN_POTION, Text{ "Buy Green Potion", "Acheter: Potion Verte", "Grünes Elixier kaufen" }, ITEMTYPE_SHOP, GI_POTION_GREEN, true, LOGIC_BUY_MAGIC_POTION, RHT_BOTTLE_WITH_GREEN_POTION, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); - itemTable[RG_BUY_BLUE_POTION] = Item(RG_BUY_BLUE_POTION, Text{ "Buy Blue Potion", "Acheter: Potion Bleue", "Blaues Elixier kaufen" }, ITEMTYPE_SHOP, GI_POTION_BLUE, true, LOGIC_BUY_MAGIC_POTION, RHT_BOTTLE_WITH_BLUE_POTION, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 100); - itemTable[RG_BUY_HYLIAN_SHIELD] = Item(RG_BUY_HYLIAN_SHIELD, Text{ "Buy Hylian Shield", "Acheter: Bouclier Hylien", "Hylia-Schild kaufen" }, ITEMTYPE_SHOP, GI_SHIELD_HYLIAN, true, LOGIC_HYLIAN_SHIELD, RHT_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, false, 80); - itemTable[RG_BUY_DEKU_SHIELD] = Item(RG_BUY_DEKU_SHIELD, Text{ "Buy Deku Shield", "Acheter: Bouclier Mojo", "Deku-Schild kaufen" }, ITEMTYPE_SHOP, GI_SHIELD_DEKU, true, LOGIC_DEKU_SHIELD, RHT_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, false, 40); - itemTable[RG_BUY_GORON_TUNIC] = Item(RG_BUY_GORON_TUNIC, Text{ "Buy Goron Tunic", "Acheter: Tunique Goron", "Goronen-Tunika kaufen" }, ITEMTYPE_SHOP, GI_TUNIC_GORON, true, LOGIC_GORON_TUNIC, RHT_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, false, 200); - itemTable[RG_BUY_ZORA_TUNIC] = Item(RG_BUY_ZORA_TUNIC, Text{ "Buy Zora Tunic", "Acheter: Tunique Zora", "Zora-Tunika kaufen" }, ITEMTYPE_SHOP, GI_TUNIC_ZORA, true, LOGIC_ZORA_TUNIC, RHT_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, false, 300); - itemTable[RG_BUY_HEART] = Item(RG_BUY_HEART, Text{ "Buy Heart", "Acheter: Coeur de Vie", "Herz kaufen" }, ITEMTYPE_SHOP, GI_HEART, false, LOGIC_NONE, RHT_RECOVERY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 10); - itemTable[RG_BUY_BOMBCHUS_10] = Item(RG_BUY_BOMBCHUS_10, Text{ "Buy Bombchu (10)", "Acheter: Missiles (10)", "Krabbelminen kaufen (10)" }, ITEMTYPE_SHOP, GI_BOMBCHUS_10, true, LOGIC_BUY_BOMBCHUS, RHT_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 99); - itemTable[RG_BUY_BOMBCHUS_20] = Item(RG_BUY_BOMBCHUS_20, Text{ "Buy Bombchu (20)", "Acheter: Missiles (20)", "Krabbelminen kaufen (20)" }, ITEMTYPE_SHOP, GI_BOMBCHUS_20, true, LOGIC_BUY_BOMBCHUS, RHT_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 180); - itemTable[RG_BUY_DEKU_SEEDS_30] = Item(RG_BUY_DEKU_SEEDS_30, Text{ "Buy Deku Seeds (30)", "Acheter: Graines Mojo (30)", "Deku-Samen kaufen (30)" }, ITEMTYPE_SHOP, GI_SEEDS_30, true, LOGIC_BUY_SEED, RHT_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); - itemTable[RG_SOLD_OUT] = Item(RG_SOLD_OUT, Text{ "Sold Out", "Rupture de stock", "Ausverkauft" }, ITEMTYPE_SHOP, RG_SOLD_OUT, false, LOGIC_NONE, RHT_NONE, false, 0); - itemTable[RG_BUY_BLUE_FIRE] = Item(RG_BUY_BLUE_FIRE, Text{ "Buy Blue Fire", "Acheter: Flamme Bleue", "Blaues Feuer kaufen" }, ITEMTYPE_SHOP, GI_BLUE_FIRE, true, LOGIC_BLUE_FIRE_ACCESS, RHT_BOTTLE_WITH_BLUE_FIRE, ITEM_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, 0x5D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 300); - itemTable[RG_BUY_BOTTLE_BUG] = Item(RG_BUY_BOTTLE_BUG, Text{ "Buy Bottle Bug", "Acheter: Insecte en bouteille", "Flaschenkäfer kaufen" }, ITEMTYPE_SHOP, GI_BUGS, true, LOGIC_BUGS_ACCESS, RHT_BOTTLE_WITH_BUGS, ITEM_BUG, OBJECT_GI_INSECT, GID_BUG, 0x7A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); - itemTable[RG_BUY_POE] = Item(RG_BUY_POE, Text{ "Buy Poe", "Acheter: Esprit", "Geist kaufen" }, ITEMTYPE_SHOP, RG_BUY_POE, false, LOGIC_NONE, RHT_BOTTLE_WITH_BIG_POE, ITEM_POE, OBJECT_GI_GHOST, GID_POE, 0x97, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); - itemTable[RG_BUY_FAIRYS_SPIRIT] = Item(RG_BUY_FAIRYS_SPIRIT, Text{ "Buy Fairy's Spirit", "Acheter: Esprit de Fée", "Feengeist kaufen" }, ITEMTYPE_SHOP, GI_FAIRY, true, LOGIC_FAIRY_ACCESS, RHT_BOTTLE_WITH_FAIRY, ITEM_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x46, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); - itemTable[RG_BUY_ARROWS_10] = Item(RG_BUY_ARROWS_10, Text{ "Buy Arrows (10)", "Acheter: Flèches (10)", "Pfeile kaufen (10)" }, ITEMTYPE_SHOP, GI_ARROWS_SMALL, true, LOGIC_BUY_ARROW, RHT_ARROWS_10, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 20); - itemTable[RG_BUY_BOMBS_20] = Item(RG_BUY_BOMBS_20, Text{ "Buy Bombs (20)", "Acheter: Bombes (20)", "Bomben kaufen (20)" }, ITEMTYPE_SHOP, GI_BOMBS_20, true, LOGIC_BUY_BOMB, RHT_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 80); - itemTable[RG_BUY_BOMBS_30] = Item(RG_BUY_BOMBS_30, Text{ "Buy Bombs (30)", "Acheter: Bombes (30)", "Bomben kaufen (30)" }, ITEMTYPE_SHOP, GI_BOMBS_30, true, LOGIC_BUY_BOMB, RHT_BOMBS_20, ITEM_BOMBS_30, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 120); - itemTable[RG_BUY_BOMBS_535] = Item(RG_BUY_BOMBS_535, Text{ "Buy Bombs (5) [35]", "Acheter: Bombes (5) [35]", "Bomben kaufen (5) [35]" }, ITEMTYPE_SHOP, GI_BOMBS_5, true, LOGIC_BUY_BOMB, RHT_BOMBS_5, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 35); - itemTable[RG_BUY_RED_POTION_40] = Item(RG_BUY_RED_POTION_40, Text{ "Buy Red Potion [40]", "Acheter: Potion Rouge [40]", "Rotes Elixier kaufen [40]" }, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BOTTLE_WITH_RED_POTION, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 40); - itemTable[RG_BUY_RED_POTION_50] = Item(RG_BUY_RED_POTION_50, Text{ "Buy Red Potion [50]", "Acheter: Potion Rouge [50]", "Rotes Elixier kaufen [50]" }, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BOTTLE_WITH_RED_POTION, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); + itemTable[RG_BUY_DEKU_NUTS_5] = Item(RG_BUY_DEKU_NUTS_5, Text{"Buy Deku Nut (5)", "Acheter: Noix Mojo (5)", "Deku-Nuß kaufen (5)" }, ITEMTYPE_SHOP, GI_NUTS_5_2, true, LOGIC_NUTS, RHT_DEKU_NUTS_5, ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 15); + itemTable[RG_BUY_ARROWS_30] = Item(RG_BUY_ARROWS_30, Text{"Buy Arrows (30)", "Acheter: Flèches (30)", "Pfeile kaufen (30)" }, ITEMTYPE_SHOP, GI_ARROWS_MEDIUM, true, LOGIC_BUY_ARROW, RHT_ARROWS_30, ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 60); + itemTable[RG_BUY_ARROWS_50] = Item(RG_BUY_ARROWS_50, Text{"Buy Arrows (50)", "Acheter: Flèches (50)", "Pfeile kaufen (50)" }, ITEMTYPE_SHOP, GI_ARROWS_LARGE, true, LOGIC_BUY_ARROW, RHT_ARROWS_30, ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 90); + itemTable[RG_BUY_BOMBS_525] = Item(RG_BUY_BOMBS_525, Text{"Buy Bombs (5) [25]", "Acheter: Bombes (5) [25]", "Bomben kaufen (5) [25]" }, ITEMTYPE_SHOP, GI_BOMBS_5, true, LOGIC_BUY_BOMB, RHT_BOMBS_5, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 25); + itemTable[RG_BUY_DEKU_NUTS_10] = Item(RG_BUY_DEKU_NUTS_10, Text{"Buy Deku Nut (10)", "Acheter: Noix Mojo (10)", "Deku-Nuß kaufen (10)" }, ITEMTYPE_SHOP, GI_NUTS_10, true, LOGIC_NUTS, RHT_DEKU_NUTS_10, ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); + itemTable[RG_BUY_DEKU_STICK_1] = Item(RG_BUY_DEKU_STICK_1, Text{"Buy Deku Stick (1)", "Acheter: Bâton Mojo (1)", "Deku-Stab kaufen (1)" }, ITEMTYPE_SHOP, GI_STICKS_1, true, LOGIC_STICKS, RHT_DEKU_STICK_1, ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 10); + itemTable[RG_BUY_BOMBS_10] = Item(RG_BUY_BOMBS_10, Text{"Buy Bombs (10)", "Acheter: Bombes (10)", "Bomben kaufen (10)" }, ITEMTYPE_SHOP, GI_BOMBS_10, true, LOGIC_BUY_BOMB, RHT_BOMBS_10, ITEM_BOMBS_10, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); + itemTable[RG_BUY_FISH] = Item(RG_BUY_FISH, Text{"Buy Fish", "Acheter: Poisson", "Fisch kaufen" }, ITEMTYPE_SHOP, GI_FISH, true, LOGIC_FISH_ACCESS, RHT_BOTTLE_WITH_FISH, ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 200); + itemTable[RG_BUY_RED_POTION_30] = Item(RG_BUY_RED_POTION_30, Text{"Buy Red Potion [30]", "Acheter: Potion Rouge [30]", "Rotes Elixier kaufen [30]" }, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BOTTLE_WITH_RED_POTION, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); + itemTable[RG_BUY_GREEN_POTION] = Item(RG_BUY_GREEN_POTION, Text{"Buy Green Potion", "Acheter: Potion Verte", "Grünes Elixier kaufen" }, ITEMTYPE_SHOP, GI_POTION_GREEN, true, LOGIC_BUY_MAGIC_POTION, RHT_BOTTLE_WITH_GREEN_POTION, ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); + itemTable[RG_BUY_BLUE_POTION] = Item(RG_BUY_BLUE_POTION, Text{"Buy Blue Potion", "Acheter: Potion Bleue", "Blaues Elixier kaufen" }, ITEMTYPE_SHOP, GI_POTION_BLUE, true, LOGIC_BUY_MAGIC_POTION, RHT_BOTTLE_WITH_BLUE_POTION, ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 100); + itemTable[RG_BUY_HYLIAN_SHIELD] = Item(RG_BUY_HYLIAN_SHIELD, Text{"Buy Hylian Shield", "Acheter: Bouclier Hylien", "Hylia-Schild kaufen" }, ITEMTYPE_SHOP, GI_SHIELD_HYLIAN, true, LOGIC_HYLIAN_SHIELD, RHT_HYLIAN_SHIELD, ITEM_SHIELD_HYLIAN, OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, 0x4D, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, false, 80); + itemTable[RG_BUY_DEKU_SHIELD] = Item(RG_BUY_DEKU_SHIELD, Text{"Buy Deku Shield", "Acheter: Bouclier Mojo", "Deku-Schild kaufen" }, ITEMTYPE_SHOP, GI_SHIELD_DEKU, true, LOGIC_DEKU_SHIELD, RHT_DEKU_SHIELD, ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE, false, 40); + itemTable[RG_BUY_GORON_TUNIC] = Item(RG_BUY_GORON_TUNIC, Text{"Buy Goron Tunic", "Acheter: Tunique Goron", "Goronen-Tunika kaufen" }, ITEMTYPE_SHOP, GI_TUNIC_GORON, true, LOGIC_GORON_TUNIC, RHT_GORON_TUNIC, ITEM_TUNIC_GORON, OBJECT_GI_CLOTHES, GID_TUNIC_GORON, 0x50, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, false, 200); + itemTable[RG_BUY_ZORA_TUNIC] = Item(RG_BUY_ZORA_TUNIC, Text{"Buy Zora Tunic", "Acheter: Tunique Zora", "Zora-Tunika kaufen" }, ITEMTYPE_SHOP, GI_TUNIC_ZORA, true, LOGIC_ZORA_TUNIC, RHT_ZORA_TUNIC, ITEM_TUNIC_ZORA, OBJECT_GI_CLOTHES, GID_TUNIC_ZORA, 0x51, 0xA0, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE, false, 300); + itemTable[RG_BUY_HEART] = Item(RG_BUY_HEART, Text{"Buy Heart", "Acheter: Coeur de Vie", "Herz kaufen" }, ITEMTYPE_SHOP, GI_HEART, false, LOGIC_NONE, RHT_RECOVERY_HEART, ITEM_HEART, OBJECT_GI_HEART, GID_HEART, 0x55, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 10); + itemTable[RG_BUY_BOMBCHUS_10] = Item(RG_BUY_BOMBCHUS_10, Text{"Buy Bombchu (10)", "Acheter: Missiles (10)", "Krabbelminen kaufen (10)" }, ITEMTYPE_SHOP, GI_BOMBCHUS_10, true, LOGIC_BUY_BOMBCHUS, RHT_BOMBCHUS_10, ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 99); + itemTable[RG_BUY_BOMBCHUS_20] = Item(RG_BUY_BOMBCHUS_20, Text{"Buy Bombchu (20)", "Acheter: Missiles (20)", "Krabbelminen kaufen (20)" }, ITEMTYPE_SHOP, GI_BOMBCHUS_20, true, LOGIC_BUY_BOMBCHUS, RHT_BOMBCHUS_20, ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 180); + itemTable[RG_BUY_DEKU_SEEDS_30] = Item(RG_BUY_DEKU_SEEDS_30, Text{"Buy Deku Seeds (30)", "Acheter: Graines Mojo (30)", "Deku-Samen kaufen (30)" }, ITEMTYPE_SHOP, GI_SEEDS_30, true, LOGIC_BUY_SEED, RHT_DEKU_SEEDS_30, ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); + itemTable[RG_SOLD_OUT] = Item(RG_SOLD_OUT, Text{"Sold Out", "Rupture de stock", "Ausverkauft" }, ITEMTYPE_SHOP, RG_SOLD_OUT, false, LOGIC_NONE, RHT_NONE, false, 0); + itemTable[RG_BUY_BLUE_FIRE] = Item(RG_BUY_BLUE_FIRE, Text{"Buy Blue Fire", "Acheter: Flamme Bleue", "Blaues Feuer kaufen" }, ITEMTYPE_SHOP, GI_BLUE_FIRE, true, LOGIC_BLUE_FIRE_ACCESS, RHT_BOTTLE_WITH_BLUE_FIRE, ITEM_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, 0x5D, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 300); + itemTable[RG_BUY_BOTTLE_BUG] = Item(RG_BUY_BOTTLE_BUG, Text{"Buy Bottle Bug", "Acheter: Insecte en bouteille", "Flaschenkäfer kaufen" }, ITEMTYPE_SHOP, GI_BUGS, true, LOGIC_BUGS_ACCESS, RHT_BOTTLE_WITH_BUGS, ITEM_BUG, OBJECT_GI_INSECT, GID_BUG, 0x7A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); + itemTable[RG_BUY_POE] = Item(RG_BUY_POE, Text{"Buy Poe", "Acheter: Esprit", "Geist kaufen" }, ITEMTYPE_SHOP, RG_BUY_POE, false, LOGIC_NONE, RHT_BOTTLE_WITH_BIG_POE, ITEM_POE, OBJECT_GI_GHOST, GID_POE, 0x97, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 30); + itemTable[RG_BUY_FAIRYS_SPIRIT] = Item(RG_BUY_FAIRYS_SPIRIT, Text{"Buy Fairy's Spirit", "Acheter: Esprit de Fée", "Feengeist kaufen" }, ITEMTYPE_SHOP, GI_FAIRY, true, LOGIC_FAIRY_ACCESS, RHT_BOTTLE_WITH_FAIRY, ITEM_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x46, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); + itemTable[RG_BUY_ARROWS_10] = Item(RG_BUY_ARROWS_10, Text{"Buy Arrows (10)", "Acheter: Flèches (10)", "Pfeile kaufen (10)" }, ITEMTYPE_SHOP, GI_ARROWS_SMALL, true, LOGIC_BUY_ARROW, RHT_ARROWS_10, ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 20); + itemTable[RG_BUY_BOMBS_20] = Item(RG_BUY_BOMBS_20, Text{"Buy Bombs (20)", "Acheter: Bombes (20)", "Bomben kaufen (20)" }, ITEMTYPE_SHOP, GI_BOMBS_20, true, LOGIC_BUY_BOMB, RHT_BOMBS_20, ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 80); + itemTable[RG_BUY_BOMBS_30] = Item(RG_BUY_BOMBS_30, Text{"Buy Bombs (30)", "Acheter: Bombes (30)", "Bomben kaufen (30)" }, ITEMTYPE_SHOP, GI_BOMBS_30, true, LOGIC_BUY_BOMB, RHT_BOMBS_20, ITEM_BOMBS_30, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 120); + itemTable[RG_BUY_BOMBS_535] = Item(RG_BUY_BOMBS_535, Text{"Buy Bombs (5) [35]", "Acheter: Bombes (5) [35]", "Bomben kaufen (5) [35]" }, ITEMTYPE_SHOP, GI_BOMBS_5, true, LOGIC_BUY_BOMB, RHT_BOMBS_5, ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, false, 35); + itemTable[RG_BUY_RED_POTION_40] = Item(RG_BUY_RED_POTION_40, Text{"Buy Red Potion [40]", "Acheter: Potion Rouge [40]", "Rotes Elixier kaufen [40]" }, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BOTTLE_WITH_RED_POTION, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 40); + itemTable[RG_BUY_RED_POTION_50] = Item(RG_BUY_RED_POTION_50, Text{"Buy Red Potion [50]", "Acheter: Potion Rouge [50]", "Rotes Elixier kaufen [50]" }, ITEMTYPE_SHOP, GI_POTION_RED, false, LOGIC_NONE, RHT_BOTTLE_WITH_RED_POTION, ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_JUNK, MOD_NONE, false, 50); // Misc. - itemTable[RG_GOHMA_SOUL] = Item(RG_GOHMA_SOUL, Text{ "Gohma's Soul", "Âme de Gohma", "Gohmas Seele" }, ITEMTYPE_ITEM, 0xE0, true, LOGIC_CAN_SUMMON_GOHMA, RHT_GOHMA_SOUL, RG_GOHMA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_GOHMA_SOUL] = Item(RG_GOHMA_SOUL, Text{"Gohma's Soul", "Âme de Gohma", "Gohmas Seele" }, ITEMTYPE_ITEM, 0xE0, true, LOGIC_CAN_SUMMON_GOHMA, RHT_GOHMA_SOUL, RG_GOHMA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_GOHMA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_KING_DODONGO_SOUL] = Item(RG_KING_DODONGO_SOUL, Text{ "King Dodongo's Soul", "Âme du Roi Dodongo", "König Dodongos Seele" }, ITEMTYPE_ITEM, 0xE1, true, LOGIC_CAN_SUMMON_KINGDODONGO, RHT_KING_DODONGO_SOUL, RG_KING_DODONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_KING_DODONGO_SOUL] = Item(RG_KING_DODONGO_SOUL, Text{"King Dodongo's Soul", "Âme du Roi Dodongo", "König Dodongos Seele" }, ITEMTYPE_ITEM, 0xE1, true, LOGIC_CAN_SUMMON_KINGDODONGO, RHT_KING_DODONGO_SOUL, RG_KING_DODONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_KING_DODONGO_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_BARINADE_SOUL] = Item(RG_BARINADE_SOUL, Text{ "Barinade's Soul", "Âme de Barinade", "Barinades Seele" }, ITEMTYPE_ITEM, 0xE2, true, LOGIC_CAN_SUMMON_BARINADE, RHT_BARINADE_SOUL, RG_BARINADE_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BARINADE_SOUL] = Item(RG_BARINADE_SOUL, Text{"Barinade's Soul", "Âme de Barinade", "Barinades Seele" }, ITEMTYPE_ITEM, 0xE2, true, LOGIC_CAN_SUMMON_BARINADE, RHT_BARINADE_SOUL, RG_BARINADE_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_BARINADE_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_PHANTOM_GANON_SOUL] = Item(RG_PHANTOM_GANON_SOUL, Text{ "Phantom Ganon's Soul", "Âme de Ganon Spectral", "Phantom-Ganons Seele" }, ITEMTYPE_ITEM, 0xE3, true, LOGIC_CAN_SUMMON_PHANTOMGANON, RHT_PHANTOM_GANON_SOUL, RG_PHANTOM_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_PHANTOM_GANON_SOUL] = Item(RG_PHANTOM_GANON_SOUL, Text{"Phantom Ganon's Soul", "Âme de Ganon Spectral", "Phantom-Ganons Seele" }, ITEMTYPE_ITEM, 0xE3, true, LOGIC_CAN_SUMMON_PHANTOMGANON, RHT_PHANTOM_GANON_SOUL, RG_PHANTOM_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_PHANTOM_GANON_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_VOLVAGIA_SOUL] = Item(RG_VOLVAGIA_SOUL, Text{ "Volvagia's Soul", "Âme de Vulcania", "Volvagias Seele" }, ITEMTYPE_ITEM, 0xE4, true, LOGIC_CAN_SUMMON_VOLVAGIA, RHT_VOLVAGIA_SOUL, RG_VOLVAGIA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_VOLVAGIA_SOUL] = Item(RG_VOLVAGIA_SOUL, Text{"Volvagia's Soul", "Âme de Vulcania", "Volvagias Seele" }, ITEMTYPE_ITEM, 0xE4, true, LOGIC_CAN_SUMMON_VOLVAGIA, RHT_VOLVAGIA_SOUL, RG_VOLVAGIA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_VOLVAGIA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_MORPHA_SOUL] = Item(RG_MORPHA_SOUL, Text{ "Morpha's Soul", "Âme de Morpha", "Morphas Seele" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_MORPHA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_MORPHA_SOUL] = Item(RG_MORPHA_SOUL, Text{"Morpha's Soul", "Âme de Morpha", "Morphas Seele" }, ITEMTYPE_ITEM, 0xE5, true, LOGIC_CAN_SUMMON_MORPHA, RHT_MORPHA_SOUL, RG_MORPHA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_MORPHA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_BONGO_BONGO_SOUL] = Item(RG_BONGO_BONGO_SOUL, Text{ "Bongo Bongo's Soul", "Âme de Bongo Bongo", "Bongo Bongos Seele" }, ITEMTYPE_ITEM, 0xE6, true, LOGIC_CAN_SUMMON_BONGOBONGO, RHT_BONGO_BONGO_SOUL, RG_BONGO_BONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BONGO_BONGO_SOUL] = Item(RG_BONGO_BONGO_SOUL, Text{"Bongo Bongo's Soul", "Âme de Bongo Bongo", "Bongo Bongos Seele" }, ITEMTYPE_ITEM, 0xE6, true, LOGIC_CAN_SUMMON_BONGOBONGO, RHT_BONGO_BONGO_SOUL, RG_BONGO_BONGO_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_BONGO_BONGO_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_TWINROVA_SOUL] = Item(RG_TWINROVA_SOUL, Text{ "Twinrova's Soul", "Âme du Duo Maléfique", "Twinrovas Seele" }, ITEMTYPE_ITEM, 0xE7, true, LOGIC_CAN_SUMMON_TWINROVA, RHT_TWINROVA_SOUL, RG_TWINROVA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_TWINROVA_SOUL] = Item(RG_TWINROVA_SOUL, Text{"Twinrova's Soul", "Âme du Duo Maléfique", "Twinrovas Seele" }, ITEMTYPE_ITEM, 0xE7, true, LOGIC_CAN_SUMMON_TWINROVA, RHT_TWINROVA_SOUL, RG_TWINROVA_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_TWINROVA_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_GANON_SOUL] = Item(RG_GANON_SOUL, Text{ "Ganon's Soul", "Âme de Ganon", "Ganons Seele" }, ITEMTYPE_ITEM, 0xE8, true, LOGIC_CAN_SUMMON_GANON, RHT_GANON_SOUL, RG_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_GANON_SOUL] = Item(RG_GANON_SOUL, Text{"Ganon's Soul", "Âme de Ganon", "Ganons Seele" }, ITEMTYPE_ITEM, 0xE8, true, LOGIC_CAN_SUMMON_GANON, RHT_GANON_SOUL, RG_GANON_SOUL, OBJECT_GI_SUTARU, GID_SKULL_TOKEN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_GANON_SOUL].SetCustomDrawFunc(Randomizer_DrawBossSoul); - itemTable[RG_FISHING_POLE] = Item(RG_FISHING_POLE, Text{ "Fishing Pole", "Canne à Pêche", "Angelrute" }, ITEMTYPE_ITEM, RG_FISHING_POLE, true, LOGIC_FISHING_POLE, RHT_FISHING_POLE, RG_FISHING_POLE, OBJECT_GI_FISH, GID_FISHING_POLE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_FISHING_POLE] = Item(RG_FISHING_POLE, Text{"Fishing Pole", "Canne à Pêche", "Angelrute" }, ITEMTYPE_ITEM, RG_FISHING_POLE, true, LOGIC_FISHING_POLE, RHT_FISHING_POLE, RG_FISHING_POLE, OBJECT_GI_FISH, GID_FISHING_POLE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_FISHING_POLE].SetCustomDrawFunc(Randomizer_DrawFishingPoleGI); - itemTable[RG_OCARINA_A_BUTTON] = Item(RG_OCARINA_A_BUTTON, Text{ "Ocarina A Button", "Touche A de l'Ocarina", "Taste A der Okarina" }, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_A_BUTTON, RHT_OCARINA_A_BUTTON, RG_OCARINA_A_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_OCARINA_A_BUTTON] = Item(RG_OCARINA_A_BUTTON, Text{"Ocarina A Button", "Touche A de l'Ocarina", "Taste A der Okarina" }, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_A_BUTTON, RHT_OCARINA_A_BUTTON, RG_OCARINA_A_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_OCARINA_A_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - itemTable[RG_OCARINA_C_UP_BUTTON] = Item(RG_OCARINA_C_UP_BUTTON, Text{ "Ocarina C Up Button", "Touche C-Haut de l'Ocarina", "Taste C-Oben der Okarina" }, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_UP_BUTTON, RHT_OCARINA_C_UP_BUTTON, RG_OCARINA_C_UP_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_OCARINA_C_UP_BUTTON] = Item(RG_OCARINA_C_UP_BUTTON, Text{"Ocarina C Up Button", "Touche C-Haut de l'Ocarina", "Taste C-Oben der Okarina" }, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_UP_BUTTON, RHT_OCARINA_C_UP_BUTTON, RG_OCARINA_C_UP_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_OCARINA_C_UP_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - itemTable[RG_OCARINA_C_DOWN_BUTTON] = Item(RG_OCARINA_C_DOWN_BUTTON, Text{ "Ocarina C Down Button", "Touche C-Bas de l'Ocarina", "Taste C-Unten der Okarina" }, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_DOWN_BUTTON, RHT_OCARINA_C_DOWN_BUTTON, RG_OCARINA_C_DOWN_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_OCARINA_C_DOWN_BUTTON] = Item(RG_OCARINA_C_DOWN_BUTTON, Text{"Ocarina C Down Button", "Touche C-Bas de l'Ocarina", "Taste C-Unten der Okarina" }, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_DOWN_BUTTON, RHT_OCARINA_C_DOWN_BUTTON, RG_OCARINA_C_DOWN_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_OCARINA_C_DOWN_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - itemTable[RG_OCARINA_C_LEFT_BUTTON] = Item(RG_OCARINA_C_LEFT_BUTTON, Text{ "Ocarina C Left Button", "Touche C-Gauche de l'Ocarina", "Taste C-Links der Okarina" }, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_LEFT_BUTTON, RHT_OCARINA_C_LEFT_BUTTON, RG_OCARINA_C_LEFT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_OCARINA_C_LEFT_BUTTON] = Item(RG_OCARINA_C_LEFT_BUTTON, Text{"Ocarina C Left Button", "Touche C-Gauche de l'Ocarina", "Taste C-Links der Okarina" }, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_LEFT_BUTTON, RHT_OCARINA_C_LEFT_BUTTON, RG_OCARINA_C_LEFT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_OCARINA_C_LEFT_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - itemTable[RG_OCARINA_C_RIGHT_BUTTON] = Item(RG_OCARINA_C_RIGHT_BUTTON, Text{ "Ocarina C Right Button", "Touche C-Droit de l'Ocarina", "Taste C-Rechts der Okarina" }, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_RIGHT_BUTTON, RHT_OCARINA_C_RIGHT_BUTTON, RG_OCARINA_C_RIGHT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_OCARINA_C_RIGHT_BUTTON] = Item(RG_OCARINA_C_RIGHT_BUTTON, Text{"Ocarina C Right Button", "Touche C-Droit de l'Ocarina", "Taste C-Rechts der Okarina" }, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_RIGHT_BUTTON, RHT_OCARINA_C_RIGHT_BUTTON, RG_OCARINA_C_RIGHT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_OCARINA_C_RIGHT_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton); - itemTable[RG_BRONZE_SCALE] = Item(RG_BRONZE_SCALE, Text{ "Bronze Scale", "Écaille de Bronze", "Bronzene Schuppe" }, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_PROGRESSIVE_WALLET, RHT_BRONZE_SCALE, RG_BRONZE_SCALE, OBJECT_GI_SCALE, GID_SCALE_SILVER, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_BRONZE_SCALE] = Item(RG_BRONZE_SCALE, Text{"Bronze Scale", "Écaille de Bronze", "Bronzene Schuppe" }, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_PROGRESSIVE_WALLET, RHT_BRONZE_SCALE, RG_BRONZE_SCALE, OBJECT_GI_SCALE, GID_SCALE_SILVER, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_BRONZE_SCALE].SetCustomDrawFunc(Randomizer_DrawBronzeScale); - itemTable[RG_QUIVER_INF] = Item(RG_QUIVER_INF, Text{ "Infinite Quiver", "Carquois Infini", "Unendlicher Köcher" }, ITEMTYPE_ITEM, RG_QUIVER_INF, true, LOGIC_PROGRESSIVE_BOW, RHT_QUIVER_INF, RG_QUIVER_INF, OBJECT_GI_ARROWCASE, GID_QUIVER_50, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_BOMB_BAG_INF] = Item(RG_BOMB_BAG_INF, Text{ "Infinite Bomb Bag", "Sac de Bombes Infini", "Unendliche Bombentasche" }, ITEMTYPE_ITEM, RG_BOMB_BAG_INF, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BOMB_BAG_INF, RG_BOMB_BAG_INF, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_BULLET_BAG_INF] = Item(RG_BULLET_BAG_INF, Text{ "Infinite Bullet Bag", "Sac de Graines Infinis", "Unendliche Samentasche" }, ITEMTYPE_ITEM, RG_BULLET_BAG_INF, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BULLET_BAG_INF, RG_BULLET_BAG_INF, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_STICK_UPGRADE_INF] = Item(RG_STICK_UPGRADE_INF, Text{ "Infinite Stick Capacity", "Bâtons Mojo Infinis", "Unendliche Stab-Kapazität" }, ITEMTYPE_ITEM, RG_STICK_UPGRADE_INF, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_STICK_UPGRADE_INF, RG_STICK_UPGRADE_INF, OBJECT_GI_STICK, GID_STICK, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_NUT_UPGRADE_INF] = Item(RG_NUT_UPGRADE_INF, Text{ "Infinite Nut Capacity", "Noix Mojo Infinies", "Unendliche Nuß-Kapazität" }, ITEMTYPE_ITEM, RG_NUT_UPGRADE_INF, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_NUT_UPGRADE_INF, RG_NUT_UPGRADE_INF, OBJECT_GI_NUTS, GID_NUTS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_MAGIC_INF] = Item(RG_MAGIC_INF, Text{ "Infinite Magic Meter", "Magie Infinie", "Unendliches Magisches Maß" }, ITEMTYPE_ITEM, RG_MAGIC_INF, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_INF, RG_MAGIC_INF, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_BOMBCHU_INF] = Item(RG_BOMBCHU_INF, Text{ "Infinite Bombchus", "Missiles Teigneux Infinis", "Unendliche Krabbelminen" }, ITEMTYPE_ITEM, RG_BOMBCHU_INF, true, LOGIC_BOMBCHUS, RHT_BOMBCHU_INF, RG_BOMBCHU_INF, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_WALLET_INF] = Item(RG_WALLET_INF, Text{ "Infinite Wallet", "Bourse Infinie", "Unendliche Geldbörse" }, ITEMTYPE_ITEM, RG_WALLET_INF, true, LOGIC_PROGRESSIVE_WALLET, RHT_WALLET_INF, RG_WALLET_INF, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_QUIVER_INF] = Item(RG_QUIVER_INF, Text{"Infinite Quiver", "Carquois Infini", "Unendlicher Köcher" }, ITEMTYPE_ITEM, RG_QUIVER_INF, true, LOGIC_PROGRESSIVE_BOW, RHT_QUIVER_INF, RG_QUIVER_INF, OBJECT_GI_ARROWCASE, GID_QUIVER_50, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_BOMB_BAG_INF] = Item(RG_BOMB_BAG_INF, Text{"Infinite Bomb Bag", "Sac de Bombes Infini", "Unendliche Bombentasche" }, ITEMTYPE_ITEM, RG_BOMB_BAG_INF, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BOMB_BAG_INF, RG_BOMB_BAG_INF, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_BULLET_BAG_INF] = Item(RG_BULLET_BAG_INF, Text{"Infinite Bullet Bag", "Sac de Graines Infinis", "Unendliche Samentasche" }, ITEMTYPE_ITEM, RG_BULLET_BAG_INF, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BULLET_BAG_INF, RG_BULLET_BAG_INF, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_STICK_UPGRADE_INF] = Item(RG_STICK_UPGRADE_INF, Text{"Infinite Stick Capacity", "Bâtons Mojo Infinis", "Unendliche Stab-Kapazität" }, ITEMTYPE_ITEM, RG_STICK_UPGRADE_INF, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_STICK_UPGRADE_INF, RG_STICK_UPGRADE_INF, OBJECT_GI_STICK, GID_STICK, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_NUT_UPGRADE_INF] = Item(RG_NUT_UPGRADE_INF, Text{"Infinite Nut Capacity", "Noix Mojo Infinies", "Unendliche Nuß-Kapazität" }, ITEMTYPE_ITEM, RG_NUT_UPGRADE_INF, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_NUT_UPGRADE_INF, RG_NUT_UPGRADE_INF, OBJECT_GI_NUTS, GID_NUTS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_MAGIC_INF] = Item(RG_MAGIC_INF, Text{"Infinite Magic Meter", "Magie Infinie", "Unendliches Magisches Maß" }, ITEMTYPE_ITEM, RG_MAGIC_INF, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_INF, RG_MAGIC_INF, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_BOMBCHU_INF] = Item(RG_BOMBCHU_INF, Text{"Infinite Bombchus", "Missiles Teigneux Infinis", "Unendliche Krabbelminen" }, ITEMTYPE_ITEM, RG_BOMBCHU_INF, true, LOGIC_BOMBCHUS, RHT_BOMBCHU_INF, RG_BOMBCHU_INF, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_WALLET_INF] = Item(RG_WALLET_INF, Text{"Infinite Wallet", "Bourse Infinie", "Unendliche Geldbörse" }, ITEMTYPE_ITEM, RG_WALLET_INF, true, LOGIC_PROGRESSIVE_WALLET, RHT_WALLET_INF, RG_WALLET_INF, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_SKELETON_KEY] = Item(RG_SKELETON_KEY, Text{ "Skeleton Key", "Clé Squelette", "Skelettschlüssel" }, ITEMTYPE_ITEM, GI_STONE_OF_AGONY, true, LOGIC_SKELETON_KEY, RHT_SKELETON_KEY, RG_SKELETON_KEY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_SKELETON_KEY] = Item(RG_SKELETON_KEY, Text{"Skeleton Key", "Clé Squelette", "Skelettschlüssel" }, ITEMTYPE_ITEM, GI_STONE_OF_AGONY, true, LOGIC_SKELETON_KEY, RHT_SKELETON_KEY, RG_SKELETON_KEY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_SKELETON_KEY].SetCustomDrawFunc(Randomizer_DrawSkeletonKey); - itemTable[RG_DEKU_STICK_BAG] = Item(RG_DEKU_STICK_BAG, Text{ "Deku Stick Bag", "Sac de Bâton Mojo", "Deku-Stab-Tasche" }, ITEMTYPE_ITEM, GI_STICK_UPGRADE_30, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_NONE, RG_DEKU_STICK_BAG, OBJECT_GI_STICK, GID_STICK, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_DEKU_STICK_BAG] = Item(RG_DEKU_STICK_BAG, Text{"Deku Stick Bag", "Sac de Bâton Mojo", "Deku-Stab-Tasche" }, ITEMTYPE_ITEM, GI_STICK_UPGRADE_30, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_NONE, RG_DEKU_STICK_BAG, OBJECT_GI_STICK, GID_STICK, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_DEKU_NUT_BAG] = Item(RG_DEKU_NUT_BAG, Text{ "Deku Nut Bag", "Sac de Noix Mojo", "Deku-Nuß-Tasche" }, ITEMTYPE_ITEM, GI_NUT_UPGRADE_30, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_NONE, RG_DEKU_NUT_BAG, OBJECT_GI_NUTS, GID_NUTS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_DEKU_NUT_BAG] = Item(RG_DEKU_NUT_BAG, Text{"Deku Nut Bag", "Sac de Noix Mojo", "Deku-Nuß-Tasche" }, ITEMTYPE_ITEM, GI_NUT_UPGRADE_30, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_NONE, RG_DEKU_NUT_BAG, OBJECT_GI_NUTS, GID_NUTS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_TRIFORCE] = Item(RG_TRIFORCE, Text{ "Triforce", "Triforce", "Triforce" }, ITEMTYPE_EVENT, RG_TRIFORCE, false, LOGIC_NONE, RHT_NONE); - itemTable[RG_HINT] = Item(RG_HINT, Text{ "Hint", "Indice", "Hinweis" }, ITEMTYPE_EVENT, RG_HINT, false, LOGIC_NONE, RHT_NONE); + itemTable[RG_TRIFORCE] = Item(RG_TRIFORCE, Text{"Triforce", "Triforce", "Triforce" }, ITEMTYPE_EVENT, RG_TRIFORCE, false, LOGIC_NONE, RHT_NONE); + itemTable[RG_HINT] = Item(RG_HINT, Text{"Hint", "Indice", "Hinweis" }, ITEMTYPE_EVENT, RG_HINT, false, LOGIC_NONE, RHT_NONE); // Individual stages of progressive items (only here for GetItemEntry purposes, not for use in seed gen) - itemTable[RG_HOOKSHOT] = Item(RG_HOOKSHOT, Text{ "Hookshot", "Grappin", "Fanghaken" }, ITEMTYPE_ITEM, GI_HOOKSHOT, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_HOOKSHOT, ITEM_HOOKSHOT, OBJECT_GI_HOOKSHOT, GID_HOOKSHOT, 0x36, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_LONGSHOT] = Item(RG_LONGSHOT, Text{ "Longshot", "Super-Grappin", "Enterhaken" }, ITEMTYPE_ITEM, GI_LONGSHOT, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_LONGSHOT, ITEM_LONGSHOT, OBJECT_GI_HOOKSHOT, GID_LONGSHOT, 0x4F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_FAIRY_OCARINA] = Item(RG_FAIRY_OCARINA, Text{ "Fairy Ocarina", "Ocarina des fées", "Feen-Okarina" }, ITEMTYPE_ITEM, GI_OCARINA_FAIRY, true, LOGIC_PROGRESSIVE_OCARINA, RHT_FAIRY_OCARINA, ITEM_OCARINA_FAIRY, OBJECT_GI_OCARINA_0, GID_OCARINA_FAIRY, 0x4A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_OCARINA_OF_TIME] = Item(RG_OCARINA_OF_TIME, Text{ "Ocarina of Time", "Ocarina du Temps", "Okarina der Zeit" }, ITEMTYPE_ITEM, GI_OCARINA_OOT, true, LOGIC_PROGRESSIVE_OCARINA, RHT_OCARINA_OF_TIME, ITEM_OCARINA_TIME, OBJECT_GI_OCARINA, GID_OCARINA_TIME, 0x3A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BOMB_BAG] = Item(RG_BOMB_BAG, Text{ "Bomb Bag", "Sac de Bombes", "Bombentasche" }, ITEMTYPE_ITEM, GI_BOMB_BAG_20, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BOMB_BAG, ITEM_BOMB_BAG_20, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_20, 0x58, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BIG_BOMB_BAG] = Item(RG_BIG_BOMB_BAG, Text{ "Big Bomb Bag", "Grand Sac de Bombes", "Große Bombentasche" }, ITEMTYPE_ITEM, GI_BOMB_BAG_30, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BIG_BOMB_BAG, ITEM_BOMB_BAG_30, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_30, 0x59, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_BIGGEST_BOMB_BAG] = Item(RG_BIGGEST_BOMB_BAG, Text{ "Biggest Bomb Bag", "Énorme Sac de Bombes", "Größte Bombentasche" }, ITEMTYPE_ITEM, GI_BOMB_BAG_40, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BIGGEST_BOMB_BAG, ITEM_BOMB_BAG_40, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, 0x5A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_FAIRY_BOW] = Item(RG_FAIRY_BOW, Text{ "Fairy Bow", "Arc des Fées", "Feen-Bogen" }, ITEMTYPE_ITEM, GI_BOW, true, LOGIC_PROGRESSIVE_BOW, RHT_FAIRY_BOW, ITEM_BOW, OBJECT_GI_BOW, GID_BOW, 0x31, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BIG_QUIVER] = Item(RG_BIG_QUIVER, Text{ "Big Quiver", "Grand carquois", "Großer Köcher" }, ITEMTYPE_ITEM, GI_QUIVER_40, true, LOGIC_PROGRESSIVE_BOW, RHT_BIG_QUIVER, ITEM_QUIVER_40, OBJECT_GI_ARROWCASE, GID_QUIVER_40, 0x56, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_BIGGEST_QUIVER] = Item(RG_BIGGEST_QUIVER, Text{ "Biggest Quiver", "Énorme carquois", "Größter Köcher" }, ITEMTYPE_ITEM, GI_QUIVER_50, true, LOGIC_PROGRESSIVE_BOW, RHT_BIGGEST_QUIVER, ITEM_QUIVER_50, OBJECT_GI_ARROWCASE, GID_QUIVER_50, 0x57, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_FAIRY_SLINGSHOT] = Item(RG_FAIRY_SLINGSHOT, Text{ "Fairy Slingshot", "Lance-Pierre des Fées", "Feen-Schleuder" }, ITEMTYPE_ITEM, GI_SLINGSHOT, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_FAIRY_SLINGSHOT, ITEM_SLINGSHOT, OBJECT_GI_PACHINKO, GID_SLINGSHOT, 0x30, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_BIG_BULLET_BAG] = Item(RG_BIG_BULLET_BAG, Text{ "Big Deku Seed Bullet Bag", "Grand sac de graines mojo", "Große Deku-Samentasche" }, ITEMTYPE_ITEM, GI_BULLET_BAG_40, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BIG_BULLET_BAG, ITEM_BULLET_BAG_40, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_BIGGEST_BULLET_BAG] = Item(RG_BIGGEST_BULLET_BAG, Text{ "Biggest Deku Seed Bullet Bag", "Énorme sac de graines mojo", "Größte Deku-Samentasche" }, ITEMTYPE_ITEM, GI_BULLET_BAG_50, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BIGGEST_BULLET_BAG, ITEM_BULLET_BAG_50, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_GORONS_BRACELET] = Item(RG_GORONS_BRACELET, Text{ "Goron's Bracelet", "Bracelet Goron", "Goronen-Armband" }, ITEMTYPE_ITEM, GI_BRACELET, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_GORONS_BRACELET, ITEM_BRACELET, OBJECT_GI_BRACELET, GID_BRACELET, 0x79, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SILVER_GAUNTLETS] = Item(RG_SILVER_GAUNTLETS, Text{ "Silver Gauntlets", "Gantelets d'argent", "Silberhandschuhe" }, ITEMTYPE_ITEM, GI_GAUNTLETS_SILVER, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_SILVER_GAUNTLETS, ITEM_GAUNTLETS_SILVER, OBJECT_GI_GLOVES, GID_GAUNTLETS_SILVER, 0x5B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GOLDEN_GAUNTLETS] = Item(RG_GOLDEN_GAUNTLETS, Text{ "Golden Gauntlets", "Gantelets d'or", "Goldhandschuhe" }, ITEMTYPE_ITEM, GI_GAUNTLETS_GOLD, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_GOLDEN_GAUNTLETS, ITEM_GAUNTLETS_GOLD, OBJECT_GI_GLOVES, GID_GAUNTLETS_GOLD, 0x5C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_SILVER_SCALE] = Item(RG_SILVER_SCALE, Text{ "Silver Scale", "Écaille d'argent", "Silberne Schuppe" }, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_PROGRESSIVE_SCALE, RHT_SILVER_SCALE, ITEM_SCALE_SILVER, OBJECT_GI_SCALE, GID_SCALE_SILVER, 0xCD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GOLDEN_SCALE] = Item(RG_GOLDEN_SCALE, Text{ "Golden Scale", "Écaille d'or", "Goldene Schuppe" }, ITEMTYPE_ITEM, GI_SCALE_GOLDEN, true, LOGIC_PROGRESSIVE_SCALE, RHT_GOLDEN_SCALE, ITEM_SCALE_GOLDEN, OBJECT_GI_SCALE, GID_SCALE_GOLDEN, 0xCE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_ADULT_WALLET] = Item(RG_ADULT_WALLET, Text{ "Adult Wallet", "Grande Bourse", "Erwachsenengeldbörse" }, ITEMTYPE_ITEM, GI_WALLET_ADULT, true, LOGIC_PROGRESSIVE_WALLET, RHT_ADULT_WALLET, ITEM_WALLET_ADULT, OBJECT_GI_PURSE, GID_WALLET_ADULT, 0x5E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_GIANT_WALLET] = Item(RG_GIANT_WALLET, Text{ "Giant Wallet", "Bourse de Géant", "Riesige Geldbörse" }, ITEMTYPE_ITEM, GI_WALLET_GIANT, true, LOGIC_PROGRESSIVE_WALLET, RHT_GIANT_WALLET, ITEM_WALLET_GIANT, OBJECT_GI_PURSE, GID_WALLET_GIANT, 0x5F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); - itemTable[RG_TYCOON_WALLET] = Item(RG_TYCOON_WALLET, Text{ "Tycoon Wallet", "Bourse de Magnat", "Goldene Geldbörse" }, ITEMTYPE_ITEM, RG_TYCOON_WALLET, true, LOGIC_PROGRESSIVE_WALLET, RHT_TYCOON_WALLET, RG_TYCOON_WALLET, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_CHILD_WALLET] = Item(RG_CHILD_WALLET, Text{ "Child Wallet", "Petite Bourse", "Kindergeldbörse" }, ITEMTYPE_ITEM, RG_CHILD_WALLET, true, LOGIC_PROGRESSIVE_WALLET, RHT_CHILD_WALLET, RG_CHILD_WALLET, OBJECT_GI_PURSE, GID_WALLET_ADULT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_DEKU_NUT_CAPACITY_30] = Item(RG_DEKU_NUT_CAPACITY_30, Text{ "Deku Nut Capacity (30)", "Capacité de noix Mojo (30)", "Deku-Nuß-Kapazität (30)" }, ITEMTYPE_ITEM, GI_NUT_UPGRADE_30, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_CAPACITY_30, ITEM_NUT_UPGRADE_30, OBJECT_GI_NUTS, GID_NUTS, 0xA7, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_DEKU_NUT_CAPACITY_40] = Item(RG_DEKU_NUT_CAPACITY_40, Text{ "Deku Nut Capacity (40)", "Capacité de noix Mojo (40)", "Deku-Nuß-Kapazität (40)" }, ITEMTYPE_ITEM, GI_NUT_UPGRADE_40, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_CAPACITY_40, ITEM_NUT_UPGRADE_40, OBJECT_GI_NUTS, GID_NUTS, 0xA8, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_DEKU_STICK_CAPACITY_20] = Item(RG_DEKU_STICK_CAPACITY_20, Text{ "Deku Stick Capacity (20)", "Capacité de Bâtons Mojo (20)", "Deku-Stab-Kapazität (20)" }, ITEMTYPE_ITEM, GI_STICK_UPGRADE_20, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_CAPACITY_20, ITEM_STICK_UPGRADE_20, OBJECT_GI_STICK, GID_STICK, 0x90, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_DEKU_STICK_CAPACITY_30] = Item(RG_DEKU_STICK_CAPACITY_30, Text{ "Deku Stick Capacity (30)", "Capacité de Bâtons Mojo (30)", "Deku-Stab-Kapazität (30)" }, ITEMTYPE_ITEM, GI_STICK_UPGRADE_30, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_CAPACITY_30, ITEM_STICK_UPGRADE_30, OBJECT_GI_STICK, GID_STICK, 0x91, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); - itemTable[RG_MAGIC_SINGLE] = Item(RG_MAGIC_SINGLE, Text{ "Magic Meter", "Jauge de Magie", "Magisches Maß" }, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_SINGLE, RG_MAGIC_SINGLE, OBJECT_GI_MAGICPOT, GID_MAGIC_SMALL, 0xE4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); - itemTable[RG_MAGIC_DOUBLE] = Item(RG_MAGIC_DOUBLE, Text{ "Enhanced Magic Meter", "Jauge de Magie améliorée", "Verbessertes Magisches Maß" }, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_DOUBLE, RG_MAGIC_DOUBLE, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, 0xE8, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); - itemTable[RG_TRIFORCE_PIECE] = Item(RG_TRIFORCE_PIECE, Text{ "Triforce Piece", "Triforce Piece", "Triforce-Fragment" }, ITEMTYPE_ITEM, 0xDF, true, LOGIC_TRIFORCE_PIECES, RHT_TRIFORCE_PIECE, RG_TRIFORCE_PIECE, OBJECT_GI_BOMB_2, GID_TRIFORCE_PIECE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_HOOKSHOT] = Item(RG_HOOKSHOT, Text{"Hookshot", "Grappin", "Fanghaken" }, ITEMTYPE_ITEM, GI_HOOKSHOT, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_HOOKSHOT, ITEM_HOOKSHOT, OBJECT_GI_HOOKSHOT, GID_HOOKSHOT, 0x36, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_LONGSHOT] = Item(RG_LONGSHOT, Text{"Longshot", "Super-Grappin", "Enterhaken" }, ITEMTYPE_ITEM, GI_LONGSHOT, true, LOGIC_PROGRESSIVE_HOOKSHOT, RHT_LONGSHOT, ITEM_LONGSHOT, OBJECT_GI_HOOKSHOT, GID_LONGSHOT, 0x4F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_FAIRY_OCARINA] = Item(RG_FAIRY_OCARINA, Text{"Fairy Ocarina", "Ocarina des fées", "Feen-Okarina" }, ITEMTYPE_ITEM, GI_OCARINA_FAIRY, true, LOGIC_PROGRESSIVE_OCARINA, RHT_FAIRY_OCARINA, ITEM_OCARINA_FAIRY, OBJECT_GI_OCARINA_0, GID_OCARINA_FAIRY, 0x4A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_OCARINA_OF_TIME] = Item(RG_OCARINA_OF_TIME, Text{"Ocarina of Time", "Ocarina du Temps", "Okarina der Zeit" }, ITEMTYPE_ITEM, GI_OCARINA_OOT, true, LOGIC_PROGRESSIVE_OCARINA, RHT_OCARINA_OF_TIME, ITEM_OCARINA_TIME, OBJECT_GI_OCARINA, GID_OCARINA_TIME, 0x3A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BOMB_BAG] = Item(RG_BOMB_BAG, Text{"Bomb Bag", "Sac de Bombes", "Bombentasche" }, ITEMTYPE_ITEM, GI_BOMB_BAG_20, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BOMB_BAG, ITEM_BOMB_BAG_20, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_20, 0x58, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BIG_BOMB_BAG] = Item(RG_BIG_BOMB_BAG, Text{"Big Bomb Bag", "Grand Sac de Bombes", "Große Bombentasche" }, ITEMTYPE_ITEM, GI_BOMB_BAG_30, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BIG_BOMB_BAG, ITEM_BOMB_BAG_30, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_30, 0x59, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_BIGGEST_BOMB_BAG] = Item(RG_BIGGEST_BOMB_BAG, Text{"Biggest Bomb Bag", "Énorme Sac de Bombes", "Größte Bombentasche" }, ITEMTYPE_ITEM, GI_BOMB_BAG_40, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BIGGEST_BOMB_BAG, ITEM_BOMB_BAG_40, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, 0x5A, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_FAIRY_BOW] = Item(RG_FAIRY_BOW, Text{"Fairy Bow", "Arc des Fées", "Feen-Bogen" }, ITEMTYPE_ITEM, GI_BOW, true, LOGIC_PROGRESSIVE_BOW, RHT_FAIRY_BOW, ITEM_BOW, OBJECT_GI_BOW, GID_BOW, 0x31, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BIG_QUIVER] = Item(RG_BIG_QUIVER, Text{"Big Quiver", "Grand carquois", "Großer Köcher" }, ITEMTYPE_ITEM, GI_QUIVER_40, true, LOGIC_PROGRESSIVE_BOW, RHT_BIG_QUIVER, ITEM_QUIVER_40, OBJECT_GI_ARROWCASE, GID_QUIVER_40, 0x56, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_BIGGEST_QUIVER] = Item(RG_BIGGEST_QUIVER, Text{"Biggest Quiver", "Énorme carquois", "Größter Köcher" }, ITEMTYPE_ITEM, GI_QUIVER_50, true, LOGIC_PROGRESSIVE_BOW, RHT_BIGGEST_QUIVER, ITEM_QUIVER_50, OBJECT_GI_ARROWCASE, GID_QUIVER_50, 0x57, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_FAIRY_SLINGSHOT] = Item(RG_FAIRY_SLINGSHOT, Text{"Fairy Slingshot", "Lance-Pierre des Fées", "Feen-Schleuder" }, ITEMTYPE_ITEM, GI_SLINGSHOT, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_FAIRY_SLINGSHOT, ITEM_SLINGSHOT, OBJECT_GI_PACHINKO, GID_SLINGSHOT, 0x30, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_BIG_BULLET_BAG] = Item(RG_BIG_BULLET_BAG, Text{"Big Deku Seed Bullet Bag", "Grand sac de graines mojo", "Große Deku-Samentasche" }, ITEMTYPE_ITEM, GI_BULLET_BAG_40, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BIG_BULLET_BAG, ITEM_BULLET_BAG_40, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_BIGGEST_BULLET_BAG] = Item(RG_BIGGEST_BULLET_BAG, Text{"Biggest Deku Seed Bullet Bag", "Énorme sac de graines mojo", "Größte Deku-Samentasche" }, ITEMTYPE_ITEM, GI_BULLET_BAG_50, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BIGGEST_BULLET_BAG, ITEM_BULLET_BAG_50, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_GORONS_BRACELET] = Item(RG_GORONS_BRACELET, Text{"Goron's Bracelet", "Bracelet Goron", "Goronen-Armband" }, ITEMTYPE_ITEM, GI_BRACELET, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_GORONS_BRACELET, ITEM_BRACELET, OBJECT_GI_BRACELET, GID_BRACELET, 0x79, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SILVER_GAUNTLETS] = Item(RG_SILVER_GAUNTLETS, Text{"Silver Gauntlets", "Gantelets d'argent", "Silberhandschuhe" }, ITEMTYPE_ITEM, GI_GAUNTLETS_SILVER, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_SILVER_GAUNTLETS, ITEM_GAUNTLETS_SILVER, OBJECT_GI_GLOVES, GID_GAUNTLETS_SILVER, 0x5B, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_GOLDEN_GAUNTLETS] = Item(RG_GOLDEN_GAUNTLETS, Text{"Golden Gauntlets", "Gantelets d'or", "Goldhandschuhe" }, ITEMTYPE_ITEM, GI_GAUNTLETS_GOLD, true, LOGIC_PROGRESSIVE_STRENGTH, RHT_GOLDEN_GAUNTLETS, ITEM_GAUNTLETS_GOLD, OBJECT_GI_GLOVES, GID_GAUNTLETS_GOLD, 0x5C, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_SILVER_SCALE] = Item(RG_SILVER_SCALE, Text{"Silver Scale", "Écaille d'argent", "Silberne Schuppe" }, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_PROGRESSIVE_SCALE, RHT_SILVER_SCALE, ITEM_SCALE_SILVER, OBJECT_GI_SCALE, GID_SCALE_SILVER, 0xCD, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_GOLDEN_SCALE] = Item(RG_GOLDEN_SCALE, Text{"Golden Scale", "Écaille d'or", "Goldene Schuppe" }, ITEMTYPE_ITEM, GI_SCALE_GOLDEN, true, LOGIC_PROGRESSIVE_SCALE, RHT_GOLDEN_SCALE, ITEM_SCALE_GOLDEN, OBJECT_GI_SCALE, GID_SCALE_GOLDEN, 0xCE, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_ADULT_WALLET] = Item(RG_ADULT_WALLET, Text{"Adult Wallet", "Grande Bourse", "Erwachsenengeldbörse" }, ITEMTYPE_ITEM, GI_WALLET_ADULT, true, LOGIC_PROGRESSIVE_WALLET, RHT_ADULT_WALLET, ITEM_WALLET_ADULT, OBJECT_GI_PURSE, GID_WALLET_ADULT, 0x5E, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_GIANT_WALLET] = Item(RG_GIANT_WALLET, Text{"Giant Wallet", "Bourse de Géant", "Riesige Geldbörse" }, ITEMTYPE_ITEM, GI_WALLET_GIANT, true, LOGIC_PROGRESSIVE_WALLET, RHT_GIANT_WALLET, ITEM_WALLET_GIANT, OBJECT_GI_PURSE, GID_WALLET_GIANT, 0x5F, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); + itemTable[RG_TYCOON_WALLET] = Item(RG_TYCOON_WALLET, Text{"Tycoon Wallet", "Bourse de Magnat", "Goldene Geldbörse" }, ITEMTYPE_ITEM, RG_TYCOON_WALLET, true, LOGIC_PROGRESSIVE_WALLET, RHT_TYCOON_WALLET, RG_TYCOON_WALLET, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_CHILD_WALLET] = Item(RG_CHILD_WALLET, Text{"Child Wallet", "Petite Bourse", "Kindergeldbörse" }, ITEMTYPE_ITEM, RG_CHILD_WALLET, true, LOGIC_PROGRESSIVE_WALLET, RHT_CHILD_WALLET, RG_CHILD_WALLET, OBJECT_GI_PURSE, GID_WALLET_ADULT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_DEKU_NUT_CAPACITY_30] = Item(RG_DEKU_NUT_CAPACITY_30, Text{"Deku Nut Capacity (30)", "Capacité de noix Mojo (30)", "Deku-Nuß-Kapazität (30)" }, ITEMTYPE_ITEM, GI_NUT_UPGRADE_30, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_CAPACITY_30, ITEM_NUT_UPGRADE_30, OBJECT_GI_NUTS, GID_NUTS, 0xA7, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_DEKU_NUT_CAPACITY_40] = Item(RG_DEKU_NUT_CAPACITY_40, Text{"Deku Nut Capacity (40)", "Capacité de noix Mojo (40)", "Deku-Nuß-Kapazität (40)" }, ITEMTYPE_ITEM, GI_NUT_UPGRADE_40, true, LOGIC_PROGRESSIVE_NUT_BAG, RHT_DEKU_NUT_CAPACITY_40, ITEM_NUT_UPGRADE_40, OBJECT_GI_NUTS, GID_NUTS, 0xA8, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_DEKU_STICK_CAPACITY_20] = Item(RG_DEKU_STICK_CAPACITY_20, Text{"Deku Stick Capacity (20)", "Capacité de Bâtons Mojo (20)", "Deku-Stab-Kapazität (20)" }, ITEMTYPE_ITEM, GI_STICK_UPGRADE_20, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_CAPACITY_20, ITEM_STICK_UPGRADE_20, OBJECT_GI_STICK, GID_STICK, 0x90, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_DEKU_STICK_CAPACITY_30] = Item(RG_DEKU_STICK_CAPACITY_30, Text{"Deku Stick Capacity (30)", "Capacité de Bâtons Mojo (30)", "Deku-Stab-Kapazität (30)" }, ITEMTYPE_ITEM, GI_STICK_UPGRADE_30, true, LOGIC_PROGRESSIVE_STICK_BAG, RHT_DEKU_STICK_CAPACITY_30, ITEM_STICK_UPGRADE_30, OBJECT_GI_STICK, GID_STICK, 0x91, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_LESSER, MOD_NONE); + itemTable[RG_MAGIC_SINGLE] = Item(RG_MAGIC_SINGLE, Text{"Magic Meter", "Jauge de Magie", "Magisches Maß" }, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_SINGLE, RG_MAGIC_SINGLE, OBJECT_GI_MAGICPOT, GID_MAGIC_SMALL, 0xE4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); + itemTable[RG_MAGIC_DOUBLE] = Item(RG_MAGIC_DOUBLE, Text{"Enhanced Magic Meter", "Jauge de Magie améliorée", "Verbessertes Magisches Maß" }, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_DOUBLE, RG_MAGIC_DOUBLE, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, 0xE8, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); + itemTable[RG_TRIFORCE_PIECE] = Item(RG_TRIFORCE_PIECE, Text{"Triforce Piece", "Triforce Piece", "Triforce-Fragment" }, ITEMTYPE_ITEM, 0xDF, true, LOGIC_TRIFORCE_PIECES, RHT_TRIFORCE_PIECE, RG_TRIFORCE_PIECE, OBJECT_GI_BOMB_2, GID_TRIFORCE_PIECE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); // Init itemNameToEnum for (auto& item : itemTable) { diff --git a/soh/soh/Enhancements/randomizer/location.cpp b/soh/soh/Enhancements/randomizer/location.cpp index 6e85fcbcbfe..f8c850a8fa0 100644 --- a/soh/soh/Enhancements/randomizer/location.cpp +++ b/soh/soh/Enhancements/randomizer/location.cpp @@ -226,7 +226,7 @@ RandomizerCheckArea GetAreaFromScene(uint8_t scene) { return RCAREA_SHADOW_TEMPLE; case SCENE_BOTTOM_OF_THE_WELL: - return RCAREA_BOTTOM_OF_THE_WELL; + return RCAREA_BOTW; case SCENE_ICE_CAVERN: return RCAREA_ICE_CAVERN; @@ -395,3 +395,10 @@ Rando::Location Rando::Location::Fairy(RandomizerCheck rc, RandomizerCheckQuest RandomizerHintTextKey hintKey, SpoilerCollectionCheck collectionCheck) { return {rc, quest_, RCTYPE_FAIRY, area_, ACTOR_EN_ELF, scene_, actorParams_, std::move(shortName_), std::move(spoilerName_), hintKey, RG_NONE, false, collectionCheck}; } + +Rando::Location Rando::Location::Fairy(RandomizerCheck rc, RandomizerCheckQuest quest_, + RandomizerCheckArea area_, SceneID scene_, + int32_t actorParams_, std::string&& shortName_, + RandomizerHintTextKey hintKey, SpoilerCollectionCheck collectionCheck) { + return {rc, quest_, RCTYPE_FAIRY, area_, ACTOR_EN_ELF, scene_, actorParams_, std::move(shortName_), hintKey, RG_NONE, false, collectionCheck}; +} diff --git a/soh/soh/Enhancements/randomizer/location.h b/soh/soh/Enhancements/randomizer/location.h index 338f7c4a793..f5d497fa32a 100644 --- a/soh/soh/Enhancements/randomizer/location.h +++ b/soh/soh/Enhancements/randomizer/location.h @@ -189,6 +189,8 @@ class Location { static Location Fairy(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_, SceneID scene_, int32_t actorParams_, std::string&& shortName_, std::string&& spoilerName_, RandomizerHintTextKey hintKey, SpoilerCollectionCheck collectionCheck); + static Location Fairy(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_, SceneID scene_, int32_t actorParams_, std::string&& shortName_, RandomizerHintTextKey hintKey, SpoilerCollectionCheck collectionCheck); + static Location HintStone(RandomizerCheck rc, RandomizerCheckQuest quest_, SceneID scene_, int32_t actorParams_, std::string&& shortName_); static Location HintStone(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_, SceneID scene_, int32_t actorParams_, std::string&& shortName_); diff --git a/soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp b/soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp index 592577391bb..10c035b7a72 100644 --- a/soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp +++ b/soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp @@ -9,79 +9,79 @@ void RegionTable_Init_BottomOfTheWell() { areaTable[RR_BOTW_ENTRYWAY] = Region("Bottom of the Well Entryway", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, {}, { //Exits //Technically involves an fake wall, but passing it lensless is intended in vanilla and it is well telegraphed - Entrance(RR_BOTW_PERIMETER, []{return ctx->GetDungeon(Rando::BOTTOM_OF_THE_WELL)->IsVanilla() && logic->IsChild && logic->CanPassEnemy(RE_BIG_SKULLTULA);}), - Entrance(RR_BOTW_MQ_PERIMETER, []{return ctx->GetDungeon(Rando::BOTTOM_OF_THE_WELL)->IsMQ() && logic->IsChild;}), - Entrance(RR_KAK_WELL, []{return true;}), + Entrance(RR_BOTW_LOBBY , []{return ctx->GetDungeon(Rando::BOTTOM_OF_THE_WELL)->IsVanilla() && logic->IsChild && logic->CanPassEnemy(RE_BIG_SKULLTULA);}), + Entrance(RR_BOTW_MQ_LOBBY, []{return ctx->GetDungeon(Rando::BOTTOM_OF_THE_WELL)->IsMQ() && logic->IsChild;}), + Entrance(RR_KAK_WELL , []{return true;}), }); #pragma region Vanilla - areaTable[RR_BOTW_PERIMETER] = Region("Bottom of the Well Perimeter", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, { + areaTable[RR_BOTW_LOBBY] = Region("Bottom of the Well Lobby", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, { //Events - EventAccess(&logic->StickPot, []{return true;}), - EventAccess(&logic->NutPot, []{return true;}), - EventAccess(&logic->LoweredWaterInsideBotw, []{return logic->CanUse(RG_ZELDAS_LULLABY);}), + EventAccess(&logic->StickPot , []{return true;}), + EventAccess(&logic->NutPot , []{return true;}), + EventAccess(&logic->LoweredBotwWater, []{return logic->CanUse(RG_ZELDAS_LULLABY);}), }, { //Locations LOCATION(RC_BOTW_SOUTH_RUBBLE_CHEST, logic->HasExplosives()), - LOCATION(RC_BOTW_COFFIN_KEY, (logic->HasItem(RG_BRONZE_SCALE) || logic->LoweredWaterInsideBotw) && logic->CanUse(RG_STICKS) || logic->CanUse(RG_DINS_FIRE)), - LOCATION(RC_BOTW_SOUTH_SUNKEN_CHEST, logic->LoweredWaterInsideBotw), - LOCATION(RC_BOTW_WEST_SUNKEN_CHEST, logic->LoweredWaterInsideBotw), - LOCATION(RC_BOTW_ENTRYWAY_WEST_POT, logic->CanBreakPots()), - LOCATION(RC_BOTW_ENTRYWAY_EAST_POT, logic->CanBreakPots()), - LOCATION(RC_BOTW_SUNKEN_POT, (logic->CanBreakPots() && logic->LoweredWaterInsideBotw) || logic->CanUse(RG_BOOMERANG)), + LOCATION(RC_BOTW_COFFIN_KEY , (logic->HasItem(RG_BRONZE_SCALE) || logic->LoweredBotwWater) && logic->CanUse(RG_STICKS) || logic->CanUse(RG_DINS_FIRE)), + LOCATION(RC_BOTW_SOUTH_SUNKEN_CHEST, logic->LoweredBotwWater), + LOCATION(RC_BOTW_WEST_SUNKEN_CHEST , logic->LoweredBotwWater), + LOCATION(RC_BOTW_ENTRYWAY_WEST_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_ENTRYWAY_EAST_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_SUNKEN_POT , (logic->CanBreakPots() && logic->LoweredBotwWater) || logic->CanUse(RG_BOOMERANG)), }, { //Exits - Entrance(RR_BOTW_ENTRYWAY, []{return logic->IsChild && logic->CanPassEnemy(RE_BIG_SKULLTULA);}), - Entrance(RR_BOTW_REQUIRES_LENS, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), - Entrance(RR_BOTW_SOUTHWEST_ROOM, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), + Entrance(RR_BOTW_ENTRYWAY , []{return logic->IsChild && logic->CanPassEnemy(RE_BIG_SKULLTULA);}), + Entrance(RR_BOTW_REQUIRES_LENS , []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), + Entrance(RR_BOTW_SOUTHWEST_ROOM , []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), Entrance(RR_BOTW_3_HIDDEN_PITS_ROOM, []{return logic->IsChild && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 3);}), - Entrance(RR_BOTW_COFFIN_ROOM, []{return logic->LoweredWaterInsideBotw || logic->HasItem(RG_BRONZE_SCALE);}), - Entrance(RR_BOTW_DEAD_HAND_ROOM, []{return logic->LoweredWaterInsideBotw && logic->IsChild;}), + Entrance(RR_BOTW_COFFIN_ROOM , []{return logic->LoweredBotwWater || logic->HasItem(RG_BRONZE_SCALE);}), + Entrance(RR_BOTW_DEAD_HAND_ROOM , []{return logic->LoweredBotwWater && logic->IsChild;}), //Falling down into basement requires nothing, but falling down somewhere specific requires lens or lens trick //kinda questionable given several drops are blocked by rocks, but that's how it was handled before and on N64 - Entrance(RR_BOTW_B3, []{return true;}), - Entrance(RR_BOTW_OUTER_CAGE, []{return false;}), + Entrance(RR_BOTW_B3 , []{return true;}), + Entrance(RR_BOTW_OUTER_CAGE , []{return false;}), }); //This region combines the Middle with the perimeter's hidden areas. If a warp puts link into the middle without crossing the perimeter or using lens, it will need it's own region areaTable[RR_BOTW_REQUIRES_LENS] = Region("Bottom of the Well Requires Lens", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTW_WEST_FAKE_WALL_CHEST, true), - LOCATION(RC_BOTW_EAST_FAKE_WALL_CHEST, true), - LOCATION(RC_BOTW_B1_CENTRAL_WEST_CHEST, true), + LOCATION(RC_BOTW_WEST_FAKE_WALL_CHEST, true), + LOCATION(RC_BOTW_EAST_FAKE_WALL_CHEST, true), + LOCATION(RC_BOTW_CENTRAL_WEST_CHEST , true), //N64 has no extra check here, but I can't get past without dealing with the spider or taking a hit - LOCATION(RC_BOTW_B1_CENTRAL_EAST_CHEST, logic->CanPassEnemy(RE_BIG_SKULLTULA) || logic->TakeDamage()), + LOCATION(RC_BOTW_CENTRAL_EAST_CHEST , logic->CanPassEnemy(RE_BIG_SKULLTULA) || logic->TakeDamage()), //Not technically behind a wall, but still logically needs lens due to pits - LOCATION(RC_BOTW_NORTH_RUBBLE_CHEST, logic->HasExplosives()), + LOCATION(RC_BOTW_NORTH_RUBBLE_CHEST , logic->HasExplosives()), }, { //Exits - Entrance(RR_BOTW_PERIMETER, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), + Entrance(RR_BOTW_LOBBY , []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), Entrance(RR_BOTW_CENTRAL_ROOMS, []{return logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 3);}), - Entrance(RR_BOTW_B3, []{return true;}), - Entrance(RR_BOTW_B3_PLATFORM, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), + Entrance(RR_BOTW_B3 , []{return true;}), + Entrance(RR_BOTW_B3_PLATFORM , []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), }); //This area can be reached without lens in logic from basement, but that could require silver rupees if they are shuffled. areaTable[RR_BOTW_SOUTHWEST_ROOM] = Region("Bottom of the Well Southwest Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTW_FAKE_WALL_SOUTH_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_FAKE_WALL_SOUTH_POT , logic->CanBreakPots()), LOCATION(RC_BOTW_FAKE_WALL_CENTRAL_POT, logic->CanBreakPots()), - LOCATION(RC_BOTW_FAKE_WALL_NORTH_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_FAKE_WALL_NORTH_POT , logic->CanBreakPots()), }, { //Exits - Entrance(RR_BOTW_PERIMETER, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), + Entrance(RR_BOTW_LOBBY, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), }); //Passing through this area needs lens, but entering doesn't, so that the fire keese can be killed without crossing the pits if enemy drops are ever shuffled areaTable[RR_BOTW_3_HIDDEN_PITS_ROOM] = Region("Bottom of the Well 3 Hidden Pits Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations LOCATION(RC_BOTW_3_HIDDEN_PITS_CHEST, ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH)), - LOCATION(RC_BOTW_3_HIDDEN_PITS_POT, logic->CanBreakPots() && (ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH))), + LOCATION(RC_BOTW_3_HIDDEN_PITS_POT , logic->CanBreakPots() && (ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH))), }, { //Exits - Entrance(RR_BOTW_PERIMETER, []{return logic->IsChild && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 3) && (ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH));}), - Entrance(RR_BOTW_OUTER_CAGE, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), + Entrance(RR_BOTW_LOBBY , []{return logic->IsChild && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 3) && (ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH));}), + Entrance(RR_BOTW_OUTER_CAGE , []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), //not sure if this lens check is needed, these holes are a bit too easy to find, but it matches existing logic Entrance(RR_BOTW_B3_EAST_BOMB_FLOWERS, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), }); @@ -89,11 +89,11 @@ void RegionTable_Init_BottomOfTheWell() { areaTable[RR_BOTW_OUTER_CAGE] = Region("Bottom of the Well Outer Cage", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations LOCATION(RC_BOTW_OUTER_CAGE_CHEST, true), - LOCATION(RC_BOTW_OUTER_CAGE_GS, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)), + LOCATION(RC_BOTW_OUTER_CAGE_GS , logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)), }, { //Exits Entrance(RR_BOTW_3_HIDDEN_PITS_ROOM, []{return true;}), - Entrance(RR_BOTW_PERIMETER, []{return false;}), + Entrance(RR_BOTW_LOBBY , []{return false;}), }); //If the player can voidwarp into one of these rooms they will need splitting up, and Fake walls will need specifying into middle and the rest moved to perimeter @@ -117,7 +117,7 @@ void RegionTable_Init_BottomOfTheWell() { LOCATION(RC_BOTW_OPEN_COFFIN_HEART, logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW)), }, { //Exits - Entrance(RR_BOTW_PERIMETER, []{return logic->LoweredWaterInsideBotw || logic->HasItem(RG_BRONZE_SCALE);}), + Entrance(RR_BOTW_LOBBY, []{return logic->LoweredBotwWater || logic->HasItem(RG_BRONZE_SCALE);}), }); areaTable[RR_BOTW_DEAD_HAND_ROOM] = Region("Bottom of the Well Dead Hand Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { @@ -127,34 +127,34 @@ void RegionTable_Init_BottomOfTheWell() { }, { //Exits //This assumes we spawned in dead hand's room, if whatever trick made this relevant instead puts us in the previous room, remove the kill Dead Hand check. - Entrance(RR_BOTW_PERIMETER, []{return logic->IsChild && logic->CanKillEnemy(RE_DEAD_HAND);}), + Entrance(RR_BOTW_LOBBY, []{return logic->IsChild && logic->CanKillEnemy(RE_DEAD_HAND);}), }); areaTable[RR_BOTW_B3] = Region("Bottom of the Well B3", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTW_B3_CHEST, logic->BlastOrSmash()), - LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_1, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_2, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_3, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_4, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_5, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_6, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_7, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10, logic->CanBreakPots()), - LOCATION(RC_BOTW_B3_WEST_POT_GROUP_FRONT, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12, logic->CanBreakPots()), - LOCATION(RC_BOTW_B3_SUN_FAIRY, logic->CanUse(RG_SUNS_SONG)), + LOCATION(RC_BOTW_B3_CHEST , logic->BlastOrSmash()), + LOCATION(RC_BOTW_B3_WEST_CENTER_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_EAST_CENTER_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_WEST_V_MID_NORTH_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_EAST_V_MIDDLE_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_WEST_V_SOUTHMOST_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_EAST_V_SOUTHMOST_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_EAST_V_NORTHMOST_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_EAST_V_MID_NORTH_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_WEST_V_MID_SOUTH_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_EAST_V_MID_SOUTH_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_WEST_V_MIDDLE_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_WEST_V_NORTHMOST_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_SUN_FAIRY , logic->CanUse(RG_SUNS_SONG)), }, { //Exits - Entrance(RR_BOTW_SOUTHWEST_ROOM, []{return logic->IsChild && logic->CanPassEnemy(RE_BIG_SKULLTULA);}), - //It's possible top abuse boulder's limited range of collision detection to detonate the flowers through the boulder with bow, but this is a glitch + Entrance(RR_BOTW_SOUTHWEST_ROOM , []{return true;}), + //It's possible to abuse the boulder's limited range of collision detection to detonate the flowers through the boulder with bow, but this is a glitch //the exact range is just past the furthest away plank in the green goo section Entrance(RR_BOTW_B3_EAST_BOMB_FLOWERS, []{return Here(RR_BOTW_B3, []{return logic->BlastOrSmash() || logic->CanUse(RG_DINS_FIRE) || (logic->CanUse(RG_STICKS) && ctx->GetTrickOption(RT_BOTW_BASEMENT));});}), }); - areaTable[RR_BOTW_B3_EAST_BOMB_FLOWERS] = Region("Bottom of the Well Basement Useful Bomb Flowers", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { + areaTable[RR_BOTW_B3_EAST_BOMB_FLOWERS] = Region("Bottom of the Well B3 East Bomb Flowers", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations //Assumes RR_BOTW_B3 access LOCATION(RC_BOTW_B3_CHEST, logic->HasItem(RG_GORONS_BRACELET)), @@ -163,13 +163,13 @@ void RegionTable_Init_BottomOfTheWell() { Entrance(RR_BOTW_B3, []{return logic->CanDetonateUprightBombFlower();}), }); - areaTable[RR_BOTW_B3_PLATFORM] = Region("Bottom of the Well Basement Platform", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { + areaTable[RR_BOTW_B3_PLATFORM] = Region("Bottom of the Well B3 Platform", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_LEFT_RUPEE, true), - LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_BACK_LEFT_RUPEE, true), - LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_MIDDLE_RUPEE, true), - LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_BACK_RIGHT_RUPEE, true), - LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_RIGHT_RUPEE, true), + LOCATION(RC_BOTW_B3_PLATFORM_WEST_RUPEE , true), + LOCATION(RC_BOTW_B3_PLATFORM_NORTHWEST_RUPEE, true), + LOCATION(RC_BOTW_B3_PLATFORM_NORTH_RUPEE , true), + LOCATION(RC_BOTW_B3_PLATFORM_NORTHEAST_RUPEE, true), + LOCATION(RC_BOTW_B3_PLATFORM_EAST_RUPEE , true), }, { //Exits Entrance(RR_BOTW_B3, []{return true;}), @@ -179,74 +179,74 @@ void RegionTable_Init_BottomOfTheWell() { #pragma region MQ - areaTable[RR_BOTW_MQ_PERIMETER] = Region("Bottom of the Well MQ Perimeter", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, { + areaTable[RR_BOTW_MQ_LOBBY] = Region("Bottom of the Well MQ Lobby", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, { //Events //technically obsolete due to a wonder item fairy which only needs a projectile, but we don't have an event var for it yet - EventAccess(&logic->FairyPot, []{return Here(RR_BOTW_MQ_PERIMETER, []{return logic->BlastOrSmash();}) && logic->CanHitEyeTargets();}), - //It is possible to hit the water switch with a pot from RR_BOTTOM_OF_THE_WELL_MQ_MIDDLE, however the hitbox for making it activate is very unintuitive + EventAccess(&logic->FairyPot , []{return Here(RR_BOTW_MQ_LOBBY, []{return logic->BlastOrSmash();}) && logic->CanHitEyeTargets();}), + //It is possible to hit the water switch with a pot from RR_BOTW_MQ_WOODEN_X_ROOM, however the hitbox for making it activate is very unintuitive //You have to throw the pot from further back to hit the switch from the front instead of the top, trying to hit the "fingers" directly //This unintuitiveness means it should be a trick. ZL is needed to get a clear path to carry the pot - EventAccess(&logic->LoweredWaterInsideBotw, []{return logic->CanJumpslash() || logic->CanUseProjectile();}), + EventAccess(&logic->LoweredBotwWater, []{return logic->CanJumpslash() || logic->CanUseProjectile();}), }, { //Locations //Implies CanBreakPots() - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT, Here(RR_BOTW_MQ_PERIMETER, []{return logic->BlastOrSmash();}) && logic->CanHitEyeTargets()), - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_BOMB_LEFT_HEART, logic->HasExplosives()), - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_BOMB_RIGHT_HEART, logic->HasExplosives()), + LOCATION(RC_BOTW_MQ_CAGED_POT , Here(RR_BOTW_MQ_LOBBY, []{return logic->BlastOrSmash();}) && logic->CanHitEyeTargets()), + LOCATION(RC_BOTW_MQ_RUBBLE_NORTH_HEART, logic->HasExplosives()), + LOCATION(RC_BOTW_MQ_RUBBLE_SOUTH_HEART, logic->HasExplosives()), }, { //Exits - Entrance(RR_BOTW_ENTRYWAY, []{return logic->IsChild;}), - Entrance(RR_BOTTOM_OF_THE_WELL_MQ_WEST_ROOM_SWITCH, []{return Here(RR_BOTW_MQ_PERIMETER, []{return logic->BlastOrSmash();}) && logic->CanPassEnemy(RE_BIG_SKULLTULA);}), - Entrance(RR_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM, []{return (logic->LoweredWaterInsideBotw || logic->HasItem(RG_BRONZE_SCALE)) && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 2);}), - Entrance(RR_BOTTOM_OF_THE_WELL_MQ_LOCKED_CAGE, []{return logic->IsChild && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 2) && logic->CanUseProjectile();}), - Entrance(RR_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_ROOM, []{return logic->IsChild && logic->LoweredWaterInsideBotw;}), - Entrance(RR_BOTTOM_OF_THE_WELL_MQ_MIDDLE, []{return logic->CanUse(RG_ZELDAS_LULLABY);}), - Entrance(RR_BOTTOM_OF_THE_WELL_MQ_BASEMENT, []{return true;}), + Entrance(RR_BOTW_ENTRYWAY , []{return logic->IsChild;}), + Entrance(RR_BOTW_MQ_WEST_SWITCH , []{return Here(RR_BOTW_MQ_LOBBY, []{return logic->BlastOrSmash();}) && logic->CanPassEnemy(RE_BIG_SKULLTULA);}), + Entrance(RR_BOTW_MQ_COFFIN_ROOM , []{return (logic->LoweredBotwWater || logic->HasItem(RG_BRONZE_SCALE)) && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 2);}), + Entrance(RR_BOTW_MQ_OUTER_CAGE , []{return logic->IsChild && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 2) && logic->CanUseProjectile();}), + Entrance(RR_BOTW_MQ_DEAD_HAND_ROOM , []{return logic->IsChild && logic->LoweredBotwWater;}), + Entrance(RR_BOTW_MQ_WOODEN_X_ROOM , []{return logic->CanUse(RG_ZELDAS_LULLABY);}), + Entrance(RR_BOTW_MQ_B3 , []{return true;}), }); - areaTable[RR_BOTTOM_OF_THE_WELL_MQ_WEST_ROOM_SWITCH] = Region("Bottom of the Well MQ West Room Switch", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, { + areaTable[RR_BOTW_MQ_WEST_SWITCH] = Region("Bottom of the Well MQ West Switch", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, { //Events EventAccess(&logic->OpenedWestRoomMQBotw, []{return true;}), }, {}, { //Exits - Entrance(RR_BOTW_MQ_PERIMETER, []{return logic->BlastOrSmash() && (logic->CanPassEnemy(RE_BIG_SKULLTULA) || ctx->GetTrickOption(RT_BOTW_MQ_PITS));}), - Entrance(RR_BOTTOM_OF_THE_WELL_MQ_MIDDLE, []{return (bool)ctx->GetTrickOption(RT_BOTW_MQ_PITS);}), - Entrance(RR_BOTTOM_OF_THE_WELL_MQ_BASEMENT, []{return true;}), + Entrance(RR_BOTW_MQ_LOBBY , []{return logic->BlastOrSmash() && (logic->CanPassEnemy(RE_BIG_SKULLTULA) || ctx->GetTrickOption(RT_BOTW_MQ_PITS));}), + Entrance(RR_BOTW_MQ_WOODEN_X_ROOM, []{return (bool)ctx->GetTrickOption(RT_BOTW_MQ_PITS);}), + Entrance(RR_BOTW_MQ_B3 , []{return true;}), }); - areaTable[RR_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM] = Region("Bottom of the Well MQ Coffin Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { + areaTable[RR_BOTW_MQ_COFFIN_ROOM] = Region("Bottom of the Well MQ Coffin Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)), - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM_FRONT_RIGHT_HEART, logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW)), - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM_MIDDLE_LEFT_HEART, logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW)), + LOCATION(RC_BOTW_MQ_COFFIN_ROOM_GS , logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)), + LOCATION(RC_BOTW_MQ_NORTHEAST_COFFIN_HEART, logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW)), + LOCATION(RC_BOTW_MQ_SOUTH_COFFIN_HEART , logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW)), }, { //Exits - Entrance(RR_BOTW_MQ_PERIMETER, []{return (logic->LoweredWaterInsideBotw || logic->HasItem(RG_BRONZE_SCALE)) && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 2);}), + Entrance(RR_BOTW_MQ_LOBBY, []{return (logic->LoweredBotwWater || logic->HasItem(RG_BRONZE_SCALE)) && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 2);}), }); - areaTable[RR_BOTTOM_OF_THE_WELL_MQ_LOCKED_CAGE] = Region("Bottom of the Well MQ Locked Cage", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, { + areaTable[RR_BOTW_MQ_OUTER_CAGE] = Region("Bottom of the Well MQ Outer Cage", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, { //Events EventAccess(&logic->OpenedMiddleHoleMQBotw, []{return logic->HasExplosives();}), }, {}, { //Exits - Entrance(RR_BOTW_MQ_PERIMETER, []{return logic->IsChild && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 2);}), + Entrance(RR_BOTW_MQ_LOBBY, []{return logic->IsChild && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 2);}), }); - areaTable[RR_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_ROOM] = Region("Bottom of the Well MQ Dead Hand Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { + areaTable[RR_BOTW_MQ_DEAD_HAND_ROOM] = Region("Bottom of the Well MQ Dead Hand Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST, logic->CanKillEnemy(RE_DEAD_HAND)), - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_FREESTANDING_KEY, logic->HasExplosives() || (ctx->GetTrickOption(RT_BOTW_MQ_DEADHAND_KEY) && logic->CanUse(RG_BOOMERANG))), + LOCATION(RC_BOTW_MQ_DEAD_HAND_CHEST , logic->CanKillEnemy(RE_DEAD_HAND)), + LOCATION(RC_BOTW_MQ_DEAD_HAND_RUBBLE_KEY, logic->HasExplosives() || (ctx->GetTrickOption(RT_BOTW_MQ_DEADHAND_KEY) && logic->CanUse(RG_BOOMERANG))), }, { //Exits //This assumes we spawned in dead hand's room, if whatever trick made this relevant instead puts us in the previous room, remove the kill Dead Hand check. - Entrance(RR_BOTW_MQ_PERIMETER, []{return logic->IsChild && logic->CanKillEnemy(RE_DEAD_HAND);}), + Entrance(RR_BOTW_MQ_LOBBY, []{return logic->IsChild && logic->CanKillEnemy(RE_DEAD_HAND);}), }); - areaTable[RR_BOTTOM_OF_THE_WELL_MQ_MIDDLE] = Region("Bottom of the Well MQ Middle", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { + areaTable[RR_BOTW_MQ_WOODEN_X_ROOM] = Region("Bottom of the Well MQ Wooden X Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST, true), + LOCATION(RC_BOTW_MQ_WOODEN_X_CHEST , true), //This location technically involves an invisible platform, but it's intended to do lensless in vanilla and is clearly signposted by pots. - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY, true), + LOCATION(RC_BOTW_MQ_EAST_INNER_ROOM_KEY , true), //The enemies in this room are invisible and crowd around the player, being awkward to deal with blind unless you already know how. //the right wall is safe, and can be followed to get behind the grave which you can then pull easily assuming you can tank invisible keese //Using a deku nut however stuns everything easily. and if you have a melee weapon you can kill the skull through the grave then grab the drop @@ -254,44 +254,44 @@ void RegionTable_Init_BottomOfTheWell() { //Also you get cheap shotted on entry sometimes. //An MQ lens trick is recommended here, and a review of this room for OHKO logic what that is added is advised. //In the meantime I assume damage taken or the easy answer (nuts) - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM, logic->OpenedWestRoomMQBotw && (logic->TakeDamage() || logic->CanUse(RG_NUTS)) && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)), - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_1, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_2, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_3, logic->CanBreakPots()), - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY, logic->CanUse(RG_SUNS_SONG)), + LOCATION(RC_BOTW_MQ_WEST_CENTER_ROOM_GS , logic->OpenedWestRoomMQBotw && (logic->TakeDamage() || logic->CanUse(RG_NUTS)) && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)), + LOCATION(RC_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_MQ_WOODEN_X_ROOM_EAST_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_MQ_WOODEN_X_ROOM_WEST_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_MQ_EAST_INNER_ROOM_FAR_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_MQ_EAST_INNER_ROOM_MID_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY , logic->CanUse(RG_SUNS_SONG)), }, { //Exits - //If a relevant trick causes you to be able to warp into here without going through PERIMETER, a new eventAccess will be needed for lowering the gates with ZL - Entrance(RR_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SWITCH_PLATFORM, []{return logic->OpenedMiddleHoleMQBotw;}), - Entrance(RR_BOTTOM_OF_THE_WELL_MQ_BASEMENT, []{return true;}), + //If a relevant trick causes you to be able to warp into here without going through LOBBY, a new eventAccess will be needed for lowering the gates with ZL + Entrance(RR_BOTW_MQ_B3_SWITCH, []{return logic->OpenedMiddleHoleMQBotw;}), + Entrance(RR_BOTW_MQ_B3 , []{return true;}), }); - areaTable[RR_BOTTOM_OF_THE_WELL_MQ_BASEMENT] = Region("Bottom of the Well MQ Basement", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { + areaTable[RR_BOTW_MQ_B3] = Region("Bottom of the Well MQ B3", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations //behind invisible big skulltulas, but with navi spotting it's easy to avoid them, or at worst, tank your way through as they do not block the path - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)), - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_FRONT_HEART, true), - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_LEFT_HEART, true), - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_RIGHT_HEART, true), - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY, logic->CanUse(RG_SUNS_SONG)), + LOCATION(RC_BOTW_MQ_B3_GS , logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)), + LOCATION(RC_BOTW_MQ_B3_SOUTH_HEART , true), + LOCATION(RC_BOTW_MQ_B3_NORTHWEST_HEART, true), + LOCATION(RC_BOTW_MQ_B3_NORTHEAST_HEART, true), + LOCATION(RC_BOTW_MQ_B3_SUN_FAIRY , logic->CanUse(RG_SUNS_SONG)), }, { //Exits - Entrance(RR_BOTW_MQ_PERIMETER, []{return true;}), + Entrance(RR_BOTW_MQ_LOBBY, []{return true;}), }); - areaTable[RR_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SWITCH_PLATFORM] = Region("Bottom of the Well MQ Basement Switch Platform", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { + areaTable[RR_BOTW_MQ_B3_SWITCH] = Region("Bottom of the Well MQ B3 Switch", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - //Assumes RR_BOTTOM_OF_THE_WELL_MQ_BASEMENT access + //Assumes RR_BOTW_MQ_B3 access //it is technically possible to get the chest before you get screamed at without rolling, but hard enough to be a trick if that is the requirement for something to be logical //With some kind of movement tech it's much easier, easy enough to be default logic, as the redeads don't lock on immediately in addition to the extra speed //leaving with no requirements for now but up for discussion. - LOCATION(RC_BOTTOM_OF_THE_WELL_MQ_LENS_OF_TRUTH_CHEST, true), + LOCATION(RC_BOTW_MQ_REDEAD_CHEST, true), }, { //Exits - Entrance(RR_BOTTOM_OF_THE_WELL_MQ_BASEMENT, []{return true;}), + Entrance(RR_BOTW_MQ_B3, []{return true;}), }); #pragma endregion diff --git a/soh/soh/Enhancements/randomizer/location_list.cpp b/soh/soh/Enhancements/randomizer/location_list.cpp index 8dd82ee67d5..5c3adf9ba66 100644 --- a/soh/soh/Enhancements/randomizer/location_list.cpp +++ b/soh/soh/Enhancements/randomizer/location_list.cpp @@ -538,26 +538,26 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_SHADOW_TEMPLE_MQ_FREESTANDING_KEY] = Location::Collectable(RC_SHADOW_TEMPLE_MQ_FREESTANDING_KEY, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_ITEM00, SCENE_SHADOW_TEMPLE, 1553, 0x06, "MQ Freestanding Key", RHT_SHADOW_TEMPLE_MQ_FREESTANDING_KEY, RG_SHADOW_TEMPLE_SMALL_KEY, true); // Bottom of the Well Vanilla - locationTable[RC_BOTW_WEST_FAKE_WALL_CHEST] = Location::Chest(RC_BOTW_WEST_FAKE_WALL_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 22600, 0x08, "West Fake Wall Chest", RHT_BOTW_WEST_FAKE_WALL_CHEST, RG_BOTTOM_OF_THE_WELL_SMALL_KEY, true); - locationTable[RC_BOTW_SOUTH_RUBBLE_CHEST] = Location::Chest(RC_BOTW_SOUTH_RUBBLE_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 20578, 0x02, "South Rubble Chest", RHT_BOTW_SOUTH_RUBBLE_CHEST, RG_BOMBCHU_10); - locationTable[RC_BOTW_EAST_FAKE_WALL_CHEST] = Location::Chest(RC_BOTW_EAST_FAKE_WALL_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 22597, 0x05, "East Fake Wall Chest", RHT_BOTW_EAST_FAKE_WALL_CHEST, RG_BOTTOM_OF_THE_WELL_SMALL_KEY, true); - locationTable[RC_BOTW_B1_CENTRAL_WEST_CHEST] = Location::Chest(RC_BOTW_B1_CENTRAL_WEST_CHEST, RCQUEST_VANILLA, RCTYPE_COMPASS, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 2049, 0x01, "Central West Chest", RHT_BOTW_CENTRAL_WEST_CHEST, RG_BOTTOM_OF_THE_WELL_COMPASS, true); - locationTable[RC_BOTW_B1_CENTRAL_EAST_CHEST] = Location::Chest(RC_BOTW_B1_CENTRAL_EAST_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 20558, 0x0E, "Skulltula Chest", RHT_BOTW_SKULLTULA_CHEST, RG_DEKU_NUTS_5); - locationTable[RC_BOTW_NORTH_RUBBLE_CHEST] = Location::Chest(RC_BOTW_NORTH_RUBBLE_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 23684, 0x04, "North Rubble Chest", RHT_BOTW_NORTH_RUBBLE_CHEST, RG_DEKU_NUTS_10); - locationTable[RC_BOTW_DEAD_HAND_CHEST] = Location::Chest(RC_BOTW_DEAD_HAND_CHEST, RCQUEST_VANILLA, RCTYPE_BOSS_HEART_OR_OTHER_REWARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 4419, 0x03, "Lens of Truth Chest", RHT_BOTTOM_OF_THE_WELL_LENS_OF_TRUTH_CHEST, RG_LENS_OF_TRUTH, true); - locationTable[RC_BOTW_INVISIBLE_CHEST] = Location::Chest(RC_BOTW_INVISIBLE_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 27348, 0x14, "Invisible Chest", RHT_BOTTOM_OF_THE_WELL_INVISIBLE_CHEST, RG_HUGE_RUPEE); - locationTable[RC_BOTW_SOUTH_SUNKEN_CHEST] = Location::Chest(RC_BOTW_SOUTH_SUNKEN_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 23760, 0x10, "South Sunken Chest", RHT_BOTW_SOUTH_SUNKEN_CHEST, RG_BOMBS_10); - locationTable[RC_BOTW_WEST_SUNKEN_CHEST] = Location::Chest(RC_BOTW_WEST_SUNKEN_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 22793, 0x09, "West Sunken Chest", RHT_BOTW_WEST_SUNKEN_CHEST, RG_RECOVERY_HEART); - locationTable[RC_BOTW_B3_CHEST] = Location::Chest(RC_BOTW_B3_CHEST, RCQUEST_VANILLA, RCTYPE_MAP, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 2087, 0x07, "Map Chest", RHT_BOTTOM_OF_THE_WELL_MAP_CHEST, RG_BOTTOM_OF_THE_WELL_MAP, true); - locationTable[RC_BOTW_3_HIDDEN_PITS_CHEST] = Location::Chest(RC_BOTW_3_HIDDEN_PITS_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 21802, 0x0A, "Fire Keese Chest", RHT_BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST, RG_DEKU_SHIELD); - locationTable[RC_BOTW_OUTER_CAGE_CHEST] = Location::Chest(RC_BOTW_OUTER_CAGE_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 21836, 0x0C, "Like Like Chest", RHT_BOTTOM_OF_THE_WELL_LIKE_LIKE_CHEST, RG_HYLIAN_SHIELD); - locationTable[RC_BOTW_COFFIN_KEY] = Location::Collectable(RC_BOTW_COFFIN_KEY, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 273, 0x01, "Coffin Key", RHT_BOTW_COFFIN_KEY, RG_BOTTOM_OF_THE_WELL_SMALL_KEY, true); + locationTable[RC_BOTW_WEST_FAKE_WALL_CHEST] = Location::Chest(RC_BOTW_WEST_FAKE_WALL_CHEST , RCQUEST_VANILLA, RCTYPE_SMALL_KEY , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 22600 , 0x08, "West Fake Wall Chest" , RHT_BOTW_WEST_FAKE_WALL_CHEST , RG_BOTW_SMALL_KEY, true); + locationTable[RC_BOTW_SOUTH_RUBBLE_CHEST] = Location::Chest(RC_BOTW_SOUTH_RUBBLE_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 20578 , 0x02, "South Rubble Chest" , RHT_BOTW_SOUTH_RUBBLE_CHEST , RG_BOMBCHU_10 ); + locationTable[RC_BOTW_EAST_FAKE_WALL_CHEST] = Location::Chest(RC_BOTW_EAST_FAKE_WALL_CHEST , RCQUEST_VANILLA, RCTYPE_SMALL_KEY , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 22597 , 0x05, "East Fake Wall Chest" , RHT_BOTW_EAST_FAKE_WALL_CHEST , RG_BOTW_SMALL_KEY, true); + locationTable[RC_BOTW_CENTRAL_WEST_CHEST] = Location::Chest(RC_BOTW_CENTRAL_WEST_CHEST , RCQUEST_VANILLA, RCTYPE_COMPASS , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 2049 , 0x01, "Central West Chest" , RHT_BOTW_CENTRAL_WEST_CHEST , RG_BOTW_COMPASS , true); + locationTable[RC_BOTW_CENTRAL_EAST_CHEST] = Location::Chest(RC_BOTW_CENTRAL_EAST_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 20558 , 0x0E, "Central East Chest" , RHT_BOTW_CENTRAL_EAST_CHEST , RG_DEKU_NUTS_5 ); + locationTable[RC_BOTW_NORTH_RUBBLE_CHEST] = Location::Chest(RC_BOTW_NORTH_RUBBLE_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 23684 , 0x04, "North Rubble Chest" , RHT_BOTW_NORTH_RUBBLE_CHEST , RG_DEKU_NUTS_10 ); + locationTable[RC_BOTW_DEAD_HAND_CHEST] = Location::Chest(RC_BOTW_DEAD_HAND_CHEST , RCQUEST_VANILLA, RCTYPE_BOSS_HEART_OR_OTHER_REWARD, ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 4419 , 0x03, "Dead Hand Chest" , RHT_BOTW_DEAD_HAND_CHEST , RG_LENS_OF_TRUTH , true); + locationTable[RC_BOTW_INVISIBLE_CHEST] = Location::Chest(RC_BOTW_INVISIBLE_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 27348 , 0x14, "Invisible Chest" , RHT_BOTW_INVISIBLE_CHEST , RG_HUGE_RUPEE ); + locationTable[RC_BOTW_SOUTH_SUNKEN_CHEST] = Location::Chest(RC_BOTW_SOUTH_SUNKEN_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 23760 , 0x10, "South Sunken Chest" , RHT_BOTW_SOUTH_SUNKEN_CHEST , RG_BOMBS_10 ); + locationTable[RC_BOTW_WEST_SUNKEN_CHEST] = Location::Chest(RC_BOTW_WEST_SUNKEN_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 22793 , 0x09, "West Sunken Chest" , RHT_BOTW_WEST_SUNKEN_CHEST , RG_RECOVERY_HEART); + locationTable[RC_BOTW_B3_CHEST] = Location::Chest(RC_BOTW_B3_CHEST , RCQUEST_VANILLA, RCTYPE_MAP , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 2087 , 0x07, "B3 Chest" , RHT_BOTW_B3_CHEST , RG_BOTW_MAP , true); + locationTable[RC_BOTW_3_HIDDEN_PITS_CHEST] = Location::Chest(RC_BOTW_3_HIDDEN_PITS_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 21802 , 0x0A, "3 Hidden Pits Chest" , RHT_BOTW_3_HIDDEN_PITS_CHEST , RG_DEKU_SHIELD ); + locationTable[RC_BOTW_OUTER_CAGE_CHEST] = Location::Chest(RC_BOTW_OUTER_CAGE_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 21836 , 0x0C, "Outer Cage Chest" , RHT_BOTW_OUTER_CAGE_CHEST , RG_HYLIAN_SHIELD ); + locationTable[RC_BOTW_COFFIN_KEY] = Location::Collectable(RC_BOTW_COFFIN_KEY , RCQUEST_VANILLA, RCTYPE_SMALL_KEY , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 273 , 0x01, "Coffin Key" , RHT_BOTW_COFFIN_KEY , RG_BOTW_SMALL_KEY, true); // Bottom of the Well Master Quest - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST, RCQUEST_MQ, RCTYPE_MAP, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 2083, 0x03, "MQ Map Chest", RHT_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST, RG_BOTTOM_OF_THE_WELL_MAP, true); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_LENS_OF_TRUTH_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_MQ_LENS_OF_TRUTH_CHEST, RCQUEST_MQ, RCTYPE_BOSS_HEART_OR_OTHER_REWARD, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, -20159, 0x01, "MQ Lens of Truth Chest", RHT_BOTTOM_OF_THE_WELL_MQ_LENS_OF_TRUTH_CHEST, RG_LENS_OF_TRUTH, true); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST] = Location::Chest(RC_BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST, RCQUEST_MQ, RCTYPE_COMPASS, ACTOR_EN_BOX, SCENE_BOTTOM_OF_THE_WELL, 6146, 0x02, "MQ Compass Chest", RHT_BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST, RG_BOTTOM_OF_THE_WELL_COMPASS, true); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_FREESTANDING_KEY] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_FREESTANDING_KEY, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 529, 0x02, "MQ Dead Hand Freestanding Key", RHT_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_FREESTANDING_KEY, RG_BOTTOM_OF_THE_WELL_SMALL_KEY, true); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 273, 0x01, "MQ East Inner Room Freestanding Key", RHT_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY, RG_BOTTOM_OF_THE_WELL_SMALL_KEY, true); + locationTable[RC_BOTW_MQ_WOODEN_X_CHEST] = Location::Chest(RC_BOTW_MQ_WOODEN_X_CHEST , RCQUEST_MQ , RCTYPE_MAP , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 2083 , 0x03, "MQ Wooden X Chest" , RHT_BOTW_MQ_WOODEN_X_CHEST , RG_BOTW_MAP , true); + locationTable[RC_BOTW_MQ_REDEAD_CHEST] = Location::Chest(RC_BOTW_MQ_REDEAD_CHEST , RCQUEST_MQ , RCTYPE_BOSS_HEART_OR_OTHER_REWARD, ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, -20159, 0x01, "MQ Redead Chest" , RHT_BOTW_MQ_REDEAD_CHEST , RG_LENS_OF_TRUTH , true); + locationTable[RC_BOTW_MQ_DEAD_HAND_CHEST] = Location::Chest(RC_BOTW_MQ_DEAD_HAND_CHEST , RCQUEST_MQ , RCTYPE_COMPASS , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 6146 , 0x02, "MQ Dead Hand Chest" , RHT_BOTW_MQ_DEAD_HAND_CHEST , RG_BOTW_COMPASS , true); + locationTable[RC_BOTW_MQ_DEAD_HAND_RUBBLE_KEY] = Location::Collectable(RC_BOTW_MQ_DEAD_HAND_RUBBLE_KEY, RCQUEST_MQ , RCTYPE_SMALL_KEY , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 529 , 0x02, "MQ Dead Hand Rubble Key", RHT_BOTW_MQ_DEAD_HAND_RUBBLE_KEY, RG_BOTW_SMALL_KEY, true); + locationTable[RC_BOTW_MQ_EAST_INNER_ROOM_KEY] = Location::Collectable(RC_BOTW_MQ_EAST_INNER_ROOM_KEY , RCQUEST_MQ , RCTYPE_SMALL_KEY , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 273 , 0x01, "MQ East Inner Room Key" , RHT_BOTW_MQ_EAST_INNER_ROOM_KEY , RG_BOTW_SMALL_KEY, true); // Ice Cavern Vanilla locationTable[RC_ICE_CAVERN_MAP_CHEST] = Location::Chest(RC_ICE_CAVERN_MAP_CHEST, RCQUEST_VANILLA, RCTYPE_MAP, ACTOR_EN_BOX, SCENE_ICE_CAVERN, 2080, 0x00, "Map Chest", RHT_ICE_CAVERN_MAP_CHEST, RG_ICE_CAVERN_MAP, true); @@ -573,43 +573,43 @@ void Rando::StaticData::InitLocationTable() { // // Gerudo Training Ground Vanilla locationTable[RC_GERUDO_TRAINING_GROUND_LOBBY_LEFT_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_LOBBY_LEFT_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30573, 0x13, "Lobby Left Chest", RHT_GERUDO_TRAINING_GROUND_LOBBY_LEFT_CHEST, RG_BLUE_RUPEE); locationTable[RC_GERUDO_TRAINING_GROUND_LOBBY_RIGHT_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_LOBBY_RIGHT_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30393, 0x07, "Lobby Right Chest", RHT_GERUDO_TRAINING_GROUND_LOBBY_RIGHT_CHEST, RG_ARROWS_10); - locationTable[RC_GERUDO_TRAINING_GROUND_STALFOS_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_STALFOS_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30656, 0x00, "Stalfos Chest", RHT_GERUDO_TRAINING_GROUND_STALFOS_CHEST, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); - locationTable[RC_GERUDO_TRAINING_GROUND_BEAMOS_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_BEAMOS_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30655, 0x01, "Beamos Chest", RHT_GERUDO_TRAINING_GROUND_BEAMOS_CHEST, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); - locationTable[RC_GERUDO_TRAINING_GROUND_HIDDEN_CEILING_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_HIDDEN_CEILING_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22603, 0x0B, "Hidden Ceiling Chest", RHT_GERUDO_TRAINING_GROUND_HIDDEN_CEILING_CHEST, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_STALFOS_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_STALFOS_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30656, 0x00, "Stalfos Chest", RHT_GERUDO_TRAINING_GROUND_STALFOS_CHEST, RG_GTG_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_BEAMOS_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_BEAMOS_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30655, 0x01, "Beamos Chest", RHT_GERUDO_TRAINING_GROUND_BEAMOS_CHEST, RG_GTG_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_HIDDEN_CEILING_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_HIDDEN_CEILING_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22603, 0x0B, "Hidden Ceiling Chest", RHT_GERUDO_TRAINING_GROUND_HIDDEN_CEILING_CHEST, RG_GTG_SMALL_KEY, true); locationTable[RC_GERUDO_TRAINING_GROUND_MAZE_PATH_FIRST_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MAZE_PATH_FIRST_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 23206, 0x06, "Maze Path First Chest", RHT_GERUDO_TRAINING_GROUND_MAZE_PATH_FIRST_CHEST, RG_PURPLE_RUPEE); locationTable[RC_GERUDO_TRAINING_GROUND_MAZE_PATH_SECOND_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MAZE_PATH_SECOND_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22986, 0x0A, "Maze Path Second Chest", RHT_GERUDO_TRAINING_GROUND_MAZE_PATH_SECOND_CHEST, RG_RED_RUPEE); locationTable[RC_GERUDO_TRAINING_GROUND_MAZE_PATH_THIRD_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MAZE_PATH_THIRD_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22889, 0x09, "Maze Path Third Chest", RHT_GERUDO_TRAINING_GROUND_MAZE_PATH_THIRD_CHEST, RG_ARROWS_30); locationTable[RC_GERUDO_TRAINING_GROUND_MAZE_PATH_FINAL_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MAZE_PATH_FINAL_CHEST, RCQUEST_VANILLA, RCTYPE_BOSS_HEART_OR_OTHER_REWARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 2860, 0x0C, "Maze Path Final Chest", RHT_GERUDO_TRAINING_GROUND_MAZE_PATH_FINAL_CHEST, RG_ICE_ARROWS, true); locationTable[RC_GERUDO_TRAINING_GROUND_MAZE_RIGHT_CENTRAL_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MAZE_RIGHT_CENTRAL_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 23877, 0x05, "Maze Right Central Chest", RHT_GERUDO_TRAINING_GROUND_MAZE_RIGHT_CENTRAL_CHEST, RG_BOMBCHU_5); locationTable[RC_GERUDO_TRAINING_GROUND_MAZE_RIGHT_SIDE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MAZE_RIGHT_SIDE_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22888, 0x08, "Maze Right Side Chest", RHT_GERUDO_TRAINING_GROUND_MAZE_RIGHT_SIDE_CHEST, RG_ARROWS_30); - locationTable[RC_GERUDO_TRAINING_GROUND_UNDERWATER_SILVER_RUPEE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_UNDERWATER_SILVER_RUPEE_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30643, 0x0D, "Underwater Silver Rupee Chest", RHT_GERUDO_TRAINING_GROUND_UNDERWATER_SILVER_RUPEE_CHEST, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_UNDERWATER_SILVER_RUPEE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_UNDERWATER_SILVER_RUPEE_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30643, 0x0D, "Underwater Silver Rupee Chest", RHT_GERUDO_TRAINING_GROUND_UNDERWATER_SILVER_RUPEE_CHEST, RG_GTG_SMALL_KEY, true); locationTable[RC_GERUDO_TRAINING_GROUND_HAMMER_ROOM_CLEAR_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_HAMMER_ROOM_CLEAR_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 31058, 0x12, "Hammer Room Clear Chest", RHT_GERUDO_TRAINING_GROUND_HAMMER_ROOM_CLEAR_CHEST, RG_ARROWS_10); - locationTable[RC_GERUDO_TRAINING_GROUND_HAMMER_ROOM_SWITCH_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_HAMMER_ROOM_SWITCH_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22608, 0x10, "Hammer Room Switch Chest", RHT_GERUDO_TRAINING_GROUND_HAMMER_ROOM_SWITCH_CHEST, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); - locationTable[RC_GERUDO_TRAINING_GROUND_EYE_STATUE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_EYE_STATUE_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30653, 0x03, "Eye Statue Chest", RHT_GERUDO_TRAINING_GROUND_EYE_STATUE_CHEST, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); - locationTable[RC_GERUDO_TRAINING_GROUND_NEAR_SCARECROW_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_NEAR_SCARECROW_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22596, 0x04, "Near Scarecrow Chest", RHT_GERUDO_TRAINING_GROUND_NEAR_SCARECROW_CHEST, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_HAMMER_ROOM_SWITCH_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_HAMMER_ROOM_SWITCH_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22608, 0x10, "Hammer Room Switch Chest", RHT_GERUDO_TRAINING_GROUND_HAMMER_ROOM_SWITCH_CHEST, RG_GTG_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_EYE_STATUE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_EYE_STATUE_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30653, 0x03, "Eye Statue Chest", RHT_GERUDO_TRAINING_GROUND_EYE_STATUE_CHEST, RG_GTG_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_NEAR_SCARECROW_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_NEAR_SCARECROW_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22596, 0x04, "Near Scarecrow Chest", RHT_GERUDO_TRAINING_GROUND_NEAR_SCARECROW_CHEST, RG_GTG_SMALL_KEY, true); locationTable[RC_GERUDO_TRAINING_GROUND_BEFORE_HEAVY_BLOCK_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_BEFORE_HEAVY_BLOCK_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 31089, 0x11, "Before Heavy Block Chest", RHT_GERUDO_TRAINING_GROUND_BEFORE_HEAVY_BLOCK_CHEST, RG_ARROWS_30); locationTable[RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_FIRST_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_FIRST_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 31439, 0x0F, "Heavy Block First Chest", RHT_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_FIRST_CHEST, RG_HUGE_RUPEE); locationTable[RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_SECOND_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_SECOND_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 30862, 0x0E, "Heavy Block Second Chest", RHT_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_SECOND_CHEST, RG_BLUE_RUPEE); - locationTable[RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_THIRD_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_THIRD_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 26708, 0x14, "Heavy Block Third Chest", RHT_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_THIRD_CHEST, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_THIRD_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_THIRD_CHEST, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 26708, 0x14, "Heavy Block Third Chest", RHT_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_THIRD_CHEST, RG_GTG_SMALL_KEY, true); locationTable[RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_FOURTH_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_FOURTH_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 24450, 0x02, "Heavy Block Fourth Chest", RHT_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_FOURTH_CHEST, RG_ICE_TRAP); - locationTable[RC_GERUDO_TRAINING_GROUND_FREESTANDING_KEY] = Location::Collectable(RC_GERUDO_TRAINING_GROUND_FREESTANDING_KEY, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_ITEM00, SCENE_GERUDO_TRAINING_GROUND, 273, 0x01, "Freestanding Key", RHT_GERUDO_TRAINING_GROUND_FREESTANDING_KEY, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_FREESTANDING_KEY] = Location::Collectable(RC_GERUDO_TRAINING_GROUND_FREESTANDING_KEY, RCQUEST_VANILLA, RCTYPE_SMALL_KEY, ACTOR_EN_ITEM00, SCENE_GERUDO_TRAINING_GROUND, 273, 0x01, "Freestanding Key", RHT_GERUDO_TRAINING_GROUND_FREESTANDING_KEY, RG_GTG_SMALL_KEY, true); // Gerudo Training Ground Master Quest locationTable[RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 23879, 0x07, "MQ Lobby Right Chest", RHT_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_CHEST, RG_BOMBCHU_5); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22867, 0x13, "MQ Lobby Left Chest", RHT_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_CHEST, RG_ARROWS_10); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_FIRST_IRON_KNUCKLE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_FIRST_IRON_KNUCKLE_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30304, 0x00, "MQ First Iron Knuckle Chest", RHT_GERUDO_TRAINING_GROUND_MQ_FIRST_IRON_KNUCKLE_CHEST, RG_BLUE_RUPEE); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_BEFORE_HEAVY_BLOCK_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_BEFORE_HEAVY_BLOCK_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 31057, 0x11, "MQ Before Heavy Block Chest", RHT_GERUDO_TRAINING_GROUND_MQ_BEFORE_HEAVY_BLOCK_CHEST, RG_ARROWS_10); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_EYE_STATUE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_EYE_STATUE_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -32669, 0x03, "MQ Eye Statue Chest", RHT_GERUDO_TRAINING_GROUND_MQ_EYE_STATUE_CHEST, RG_BOMBCHU_10); - locationTable[RC_GERUDO_TRAINING_GROUND_MQ_FLAME_CIRCLE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_FLAME_CIRCLE_CHEST, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30642, 0x0E, "MQ Flame Circle Chest", RHT_GERUDO_TRAINING_GROUND_MQ_FLAME_CIRCLE_CHEST, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_MQ_FLAME_CIRCLE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_FLAME_CIRCLE_CHEST, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30642, 0x0E, "MQ Flame Circle Chest", RHT_GERUDO_TRAINING_GROUND_MQ_FLAME_CIRCLE_CHEST, RG_GTG_SMALL_KEY, true); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_SECOND_IRON_KNUCKLE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_SECOND_IRON_KNUCKLE_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 31058, 0x12, "MQ Second Iron Knuckle Chest", RHT_GERUDO_TRAINING_GROUND_MQ_SECOND_IRON_KNUCKLE_CHEST, RG_ARROWS_10); - locationTable[RC_GERUDO_TRAINING_GROUND_MQ_DINOLFOS_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_DINOLFOS_CHEST, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30655, 0x01, "MQ Dinolfos Chest", RHT_GERUDO_TRAINING_GROUND_MQ_DINOLFOS_CHEST, RG_GERUDO_TRAINING_GROUND_SMALL_KEY, true); + locationTable[RC_GERUDO_TRAINING_GROUND_MQ_DINOLFOS_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_DINOLFOS_CHEST, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30655, 0x01, "MQ Dinolfos Chest", RHT_GERUDO_TRAINING_GROUND_MQ_DINOLFOS_CHEST, RG_GTG_SMALL_KEY, true); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_ICE_ARROWS_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_ICE_ARROWS_CHEST, RCQUEST_MQ, RCTYPE_BOSS_HEART_OR_OTHER_REWARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -17628, 0x04, "MQ Ice Arrows Chest", RHT_GERUDO_TRAINING_GROUND_MQ_ICE_ARROWS_CHEST, RG_ICE_ARROWS, true); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_CENTRAL_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_CENTRAL_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22661, 0x05, "MQ Maze Right Central Chest", RHT_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_CENTRAL_CHEST, RG_BLUE_RUPEE); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_FIRST_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_FIRST_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22918, 0x06, "MQ Maze Path First Chest", RHT_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_FIRST_CHEST, RG_GREEN_RUPEE); - locationTable[RC_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_SIDE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_SIDE_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 24136, 0x08, "MQ Maze Right Side Chest", RHT_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_SIDE_CHEST, RG_TREASURE_GAME_GREEN_RUPEE); - locationTable[RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_THIRD_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_THIRD_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 24137, 0x09, "MQ Maze Path Third Chest", RHT_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_THIRD_CHEST, RG_TREASURE_GAME_GREEN_RUPEE); + locationTable[RC_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_SIDE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_SIDE_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 24136, 0x08, "MQ Maze Right Side Chest", RHT_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_SIDE_CHEST, RG_LOSER_GREEN_RUPEE); + locationTable[RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_THIRD_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_THIRD_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 24137, 0x09, "MQ Maze Path Third Chest", RHT_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_THIRD_CHEST, RG_LOSER_GREEN_RUPEE); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_SECOND_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_SECOND_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 22986, 0x0A, "MQ Maze Path Second Chest", RHT_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_SECOND_CHEST, RG_RED_RUPEE); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_HIDDEN_CEILING_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_HIDDEN_CEILING_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 23211, 0x0B, "MQ Hidden Ceiling Chest", RHT_GERUDO_TRAINING_GROUND_MQ_HIDDEN_CEILING_CHEST, RG_PURPLE_RUPEE); - locationTable[RC_GERUDO_TRAINING_GROUND_MQ_UNDERWATER_SILVER_RUPEE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_UNDERWATER_SILVER_RUPEE_CHEST, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30643, 0x0D, "MQ Underwater Silver Rupee Chest", RHT_GERUDO_TRAINING_GROUND_MQ_UNDERWATER_SILVER_RUPEE_CHEST, RG_TREASURE_GAME_GREEN_RUPEE, true); + locationTable[RC_GERUDO_TRAINING_GROUND_MQ_UNDERWATER_SILVER_RUPEE_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_UNDERWATER_SILVER_RUPEE_CHEST, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, -30643, 0x0D, "MQ Underwater Silver Rupee Chest", RHT_GERUDO_TRAINING_GROUND_MQ_UNDERWATER_SILVER_RUPEE_CHEST, RG_LOSER_GREEN_RUPEE, true); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_HEAVY_BLOCK_CHEST] = Location::Chest(RC_GERUDO_TRAINING_GROUND_MQ_HEAVY_BLOCK_CHEST, RCQUEST_MQ, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_GERUDO_TRAINING_GROUND, 31394, 0x02, "MQ Heavy Block Chest", RHT_GERUDO_TRAINING_GROUND_MQ_HEAVY_BLOCK_CHEST, RG_PURPLE_RUPEE); // Ganon's Castle Shared @@ -743,9 +743,9 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_BOTW_OUTER_CAGE_GS] = Location::GSToken(RC_BOTW_OUTER_CAGE_GS, RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, 10241, 0x01, "GS Like Like Cage", RHT_BOTTOM_OF_THE_WELL_GS_LIKE_LIKE_CAGE); locationTable[RC_BOTW_CENTER_EAST_ROOM_GS] = Location::GSToken(RC_BOTW_CENTER_EAST_ROOM_GS, RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, 10242, 0x02, "GS East Inner Room", RHT_BOTTOM_OF_THE_WELL_GS_EAST_INNER_ROOM); locationTable[RC_BOTW_CENTER_WEST_ROOM_GS] = Location::GSToken(RC_BOTW_CENTER_WEST_ROOM_GS, RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, 10244, 0x04, "GS West Inner Room", RHT_BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT] = Location::GSToken(RC_BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT, RCQUEST_MQ, SCENE_BOTTOM_OF_THE_WELL, 10241, 0x01, "MQ GS Basement", RHT_BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM] = Location::GSToken(RC_BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM, RCQUEST_MQ, SCENE_BOTTOM_OF_THE_WELL, 10244, 0x04, "MQ GS Coffin Room", RHT_BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM] = Location::GSToken(RC_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM, RCQUEST_MQ, SCENE_BOTTOM_OF_THE_WELL, 10242, 0x02, "MQ GS West Inner Room", RHT_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM); + locationTable[RC_BOTW_MQ_B3_GS] = Location::GSToken(RC_BOTW_MQ_B3_GS, RCQUEST_MQ, SCENE_BOTTOM_OF_THE_WELL, 10241, 0x01, "MQ GS Basement", RHT_BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT); + locationTable[RC_BOTW_MQ_COFFIN_ROOM_GS] = Location::GSToken(RC_BOTW_MQ_COFFIN_ROOM_GS, RCQUEST_MQ, SCENE_BOTTOM_OF_THE_WELL, 10244, 0x04, "MQ GS Coffin Room", RHT_BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM); + locationTable[RC_BOTW_MQ_WEST_CENTER_ROOM_GS] = Location::GSToken(RC_BOTW_MQ_WEST_CENTER_ROOM_GS, RCQUEST_MQ, SCENE_BOTTOM_OF_THE_WELL, 10242, 0x02, "MQ GS West Inner Room", RHT_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM); // Ice Cavern locationTable[RC_ICE_CAVERN_GS_PUSH_BLOCK_ROOM] = Location::GSToken(RC_ICE_CAVERN_GS_PUSH_BLOCK_ROOM, RCQUEST_VANILLA, SCENE_ICE_CAVERN, 10497, 0x01, "GS Push Block Room", RHT_ICE_CAVERN_GS_PUSH_BLOCK_ROOM); locationTable[RC_ICE_CAVERN_GS_SPINNING_SCYTHE_ROOM] = Location::GSToken(RC_ICE_CAVERN_GS_SPINNING_SCYTHE_ROOM, RCQUEST_VANILLA, SCENE_ICE_CAVERN, 10498, 0x02, "GS Spinning Scythe Room", RHT_ICE_CAVERN_GS_SPINNING_SCYTHE_ROOM); @@ -1377,25 +1377,25 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_16] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_16, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(337, -300), "Ganons Tower Pot 16", "Ganons Castle Ganons Tower Pot 16", RHT_POT_GANONS_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_16)); locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_17] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_17, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(299, -340), "Ganons Tower Pot 17", "Ganons Castle Ganons Tower Pot 17", RHT_POT_GANONS_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_17)); locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_18] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_18, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(260, -380), "Ganons Tower Pot 18", "Ganons Castle Ganons Tower Pot 18", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_1, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-95, -673), "Basement Pot 1", "Bottom Of The Well Basement Pot 1", RHT_POT_BOTW, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_1)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_2, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(75, -598), "Basement Pot 2", "Bottom Of The Well Basement Pot 2", RHT_POT_BOTW, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_2)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_3, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(270, -1151), "Basement Pot 3", "Bottom Of The Well Basement Pot 3", RHT_POT_BOTW, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_3)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_4] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_4, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1254), "Basement Pot 4", "Bottom Of The Well Basement Pot 4", RHT_POT_BOTW, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_4)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_5] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_5, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(378, -1089), "Basement Pot 5", "Bottom Of The Well Basement Pot 5", RHT_POT_BOTW, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_5)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_6] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_6, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(665, -1252), "Basement Pot 6", "Bottom Of The Well Basement Pot 6", RHT_POT_BOTW, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_6)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_7] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_7, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1345), "Basement Pot 7", "Bottom Of The Well Basement Pot 7", RHT_POT_BOTW, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_7)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(562, -1304), "Basement Pot 8", "Bottom Of The Well Basement Pot 8", RHT_POT_BOTW, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_8)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(313, -1086), "Basement Pot 9", "Bottom Of The Well Basement Pot 9", RHT_POT_BOTW, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_9)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(618, -1254), "Basement Pot 10", "Bottom Of The Well Basement Pot 10", RHT_POT_BOTW, RG_DEKU_STICK_1, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_10)); - locationTable[RC_BOTW_B3_WEST_POT_GROUP_FRONT] = Location::Pot(RC_BOTW_B3_WEST_POT_GROUP_FRONT, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(257, -1099), "Basement Pot 11", "Bottom Of The Well Basement Pot 11", RHT_POT_BOTW, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_11)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(296, -1206), "Basement Pot 12", "Bottom Of The Well Basement Pot 12", RHT_POT_BOTW, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_12)); - locationTable[RC_BOTW_FAKE_WALL_SOUTH_POT] = Location::Pot(RC_BOTW_FAKE_WALL_SOUTH_POT, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-969, 55), "Fake Wall South Pot", RHT_BOTW_FAKE_WALL_SOUTH_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_FAKE_WALL_SOUTH_POT)); - locationTable[RC_BOTW_FAKE_WALL_CENTRAL_POT] = Location::Pot(RC_BOTW_FAKE_WALL_CENTRAL_POT, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-966, 9), "Fake Wall Central Pot", RHT_BOTW_FAKE_WALL_CENTRAL_POT, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT)); - locationTable[RC_BOTW_FAKE_WALL_NORTH_POT] = Location::Pot(RC_BOTW_FAKE_WALL_NORTH_POT, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-965, -32), "Fake Wall North Pot", RHT_BOTW_FAKE_WALL_NORTH_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_FAKE_WALL_NORTH_POT)); - locationTable[RC_BOTW_ENTRYWAY_WEST_POT] = Location::Pot(RC_BOTW_ENTRYWAY_WEST_POT, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-41, 389), "Entryway West Pot", RHT_BOTW_ENTRYWAY_EAST_POT, RG_DEKU_STICK_1, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_ENTRYWAY_EAST_POT)); - locationTable[RC_BOTW_ENTRYWAY_EAST_POT] = Location::Pot(RC_BOTW_ENTRYWAY_EAST_POT, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(36, 389), "Entryway East Pot", RHT_BOTW_ENTRYWAY_WEST_POT, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_ENTRYWAY_WEST_POT)); - locationTable[RC_BOTW_3_HIDDEN_PITS_POT] = Location::Pot(RC_BOTW_3_HIDDEN_PITS_POT, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(874, -1294), "Fire Keese Pot 1", "Bottom Of The Well Fire Keese Pot 1", RHT_POT_BOTW, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1)); - locationTable[RC_BOTW_SUNKEN_POT] = Location::Pot(RC_BOTW_SUNKEN_POT, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(3, -1641), "Sunken Pot", RHT_BOTW_SUNKEN_POT, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_SUNKEN_POT)); + locationTable[RC_BOTW_B3_WEST_CENTER_POT] = Location::Pot(RC_BOTW_B3_WEST_CENTER_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-95, -673), "B3 West Center Pot", RHT_BOTW_B3_WEST_CENTER_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_CENTER_POT)); + locationTable[RC_BOTW_B3_EAST_CENTER_POT] = Location::Pot(RC_BOTW_B3_EAST_CENTER_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(75, -598), "B3 East Center Pot", RHT_BOTW_B3_EAST_CENTER_POT, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_CENTER_POT)); + locationTable[RC_BOTW_B3_WEST_V_NORTHMOST_POT] = Location::Pot(RC_BOTW_B3_WEST_V_NORTHMOST_POT, RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(296, -1206), "B3 West V Northmost Pot", "BotW B3 West V Northmost Pot", RHT_BOTW_B3_WEST_V_NORTHMOST_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_NORTHMOST_POT)); + locationTable[RC_BOTW_B3_WEST_V_MID_NORTH_POT] = Location::Pot(RC_BOTW_B3_WEST_V_MID_NORTH_POT, RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(270, -1151), "B3 West V Mid North Pot", "BotW B3 West V Middle North Pot", RHT_BOTW_B3_WEST_V_MID_NORTH_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_MID_NORTH_POT)); + locationTable[RC_BOTW_B3_WEST_V_MIDDLE_POT] = Location::Pot(RC_BOTW_B3_WEST_V_MIDDLE_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(257, -1099), "B3 West V Middle Pot", "BotW B3 West V Middle Pot", RHT_BOTW_B3_WEST_V_MIDDLE_POT, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_MIDDLE_POT)); + locationTable[RC_BOTW_B3_WEST_V_MID_SOUTH_POT] = Location::Pot(RC_BOTW_B3_WEST_V_MID_SOUTH_POT, RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(313, -1086), "B3 West V Mid South Pot", "BotW B3 West V Middle South Pot", RHT_BOTW_B3_WEST_V_MID_SOUTH_POT, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_MID_SOUTH_POT)); + locationTable[RC_BOTW_B3_WEST_V_SOUTHMOST_POT] = Location::Pot(RC_BOTW_B3_WEST_V_SOUTHMOST_POT, RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(378, -1089), "B3 West V Southmost Pot", "BotW B3 West V Southmost Pot", RHT_BOTW_B3_WEST_V_SOUTHMOST_POT, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_SOUTHMOST_POT)); + locationTable[RC_BOTW_B3_EAST_V_NORTHMOST_POT] = Location::Pot(RC_BOTW_B3_EAST_V_NORTHMOST_POT, RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1345), "B3 East V Northmost Pot", "BotW B3 East V Northmost Pot", RHT_BOTW_B3_EAST_V_NORTHMOST_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_NORTHMOST_POT)); + locationTable[RC_BOTW_B3_EAST_V_MID_NORTH_POT] = Location::Pot(RC_BOTW_B3_EAST_V_MID_NORTH_POT, RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(562, -1304), "B3 East V Mid North Pot", "BotW B3 East V Middle North Pot", RHT_BOTW_B3_EAST_V_MID_NORTH_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_MID_NORTH_POT)); + locationTable[RC_BOTW_B3_EAST_V_MIDDLE_POT] = Location::Pot(RC_BOTW_B3_EAST_V_MIDDLE_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1254), "B3 East V Middle Pot", "BotW B3 East V Middle Pot", RHT_BOTW_B3_EAST_V_MIDDLE_POT, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_MIDDLE_POT)); + locationTable[RC_BOTW_B3_EAST_V_MID_SOUTH_POT] = Location::Pot(RC_BOTW_B3_EAST_V_MID_SOUTH_POT, RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(618, -1254), "B3 East V Mid South Pot", "BotW B3 East V Middle South Pot", RHT_BOTW_B3_EAST_V_MID_SOUTH_POT, RG_DEKU_STICK_1, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_MID_SOUTH_POT)); + locationTable[RC_BOTW_B3_EAST_V_SOUTHMOST_POT] = Location::Pot(RC_BOTW_B3_EAST_V_SOUTHMOST_POT, RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(665, -1252), "B3 East V Southmost Pot", "BotW B3 East V Southmost Pot", RHT_BOTW_B3_EAST_V_SOUTHMOST_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_SOUTHMOST_POT)); + locationTable[RC_BOTW_FAKE_WALL_SOUTH_POT] = Location::Pot(RC_BOTW_FAKE_WALL_SOUTH_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-969, 55) , "Fake Wall South Pot" , RHT_BOTW_FAKE_WALL_SOUTH_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_FAKE_WALL_SOUTH_POT)); + locationTable[RC_BOTW_FAKE_WALL_CENTRAL_POT] = Location::Pot(RC_BOTW_FAKE_WALL_CENTRAL_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-966, 9) , "Fake Wall Central Pot", RHT_BOTW_FAKE_WALL_CENTRAL_POT, RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT)); + locationTable[RC_BOTW_FAKE_WALL_NORTH_POT] = Location::Pot(RC_BOTW_FAKE_WALL_NORTH_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-965, -32) , "Fake Wall North Pot" , RHT_BOTW_FAKE_WALL_NORTH_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_FAKE_WALL_NORTH_POT)); + locationTable[RC_BOTW_ENTRYWAY_WEST_POT] = Location::Pot(RC_BOTW_ENTRYWAY_WEST_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-41, 389) , "Entryway West Pot" , RHT_BOTW_ENTRYWAY_EAST_POT , RG_DEKU_STICK_1 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_ENTRYWAY_EAST_POT)); + locationTable[RC_BOTW_ENTRYWAY_EAST_POT] = Location::Pot(RC_BOTW_ENTRYWAY_EAST_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(36, 389) , "Entryway East Pot" , RHT_BOTW_ENTRYWAY_WEST_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_ENTRYWAY_WEST_POT)); + locationTable[RC_BOTW_3_HIDDEN_PITS_POT] = Location::Pot(RC_BOTW_3_HIDDEN_PITS_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(874, -1294), "3 Hidden Pits Pot 1" , RHT_BOTW_3_HIDDEN_PITS_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_3_HIDDEN_PITS_POT)); + locationTable[RC_BOTW_SUNKEN_POT] = Location::Pot(RC_BOTW_SUNKEN_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(3, -1641) , "Sunken Pot" , RHT_BOTW_SUNKEN_POT , RG_BOMBS_5 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_SUNKEN_POT)); locationTable[RC_ICE_CAVERN_HALL_POT_1] = Location::Pot(RC_ICE_CAVERN_HALL_POT_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-206, 449), "Hall Pot 1", "Ice Cavern Hall Pot 1", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HALL_POT_1)); locationTable[RC_ICE_CAVERN_HALL_POT_2] = Location::Pot(RC_ICE_CAVERN_HALL_POT_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-203, 492), "Hall Pot 2", "Ice Cavern Hall Pot 2", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HALL_POT_2)); locationTable[RC_ICE_CAVERN_SPINNING_BLADE_POT_1] = Location::Pot(RC_ICE_CAVERN_SPINNING_BLADE_POT_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(433, -732), "Spinning Blade Pot 1", "Ice Cavern Spinning Blade Pot 1", RHT_POT_ICE_CAVERN, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_1)); @@ -1496,13 +1496,13 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4303, -2657), "MQ Spike Baricade Pot", "Shadow Temple MQ Spike Baricade Pot", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT)); locationTable[RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4575, -811), "MQ Dead Hand Pot 1", "Shadow Temple MQ Dead Hand Pot 1", RHT_POT_SHADOW_TEMPLE, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1)); locationTable[RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4036, -811), "MQ Dead Hand Pot 2", "Shadow Temple MQ Dead Hand Pot 2", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(339, -377), "MQ Inner Lobby Pot 1", "Bottom Of The Well MQ Inner Lobby Pot 1", RHT_POT_BOTW, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(416, -377), "MQ Inner Lobby Pot 2", "Bottom Of The Well MQ Inner Lobby Pot 2", RHT_POT_BOTW, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(269, -376), "MQ Inner Lobby Pot 3", "Bottom Of The Well MQ Inner Lobby Pot 3", RHT_POT_BOTW, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(421, -174), "MQ Outer Lobby Pot", "Bottom Of The Well MQ Outer Lobby Pot", RHT_POT_BOTW, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_1, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(288, -1240), "MQ East Inner Pot 1", "Bottom Of The Well MQ East Inner Room Pot 1", RHT_POT_BOTW, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_1)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_2, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(438, -1234), "MQ East Inner Pot 2", "Bottom Of The Well MQ East Inner Room Pot 2", RHT_POT_BOTW, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_2)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_3, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(444, -1114), "MQ East Inner Pot 3", "Bottom Of The Well MQ East Inner Room Pot 3", RHT_POT_BOTW, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_3)); + locationTable[RC_BOTW_MQ_WOODEN_X_ROOM_WEST_POT] = Location::Pot(RC_BOTW_MQ_WOODEN_X_ROOM_WEST_POT , RCQUEST_MQ, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(269, -376) , "MQ Wooden X West Pot" , RHT_BOTW_MQ_WOODEN_X_ROOM_WEST_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_WOODEN_X_ROOM_WEST_POT)); + locationTable[RC_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT] = Location::Pot(RC_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT, RCQUEST_MQ, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(339, -377) , "MQ Wooden X Center Pot" , RHT_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT)); + locationTable[RC_BOTW_MQ_WOODEN_X_ROOM_EAST_POT] = Location::Pot(RC_BOTW_MQ_WOODEN_X_ROOM_EAST_POT , RCQUEST_MQ, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(416, -377) , "MQ Wooden X East Pot" , RHT_BOTW_MQ_WOODEN_X_ROOM_EAST_POT , RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_WOODEN_X_ROOM_EAST_POT)); + locationTable[RC_BOTW_MQ_CAGED_POT] = Location::Pot(RC_BOTW_MQ_CAGED_POT , RCQUEST_MQ, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(421, -174) , "MQ Caged Pot" , RHT_BOTW_MQ_CAGED_POT , RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_CAGED_POT)); + locationTable[RC_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT] = Location::Pot(RC_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT, RCQUEST_MQ, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(444, -1114), "MQ East Inner Room Near Pot", RHT_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT)); + locationTable[RC_BOTW_MQ_EAST_INNER_ROOM_MID_POT] = Location::Pot(RC_BOTW_MQ_EAST_INNER_ROOM_MID_POT , RCQUEST_MQ, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(438, -1234), "MQ East Inner Room Mid Pot" , RHT_BOTW_MQ_EAST_INNER_ROOM_MID_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_EAST_INNER_ROOM_MID_POT)); + locationTable[RC_BOTW_MQ_EAST_INNER_ROOM_FAR_POT] = Location::Pot(RC_BOTW_MQ_EAST_INNER_ROOM_FAR_POT , RCQUEST_MQ, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(288, -1240), "MQ East Inner Room Far Pot" , RHT_BOTW_MQ_EAST_INNER_ROOM_FAR_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_EAST_INNER_ROOM_FAR_POT)); locationTable[RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-357, 957), "MQ Entrance Pot 1", "Fire Temple MQ Entrance Pot 1", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1)); locationTable[RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_2] = Location::Pot(RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(356, 959), "MQ Entrance Pot 2", "Fire Temple MQ Entrance Pot 2", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2)); locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(187, -1449), "MQ Before Mini Boss Pot 1", "Fire Temple MQ Before Mini Boss Pot 1", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1)); @@ -1808,7 +1808,7 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY] = Location::Fairy(RC_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY, RCQUEST_VANILLA,RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(0x1000, 54), "Beamos Song of Storms Fairy", "Beamos Song of Storms Fairy", RHT_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY)); locationTable[RC_SHADOW_TEMPLE_PIT_STORM_FAIRY] = Location::Fairy(RC_SHADOW_TEMPLE_PIT_STORM_FAIRY, RCQUEST_VANILLA,RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(0x1000, 3339), "Pit Room Song of Storms Fairy", "Pit Room Song of Storms Fairy", RHT_SHADOW_TEMPLE_PIT_STORM_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_PIT_STORM_FAIRY)); locationTable[RC_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY] = Location::Fairy(RC_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY, RCQUEST_VANILLA,RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(0x1000, -127), "Wind Hint Sun's Song Fairy", "Wind Hint Sun's Song Fairy", RHT_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY)); - locationTable[RC_BOTW_B3_SUN_FAIRY] = Location::Fairy(RC_BOTW_B3_SUN_FAIRY, RCQUEST_VANILLA,RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -1531), "Basement Sun's Song Fairy", "Basement Sun's Song Fairy", RHT_BOTTOM_OF_THE_WELL_BASEMENT_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_SUN_FAIRY)); + locationTable[RC_BOTW_B3_SUN_FAIRY] = Location::Fairy(RC_BOTW_B3_SUN_FAIRY, RCQUEST_VANILLA,RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -1531), "B3 Sun Fairy" , RHT_BOTW_B3_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_SUN_FAIRY)); locationTable[RC_ICE_CAVERN_ENTRANCE_STORMS_FAIRY] = Location::Fairy(RC_ICE_CAVERN_ENTRANCE_STORMS_FAIRY, RCQUEST_VANILLA,RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(0x1000, 1186), "Entrance Song of Storms Fairy", "Ice Cavern Entrance Song of Storms Fairy", RHT_ICE_CAVERN_ENTRANCE_STORMS_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_ENTRANCE_STORMS_FAIRY)); locationTable[RC_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY] = Location::Fairy(RC_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY, RCQUEST_VANILLA,RCAREA_GERUDO_TRAINING_GROUND,SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(0x1000, -445), "Entrance Song of Storms Fairy", "GTG Entrance Song of Storms Fairy", RHT_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY)); locationTable[RC_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY] = Location::Fairy(RC_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY, RCQUEST_VANILLA,RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(0x1000, 587), "Spirit Trial Beamos Sun's Song Fairy", "Spirit Trial Beamos Sun's Song Fairy", RHT_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY)); @@ -1822,8 +1822,8 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_SHADOW_TEMPLE_MQ_BEAMOS_STORM_FAIRY] = Location::Fairy(RC_SHADOW_TEMPLE_MQ_BEAMOS_STORM_FAIRY, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(0x1000, 55), "MQ Beamos Song of Storms Fairy", "MQ Beamos Song of Storms Fairy", RHT_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_BEAMOS_STORM_FAIRY)); locationTable[RC_SHADOW_TEMPLE_MQ_PIT_STORM_FAIRY] = Location::Fairy(RC_SHADOW_TEMPLE_MQ_PIT_STORM_FAIRY, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(0x1000, 3342), "MQ Pit Room Song of Storms Fairy", "MQ Pit Room Song of Storms Fairy", RHT_SHADOW_TEMPLE_PIT_STORM_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_PIT_STORM_FAIRY)); locationTable[RC_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY] = Location::Fairy(RC_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(0x1000, -127), "MQ Wind Hint Sun's Song Fairy", "MQ Wind Hint Sun's Song Fairy", RHT_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY] = Location::Fairy(RC_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -437), "MQ East Cell Sun's Song Fairy", "MQ East Cell Sun's Song Fairy", RHT_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY] = Location::Fairy(RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -1458), "MQ Basement Sun's Song Fairy", "MQ Basement Sun's Song Fairy", RHT_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY)); + locationTable[RC_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY] = Location::Fairy(RC_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY, RCQUEST_MQ, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -437) , "MQ Wooden X Room Sun Fairy", RHT_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY)); + locationTable[RC_BOTW_MQ_B3_SUN_FAIRY] = Location::Fairy(RC_BOTW_MQ_B3_SUN_FAIRY , RCQUEST_MQ, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -1458), "MQ B3 Sun Fairy" , RHT_BOTW_MQ_B3_SUN_FAIRY , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_B3_SUN_FAIRY)); // Freestanding Hearts and Rupees locationTable[RC_KF_BOULDER_RUPEE_2] = Location::Collectable(RC_KF_BOULDER_RUPEE_2, RCQUEST_BOTH, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_KOKIRI_FOREST, TWO_ACTOR_PARAMS(-712, 1857), "Boulder Maze Second Rupee", RHT_KOKIRI_FOREST_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_BOULDER_RUPEE_2)); @@ -1981,13 +1981,13 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_SPIRIT_TEMPLE_ADULT_CLIMB_LEFT_HEART] = Location::Collectable(RC_SPIRIT_TEMPLE_ADULT_CLIMB_LEFT_HEART, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(708, 227), "Adult Climb Left Heart", RHT_SPIRIT_TEMPLE_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_ADULT_CLIMB_LEFT_HEART)); locationTable[RC_SPIRIT_TEMPLE_ADULT_CLIMB_RIGHT_HEART] = Location::Collectable(RC_SPIRIT_TEMPLE_ADULT_CLIMB_RIGHT_HEART, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(661, 227), "Adult Climb Right Heart", RHT_SPIRIT_TEMPLE_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_ADULT_CLIMB_RIGHT_HEART)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_LEFT_RUPEE] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_LEFT_RUPEE, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-67, -748), "Basement Platform Left Rupee", RHT_BOTTOM_OF_THE_WELL_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_LEFT_RUPEE)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_BACK_LEFT_RUPEE] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_BACK_LEFT_RUPEE, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-19, -828), "Basement Platform Back Left Rupee", RHT_BOTTOM_OF_THE_WELL_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_BACK_LEFT_RUPEE)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_MIDDLE_RUPEE] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_MIDDLE_RUPEE, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(47, -805), "Basement Platform Middle Rupee", RHT_BOTTOM_OF_THE_WELL_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_MIDDLE_RUPEE)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_BACK_RIGHT_RUPEE] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_BACK_RIGHT_RUPEE, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(94, -762), "Basement Platform Back Right Rupee", RHT_BOTTOM_OF_THE_WELL_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_BACK_RIGHT_RUPEE)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_RIGHT_RUPEE] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_RIGHT_RUPEE, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-85, -710), "Basement Platform Right Rupee", RHT_BOTTOM_OF_THE_WELL_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_RIGHT_RUPEE)); - locationTable[RC_BOTW_SOUTHEAST_COFFIN_HEART] = Location::Collectable(RC_BOTW_SOUTHEAST_COFFIN_HEART, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-1947, -625), "Coffin Room Front Left Heart", RHT_BOTTOM_OF_THE_WELL_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_COFFIN_ROOM_FRONT_LEFT_HEART)); - locationTable[RC_BOTW_OPEN_COFFIN_HEART] = Location::Collectable(RC_BOTW_OPEN_COFFIN_HEART, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-2144, -859), "Coffin Room Middle Right Heart", RHT_BOTTOM_OF_THE_WELL_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_COFFIN_ROOM_MIDDLE_RIGHT_HEART)); + locationTable[RC_BOTW_B3_PLATFORM_NORTH_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_NORTH_RUPEE, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(47, -805), "B3 Platform North Rupee", RHT_BOTW_B3_PLATFORM_NORTH_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_PLATFORM_NORTH_RUPEE)); + locationTable[RC_BOTW_B3_PLATFORM_NORTHWEST_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_NORTHWEST_RUPEE, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-19, -828), "B3 Platform Northwest Rupee", RHT_BOTW_B3_PLATFORM_NORTHWEST_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_RHT_BOTW_B3_PLATFORM_NORTHWEST_RUPEE)); + locationTable[RC_BOTW_B3_PLATFORM_NORTHEAST_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_NORTHEAST_RUPEE, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(94, -762), "B3 Platform Northeast Rupee", RHT_BOTW_B3_PLATFORM_NORTHEAST_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_RHT_BOTW_B3_PLATFORM_NORTHEAST_RUPEE)); + locationTable[RC_BOTW_B3_PLATFORM_WEST_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_WEST_RUPEE, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-67, -748), "B3 Platform West Rupee", RHT_BOTW_B3_PLATFORM_WEST_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_RHT_BOTW_B3_PLATFORM_WEST_RUPEE)); + locationTable[RC_BOTW_B3_PLATFORM_EAST_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_EAST_RUPEE, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(85, -710), "B3 Platform East Rupee", RHT_BOTW_B3_PLATFORM_EAST_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_RHT_BOTW_B3_PLATFORM_EAST_RUPEE)); + locationTable[RC_BOTW_SOUTHEAST_COFFIN_HEART] = Location::Collectable(RC_BOTW_SOUTHEAST_COFFIN_HEART, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-1947, -625), "Southeast Coffin Left Heart", RHT_BOTW_SOUTHEAST_COFFIN_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_SOUTHEAST_COFFIN_HEART)); + locationTable[RC_BOTW_OPEN_COFFIN_HEART] = Location::Collectable(RC_BOTW_OPEN_COFFIN_HEART, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-2144, -859), "Open Coffin Heart", RHT_BOTW_OPEN_COFFIN_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_OPEN_COFFIN_HEART)); locationTable[RC_ICE_CAVERN_LOBBY_RUPEE] = Location::Collectable(RC_ICE_CAVERN_LOBBY_RUPEE, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-105, 854), "Lobby Rupee", RHT_ICE_CAVERN_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_LOBBY_RUPEE)); locationTable[RC_ICE_CAVERN_MAP_ROOM_LEFT_HEART] = Location::Collectable(RC_ICE_CAVERN_MAP_ROOM_LEFT_HEART, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1171, -2258), "Map Room Left Heart", RHT_ICE_CAVERN_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MAP_ROOM_LEFT_HEART)); @@ -2045,13 +2045,13 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_LEFT_HEART] = Location::Collectable(RC_SPIRIT_TEMPLE_MQ_CHILD_LEFT_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1151, -535), "MQ Child Early Left Heart", RHT_SPIRIT_TEMPLE_MQ_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_LEFT_HEART)); locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_RIGHT_HEART] = Location::Collectable(RC_SPIRIT_TEMPLE_MQ_CHILD_RIGHT_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-976, -535), "MQ Child Early Right Heart", RHT_SPIRIT_TEMPLE_MQ_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_RIGHT_HEART)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM_FRONT_RIGHT_HEART] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM_FRONT_RIGHT_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-1945, -863), "MQ Coffin Room Front Right Invisible Heart", RHT_BOTTOM_OF_THE_WELL_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM_FRONT_RIGHT_HEART)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_BOMB_LEFT_HEART] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_MQ_BOMB_LEFT_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-83, -350), "MQ Bomb Alcove Left Heart", RHT_BOTTOM_OF_THE_WELL_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_BOMB_LEFT_HEART)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_BOMB_RIGHT_HEART] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_MQ_BOMB_RIGHT_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-83, -274), "MQ Bomb Alcove Right Heart", RHT_BOTTOM_OF_THE_WELL_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_BOMB_RIGHT_HEART)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM_MIDDLE_LEFT_HEART] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM_MIDDLE_LEFT_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-2143, -621), "MQ Coffin Room Middle Left Invisible Heart", RHT_BOTTOM_OF_THE_WELL_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM_MIDDLE_LEFT_HEART)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_FRONT_HEART] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_FRONT_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(1083, -1174), "MQ Basement Hallway Front Heart", RHT_BOTTOM_OF_THE_WELL_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_FRONT_HEART)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_LEFT_HEART] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_LEFT_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(1044, -1223), "MQ Basement Hallway Left Heart", RHT_BOTTOM_OF_THE_WELL_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_LEFT_HEART)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_RIGHT_HEART] = Location::Collectable(RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_RIGHT_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(1114, -1223), "MQ Basement Hallway Right Heart", RHT_BOTTOM_OF_THE_WELL_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_RIGHT_HEART)); + locationTable[RC_BOTW_MQ_RUBBLE_NORTH_HEART] = Location::Collectable(RC_BOTW_MQ_RUBBLE_NORTH_HEART , RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-83, -350) , "MQ Rubble North Heart" , RHT_BOTW_MQ_RUBBLE_NORTH_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_RUBBLE_NORTH_HEART)); + locationTable[RC_BOTW_MQ_RUBBLE_SOUTH_HEART] = Location::Collectable(RC_BOTW_MQ_RUBBLE_SOUTH_HEART , RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-83, -274) , "MQ Rubble South Heart" , RHT_BOTW_MQ_RUBBLE_SOUTH_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_RUBBLE_SOUTH_HEART)); + locationTable[RC_BOTW_MQ_NORTHEAST_COFFIN_HEART] = Location::Collectable(RC_BOTW_MQ_NORTHEAST_COFFIN_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-1945, -863), "MQ Northeast Coffin heart", RHT_BOTW_MQ_NORTHEAST_COFFIN_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_NORTHEAST_COFFIN_HEART)); + locationTable[RC_BOTW_MQ_SOUTH_COFFIN_HEART] = Location::Collectable(RC_BOTW_MQ_SOUTH_COFFIN_HEART , RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-2143, -621), "MQ South Coffin Heart" , RHT_BOTW_MQ_SOUTH_COFFIN_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_SOUTH_COFFIN_HEART)); + locationTable[RC_BOTW_MQ_B3_SOUTH_HEART] = Location::Collectable(RC_BOTW_MQ_B3_SOUTH_HEART , RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(1083, -1174), "MQ B3 South Heart" , RHT_BOTW_MQ_B3_SOUTH_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MQ_B3_SOUTH_HEART)); + locationTable[RC_BOTW_MQ_B3_NORTHWEST_HEART] = Location::Collectable(RC_BOTW_MQ_B3_NORTHWEST_HEART , RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(1044, -1223), "MQ B3 Northwest Heart" , RHT_BOTW_MQ_B3_NORTHWEST_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MQ_B3_NORTHWEST_HEART)); + locationTable[RC_BOTW_MQ_B3_NORTHEAST_HEART] = Location::Collectable(RC_BOTW_MQ_B3_NORTHEAST_HEART , RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(1114, -1223), "MQ B3 Notheast Heart" , RHT_BOTW_MQ_B3_NORTHEAST_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MQ_B3_NORTHEAST_HEART)); locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_HEART] = Location::Collectable(RC_GANONS_CASTLE_MQ_WATER_TRIAL_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1743, -528), "MQ Water Trial Heart", RHT_GANONS_CASTLE_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_HEART)); locationTable[RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART] = Location::Collectable(RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2506, -1096), "MQ Light Trial Right Heart", RHT_GANONS_CASTLE_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART)); diff --git a/soh/soh/Enhancements/randomizer/logic.cpp b/soh/soh/Enhancements/randomizer/logic.cpp index 2b92484b3a8..842cb853562 100644 --- a/soh/soh/Enhancements/randomizer/logic.cpp +++ b/soh/soh/Enhancements/randomizer/logic.cpp @@ -160,7 +160,7 @@ namespace Rando { case RG_WATER_TEMPLE_MAP: case RG_SPIRIT_TEMPLE_MAP: case RG_SHADOW_TEMPLE_MAP: - case RG_BOTTOM_OF_THE_WELL_MAP: + case RG_BOTW_MAP: case RG_ICE_CAVERN_MAP: return CheckDungeonItem(DUNGEON_MAP, RandoGetToDungeonScene.at(itemName)); // Compasses @@ -172,7 +172,7 @@ namespace Rando { case RG_WATER_TEMPLE_COMPASS: case RG_SPIRIT_TEMPLE_COMPASS: case RG_SHADOW_TEMPLE_COMPASS: - case RG_BOTTOM_OF_THE_WELL_COMPASS: + case RG_BOTW_COMPASS: case RG_ICE_CAVERN_COMPASS: return CheckDungeonItem(DUNGEON_COMPASS, RandoGetToDungeonScene.at(itemName)); // Wallets @@ -1289,8 +1289,8 @@ namespace Rando { { RG_WATER_TEMPLE_SMALL_KEY, SCENE_WATER_TEMPLE }, { RG_SPIRIT_TEMPLE_SMALL_KEY, SCENE_SPIRIT_TEMPLE }, { RG_SHADOW_TEMPLE_SMALL_KEY, SCENE_SHADOW_TEMPLE }, - { RG_BOTTOM_OF_THE_WELL_SMALL_KEY, SCENE_BOTTOM_OF_THE_WELL }, - { RG_GERUDO_TRAINING_GROUND_SMALL_KEY, SCENE_GERUDO_TRAINING_GROUND }, + { RG_BOTW_SMALL_KEY, SCENE_BOTTOM_OF_THE_WELL }, + { RG_GTG_SMALL_KEY, SCENE_GERUDO_TRAINING_GROUND }, { RG_GERUDO_FORTRESS_SMALL_KEY, SCENE_THIEVES_HIDEOUT }, { RG_GANONS_CASTLE_SMALL_KEY, SCENE_INSIDE_GANONS_CASTLE }, { RG_FOREST_TEMPLE_KEY_RING, SCENE_FOREST_TEMPLE }, @@ -1298,8 +1298,8 @@ namespace Rando { { RG_WATER_TEMPLE_KEY_RING, SCENE_WATER_TEMPLE }, { RG_SPIRIT_TEMPLE_KEY_RING, SCENE_SPIRIT_TEMPLE }, { RG_SHADOW_TEMPLE_KEY_RING, SCENE_SHADOW_TEMPLE }, - { RG_BOTTOM_OF_THE_WELL_KEY_RING, SCENE_BOTTOM_OF_THE_WELL }, - { RG_GERUDO_TRAINING_GROUND_KEY_RING, SCENE_GERUDO_TRAINING_GROUND }, + { RG_BOTW_KEY_RING, SCENE_BOTTOM_OF_THE_WELL }, + { RG_GTG_KEY_RING, SCENE_GERUDO_TRAINING_GROUND }, { RG_GERUDO_FORTRESS_KEY_RING, SCENE_THIEVES_HIDEOUT }, { RG_GANONS_CASTLE_KEY_RING, SCENE_INSIDE_GANONS_CASTLE }, { RG_FOREST_TEMPLE_BOSS_KEY, SCENE_FOREST_TEMPLE }, @@ -1316,7 +1316,7 @@ namespace Rando { { RG_WATER_TEMPLE_MAP, SCENE_WATER_TEMPLE }, { RG_SPIRIT_TEMPLE_MAP, SCENE_SPIRIT_TEMPLE }, { RG_SHADOW_TEMPLE_MAP, SCENE_SHADOW_TEMPLE }, - { RG_BOTTOM_OF_THE_WELL_MAP, SCENE_BOTTOM_OF_THE_WELL }, + { RG_BOTW_MAP, SCENE_BOTTOM_OF_THE_WELL }, { RG_ICE_CAVERN_MAP, SCENE_ICE_CAVERN }, { RG_DEKU_TREE_COMPASS, SCENE_DEKU_TREE }, { RG_DODONGOS_CAVERN_COMPASS, SCENE_DODONGOS_CAVERN }, @@ -1326,7 +1326,7 @@ namespace Rando { { RG_WATER_TEMPLE_COMPASS, SCENE_WATER_TEMPLE }, { RG_SPIRIT_TEMPLE_COMPASS, SCENE_SPIRIT_TEMPLE }, { RG_SHADOW_TEMPLE_COMPASS, SCENE_SHADOW_TEMPLE }, - { RG_BOTTOM_OF_THE_WELL_COMPASS, SCENE_BOTTOM_OF_THE_WELL }, + { RG_BOTW_COMPASS, SCENE_BOTTOM_OF_THE_WELL }, { RG_ICE_CAVERN_COMPASS, SCENE_ICE_CAVERN }, { RG_TREASURE_GAME_SMALL_KEY, SCENE_TREASURE_BOX_SHOP } }; @@ -2177,7 +2177,7 @@ namespace Rando { LinksCow = false; DeliverLetter = false; ClearMQDCUpperLobbyRocks = false; - LoweredWaterInsideBotw = false; + LoweredBotwWater = false; OpenedWestRoomMQBotw = false; OpenedMiddleHoleMQBotw = false; BrokeDeku1FWeb = false; diff --git a/soh/soh/Enhancements/randomizer/logic.h b/soh/soh/Enhancements/randomizer/logic.h index ec4b2989939..582f3eca09f 100644 --- a/soh/soh/Enhancements/randomizer/logic.h +++ b/soh/soh/Enhancements/randomizer/logic.h @@ -135,7 +135,7 @@ class Logic { bool LinksCow = false; bool DeliverLetter = false; bool ClearMQDCUpperLobbyRocks = false; - bool LoweredWaterInsideBotw = false; + bool LoweredBotwWater = false; bool OpenedWestRoomMQBotw = false; bool OpenedMiddleHoleMQBotw = false; bool BrokeDeku1FWeb = false; diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index 0ded5ae42d9..ea1236d86c8 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -682,7 +682,7 @@ ItemObtainability Randomizer::GetItemObtainabilityFromRandomizerGet(RandomizerGe return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_SPIRIT_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; case RG_SHADOW_TEMPLE_MAP: return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_SHADOW_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; - case RG_BOTTOM_OF_THE_WELL_MAP: + case RG_BOTW_MAP: return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_BOTTOM_OF_THE_WELL) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; case RG_ICE_CAVERN_MAP: return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_ICE_CAVERN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; @@ -702,7 +702,7 @@ ItemObtainability Randomizer::GetItemObtainabilityFromRandomizerGet(RandomizerGe return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_SPIRIT_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; case RG_SHADOW_TEMPLE_COMPASS: return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_SHADOW_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; - case RG_BOTTOM_OF_THE_WELL_COMPASS: + case RG_BOTW_COMPASS: return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_BOTTOM_OF_THE_WELL) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; case RG_ICE_CAVERN_COMPASS: return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_ICE_CAVERN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; @@ -728,9 +728,9 @@ ItemObtainability Randomizer::GetItemObtainabilityFromRandomizerGet(RandomizerGe return gSaveContext.inventory.dungeonKeys[SCENE_SPIRIT_TEMPLE] < SPIRIT_TEMPLE_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; case RG_SHADOW_TEMPLE_SMALL_KEY: return gSaveContext.inventory.dungeonKeys[SCENE_SHADOW_TEMPLE] < SHADOW_TEMPLE_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; - case RG_BOTTOM_OF_THE_WELL_SMALL_KEY: + case RG_BOTW_SMALL_KEY: return gSaveContext.inventory.dungeonKeys[SCENE_BOTTOM_OF_THE_WELL] < BOTTOM_OF_THE_WELL_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; - case RG_GERUDO_TRAINING_GROUND_SMALL_KEY: + case RG_GTG_SMALL_KEY: return gSaveContext.inventory.dungeonKeys[SCENE_GERUDO_TRAINING_GROUND] < GERUDO_TRAINING_GROUND_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; case RG_GERUDO_FORTRESS_SMALL_KEY: return gSaveContext.inventory.dungeonKeys[SCENE_THIEVES_HIDEOUT] < GERUDO_FORTRESS_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; @@ -782,7 +782,7 @@ ItemObtainability Randomizer::GetItemObtainabilityFromRandomizerGet(RandomizerGe case RG_HEART_CONTAINER: case RG_ICE_TRAP: case RG_TREASURE_GAME_HEART: - case RG_TREASURE_GAME_GREEN_RUPEE: + case RG_LOSER_GREEN_RUPEE: case RG_BUY_HEART: case RG_TRIFORCE_PIECE: default: @@ -1321,25 +1321,25 @@ std::map rcToRandomizerInf = { { RC_GANONS_CASTLE_GANONS_TOWER_POT_16, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_16 }, { RC_GANONS_CASTLE_GANONS_TOWER_POT_17, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_17 }, { RC_GANONS_CASTLE_GANONS_TOWER_POT_18, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18 }, - { RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_1, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_1 }, - { RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_2, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_2 }, - { RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_3, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_3 }, - { RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_4, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_4 }, - { RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_5, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_5 }, - { RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_6, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_6 }, - { RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_7, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_7 }, - { RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_8 }, - { RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_9 }, - { RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_10 }, - { RC_BOTW_B3_WEST_POT_GROUP_FRONT, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_11 }, - { RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12, RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_12 }, - { RC_BOTW_FAKE_WALL_SOUTH_POT, RAND_INF_BOTW_FAKE_WALL_SOUTH_POT }, - { RC_BOTW_FAKE_WALL_CENTRAL_POT, RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT }, - { RC_BOTW_FAKE_WALL_NORTH_POT, RAND_INF_BOTW_FAKE_WALL_NORTH_POT }, - { RC_BOTW_ENTRYWAY_WEST_POT, RAND_INF_BOTW_ENTRYWAY_EAST_POT }, - { RC_BOTW_ENTRYWAY_EAST_POT, RAND_INF_BOTW_ENTRYWAY_WEST_POT }, - { RC_BOTW_3_HIDDEN_PITS_POT, RAND_INF_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1 }, - { RC_BOTW_SUNKEN_POT, RAND_INF_BOTW_SUNKEN_POT }, + { RC_BOTW_B3_WEST_CENTER_POT, RAND_INF_BOTW_B3_WEST_CENTER_POT }, + { RC_BOTW_B3_EAST_CENTER_POT, RAND_INF_BOTW_B3_EAST_CENTER_POT }, + { RC_BOTW_B3_WEST_V_MID_NORTH_POT, RAND_INF_BOTW_B3_WEST_V_MID_NORTH_POT }, + { RC_BOTW_B3_EAST_V_MIDDLE_POT, RAND_INF_BOTW_B3_EAST_V_MIDDLE_POT }, + { RC_BOTW_B3_WEST_V_SOUTHMOST_POT, RAND_INF_BOTW_B3_WEST_V_SOUTHMOST_POT }, + { RC_BOTW_B3_EAST_V_SOUTHMOST_POT, RAND_INF_BOTW_B3_EAST_V_SOUTHMOST_POT }, + { RC_BOTW_B3_EAST_V_NORTHMOST_POT, RAND_INF_BOTW_B3_EAST_V_NORTHMOST_POT }, + { RC_BOTW_B3_EAST_V_MID_NORTH_POT, RAND_INF_BOTW_B3_EAST_V_MID_NORTH_POT }, + { RC_BOTW_B3_WEST_V_MID_SOUTH_POT, RAND_INF_BOTW_B3_WEST_V_MID_SOUTH_POT }, + { RC_BOTW_B3_EAST_V_MID_SOUTH_POT, RAND_INF_BOTW_B3_EAST_V_MID_SOUTH_POT }, + { RC_BOTW_B3_WEST_V_MIDDLE_POT, RAND_INF_BOTW_B3_WEST_V_MIDDLE_POT }, + { RC_BOTW_B3_WEST_V_NORTHMOST_POT, RAND_INF_BOTW_B3_WEST_V_NORTHMOST_POT }, + { RC_BOTW_FAKE_WALL_SOUTH_POT, RAND_INF_BOTW_FAKE_WALL_SOUTH_POT }, + { RC_BOTW_FAKE_WALL_CENTRAL_POT, RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT }, + { RC_BOTW_FAKE_WALL_NORTH_POT, RAND_INF_BOTW_FAKE_WALL_NORTH_POT }, + { RC_BOTW_ENTRYWAY_WEST_POT, RAND_INF_BOTW_ENTRYWAY_EAST_POT }, + { RC_BOTW_ENTRYWAY_EAST_POT, RAND_INF_BOTW_ENTRYWAY_WEST_POT }, + { RC_BOTW_3_HIDDEN_PITS_POT, RAND_INF_BOTW_3_HIDDEN_PITS_POT }, + { RC_BOTW_SUNKEN_POT, RAND_INF_BOTW_SUNKEN_POT }, { RC_ICE_CAVERN_HALL_POT_1, RAND_INF_ICE_CAVERN_HALL_POT_1 }, { RC_ICE_CAVERN_HALL_POT_2, RAND_INF_ICE_CAVERN_HALL_POT_2 }, { RC_ICE_CAVERN_SPINNING_BLADE_POT_1, RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_1 }, @@ -1438,13 +1438,13 @@ std::map rcToRandomizerInf = { { RC_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT, RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT }, { RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1, RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1 }, { RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2, RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2 }, - { RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1, RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1 }, - { RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2, RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2 }, - { RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3, RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3 }, - { RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT, RAND_INF_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT }, - { RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_1, RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_1 }, - { RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_2, RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_2 }, - { RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_3, RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_3 }, + { RC_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT, RAND_INF_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT }, + { RC_BOTW_MQ_WOODEN_X_ROOM_EAST_POT, RAND_INF_BOTW_MQ_WOODEN_X_ROOM_EAST_POT }, + { RC_BOTW_MQ_WOODEN_X_ROOM_WEST_POT, RAND_INF_BOTW_MQ_WOODEN_X_ROOM_WEST_POT }, + { RC_BOTW_MQ_CAGED_POT, RAND_INF_BOTW_MQ_CAGED_POT }, + { RC_BOTW_MQ_EAST_INNER_ROOM_FAR_POT, RAND_INF_BOTW_MQ_EAST_INNER_ROOM_FAR_POT }, + { RC_BOTW_MQ_EAST_INNER_ROOM_MID_POT, RAND_INF_BOTW_MQ_EAST_INNER_ROOM_MID_POT }, + { RC_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT, RAND_INF_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT }, { RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_1, RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1 }, { RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_2, RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2 }, { RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1, RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1 }, @@ -2680,7 +2680,7 @@ CustomMessage Randomizer::GetMapGetItemMessageWithHint(GetItemEntry itemEntry) { case RG_SHADOW_TEMPLE_MAP: sceneNum = SCENE_SHADOW_TEMPLE; break; - case RG_BOTTOM_OF_THE_WELL_MAP: + case RG_BOTW_MAP: sceneNum = SCENE_BOTTOM_OF_THE_WELL; break; case RG_ICE_CAVERN_MAP: @@ -3408,11 +3408,11 @@ void Randomizer::CreateCustomMessages() { "You found a %pShadow Temple &%wSmall Key!", "Du erhältst einen %rKleinen&Schlüssel%w für den %pSchattentempel%w!", "Vous obtenez une %rPetite Clé %w&du %pTemple de l'Ombre%w!"), - GIMESSAGE(RG_BOTTOM_OF_THE_WELL_SMALL_KEY, ITEM_KEY_SMALL, + GIMESSAGE(RG_BOTW_SMALL_KEY, ITEM_KEY_SMALL, "You found a %pBottom of the &Well %wSmall Key!", "Du erhältst einen %rKleinen&Schlüssel%w für den %pGrund des Brunnens%w!", "Vous obtenez une %rPetite Clé %w&du %pPuits%w!"), - GIMESSAGE(RG_GERUDO_TRAINING_GROUND_SMALL_KEY, ITEM_KEY_SMALL, + GIMESSAGE(RG_GTG_SMALL_KEY, ITEM_KEY_SMALL, "You found a %yGerudo Training &Grounds %wSmall Key!", "Du erhältst einen %rKleinen&Schlüssel%w für die %yGerudo-Trainingsarena%w!", "Vous obtenez une %rPetite Clé %w&du %yGymnase Gerudo%w!"), @@ -3445,11 +3445,11 @@ void Randomizer::CreateCustomMessages() { "You found a %pShadow Temple &%wKeyring!", "Du erhältst ein %rSchlüsselbund%w&für den %pSchattentempel%w!", "Vous obtenez un trousseau de&clés du %pTemple de l'Ombre%w!"), - GIMESSAGE(RG_BOTTOM_OF_THE_WELL_KEY_RING, ITEM_KEY_SMALL, + GIMESSAGE(RG_BOTW_KEY_RING, ITEM_KEY_SMALL, "You found a %pBottom of the &Well %wKeyring!", "Du erhältst ein %rSchlüsselbund%w&für den %pGrund des Brunnens%w!", "Vous obtenez un trousseau de&clés du %pPuits%w!"), - GIMESSAGE(RG_GERUDO_TRAINING_GROUND_KEY_RING, ITEM_KEY_SMALL, + GIMESSAGE(RG_GTG_KEY_RING, ITEM_KEY_SMALL, "You found a %yGerudo Training &Grounds %wKeyring!", "Du erhältst ein %rSchlüsselbund%w&für die %yGerudo-Trainingsarena%w!", "Vous obtenez un trousseau de&clés du %yGymnase Gerudo%w!"), @@ -3515,7 +3515,7 @@ void Randomizer::CreateCustomMessages() { "You found the %pShadow Temple &%wMap![[typeHint]]", "Du erhältst die %rKarte%w für den&%pSchattentempel%w![[typeHint]]", "Vous obtenez la %rCarte %wdu &%pTemple de l'Ombre%w![[typeHint]]"), - GIMESSAGE(RG_BOTTOM_OF_THE_WELL_MAP, ITEM_DUNGEON_MAP, + GIMESSAGE(RG_BOTW_MAP, ITEM_DUNGEON_MAP, "You found the %pBottom of the &Well %wMap![[typeHint]]", "Du erhältst die %rKarte%w für den&%pGrund des Brunnens%w![[typeHint]]", "Vous obtenez la %rCarte %wdu &%pPuits%w![[typeHint]]"), @@ -3556,7 +3556,7 @@ void Randomizer::CreateCustomMessages() { "You found the %pShadow Temple &%wCompass!", "Du erhältst den %rKompaß%w für den&%pSchattentempel%w!", "Vous obtenez la %rBoussole %wdu &%pTemple de l'Ombre%w!"), - GIMESSAGE(RG_BOTTOM_OF_THE_WELL_COMPASS, ITEM_COMPASS, + GIMESSAGE(RG_BOTW_COMPASS, ITEM_COMPASS, "You found the %pBottom of the &Well %wCompass!", "Du erhältst den %rKompaß%w für den&%pGrund des Brunnens%w!", "Vous obtenez la %rBoussole %wdu &%pPuits%w!"), @@ -3886,10 +3886,10 @@ extern "C" u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) { mapIndex = SCENE_SHADOW_TEMPLE; numOfKeysOnKeyring = SHADOW_TEMPLE_SMALL_KEY_MAX; break; - case RG_BOTTOM_OF_THE_WELL_MAP: - case RG_BOTTOM_OF_THE_WELL_COMPASS: - case RG_BOTTOM_OF_THE_WELL_SMALL_KEY: - case RG_BOTTOM_OF_THE_WELL_KEY_RING: + case RG_BOTW_MAP: + case RG_BOTW_COMPASS: + case RG_BOTW_SMALL_KEY: + case RG_BOTW_KEY_RING: mapIndex = SCENE_BOTTOM_OF_THE_WELL; numOfKeysOnKeyring = BOTTOM_OF_THE_WELL_SMALL_KEY_MAX; break; @@ -3900,8 +3900,8 @@ extern "C" u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) { case RG_GANONS_CASTLE_BOSS_KEY: mapIndex = SCENE_GANONS_TOWER; break; - case RG_GERUDO_TRAINING_GROUND_SMALL_KEY: - case RG_GERUDO_TRAINING_GROUND_KEY_RING: + case RG_GTG_SMALL_KEY: + case RG_GTG_KEY_RING: mapIndex = SCENE_GERUDO_TRAINING_GROUND; numOfKeysOnKeyring = GERUDO_TRAINING_GROUND_SMALL_KEY_MAX; break; diff --git a/soh/soh/Enhancements/randomizer/randomizerTypes.h b/soh/soh/Enhancements/randomizer/randomizerTypes.h index f71ef6eac3c..645c1d0f9b3 100644 --- a/soh/soh/Enhancements/randomizer/randomizerTypes.h +++ b/soh/soh/Enhancements/randomizer/randomizerTypes.h @@ -119,7 +119,7 @@ typedef enum { LOGIC_MAP_WATER_TEMPLE, LOGIC_MAP_SPIRIT_TEMPLE, LOGIC_MAP_SHADOW_TEMPLE, - LOGIC_MAP_BOTTOM_OF_THE_WELL, + LOGIC_MAP_BOTW, LOGIC_MAP_ICE_CAVERN, LOGIC_COMPASS_DEKU_TREE, LOGIC_COMPASS_DODONGOS_CAVERN, @@ -129,7 +129,7 @@ typedef enum { LOGIC_COMPASS_WATER_TEMPLE, LOGIC_COMPASS_SPIRIT_TEMPLE, LOGIC_COMPASS_SHADOW_TEMPLE, - LOGIC_COMPASS_BOTTOM_OF_THE_WELL, + LOGIC_COMPASS_BOTW, LOGIC_COMPASS_ICE_CAVERN, LOGIC_BOSS_KEY_FOREST_TEMPLE, LOGIC_BOSS_KEY_FIRE_TEMPLE, @@ -142,8 +142,8 @@ typedef enum { LOGIC_WATER_TEMPLE_KEYS, LOGIC_SPIRIT_TEMPLE_KEYS, LOGIC_SHADOW_TEMPLE_KEYS, - LOGIC_BOTTOM_OF_THE_WELL_KEYS, - LOGIC_GERUDO_TRAINING_GROUND_KEYS, + LOGIC_BOTW_KEYS, + LOGIC_GTG_KEYS, LOGIC_GERUDO_FORTRESS_KEYS, LOGIC_GANONS_CASTLE_KEYS, LOGIC_TREASURE_GAME_KEYS, @@ -303,7 +303,7 @@ typedef enum { RCAREA_WATER_TEMPLE, RCAREA_SPIRIT_TEMPLE, RCAREA_SHADOW_TEMPLE, - RCAREA_BOTTOM_OF_THE_WELL, + RCAREA_BOTW, RCAREA_ICE_CAVERN, RCAREA_GERUDO_TRAINING_GROUND, RCAREA_GANONS_CASTLE, @@ -892,7 +892,7 @@ typedef enum { RR_SHADOW_TEMPLE_BOSS_ENTRYWAY, RR_SHADOW_TEMPLE_BOSS_ROOM, - RR_BOTW_PERIMETER, + RR_BOTW_LOBBY, RR_BOTW_REQUIRES_LENS, RR_BOTW_SOUTHWEST_ROOM, RR_BOTW_3_HIDDEN_PITS_ROOM, @@ -904,14 +904,14 @@ typedef enum { RR_BOTW_B3_EAST_BOMB_FLOWERS, RR_BOTW_B3_PLATFORM, - RR_BOTW_MQ_PERIMETER, - RR_BOTTOM_OF_THE_WELL_MQ_WEST_ROOM_SWITCH, - RR_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM, - RR_BOTTOM_OF_THE_WELL_MQ_LOCKED_CAGE, - RR_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_ROOM, - RR_BOTTOM_OF_THE_WELL_MQ_MIDDLE, - RR_BOTTOM_OF_THE_WELL_MQ_BASEMENT, - RR_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SWITCH_PLATFORM, + RR_BOTW_MQ_LOBBY, + RR_BOTW_MQ_WEST_SWITCH, + RR_BOTW_MQ_COFFIN_ROOM, + RR_BOTW_MQ_OUTER_CAGE, + RR_BOTW_MQ_DEAD_HAND_ROOM, + RR_BOTW_MQ_WOODEN_X_ROOM, + RR_BOTW_MQ_B3, + RR_BOTW_MQ_B3_SWITCH, RR_ICE_CAVERN_BEGINNING, RR_ICE_CAVERN_MAIN, @@ -1452,8 +1452,8 @@ typedef enum { RC_BOTW_NORTH_RUBBLE_CHEST, RC_BOTW_WEST_SUNKEN_CHEST, RC_BOTW_COFFIN_KEY, - RC_BOTW_B1_CENTRAL_WEST_CHEST, - RC_BOTW_B1_CENTRAL_EAST_CHEST, + RC_BOTW_CENTRAL_WEST_CHEST, + RC_BOTW_CENTRAL_EAST_CHEST, RC_BOTW_EAST_FAKE_WALL_CHEST, RC_BOTW_3_HIDDEN_PITS_CHEST, RC_BOTW_OUTER_CAGE_CHEST, @@ -1464,14 +1464,14 @@ typedef enum { RC_BOTW_CENTER_WEST_ROOM_GS, RC_BOTW_CENTER_EAST_ROOM_GS, RC_BOTW_OUTER_CAGE_GS, - RC_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST, - RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY, - RC_BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST, - RC_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_FREESTANDING_KEY, - RC_BOTTOM_OF_THE_WELL_MQ_LENS_OF_TRUTH_CHEST, - RC_BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM, - RC_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM, - RC_BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT, + RC_BOTW_MQ_WOODEN_X_CHEST, + RC_BOTW_MQ_EAST_INNER_ROOM_KEY, + RC_BOTW_MQ_DEAD_HAND_CHEST, + RC_BOTW_MQ_DEAD_HAND_RUBBLE_KEY, + RC_BOTW_MQ_REDEAD_CHEST, + RC_BOTW_MQ_COFFIN_ROOM_GS, + RC_BOTW_MQ_WEST_CENTER_ROOM_GS, + RC_BOTW_MQ_B3_GS, RC_FOREST_TEMPLE_FIRST_ROOM_CHEST, RC_FOREST_TEMPLE_FIRST_STALFOS_CHEST, RC_FOREST_TEMPLE_RAISED_ISLAND_COURTYARD_CHEST, @@ -1951,18 +1951,18 @@ typedef enum { RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_3, RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_4, RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_5, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_1, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_2, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_3, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_4, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_5, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_6, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_7, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10, - RC_BOTW_B3_WEST_POT_GROUP_FRONT, - RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12, + RC_BOTW_B3_WEST_CENTER_POT, + RC_BOTW_B3_EAST_CENTER_POT, + RC_BOTW_B3_WEST_V_NORTHMOST_POT, + RC_BOTW_B3_WEST_V_MID_NORTH_POT, + RC_BOTW_B3_WEST_V_MIDDLE_POT, + RC_BOTW_B3_WEST_V_MID_SOUTH_POT, + RC_BOTW_B3_WEST_V_SOUTHMOST_POT, + RC_BOTW_B3_EAST_V_NORTHMOST_POT, + RC_BOTW_B3_EAST_V_MID_NORTH_POT, + RC_BOTW_B3_EAST_V_MIDDLE_POT, + RC_BOTW_B3_EAST_V_MID_SOUTH_POT, + RC_BOTW_B3_EAST_V_SOUTHMOST_POT, RC_BOTW_FAKE_WALL_SOUTH_POT, RC_BOTW_FAKE_WALL_CENTRAL_POT, RC_BOTW_FAKE_WALL_NORTH_POT, @@ -2147,13 +2147,13 @@ typedef enum { RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_1, RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_2, RC_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_POT_1, - RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1, - RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2, - RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3, - RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT, - RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_1, - RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_2, - RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_3, + RC_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT, + RC_BOTW_MQ_WOODEN_X_ROOM_EAST_POT, + RC_BOTW_MQ_WOODEN_X_ROOM_WEST_POT, + RC_BOTW_MQ_CAGED_POT, + RC_BOTW_MQ_EAST_INNER_ROOM_FAR_POT, + RC_BOTW_MQ_EAST_INNER_ROOM_MID_POT, + RC_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT, RC_FOREST_TEMPLE_MQ_LOBBY_POT_1, RC_FOREST_TEMPLE_MQ_LOBBY_POT_2, RC_FOREST_TEMPLE_MQ_LOBBY_POT_3, @@ -2548,11 +2548,11 @@ typedef enum { RC_SHADOW_TEMPLE_AFTER_SHIP_LOWER_HEART, RC_SPIRIT_TEMPLE_ADULT_CLIMB_LEFT_HEART, RC_SPIRIT_TEMPLE_ADULT_CLIMB_RIGHT_HEART, - RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_LEFT_RUPEE, - RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_BACK_LEFT_RUPEE, - RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_MIDDLE_RUPEE, - RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_BACK_RIGHT_RUPEE, - RC_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_RIGHT_RUPEE, + RC_BOTW_B3_PLATFORM_NORTH_RUPEE, + RC_BOTW_B3_PLATFORM_NORTHWEST_RUPEE, + RC_BOTW_B3_PLATFORM_NORTHEAST_RUPEE, + RC_BOTW_B3_PLATFORM_WEST_RUPEE, + RC_BOTW_B3_PLATFORM_EAST_RUPEE, RC_BOTW_SOUTHEAST_COFFIN_HEART, RC_BOTW_OPEN_COFFIN_HEART, RC_ICE_CAVERN_LOBBY_RUPEE, @@ -2601,13 +2601,13 @@ typedef enum { RC_SHADOW_TEMPLE_MQ_AFTER_SHIP_LOWER_HEART, RC_SPIRIT_TEMPLE_MQ_CHILD_LEFT_HEART, RC_SPIRIT_TEMPLE_MQ_CHILD_RIGHT_HEART, - RC_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM_FRONT_RIGHT_HEART, - RC_BOTTOM_OF_THE_WELL_MQ_BOMB_LEFT_HEART, - RC_BOTTOM_OF_THE_WELL_MQ_BOMB_RIGHT_HEART, - RC_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM_MIDDLE_LEFT_HEART, - RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_FRONT_HEART, - RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_LEFT_HEART, - RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_RIGHT_HEART, + RC_BOTW_MQ_NORTHEAST_COFFIN_HEART, + RC_BOTW_MQ_RUBBLE_NORTH_HEART, + RC_BOTW_MQ_RUBBLE_SOUTH_HEART, + RC_BOTW_MQ_SOUTH_COFFIN_HEART, + RC_BOTW_MQ_B3_SOUTH_HEART, + RC_BOTW_MQ_B3_NORTHWEST_HEART, + RC_BOTW_MQ_B3_NORTHEAST_HEART, RC_GANONS_CASTLE_MQ_WATER_TRIAL_HEART, RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART, RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART, @@ -2819,8 +2819,8 @@ typedef enum { RC_SHADOW_TEMPLE_MQ_BEAMOS_STORM_FAIRY, RC_SHADOW_TEMPLE_MQ_PIT_STORM_FAIRY, RC_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY, - RC_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY, - RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY, + RC_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY, + RC_BOTW_MQ_B3_SUN_FAIRY, RC_MAX } RandomizerCheck; @@ -3176,7 +3176,7 @@ typedef enum { RG_WATER_TEMPLE_MAP, RG_SPIRIT_TEMPLE_MAP, RG_SHADOW_TEMPLE_MAP, - RG_BOTTOM_OF_THE_WELL_MAP, + RG_BOTW_MAP, RG_ICE_CAVERN_MAP, RG_DEKU_TREE_COMPASS, RG_DODONGOS_CAVERN_COMPASS, @@ -3186,7 +3186,7 @@ typedef enum { RG_WATER_TEMPLE_COMPASS, RG_SPIRIT_TEMPLE_COMPASS, RG_SHADOW_TEMPLE_COMPASS, - RG_BOTTOM_OF_THE_WELL_COMPASS, + RG_BOTW_COMPASS, RG_ICE_CAVERN_COMPASS, RG_FOREST_TEMPLE_BOSS_KEY, RG_FIRE_TEMPLE_BOSS_KEY, @@ -3199,8 +3199,8 @@ typedef enum { RG_WATER_TEMPLE_SMALL_KEY, RG_SPIRIT_TEMPLE_SMALL_KEY, RG_SHADOW_TEMPLE_SMALL_KEY, - RG_BOTTOM_OF_THE_WELL_SMALL_KEY, - RG_GERUDO_TRAINING_GROUND_SMALL_KEY, + RG_BOTW_SMALL_KEY, + RG_GTG_SMALL_KEY, RG_GERUDO_FORTRESS_SMALL_KEY, RG_GANONS_CASTLE_SMALL_KEY, RG_TREASURE_GAME_SMALL_KEY, @@ -3209,8 +3209,8 @@ typedef enum { RG_WATER_TEMPLE_KEY_RING, RG_SPIRIT_TEMPLE_KEY_RING, RG_SHADOW_TEMPLE_KEY_RING, - RG_BOTTOM_OF_THE_WELL_KEY_RING, - RG_GERUDO_TRAINING_GROUND_KEY_RING, + RG_BOTW_KEY_RING, + RG_GTG_KEY_RING, RG_GERUDO_FORTRESS_KEY_RING, RG_GANONS_CASTLE_KEY_RING, RG_KOKIRI_EMERALD, @@ -3251,7 +3251,7 @@ typedef enum { RG_GREEN_POTION_REFILL, RG_BLUE_POTION_REFILL, RG_TREASURE_GAME_HEART, - RG_TREASURE_GAME_GREEN_RUPEE, + RG_LOSER_GREEN_RUPEE, RG_BUY_DEKU_NUTS_5, RG_BUY_ARROWS_30, RG_BUY_ARROWS_50, @@ -4045,22 +4045,22 @@ typedef enum { RHT_BOTW_WEST_SUNKEN_CHEST, RHT_BOTW_COFFIN_KEY, RHT_BOTW_CENTRAL_WEST_CHEST, - RHT_BOTW_SKULLTULA_CHEST, + RHT_BOTW_CENTRAL_EAST_CHEST, RHT_BOTW_EAST_FAKE_WALL_CHEST, - RHT_BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST, - RHT_BOTTOM_OF_THE_WELL_LIKE_LIKE_CHEST, - RHT_BOTTOM_OF_THE_WELL_MAP_CHEST, + RHT_BOTW_3_HIDDEN_PITS_CHEST, + RHT_BOTW_OUTER_CAGE_CHEST, + RHT_BOTW_B3_CHEST, RHT_BOTW_SOUTH_SUNKEN_CHEST, - RHT_BOTTOM_OF_THE_WELL_INVISIBLE_CHEST, - RHT_BOTTOM_OF_THE_WELL_LENS_OF_TRUTH_CHEST, + RHT_BOTW_INVISIBLE_CHEST, + RHT_BOTW_DEAD_HAND_CHEST, RHT_BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM, RHT_BOTTOM_OF_THE_WELL_GS_EAST_INNER_ROOM, RHT_BOTTOM_OF_THE_WELL_GS_LIKE_LIKE_CAGE, - RHT_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST, - RHT_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY, - RHT_BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST, - RHT_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_FREESTANDING_KEY, - RHT_BOTTOM_OF_THE_WELL_MQ_LENS_OF_TRUTH_CHEST, + RHT_BOTW_MQ_WOODEN_X_CHEST, + RHT_BOTW_MQ_EAST_INNER_ROOM_KEY, + RHT_BOTW_MQ_DEAD_HAND_CHEST, + RHT_BOTW_MQ_DEAD_HAND_RUBBLE_KEY, + RHT_BOTW_MQ_REDEAD_CHEST, RHT_BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM, RHT_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM, RHT_BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT, @@ -4450,7 +4450,7 @@ typedef enum { RHT_WATER_TEMPLE_MAP, RHT_SPIRIT_TEMPLE_MAP, RHT_SHADOW_TEMPLE_MAP, - RHT_BOTTOM_OF_THE_WELL_MAP, + RHT_BOTW_MAP, RHT_ICE_CAVERN_MAP, RHT_DEKU_TREE_COMPASS, RHT_DODONGOS_CAVERN_COMPASS, @@ -4460,7 +4460,7 @@ typedef enum { RHT_WATER_TEMPLE_COMPASS, RHT_SPIRIT_TEMPLE_COMPASS, RHT_SHADOW_TEMPLE_COMPASS, - RHT_BOTTOM_OF_THE_WELL_COMPASS, + RHT_BOTW_COMPASS, RHT_ICE_CAVERN_COMPASS, RHT_FOREST_TEMPLE_BOSS_KEY, RHT_FIRE_TEMPLE_BOSS_KEY, @@ -4473,8 +4473,8 @@ typedef enum { RHT_WATER_TEMPLE_SMALL_KEY, RHT_SPIRIT_TEMPLE_SMALL_KEY, RHT_SHADOW_TEMPLE_SMALL_KEY, - RHT_BOTTOM_OF_THE_WELL_SMALL_KEY, - RHT_GERUDO_TRAINING_GROUND_SMALL_KEY, + RHT_BOTW_SMALL_KEY, + RHT_GTG_SMALL_KEY, RHT_GERUDO_FORTRESS_SMALL_KEY, RHT_GANONS_CASTLE_SMALL_KEY, RHT_TREASURE_GAME_SMALL_KEY, @@ -4483,8 +4483,8 @@ typedef enum { RHT_WATER_TEMPLE_KEY_RING, RHT_SPIRIT_TEMPLE_KEY_RING, RHT_SHADOW_TEMPLE_KEY_RING, - RHT_BOTTOM_OF_THE_WELL_KEY_RING, - RHT_GERUDO_TRAINING_GROUND_KEY_RING, + RHT_BOTW_KEY_RING, + RHT_GTG_KEY_RING, RHT_GERUDO_FORTRESS_KEY_RING, RHT_GANONS_CASTLE_KEY_RING, RHT_KOKIRI_EMERALD, @@ -4524,7 +4524,7 @@ typedef enum { RHT_GREEN_POTION_REFILL, RHT_BLUE_POTION_REFILL, RHT_TREASURE_GAME_HEART, - RHT_TREASURE_GAME_GREEN_RUPEE, + RHT_LOSER_GREEN_RUPEE, RHT_BUY_DEKU_NUTS_5, RHT_BUY_ARROWS_30, RHT_BUY_ARROWS_50, @@ -4841,13 +4841,32 @@ typedef enum { RHT_POT_SHADOW_TEMPLE, RHT_POT_SPIRIT_TEMPLE, RHT_POT_GANONS_CASTLE, - RHT_POT_BOTW, + RHT_BOTW_3_HIDDEN_PITS_POT, RHT_BOTW_ENTRYWAY_EAST_POT, RHT_BOTW_ENTRYWAY_WEST_POT, RHT_BOTW_SUNKEN_POT, RHT_BOTW_FAKE_WALL_SOUTH_POT, RHT_BOTW_FAKE_WALL_CENTRAL_POT, RHT_BOTW_FAKE_WALL_NORTH_POT, + RHT_BOTW_B3_WEST_CENTER_POT, + RHT_BOTW_B3_EAST_CENTER_POT, + RHT_BOTW_B3_WEST_V_NORTHMOST_POT, + RHT_BOTW_B3_WEST_V_MID_NORTH_POT, + RHT_BOTW_B3_WEST_V_MIDDLE_POT, + RHT_BOTW_B3_WEST_V_MID_SOUTH_POT, + RHT_BOTW_B3_WEST_V_SOUTHMOST_POT, + RHT_BOTW_B3_EAST_V_NORTHMOST_POT, + RHT_BOTW_B3_EAST_V_MID_NORTH_POT, + RHT_BOTW_B3_EAST_V_MIDDLE_POT, + RHT_BOTW_B3_EAST_V_MID_SOUTH_POT, + RHT_BOTW_B3_EAST_V_SOUTHMOST_POT, + RHT_BOTW_MQ_WOODEN_X_ROOM_WEST_POT, + RHT_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT, + RHT_BOTW_MQ_WOODEN_X_ROOM_EAST_POT, + RHT_BOTW_MQ_CAGED_POT, + RHT_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT, + RHT_BOTW_MQ_EAST_INNER_ROOM_MID_POT, + RHT_BOTW_MQ_EAST_INNER_ROOM_FAR_POT, RHT_POT_ICE_CAVERN, // Ganon Line RHT_GANON_JOKE01, @@ -4892,8 +4911,20 @@ typedef enum { RHT_SHADOW_TEMPLE_HEART, RHT_SPIRIT_TEMPLE_HEART, RHT_SPIRIT_TEMPLE_MQ_HEART, - RHT_BOTTOM_OF_THE_WELL_HEART, - RHT_BOTTOM_OF_THE_WELL_RUPEE, + RHT_BOTW_SOUTHEAST_COFFIN_HEART, + RHT_BOTW_OPEN_COFFIN_HEART, + RHT_BOTW_MQ_B3_SOUTH_HEART, + RHT_BOTW_MQ_B3_NORTHWEST_HEART, + RHT_BOTW_MQ_B3_NORTHEAST_HEART, + RHT_BOTW_B3_PLATFORM_NORTH_RUPEE, + RHT_BOTW_B3_PLATFORM_NORTHWEST_RUPEE, + RHT_BOTW_B3_PLATFORM_NORTHEAST_RUPEE, + RHT_BOTW_B3_PLATFORM_WEST_RUPEE, + RHT_BOTW_B3_PLATFORM_EAST_RUPEE, + RHT_BOTW_MQ_RUBBLE_NORTH_HEART, + RHT_BOTW_MQ_RUBBLE_SOUTH_HEART, + RHT_BOTW_MQ_NORTHEAST_COFFIN_HEART, + RHT_BOTW_MQ_SOUTH_COFFIN_HEART, RHT_ICE_CAVERN_HEART, RHT_ICE_CAVERN_RUPEE, RHT_GERUDO_TRAINING_GROUNDS_HEART, @@ -4998,7 +5029,7 @@ typedef enum { RHT_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY, RHT_SHADOW_TEMPLE_PIT_STORM_FAIRY, RHT_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY, - RHT_BOTTOM_OF_THE_WELL_BASEMENT_SUN_FAIRY, + RHT_BOTW_B3_SUN_FAIRY, RHT_ICE_CAVERN_ENTRANCE_STORMS_FAIRY, RHT_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY, RHT_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY, @@ -5008,8 +5039,8 @@ typedef enum { RHT_WATER_TEMPLE_MQ_DARK_LINK_LEFT_STORM_FAIRY, RHT_WATER_TEMPLE_MQ_DARK_LINK_RIGHT_SUN_FAIRY, RHT_SPIRIT_TEMPLE_MQ_DINALFOS_ROOM_SUN_FAIRY, - RHT_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY, - RHT_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY, + RHT_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY, + RHT_BOTW_MQ_B3_SUN_FAIRY, // MAX RHT_MAX } RandomizerHintTextKey; diff --git a/soh/soh/Enhancements/randomizer/randomizer_check_objects.cpp b/soh/soh/Enhancements/randomizer/randomizer_check_objects.cpp index b8d435fd8dc..602babeb570 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_check_objects.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer_check_objects.cpp @@ -38,7 +38,7 @@ std::map rcAreaNames = { { RCAREA_WATER_TEMPLE, "Water Temple" }, { RCAREA_SPIRIT_TEMPLE, "Spirit Temple" }, { RCAREA_SHADOW_TEMPLE, "Shadow Temple" }, - { RCAREA_BOTTOM_OF_THE_WELL, "Bottom of the Well" }, + { RCAREA_BOTW, "Bottom of the Well" }, { RCAREA_ICE_CAVERN, "Ice Cavern" }, { RCAREA_GERUDO_TRAINING_GROUND, "Gerudo Training Ground" }, { RCAREA_GANONS_CASTLE, "Ganon's Castle" }, @@ -62,7 +62,7 @@ std::map> RandomizerCheckObjec bool RandomizerCheckObjects::AreaIsDungeon(RandomizerCheckArea area) { return area == RCAREA_GANONS_CASTLE || area == RCAREA_GERUDO_TRAINING_GROUND || area == RCAREA_ICE_CAVERN || - area == RCAREA_BOTTOM_OF_THE_WELL || area == RCAREA_SHADOW_TEMPLE || area == RCAREA_SPIRIT_TEMPLE || + area == RCAREA_BOTW || area == RCAREA_SHADOW_TEMPLE || area == RCAREA_SPIRIT_TEMPLE || area == RCAREA_WATER_TEMPLE || area == RCAREA_FIRE_TEMPLE || area == RCAREA_FOREST_TEMPLE || area == RCAREA_JABU_JABUS_BELLY || area == RCAREA_DODONGOS_CAVERN || area == RCAREA_DEKU_TREE; } diff --git a/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp b/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp index 0af0b0128f9..6b1715c0051 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp @@ -100,7 +100,7 @@ std::map DungeonRCAreasBySceneID = { {SCENE_WATER_TEMPLE, RCAREA_WATER_TEMPLE}, {SCENE_SHADOW_TEMPLE, RCAREA_SHADOW_TEMPLE}, {SCENE_SPIRIT_TEMPLE, RCAREA_SPIRIT_TEMPLE}, - {SCENE_BOTTOM_OF_THE_WELL, RCAREA_BOTTOM_OF_THE_WELL}, + {SCENE_BOTTOM_OF_THE_WELL, RCAREA_BOTW}, {SCENE_ICE_CAVERN, RCAREA_ICE_CAVERN}, {SCENE_GERUDO_TRAINING_GROUND, RCAREA_GERUDO_TRAINING_GROUND}, {SCENE_INSIDE_GANONS_CASTLE, RCAREA_GANONS_CASTLE}, @@ -173,7 +173,7 @@ SceneID DungeonSceneLookupByArea(RandomizerCheckArea area) { case RCAREA_WATER_TEMPLE: return SCENE_WATER_TEMPLE; case RCAREA_SPIRIT_TEMPLE: return SCENE_SPIRIT_TEMPLE; case RCAREA_SHADOW_TEMPLE: return SCENE_SHADOW_TEMPLE; - case RCAREA_BOTTOM_OF_THE_WELL: return SCENE_BOTTOM_OF_THE_WELL; + case RCAREA_BOTW: return SCENE_BOTTOM_OF_THE_WELL; case RCAREA_ICE_CAVERN: return SCENE_ICE_CAVERN; case RCAREA_GERUDO_TRAINING_GROUND: return SCENE_GERUDO_TRAINING_GROUND; case RCAREA_GANONS_CASTLE: return SCENE_INSIDE_GANONS_CASTLE; @@ -271,7 +271,7 @@ std::map MapRGtoRandomizerCheckArea = { { RG_WATER_TEMPLE_MAP, RCAREA_WATER_TEMPLE }, { RG_SPIRIT_TEMPLE_MAP, RCAREA_SPIRIT_TEMPLE }, { RG_SHADOW_TEMPLE_MAP, RCAREA_SHADOW_TEMPLE }, - { RG_BOTTOM_OF_THE_WELL_MAP, RCAREA_BOTTOM_OF_THE_WELL }, + { RG_BOTW_MAP, RCAREA_BOTW }, { RG_ICE_CAVERN_MAP, RCAREA_ICE_CAVERN } }; diff --git a/soh/soh/Enhancements/randomizer/randomizer_inf.h b/soh/soh/Enhancements/randomizer/randomizer_inf.h index 75b80ad0de8..3199ed680cc 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_inf.h +++ b/soh/soh/Enhancements/randomizer/randomizer_inf.h @@ -517,24 +517,24 @@ typedef enum { RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_16, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_17, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18, - RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_1, - RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_2, - RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_3, - RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_4, - RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_5, - RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_6, - RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_7, - RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_8, - RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_9, - RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_10, - RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_11, - RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_12, + RAND_INF_BOTW_B3_WEST_CENTER_POT, + RAND_INF_BOTW_B3_EAST_CENTER_POT, + RAND_INF_BOTW_B3_WEST_V_NORTHMOST_POT, + RAND_INF_BOTW_B3_WEST_V_MID_NORTH_POT, + RAND_INF_BOTW_B3_WEST_V_MIDDLE_POT, + RAND_INF_BOTW_B3_WEST_V_MID_SOUTH_POT, + RAND_INF_BOTW_B3_WEST_V_SOUTHMOST_POT, + RAND_INF_BOTW_B3_EAST_V_NORTHMOST_POT, + RAND_INF_BOTW_B3_EAST_V_MID_NORTH_POT, + RAND_INF_BOTW_B3_EAST_V_MIDDLE_POT, + RAND_INF_BOTW_B3_EAST_V_MID_SOUTH_POT, + RAND_INF_BOTW_B3_EAST_V_SOUTHMOST_POT, RAND_INF_BOTW_FAKE_WALL_SOUTH_POT, RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT, RAND_INF_BOTW_FAKE_WALL_NORTH_POT, RAND_INF_BOTW_ENTRYWAY_EAST_POT, RAND_INF_BOTW_ENTRYWAY_WEST_POT, - RAND_INF_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1, + RAND_INF_BOTW_3_HIDDEN_PITS_POT, RAND_INF_BOTW_SUNKEN_POT, RAND_INF_ICE_CAVERN_HALL_POT_1, RAND_INF_ICE_CAVERN_HALL_POT_2, @@ -634,13 +634,13 @@ typedef enum { RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT, RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1, RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2, - RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1, - RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2, - RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3, - RAND_INF_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT, - RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_1, - RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_2, - RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_3, + RAND_INF_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT, + RAND_INF_BOTW_MQ_WOODEN_X_ROOM_EAST_POT, + RAND_INF_BOTW_MQ_WOODEN_X_ROOM_WEST_POT, + RAND_INF_BOTW_MQ_CAGED_POT, + RAND_INF_BOTW_MQ_EAST_INNER_ROOM_FAR_POT, + RAND_INF_BOTW_MQ_EAST_INNER_ROOM_MID_POT, + RAND_INF_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT, RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1, RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2, RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1, @@ -1001,13 +1001,13 @@ typedef enum { RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_1, RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_2, RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_3, - RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_LEFT_RUPEE, - RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_BACK_LEFT_RUPEE, - RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_MIDDLE_RUPEE, - RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_BACK_RIGHT_RUPEE, - RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_PLATFORM_RIGHT_RUPEE, - RAND_INF_BOTTOM_OF_THE_WELL_COFFIN_ROOM_FRONT_LEFT_HEART, - RAND_INF_BOTTOM_OF_THE_WELL_COFFIN_ROOM_MIDDLE_RIGHT_HEART, + RAND_INF_RHT_BOTW_B3_PLATFORM_WEST_RUPEE, + RAND_INF_RHT_BOTW_B3_PLATFORM_NORTHWEST_RUPEE, + RAND_INF_BOTW_B3_PLATFORM_NORTH_RUPEE, + RAND_INF_RHT_BOTW_B3_PLATFORM_NORTHEAST_RUPEE, + RAND_INF_RHT_BOTW_B3_PLATFORM_EAST_RUPEE, + RAND_INF_BOTW_SOUTHEAST_COFFIN_HEART, + RAND_INF_BOTW_OPEN_COFFIN_HEART, RAND_INF_GERUDO_TRAINING_GROUND_BEAMOS_SOUTH_HEART, RAND_INF_GERUDO_TRAINING_GROUND_BEAMOS_EAST_HEART, RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_HEART_1, @@ -1048,13 +1048,13 @@ typedef enum { RAND_INF_SHADOW_TEMPLE_MQ_AFTER_SHIP_LOWER_HEART, RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_LEFT_HEART, RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_RIGHT_HEART, - RAND_INF_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM_FRONT_RIGHT_HEART, - RAND_INF_BOTTOM_OF_THE_WELL_MQ_BOMB_LEFT_HEART, - RAND_INF_BOTTOM_OF_THE_WELL_MQ_BOMB_RIGHT_HEART, - RAND_INF_BOTTOM_OF_THE_WELL_MQ_COFFIN_ROOM_MIDDLE_LEFT_HEART, - RAND_INF_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_FRONT_HEART, - RAND_INF_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_LEFT_HEART, - RAND_INF_BOTTOM_OF_THE_WELL_MQ_BASEMENT_HALLWAY_RIGHT_HEART, + RAND_INF_BOTW_MQ_NORTHEAST_COFFIN_HEART, + RAND_INF_BOTW_MQ_RUBBLE_NORTH_HEART, + RAND_INF_BOTW_MQ_RUBBLE_SOUTH_HEART, + RAND_INF_BOTW_MQ_SOUTH_COFFIN_HEART, + RAND_INF_MQ_B3_SOUTH_HEART, + RAND_INF_MQ_B3_NORTHWEST_HEART, + RAND_INF_MQ_B3_NORTHEAST_HEART, RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_HEART, RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART, RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART, @@ -1257,7 +1257,7 @@ typedef enum { RAND_INF_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY, RAND_INF_SHADOW_TEMPLE_PIT_STORM_FAIRY, RAND_INF_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY, - RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_SUN_FAIRY, + RAND_INF_BOTW_B3_SUN_FAIRY, RAND_INF_ICE_CAVERN_ENTRANCE_STORMS_FAIRY, RAND_INF_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY, RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY, @@ -1270,8 +1270,8 @@ typedef enum { RAND_INF_SHADOW_TEMPLE_MQ_BEAMOS_STORM_FAIRY, RAND_INF_SHADOW_TEMPLE_MQ_PIT_STORM_FAIRY, RAND_INF_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY, - RAND_INF_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY, - RAND_INF_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY, + RAND_INF_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY, + RAND_INF_BOTW_MQ_B3_SUN_FAIRY, // If you add anything to this list, you need to update the size of randomizerInf in z64save.h to be ceil(RAND_INF_MAX / 16) RAND_INF_MAX, diff --git a/soh/soh/Enhancements/randomizer/settings.cpp b/soh/soh/Enhancements/randomizer/settings.cpp index f5abde70346..285493efcc5 100644 --- a/soh/soh/Enhancements/randomizer/settings.cpp +++ b/soh/soh/Enhancements/randomizer/settings.cpp @@ -1204,7 +1204,7 @@ void Settings::CreateOptions() { mOptionGroups[RSG_EXCLUDES_FOREST_TEMPLE] = OptionGroup::SubGroup("Forest Temple", mExcludeLocationsOptionsAreas[RCAREA_FOREST_TEMPLE]); mOptionGroups[RSG_EXCLUDES_KAKARIKO_VILLAGE] = OptionGroup::SubGroup("Kakariko Village", mExcludeLocationsOptionsAreas[RCAREA_KAKARIKO_VILLAGE]); mOptionGroups[RSG_EXCLUDES_GRAVEYARD] = OptionGroup::SubGroup("Graveyard", mExcludeLocationsOptionsAreas[RCAREA_GRAVEYARD]); - mOptionGroups[RSG_EXCLUDES_BOTTOM_OF_THE_WELL] = OptionGroup::SubGroup("Bottom of the Well", mExcludeLocationsOptionsAreas[RCAREA_BOTTOM_OF_THE_WELL]); + mOptionGroups[RSG_EXCLUDES_BOTTOM_OF_THE_WELL] = OptionGroup::SubGroup("Bottom of the Well", mExcludeLocationsOptionsAreas[RCAREA_BOTW]); mOptionGroups[RSG_EXCLUDES_SHADOW_TEMPLE] = OptionGroup::SubGroup("Shadow Temple", mExcludeLocationsOptionsAreas[RCAREA_SHADOW_TEMPLE]); mOptionGroups[RSG_EXCLUDES_DEATH_MOUNTAIN_TRAIL] = OptionGroup::SubGroup("Death Mountain Trail", mExcludeLocationsOptionsAreas[RCAREA_DEATH_MOUNTAIN_TRAIL]); mOptionGroups[RSG_EXCLUDES_DEATH_MOUNTAIN_CRATER] = OptionGroup::SubGroup("Death Mountain Crater", mExcludeLocationsOptionsAreas[RCAREA_DEATH_MOUNTAIN_CRATER]); From e42b00b98fdd2dfd72c97b8866cbc5d13d710031 Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Mon, 13 Jan 2025 15:04:57 +0000 Subject: [PATCH 3/6] refine BotW renames --- .../Enhancements/debugger/debugSaveEditor.h | 64 +++--- .../hint_list/hint_list_exclude_dungeon.cpp | 84 +++---- .../randomizer/3drando/item_pool.cpp | 2 +- .../Enhancements/randomizer/Plandomizer.cpp | 6 +- soh/soh/Enhancements/randomizer/dungeon.cpp | 78 +++---- soh/soh/Enhancements/randomizer/location.cpp | 28 +++ soh/soh/Enhancements/randomizer/location.h | 14 ++ .../dungeons/bottom_of_the_well.cpp | 135 ++++++----- .../Enhancements/randomizer/location_list.cpp | 141 ++++++------ .../Enhancements/randomizer/randomizer.cpp | 36 +-- .../Enhancements/randomizer/randomizerTypes.h | 213 +++++++++--------- .../Enhancements/randomizer/randomizer_inf.h | 62 ++--- 12 files changed, 452 insertions(+), 411 deletions(-) diff --git a/soh/soh/Enhancements/debugger/debugSaveEditor.h b/soh/soh/Enhancements/debugger/debugSaveEditor.h index ae1fb517994..d186bc84858 100644 --- a/soh/soh/Enhancements/debugger/debugSaveEditor.h +++ b/soh/soh/Enhancements/debugger/debugSaveEditor.h @@ -827,21 +827,21 @@ const std::vector flagTables = { { RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18" }, { RAND_INF_BOTW_B3_WEST_CENTER_POT, "RAND_INF_BOTW_B3_WEST_CENTER_POT" }, { RAND_INF_BOTW_B3_EAST_CENTER_POT, "RAND_INF_BOTW_B3_EAST_CENTER_POT" }, - { RAND_INF_BOTW_B3_WEST_V_MID_NORTH_POT, "RAND_INF_BOTW_B3_WEST_V_MID_NORTH_POT" }, - { RAND_INF_BOTW_B3_EAST_V_MIDDLE_POT, "RAND_INF_BOTW_B3_EAST_V_MIDDLE_POT" }, - { RAND_INF_BOTW_B3_WEST_V_SOUTHMOST_POT, "RAND_INF_BOTW_B3_WEST_V_SOUTHMOST_POT" }, - { RAND_INF_BOTW_B3_EAST_V_SOUTHMOST_POT, "RAND_INF_BOTW_B3_EAST_V_SOUTHMOST_POT" }, - { RAND_INF_BOTW_B3_EAST_V_NORTHMOST_POT, "RAND_INF_BOTW_B3_EAST_V_NORTHMOST_POT" }, - { RAND_INF_BOTW_B3_EAST_V_MID_NORTH_POT, "RAND_INF_BOTW_B3_EAST_V_MID_NORTH_POT" }, - { RAND_INF_BOTW_B3_WEST_V_MID_SOUTH_POT, "RAND_INF_BOTW_B3_WEST_V_MID_SOUTH_POT" }, - { RAND_INF_BOTW_B3_EAST_V_MID_SOUTH_POT, "RAND_INF_BOTW_B3_EAST_V_MID_SOUTH_POT" }, - { RAND_INF_BOTW_B3_WEST_V_MIDDLE_POT, "RAND_INF_BOTW_B3_WEST_V_MIDDLE_POT" }, - { RAND_INF_BOTW_B3_WEST_V_NORTHMOST_POT, "RAND_INF_BOTW_B3_WEST_V_NORTHMOST_POT" }, + { RAND_INF_BOTW_B3_WEST_V_NW_POT, "RAND_INF_BOTW_B3_WEST_V_NW_POT" }, + { RAND_INF_BOTW_B3_EAST_V_W_POT, "RAND_INF_BOTW_B3_EAST_V_W_POT" }, + { RAND_INF_BOTW_B3_WEST_V_S_POT, "RAND_INF_BOTW_B3_WEST_V_S_POT" }, + { RAND_INF_BOTW_B3_EAST_V_S_POT, "RAND_INF_BOTW_B3_EAST_V_S_POT" }, + { RAND_INF_BOTW_B3_EAST_V_N_POT, "RAND_INF_BOTW_B3_EAST_V_N_POT" }, + { RAND_INF_BOTW_B3_EAST_V_NW_POT, "RAND_INF_BOTW_B3_EAST_V_NW_POT" }, + { RAND_INF_BOTW_B3_WEST_V_SW_POT, "RAND_INF_BOTW_B3_WEST_V_SW_POT" }, + { RAND_INF_BOTW_B3_EAST_V_SW_POT, "RAND_INF_BOTW_B3_EAST_V_SW_POT" }, + { RAND_INF_BOTW_B3_WEST_V_W_POT, "RAND_INF_BOTW_B3_WEST_V_W_POT" }, + { RAND_INF_BOTW_B3_WEST_V_N_POT, "RAND_INF_BOTW_B3_WEST_V_N_POT" }, { RAND_INF_BOTW_FAKE_WALL_SOUTH_POT, "RAND_INF_BOTW_FAKE_WALL_SOUTH_POT" }, { RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT, "RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT" }, { RAND_INF_BOTW_FAKE_WALL_NORTH_POT, "RAND_INF_BOTW_FAKE_WALL_NORTH_POT" }, - { RAND_INF_BOTW_ENTRYWAY_EAST_POT, "RAND_INF_BOTW_ENTRYWAY_EAST_POT" }, { RAND_INF_BOTW_ENTRYWAY_WEST_POT, "RAND_INF_BOTW_ENTRYWAY_WEST_POT" }, + { RAND_INF_BOTW_ENTRYWAY_EAST_POT, "RAND_INF_BOTW_ENTRYWAY_EAST_POT" }, { RAND_INF_BOTW_3_HIDDEN_PITS_POT, "RAND_INF_BOTW_3_HIDDEN_PITS_POT" }, { RAND_INF_BOTW_SUNKEN_POT, "RAND_INF_BOTW_SUNKEN_POT" }, { RAND_INF_ICE_CAVERN_HALL_POT_1, "RAND_INF_ICE_CAVERN_HALL_POT_1" }, @@ -942,13 +942,13 @@ const std::vector flagTables = { { RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT, "RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT" }, { RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1, "RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1" }, { RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2, "RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2" }, - { RAND_INF_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT, "RAND_INF_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT" }, - { RAND_INF_BOTW_MQ_WOODEN_X_ROOM_EAST_POT, "RAND_INF_BOTW_MQ_WOODEN_X_ROOM_EAST_POT" }, - { RAND_INF_BOTW_MQ_WOODEN_X_ROOM_WEST_POT, "RAND_INF_BOTW_MQ_WOODEN_X_ROOM_WEST_POT" }, + { RAND_INF_BOTW_MQ_WOODEN_X_ROOM_C_POT, "RAND_INF_BOTW_MQ_WOODEN_X_ROOM_C_POT" }, + { RAND_INF_BOTW_MQ_WOODEN_X_ROOM_E_POT, "RAND_INF_BOTW_MQ_WOODEN_X_ROOM_E_POT" }, + { RAND_INF_BOTW_MQ_WOODEN_X_ROOM_W_POT, "RAND_INF_BOTW_MQ_WOODEN_X_ROOM_W_POT" }, { RAND_INF_BOTW_MQ_CAGED_POT, "RAND_INF_BOTW_MQ_CAGED_POT" }, - { RAND_INF_BOTW_MQ_EAST_INNER_ROOM_FAR_POT, "RAND_INF_BOTW_MQ_EAST_INNER_ROOM_FAR_POT" }, - { RAND_INF_BOTW_MQ_EAST_INNER_ROOM_MID_POT, "RAND_INF_BOTW_MQ_EAST_INNER_ROOM_MID_POT" }, - { RAND_INF_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT, "RAND_INF_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT" }, + { RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_NW_POT, "RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_NW_POT" }, + { RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_NE_POT, "RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_NE_POT" }, + { RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_S_POT, "RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_S_POT" }, { RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1, "RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1" }, { RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2, "RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2" }, { RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1, "RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1" }, @@ -1294,13 +1294,13 @@ const std::vector flagTables = { { RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_1, "RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_1" }, { RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_2, "RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_2" }, { RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_3, "RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_3" }, - { RAND_INF_BOTW_B3_PLATFORM_NORTH_RUPEE, "RAND_INF_BOTW_B3_PLATFORM_NORTH_RUPEE" }, - { RAND_INF_RHT_BOTW_B3_PLATFORM_NORTHWEST_RUPEE, "RAND_INF_RHT_BOTW_B3_PLATFORM_NORTHWEST_RUPEE" }, - { RAND_INF_RHT_BOTW_B3_PLATFORM_NORTHEAST_RUPEE, "RAND_INF_RHT_BOTW_B3_PLATFORM_NORTHEAST_RUPEE" }, - { RAND_INF_RHT_BOTW_B3_PLATFORM_WEST_RUPEE, "RAND_INF_RHT_BOTW_B3_PLATFORM_WEST_RUPEE" }, - { RAND_INF_RHT_BOTW_B3_PLATFORM_EAST_RUPEE, "RAND_INF_RHT_BOTW_B3_PLATFORM_EAST_RUPEE" }, - { RAND_INF_BOTW_SOUTHEAST_COFFIN_HEART, "RAND_INF_BOTW_SOUTHEAST_COFFIN_HEART" }, - { RAND_INF_RHT_BOTW_B3_PLATFORM_EAST_RUPEE, "RAND_INF_RHT_BOTW_B3_PLATFORM_EAST_RUPEE" }, + { RAND_INF_BOTW_B3_PLATFORM_N_RUPEE, "RAND_INF_BOTW_B3_PLATFORM_N_RUPEE" }, + { RAND_INF_RHT_BOTW_B3_PLATFORM_NW_RUPEE, "RAND_INF_RHT_BOTW_B3_PLATFORM_NW_RUPEE" }, + { RAND_INF_RHT_BOTW_B3_PLATFORM_NE_RUPEE, "RAND_INF_RHT_BOTW_B3_PLATFORM_NE_RUPEE" }, + { RAND_INF_RHT_BOTW_B3_PLATFORM_W_RUPEE, "RAND_INF_RHT_BOTW_B3_PLATFORM_W_RUPEE" }, + { RAND_INF_RHT_BOTW_B3_PLATFORM_E_RUPEE, "RAND_INF_RHT_BOTW_B3_PLATFORM_E_RUPEE" }, + { RAND_INF_BOTW_SE_COFFIN_HEART, "RAND_INF_BOTW_SE_COFFIN_HEART" }, + { RAND_INF_RHT_BOTW_B3_PLATFORM_E_RUPEE, "RAND_INF_RHT_BOTW_B3_PLATFORM_EAST_RUPEE" }, { RAND_INF_BOTW_OPEN_COFFIN_HEART, "RAND_INF_BOTW_OPEN_COFFIN_HEART" }, { RAND_INF_GERUDO_TRAINING_GROUND_BEAMOS_SOUTH_HEART, "RAND_INF_GERUDO_TRAINING_GROUND_BEAMOS_SOUTH_HEART" }, { RAND_INF_GERUDO_TRAINING_GROUND_BEAMOS_EAST_HEART, "RAND_INF_GERUDO_TRAINING_GROUND_BEAMOS_EAST_HEART" }, @@ -1335,13 +1335,13 @@ const std::vector flagTables = { { RAND_INF_SHADOW_TEMPLE_MQ_AFTER_SHIP_UPPER_LEFT_HEART, "RAND_INF_SHADOW_TEMPLE_MQ_AFTER_SHIP_UPPER_LEFT_HEART" }, { RAND_INF_SHADOW_TEMPLE_MQ_AFTER_SHIP_UPPER_RIGHT_HEART, "RAND_INF_SHADOW_TEMPLE_MQ_AFTER_SHIP_UPPER_RIGHT_HEART" }, { RAND_INF_SHADOW_TEMPLE_MQ_AFTER_SHIP_LOWER_HEART, "RAND_INF_SHADOW_TEMPLE_MQ_AFTER_SHIP_LOWER_HEART" }, - { RAND_INF_BOTW_MQ_NORTHEAST_COFFIN_HEART, "RAND_INF_BOTW_MQ_NORTHEAST_COFFIN_HEART" }, - { RAND_INF_BOTW_MQ_RUBBLE_NORTH_HEART, "RAND_INF_BOTW_MQ_RUBBLE_NORTH_HEART" }, - { RAND_INF_BOTW_MQ_RUBBLE_SOUTH_HEART, "RAND_INF_BOTW_MQ_RUBBLE_SOUTH_HEART" }, - { RAND_INF_BOTW_MQ_SOUTH_COFFIN_HEART, "RAND_INF_BOTW_MQ_SOUTH_COFFIN_HEART" }, - { RAND_INF_MQ_B3_SOUTH_HEART, "RAND_INF_MQ_B3_SOUTH_HEART" }, - { RAND_INF_MQ_B3_NORTHWEST_HEART, "RAND_INF_MQ_B3_NORTHWEST_HEART" }, - { RAND_INF_MQ_B3_NORTHEAST_HEART, "RAND_INF_MQ_B3_NORTHEAST_HEART" }, + { RAND_INF_BOTW_MQ_NE_COFFIN_HEART, "RAND_INF_BOTW_MQ_NE_COFFIN_HEART" }, + { RAND_INF_BOTW_MQ_N_BURIED_HEART, "RAND_INF_BOTW_MQ_N_BURIED_HEART" }, + { RAND_INF_BOTW_MQ_S_BURIED_HEART, "RAND_INF_BOTW_MQ_S_BURIED_HEART" }, + { RAND_INF_BOTW_MQ_S_COFFIN_HEART, "RAND_INF_BOTW_MQ_S_COFFIN_HEART" }, + { RAND_INF_BOTW_MQ_B3_S_HEART, "RAND_INF_BOTW_MQ_B3_S_HEART" }, + { RAND_INF_BOTW_MQ_B3_NW_HEART, "RAND_INF_BOTW_MQ_B3_NW_HEART" }, + { RAND_INF_BOTW_MQ_B3_NE_HEART, "RAND_INF_BOTW_MQ_B3_NE_HEART" }, { RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_HEART, "RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_HEART" }, { RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART, "RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART" }, { RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART, "RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART" }, @@ -1556,7 +1556,7 @@ const std::vector flagTables = { { RAND_INF_SHADOW_TEMPLE_MQ_BEAMOS_STORM_FAIRY, "RAND_INF_SHADOW_TEMPLE_MQ_BEAMOS_STORM_FAIRY" }, { RAND_INF_SHADOW_TEMPLE_MQ_PIT_STORM_FAIRY, "RAND_INF_SHADOW_TEMPLE_MQ_PIT_STORM_FAIRY" }, { RAND_INF_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY, "RAND_INF_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY" }, - { RAND_INF_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY, "RAND_INF_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY" }, + { RAND_INF_BOTW_MQ_NEAR_POTS_SUN_FAIRY, "RAND_INF_BOTW_MQ_NEAR_POTS_SUN_FAIRY" }, { RAND_INF_BOTW_MQ_B3_SUN_FAIRY, "RAND_INF_BOTW_MQ_B3_SUN_FAIRY" }, } }, diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp index 77c6c7386e7..44c624728b6 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp @@ -1554,7 +1554,7 @@ hintTextTable[RHT_SHADOW_TEMPLE_MAP_CHEST] = HintText(CustomMessage("They say th /*french*/ "Selon moi, l'#oeil de vérité dans le Puits# révèle #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, el #Ojo de la Verdad en el pozo# revela #[[1]]#. - hintTextTable[RHT_BOTW_SOUTH_RUBBLE_CHEST] = HintText(CustomMessage("They say that #gruesome debris# in the well hides #[[1]]#.", + hintTextTable[RHT_BOTW_SOUTH_BURIED_CHEST] = HintText(CustomMessage("They say that #gruesome debris# in the well hides #[[1]]#.", /*german*/ "Man erzählt sich, daß #grauenvolle Trümmer# im Brunnen #[[1]]# verbergen würden.", /*french*/ "Selon moi, des #débris dans le Puits# cachent #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, unos #horripilantes escombros# del pozo esconden #[[1]]#. @@ -1564,17 +1564,17 @@ hintTextTable[RHT_SHADOW_TEMPLE_MAP_CHEST] = HintText(CustomMessage("They say th /*french*/ "Selon moi, l'#oeil de vérité dans le Puits# révèle #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, el #Ojo de la Verdad en el pozo# revela #[[1]]#. - hintTextTable[RHT_BOTW_CENTRAL_WEST_CHEST] = HintText(CustomMessage("They say that a #hidden entrance to a cage# in the well leads to #[[1]]#.", + hintTextTable[RHT_BOTW_WOODEN_X_ROOM_WEST_CHEST] = HintText(CustomMessage("They say that a #hidden entrance to a cage# in the well leads to #[[1]]#.", /*german*/ "Man erzählt sich, daß ein #verborgener Eingang zu einem Käfig# im Brunnen zu #[[1]]# führe.", /*french*/ "Selon moi, dans un #chemin caché dans le Puits# gît #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, la #entrada oculta de una celda# del pozo conduce a #[[1]]#. - hintTextTable[RHT_BOTW_CENTRAL_EAST_CHEST] = HintText(CustomMessage("They say that a #spider guarding a cage# in the well protects #[[1]]#.", + hintTextTable[RHT_BOTW_WOODEN_X_ROOM_EAST_CHEST] = HintText(CustomMessage("They say that a #spider guarding a cage# in the well protects #[[1]]#.", /*german*/ "Man erzählt sich, daß eine #einen Käfig schützende Spinne# im Brunnen #[[1]]# schütze.", /*french*/ "Selon moi, l'#araignée dans la cage du Puits# protège #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, una #araña protegiendo una celda# del pozo guarda #[[1]]#. //RANDOTODO retranslate - hintTextTable[RHT_BOTW_NORTH_RUBBLE_CHEST] = HintText(CustomMessage("They say that #trapped debris# in the well hoardes #[[1]]#.", + hintTextTable[RHT_BOTW_NORTH_BURIED_CHEST] = HintText(CustomMessage("They say that #trapped debris# in the well hoardes #[[1]]#.", /*german*/ "Man erzählt sich, daß #grauenvolle Trümmer# im Brunnen #[[1]]# verbergen würde.", /*french*/ "Selon moi, des #débris dans le Puits# cachent #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, unos #horripilantes escombros# del pozo esconden #[[1]]#. @@ -1624,42 +1624,42 @@ hintTextTable[RHT_SHADOW_TEMPLE_MAP_CHEST] = HintText(CustomMessage("They say th /*french*/ "Selon moi, l'#armée des morts# dans le Puits protège #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, un #ejército del más allá# del pozo guarda #[[1]]#. - hintTextTable[RHT_BOTW_MQ_DEAD_HAND_RUBBLE_KEY] = HintText(CustomMessage("They say that #Dead Hand's explosive secret# is #[[1]]#.", + hintTextTable[RHT_BOTW_MQ_DEAD_HAND_BURIED_KEY] = HintText(CustomMessage("They say that #Dead Hand's explosive secret# is #[[1]]#.", /*german*/ "Man erzählt sich, daß das #explosive Geheimnis der toten Hand# #[[1]]# sei.", /*french*/ "Selon moi, le #secret explosif du Poigneur# est #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, el #explosivo secreto de la Mano Muerta# esconde #[[1]]#. - hintTextTable[RHT_BOTW_MQ_EAST_INNER_ROOM_KEY] = HintText(CustomMessage("They say that an #invisible path in the well# leads to #[[1]]#.", + hintTextTable[RHT_BOTW_MQ_IMVISIBLE_LEDGE_KEY] = HintText(CustomMessage("They say that an #invisible path in the well# leads to #[[1]]#.", /*german*/ "Man erzählt sich, daß ein #unsichtbarer Pfad im Brunnen# zu #[[1]]# führe.", /*french*/ "Selon moi, dans un #chemin caché dans le Puits# gît #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, un #camino invisible del pozo# conduce a #[[1]]#. - hintTextTable[RHT_BOTTOM_OF_THE_WELL_GS_LIKE_LIKE_CAGE] = HintText(CustomMessage("They say that a #spider locked in a cage# in the well holds #[[1]]#.", + hintTextTable[RHT_BOTW_OUTER_CAGE_GS] = HintText(CustomMessage("They say that a #spider locked in a cage# in the well holds #[[1]]#.", /*german*/ "Man erzählt sich, daß eine #in einem Käfig eingeschlossene Spinne# im Brunnen #[[1]]# besäße.", /*french*/ "Selon moi, une #Skulltula dans une cage au fonds du Puits# a #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, una #Skulltula enjaulada# del pozo otorga #[[1]]#. //RANDOTODO retranslate - hintTextTable[RHT_BOTTOM_OF_THE_WELL_GS_EAST_INNER_ROOM] = HintText(CustomMessage("They say that an #invisible path in the well# leads to a spider with #[[1]]#.", + hintTextTable[RHT_BOTW_INVISIBLE_LEDGE_GS] = HintText(CustomMessage("They say that an #invisible path in the well# leads to a spider with #[[1]]#.", /*german*/ "Man erzählt sich, daß ein #unsichtbarer Pfad im Brunnen# zu #[[1]]# führe.", /*french*/ "Selon moi, une #Skulltula dans le chemin invisible au fonds du Puits# a #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, un #camino invisible del pozo# conduce a una Skulltula que otorga #[[1]]#. //RANDOTODO retranslate - hintTextTable[RHT_BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM] = HintText(CustomMessage("They say that a #spider under a gravestone# within the well guards #[[1]]#.", + hintTextTable[RHT_BOTW_WEST_INNER_ROOM_GS] = HintText(CustomMessage("They say that a #spider under a gravestone# within the well guards #[[1]]#.", /*german*/ "Man erzählt sich, daß eine #in einer Krypta eingeschlossene Spinne# im Brunnen #[[1]]# bewache.", /*french*/ "Selon moi, une #Skulltula embarrée dans la crypte au fonds du Puits# a #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, una #Skulltula encerrada en una cripta# del pozo otorga #[[1]]#. - hintTextTable[RHT_BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT] = HintText(CustomMessage("They say that a #gauntlet of invisible spiders# protects #[[1]]#.", + hintTextTable[RHT_BOTW_MQ_B3_GS] = HintText(CustomMessage("They say that a #gauntlet of invisible spiders# protects #[[1]]#.", /*german*/ "Man erzählt sich, daß eine #Herausforderung unsichtbarer Spinnen# #[[1]]# bewache.", /*french*/ "Selon moi, une #Skulltula protégée par les araignées invisibles au fonds du Puits# a #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, unas #arañas invisibles# custodian una Skulltula que otorga #[[1]]#. - hintTextTable[RHT_BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM] = HintText(CustomMessage("They say that a #spider crawling near the dead# in the well holds #[[1]]#.", + hintTextTable[RHT_BOTW_MQ_COFFIN_ROOM_GS] = HintText(CustomMessage("They say that a #spider crawling near the dead# in the well holds #[[1]]#.", /*german*/ "Man erzählt sich, daß eine #nahe der Toten kriechende Spinne# im Brunnen #[[1]]# besäße.", /*french*/ "Selon moi, une #Skulltula près des cercueils au fonds du Puits# a #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, una #Skulltula junto a los muertos# del pozo otorga #[[1]]#. //RANDOTODO retranslate - hintTextTable[RHT_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM] = HintText(CustomMessage("They say that a #spider surrounded by unseen foes# within the well guards #[[1]]#.", + hintTextTable[RHT_BOTW_MQ_UNDER_GRAVE_GS] = HintText(CustomMessage("They say that a #spider surrounded by unseen foes# within the well guards #[[1]]#.", /*german*/ "Man erzählt sich, daß eine #in einer Krypta eingeschlossene Spinne# im Brunnen #[[1]]# bewache.", /*french*/ "Selon moi, une #Skulltula embarrée dans la crypte au fonds du Puits# a #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, una #Skulltula encerrada en una cripta# del pozo otorga #[[1]]#. @@ -1682,73 +1682,73 @@ hintTextTable[RHT_SHADOW_TEMPLE_MAP_CHEST] = HintText(CustomMessage("They say th hintTextTable[RHT_BOTW_B3_EAST_CENTER_POT] = HintText(CustomMessage("They say that the #eastern pot looking over the well's slime# contains #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_B3_WEST_V_NORTHMOST_POT] = HintText(CustomMessage("They say that the well's #Front Pot formation's right wing# is #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_B3_WEST_V_N_POT] = HintText(CustomMessage("They say that the well's #Front Pot formation's right wing# is #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_B3_WEST_V_MID_NORTH_POT] = HintText(CustomMessage("They say that the well's #Front Pot formation's right hand# is #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_B3_WEST_V_MID_NW_POT] = HintText(CustomMessage("They say that the well's #Front Pot formation's right hand# is #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_B3_WEST_V_MIDDLE_POT] = HintText(CustomMessage("They say that the well's #Front Pot formation is led# by #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_B3_WEST_V_W_POT] = HintText(CustomMessage("They say that the well's #Front Pot formation is led# by #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_B3_WEST_V_MID_SOUTH_POT] = HintText(CustomMessage("They say that the well's #Front Pot formation's left hand# is #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_B3_WEST_V_SW_POT] = HintText(CustomMessage("They say that the well's #Front Pot formation's left hand# is #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_B3_WEST_V_SOUTHMOST_POT] = HintText(CustomMessage("They say that the well's #Front Pot formation's left wing# is #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_B3_WEST_V_S_POT] = HintText(CustomMessage("They say that the well's #Front Pot formation's left wing# is #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_B3_EAST_V_NORTHMOST_POT] = HintText(CustomMessage("They say that the well's #Rear Pot formation's right wing# is #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_B3_EAST_V_N_POT] = HintText(CustomMessage("They say that the well's #Rear Pot formation's right wing# is #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_B3_EAST_V_MID_NORTH_POT] = HintText(CustomMessage("They say that the well's #Rear Pot formation's right hand# is #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_B3_EAST_V_NW_POT] = HintText(CustomMessage("They say that the well's #Rear Pot formation's right hand# is #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_B3_EAST_V_MIDDLE_POT] = HintText(CustomMessage("They say that the well's #Rear Pot formation is led# by #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_B3_EAST_V_W_POT] = HintText(CustomMessage("They say that the well's #Rear Pot formation is led# by #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_B3_EAST_V_MID_SOUTH_POT] = HintText(CustomMessage("They say that the well's #Rear Pot formation's left hand# is #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_B3_EAST_V_SW_POT] = HintText(CustomMessage("They say that the well's #Rear Pot formation's left hand# is #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_B3_EAST_V_SOUTHMOST_POT] = HintText(CustomMessage("They say that the well's #Rear Pot formation's left wing# is #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_B3_EAST_V_S_POT] = HintText(CustomMessage("They say that the well's #Rear Pot formation's left wing# is #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_MQ_WOODEN_X_ROOM_WEST_POT] = HintText(CustomMessage("They say that #a pot to the left of a switch in the well# contains #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_MQ_WOODEN_X_ROOM_W_POT] = HintText(CustomMessage("They say that #a pot to the left of a switch in the well# contains #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT] = HintText(CustomMessage("They say that #a pot under a switch in the well# contains #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_MQ_WOODEN_X_ROOM_C_POT] = HintText(CustomMessage("They say that #a pot under a switch in the well# contains #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_MQ_WOODEN_X_ROOM_EAST_POT] = HintText(CustomMessage("They say that #a pot to the right of a switch in the well# contains #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_MQ_WOODEN_X_ROOM_E_POT] = HintText(CustomMessage("They say that #a pot to the right of a switch in the well# contains #[[1]]#.", {QM_RED, QM_GREEN})); hintTextTable[RHT_BOTW_MQ_CAGED_POT] = HintText(CustomMessage("They say that #a pot caged in the well# contains #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT] = HintText(CustomMessage("They say that #a doorside pot sitting on nothing# in the well contains #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_MQ_INVISIBLE_LEDGE_S_POT] = HintText(CustomMessage("They say that #a doorside pot sitting on nothing# in the well contains #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_MQ_EAST_INNER_ROOM_MID_POT] = HintText(CustomMessage("They say that #a pot sitting on the corner of nothing# in the well contains #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_MQ_INVISIBLE_LEDGE_NE_POT] = HintText(CustomMessage("They say that #a pot sitting on the corner of nothing# in the well contains #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_MQ_EAST_INNER_ROOM_FAR_POT] = HintText(CustomMessage("They say that #a ledgeside pot sitting on nothing# in the well contains #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_MQ_INVISIBLE_LEDGE_NW_POT] = HintText(CustomMessage("They say that #a ledgeside pot sitting on nothing# in the well contains #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_SOUTHEAST_COFFIN_HEART] = HintText(CustomMessage("They say that in #well's doorside coffin# rests #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_SE_COFFIN_HEART] = HintText(CustomMessage("They say that in #well's doorside coffin# rests #[[1]]#.", {QM_RED, QM_GREEN})); hintTextTable[RHT_BOTW_OPEN_COFFIN_HEART] = HintText(CustomMessage("They say that in #an open casket# rests #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RC_BOTW_MQ_RUBBLE_NORTH_HEART] = HintText(CustomMessage("They say that #a chamber hidden by rubble# stores #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RC_BOTW_MQ_N_BURIED_HEART] = HintText(CustomMessage("They say that #a chamber hidden by rubble# stores #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RC_BOTW_MQ_RUBBLE_SOUTH_HEART] = HintText(CustomMessage("They say that #under rubble near the well's entrance# lies #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RC_BOTW_MQ_S_BURIED_HEART] = HintText(CustomMessage("They say that #under rubble near the well's entrance# lies #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_MQ_NORTHEAST_COFFIN_HEART] = HintText(CustomMessage("They say that #waking the doorside dead# in a well reveals #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_MQ_NE_COFFIN_HEART] = HintText(CustomMessage("They say that #waking the doorside dead# in a well reveals #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_MQ_SOUTH_COFFIN_HEART] = HintText(CustomMessage("They say that #a coffin across from a lit torch# hides #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_MQ_S_COFFIN_HEART] = HintText(CustomMessage("They say that #a coffin across from a lit torch# hides #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_MQ_B3_SOUTH_HEART] = HintText(CustomMessage("They say the first thing #boulders in the well# guard is #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_MQ_B3_S_HEART] = HintText(CustomMessage("They say the first thing #boulders in the well# guard is #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_MQ_B3_NORTHWEST_HEART] = HintText(CustomMessage("They say the second thing #boulders in the well# guard is #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_MQ_B3_NW_HEART] = HintText(CustomMessage("They say the second thing #boulders in the well# guard is #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_MQ_B3_NORTHEAST_HEART] = HintText(CustomMessage("They say the third thing #boulders in the well# guard is #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_MQ_B3_NE_HEART] = HintText(CustomMessage("They say the third thing #boulders in the well# guard is #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_B3_PLATFORM_NORTH_RUPEE] = HintText(CustomMessage("They say that after falling #through the fake floor# in the Well, #[[1]]# points north.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_B3_PLATFORM_N_RUPEE] = HintText(CustomMessage("They say that after falling #through the fake floor# in the Well, #[[1]]# points north.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_B3_PLATFORM_NORTHWEST_RUPEE] = HintText(CustomMessage("They say that after falling #through the fake floor# in the Well, #[[1]]# points northwest.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_B3_PLATFORM_NW_RUPEE] = HintText(CustomMessage("They say that after falling #through the fake floor# in the Well, #[[1]]# points northwest.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_B3_PLATFORM_NORTHEAST_RUPEE] = HintText(CustomMessage("They say that after falling #through the fake floor# in the Well, #[[1]]# points northeast.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_B3_PLATFORM_NE_RUPEE] = HintText(CustomMessage("They say that after falling #through the fake floor# in the Well, #[[1]]# points northeast.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_B3_PLATFORM_WEST_RUPEE] = HintText(CustomMessage("They say that after falling #through the fake floor# in the Well, #[[1]]# points west.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_B3_PLATFORM_W_RUPEE] = HintText(CustomMessage("They say that after falling #through the fake floor# in the Well, #[[1]]# points west.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_B3_PLATFORM_EAST_RUPEE] = HintText(CustomMessage("They say that after falling #through the fake floor# in the Well, #[[1]]# points east.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_B3_PLATFORM_E_RUPEE] = HintText(CustomMessage("They say that after falling #through the fake floor# in the Well, #[[1]]# points east.", {QM_RED, QM_GREEN})); //RANDOTODO retranslate hintTextTable[RHT_BOTW_B3_SUN_FAIRY] = HintText(CustomMessage("They say that an #calling the sun in a basement guarded by pots# reveals #[[1]]#.", /*german*/ "!!!", /*french*/ "Selon moi, #appeler le soleil dans une impasse# à l’intérieur du puits révèle #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY] = HintText(CustomMessage("They say that an #calling the sun in an empty cell# within the well reveals #[[1]]#.", + hintTextTable[RHT_BOTW_MQ_NEAR_POTS_SUN_FAIRY] = HintText(CustomMessage("They say that an #calling the sun in an empty cell# within the well reveals #[[1]]#.", /*german*/ "!!!", /*french*/ "Selon moi, #appeler le soleil dans une cellule vide# à l’intérieur du puits révèle #[[1]]#.", {QM_RED, QM_GREEN})); diff --git a/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp b/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp index 1b4486a4be2..31b531ec485 100644 --- a/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp @@ -678,7 +678,7 @@ static void PlaceVanillaFairies() { ctx->PlaceItemInLocation(RC_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY, GetJunkItem(), false, true); } if (ctx->GetDungeon(Rando::BOTTOM_OF_THE_WELL)->IsMQ()) { - ctx->PlaceItemInLocation(RC_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY, GetJunkItem(), false, true); + ctx->PlaceItemInLocation(RC_BOTW_MQ_NEAR_POTS_SUN_FAIRY, GetJunkItem(), false, true); ctx->PlaceItemInLocation(RC_BOTW_MQ_B3_SUN_FAIRY, GetJunkItem(), false, true); } else { ctx->PlaceItemInLocation(RC_BOTW_B3_SUN_FAIRY, GetJunkItem(), false, true); diff --git a/soh/soh/Enhancements/randomizer/Plandomizer.cpp b/soh/soh/Enhancements/randomizer/Plandomizer.cpp index 5e0f4e6e1bc..f3bc72269c3 100644 --- a/soh/soh/Enhancements/randomizer/Plandomizer.cpp +++ b/soh/soh/Enhancements/randomizer/Plandomizer.cpp @@ -184,7 +184,7 @@ std::unordered_map itemImageMap = { { RG_WATER_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, { RG_SPIRIT_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, { RG_SHADOW_TEMPLE_MAP, "ITEM_DUNGEON_MAP" }, - { RG_BOTW_MAP, "ITEM_DUNGEON_MAP" }, + { RG_BOTW_MAP, "ITEM_DUNGEON_MAP" }, { RG_ICE_CAVERN_MAP, "ITEM_DUNGEON_MAP" }, { RG_DEKU_TREE_COMPASS, "ITEM_COMPASS" }, { RG_DODONGOS_CAVERN_COMPASS, "ITEM_COMPASS" }, @@ -194,7 +194,7 @@ std::unordered_map itemImageMap = { { RG_WATER_TEMPLE_COMPASS, "ITEM_COMPASS" }, { RG_SPIRIT_TEMPLE_COMPASS, "ITEM_COMPASS" }, { RG_SHADOW_TEMPLE_COMPASS, "ITEM_COMPASS" }, - { RG_BOTW_COMPASS, "ITEM_COMPASS" }, + { RG_BOTW_COMPASS, "ITEM_COMPASS" }, { RG_ICE_CAVERN_COMPASS, "ITEM_COMPASS" }, { RG_FOREST_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, { RG_FIRE_TEMPLE_BOSS_KEY, "ITEM_KEY_BOSS" }, @@ -228,7 +228,7 @@ std::unordered_map itemImageMap = { { RG_RED_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, { RG_PURPLE_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, { RG_HUGE_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, - { RG_LOSER_GREEN_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, + { RG_LOSER_GREEN_RUPEE, "ITEM_RUPEE_GRAYSCALE" }, { RG_PIECE_OF_HEART, "ITEM_HEART_PIECE" }, { RG_HEART_CONTAINER, "ITEM_HEART_CONTAINER" }, { RG_ICE_TRAP, "ITEM_ICE_TRAP" }, diff --git a/soh/soh/Enhancements/randomizer/dungeon.cpp b/soh/soh/Enhancements/randomizer/dungeon.cpp index ec350c3d7a8..9f1b9970939 100644 --- a/soh/soh/Enhancements/randomizer/dungeon.cpp +++ b/soh/soh/Enhancements/randomizer/dungeon.cpp @@ -1005,11 +1005,11 @@ Dungeons::Dungeons() { { // Vanilla Locations RC_BOTW_WEST_FAKE_WALL_CHEST, - RC_BOTW_SOUTH_RUBBLE_CHEST, + RC_BOTW_SOUTH_BURIED_CHEST, RC_BOTW_EAST_FAKE_WALL_CHEST, - RC_BOTW_CENTRAL_WEST_CHEST, - RC_BOTW_CENTRAL_EAST_CHEST, - RC_BOTW_NORTH_RUBBLE_CHEST, + RC_BOTW_WOODEN_X_ROOM_WEST_CHEST, + RC_BOTW_WOODEN_X_ROOM_EAST_CHEST, + RC_BOTW_NORTH_BURIED_CHEST, RC_BOTW_DEAD_HAND_CHEST, RC_BOTW_INVISIBLE_CHEST, RC_BOTW_SOUTH_SUNKEN_CHEST, @@ -1019,14 +1019,14 @@ Dungeons::Dungeons() { RC_BOTW_OUTER_CAGE_CHEST, RC_BOTW_COFFIN_KEY, RC_BOTW_OUTER_CAGE_GS, - RC_BOTW_CENTER_EAST_ROOM_GS, - RC_BOTW_CENTER_WEST_ROOM_GS, - RC_BOTW_B3_PLATFORM_WEST_RUPEE, - RC_BOTW_B3_PLATFORM_NORTHWEST_RUPEE, - RC_BOTW_B3_PLATFORM_NORTH_RUPEE, - RC_BOTW_B3_PLATFORM_NORTHEAST_RUPEE, - RC_BOTW_B3_PLATFORM_EAST_RUPEE, - RC_BOTW_SOUTHEAST_COFFIN_HEART, + RC_BOTW_INVISIBLE_LEDGE_GS, + RC_BOTW_INNER_WEST_ROOM_GS, + RC_BOTW_B3_PLATFORM_W_RUPEE, + RC_BOTW_B3_PLATFORM_NW_RUPEE, + RC_BOTW_B3_PLATFORM_N_RUPEE, + RC_BOTW_B3_PLATFORM_NE_RUPEE, + RC_BOTW_B3_PLATFORM_E_RUPEE, + RC_BOTW_SE_COFFIN_HEART, RC_BOTW_OPEN_COFFIN_HEART, RC_BOTW_B3_SUN_FAIRY, }, @@ -1035,35 +1035,35 @@ Dungeons::Dungeons() { RC_BOTW_MQ_WOODEN_X_CHEST, RC_BOTW_MQ_REDEAD_CHEST, RC_BOTW_MQ_DEAD_HAND_CHEST, - RC_BOTW_MQ_DEAD_HAND_RUBBLE_KEY, - RC_BOTW_MQ_EAST_INNER_ROOM_KEY, + RC_BOTW_MQ_DEAD_HAND_BURIED_KEY, + RC_BOTW_MQ_INVISIBLE_LEDGE_KEY, RC_BOTW_MQ_B3_GS, RC_BOTW_MQ_COFFIN_ROOM_GS, - RC_BOTW_MQ_WEST_CENTER_ROOM_GS, - RC_BOTW_MQ_NORTHEAST_COFFIN_HEART, - RC_BOTW_MQ_RUBBLE_NORTH_HEART, - RC_BOTW_MQ_RUBBLE_SOUTH_HEART, - RC_BOTW_MQ_SOUTH_COFFIN_HEART, - RC_BOTW_MQ_B3_SOUTH_HEART, - RC_BOTW_MQ_B3_NORTHWEST_HEART, - RC_BOTW_MQ_B3_NORTHEAST_HEART, - RC_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY, + RC_BOTW_MQ_UNDER_GRAVE_GS, + RC_BOTW_MQ_NE_COFFIN_HEART, + RC_BOTW_MQ_N_BURIED_HEART, + RC_BOTW_MQ_S_BURIED_HEART, + RC_BOTW_MQ_S_COFFIN_HEART, + RC_BOTW_MQ_B3_S_HEART, + RC_BOTW_MQ_B3_NW_HEART, + RC_BOTW_MQ_B3_NE_HEART, + RC_BOTW_MQ_NEAR_POTS_SUN_FAIRY, RC_BOTW_MQ_B3_SUN_FAIRY, }, { // Vanilla Pots RC_BOTW_B3_WEST_CENTER_POT, RC_BOTW_B3_EAST_CENTER_POT, - RC_BOTW_B3_WEST_V_MID_NORTH_POT, - RC_BOTW_B3_EAST_V_MIDDLE_POT, - RC_BOTW_B3_WEST_V_SOUTHMOST_POT, - RC_BOTW_B3_EAST_V_SOUTHMOST_POT, - RC_BOTW_B3_EAST_V_NORTHMOST_POT, - RC_BOTW_B3_EAST_V_MID_NORTH_POT, - RC_BOTW_B3_WEST_V_MID_SOUTH_POT, - RC_BOTW_B3_EAST_V_MID_SOUTH_POT, - RC_BOTW_B3_WEST_V_MIDDLE_POT, - RC_BOTW_B3_WEST_V_NORTHMOST_POT, + RC_BOTW_B3_WEST_V_NW_POT, + RC_BOTW_B3_EAST_V_W_POT, + RC_BOTW_B3_WEST_V_S_POT, + RC_BOTW_B3_EAST_V_S_POT, + RC_BOTW_B3_EAST_V_N_POT, + RC_BOTW_B3_EAST_V_NW_POT, + RC_BOTW_B3_WEST_V_SW_POT, + RC_BOTW_B3_EAST_V_SW_POT, + RC_BOTW_B3_WEST_V_W_POT, + RC_BOTW_B3_WEST_V_N_POT, RC_BOTW_FAKE_WALL_SOUTH_POT, RC_BOTW_FAKE_WALL_CENTRAL_POT, RC_BOTW_FAKE_WALL_NORTH_POT, @@ -1074,13 +1074,13 @@ Dungeons::Dungeons() { }, { // MQ Pots - RC_BOTW_MQ_EAST_INNER_ROOM_MID_POT, - RC_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT, - RC_BOTW_MQ_WOODEN_X_ROOM_EAST_POT, - RC_BOTW_MQ_WOODEN_X_ROOM_WEST_POT, + RC_BOTW_MQ_INVISIBLE_LEDGE_NE_POT, + RC_BOTW_MQ_WOODEN_X_ROOM_C_POT, + RC_BOTW_MQ_WOODEN_X_ROOM_E_POT, + RC_BOTW_MQ_WOODEN_X_ROOM_W_POT, RC_BOTW_MQ_CAGED_POT, - RC_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT, - RC_BOTW_MQ_EAST_INNER_ROOM_FAR_POT, + RC_BOTW_MQ_INVISIBLE_LEDGE_S_POT, + RC_BOTW_MQ_INVISIBLE_LEDGE_NW_POT, }, {}, {}); dungeonList[ICE_CAVERN] = DungeonInfo("Ice Cavern", RHT_ICE_CAVERN, RG_ICE_CAVERN_MAP, RG_ICE_CAVERN_COMPASS, diff --git a/soh/soh/Enhancements/randomizer/location.cpp b/soh/soh/Enhancements/randomizer/location.cpp index f8c850a8fa0..f8f5338a0f7 100644 --- a/soh/soh/Enhancements/randomizer/location.cpp +++ b/soh/soh/Enhancements/randomizer/location.cpp @@ -384,6 +384,20 @@ Rando::Location Rando::Location::Pot(RandomizerCheck rc, RandomizerCheckQuest qu return {rc, quest_, RCTYPE_POT, area_, ACTOR_OBJ_TSUBO, scene_, actorParams_, std::move(shortName_), hintKey, vanillaItem, false, collectionCheck }; } +Rando::Location Rando::Location::Pot(RandomizerCheck rc, RandomizerCheckQuest quest_, + SceneID scene_, int32_t actorParams_, std::string&& shortName_, + std::string&& spoilerName_, RandomizerHintTextKey hintKey, + RandomizerGet vanillaItem, SpoilerCollectionCheck collectionCheck) { + return {rc, quest_, RCTYPE_POT, GetAreaFromScene(scene_), ACTOR_OBJ_TSUBO, scene_, actorParams_, std::move(shortName_), std::move(spoilerName_), hintKey, vanillaItem, false, + collectionCheck }; +} +Rando::Location Rando::Location::Pot(RandomizerCheck rc, RandomizerCheckQuest quest_, + SceneID scene_, int32_t actorParams_, std::string&& shortName_, + RandomizerHintTextKey hintKey, + RandomizerGet vanillaItem, SpoilerCollectionCheck collectionCheck) { + return {rc, quest_, RCTYPE_POT, GetAreaFromScene(scene_), ACTOR_OBJ_TSUBO, scene_, actorParams_, std::move(shortName_), hintKey, vanillaItem, false, + collectionCheck }; +} Rando::Location Rando::Location::HintStone(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_, SceneID scene_, int32_t actorParams_, std::string&& shortName_) { return { rc, quest_, RCTYPE_GOSSIP_STONE, area_, ACTOR_EN_GS, scene_, actorParams_, std::move(shortName_), RHT_NONE, RG_NONE, false }; @@ -402,3 +416,17 @@ Rando::Location Rando::Location::Fairy(RandomizerCheck rc, RandomizerCheckQuest RandomizerHintTextKey hintKey, SpoilerCollectionCheck collectionCheck) { return {rc, quest_, RCTYPE_FAIRY, area_, ACTOR_EN_ELF, scene_, actorParams_, std::move(shortName_), hintKey, RG_NONE, false, collectionCheck}; } + +Rando::Location Rando::Location::Fairy(RandomizerCheck rc, RandomizerCheckQuest quest_, + SceneID scene_, + int32_t actorParams_, std::string&& shortName_, std::string&& spoilerName_, + RandomizerHintTextKey hintKey, SpoilerCollectionCheck collectionCheck) { + return {rc, quest_, RCTYPE_FAIRY, GetAreaFromScene(scene_), ACTOR_EN_ELF, scene_, actorParams_, std::move(shortName_), std::move(spoilerName_), hintKey, RG_NONE, false, collectionCheck}; +} + +Rando::Location Rando::Location::Fairy(RandomizerCheck rc, RandomizerCheckQuest quest_, + SceneID scene_, + int32_t actorParams_, std::string&& shortName_, + RandomizerHintTextKey hintKey, SpoilerCollectionCheck collectionCheck) { + return {rc, quest_, RCTYPE_FAIRY, GetAreaFromScene(scene_), ACTOR_EN_ELF, scene_, actorParams_, std::move(shortName_), hintKey, RG_NONE, false, collectionCheck}; +} diff --git a/soh/soh/Enhancements/randomizer/location.h b/soh/soh/Enhancements/randomizer/location.h index f5d497fa32a..c82c18fd3c0 100644 --- a/soh/soh/Enhancements/randomizer/location.h +++ b/soh/soh/Enhancements/randomizer/location.h @@ -180,6 +180,16 @@ class Location { RandomizerHintTextKey hintKey, RandomizerGet vanillaItem, SpoilerCollectionCheck collectionCheck); + static Location Pot(RandomizerCheck rc, RandomizerCheckQuest quest_, SceneID scene_, + int32_t actorParams_, std::string&& shortName_, std::string&& spoilerName_, + RandomizerHintTextKey hintKey, RandomizerGet vanillaItem, + SpoilerCollectionCheck collectionCheck); + + static Location Pot(RandomizerCheck rc, RandomizerCheckQuest quest_, SceneID scene_, + int32_t actorParams_, std::string&& shortName_, + RandomizerHintTextKey hintKey, RandomizerGet vanillaItem, + SpoilerCollectionCheck collectionCheck); + static Location OtherHint(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_, ActorID actorId_, SceneID scene_, std::string&& shortName_, std::string&& spoilerName_); @@ -191,6 +201,10 @@ class Location { static Location Fairy(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_, SceneID scene_, int32_t actorParams_, std::string&& shortName_, RandomizerHintTextKey hintKey, SpoilerCollectionCheck collectionCheck); + static Location Fairy(RandomizerCheck rc, RandomizerCheckQuest quest_, SceneID scene_, int32_t actorParams_, std::string&& shortName_, std::string&& spoilerName_, RandomizerHintTextKey hintKey, SpoilerCollectionCheck collectionCheck); + + static Location Fairy(RandomizerCheck rc, RandomizerCheckQuest quest_, SceneID scene_, int32_t actorParams_, std::string&& shortName_, RandomizerHintTextKey hintKey, SpoilerCollectionCheck collectionCheck); + static Location HintStone(RandomizerCheck rc, RandomizerCheckQuest quest_, SceneID scene_, int32_t actorParams_, std::string&& shortName_); static Location HintStone(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_, SceneID scene_, int32_t actorParams_, std::string&& shortName_); diff --git a/soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp b/soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp index 10c035b7a72..51c4b260da1 100644 --- a/soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp +++ b/soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp @@ -23,9 +23,8 @@ void RegionTable_Init_BottomOfTheWell() { EventAccess(&logic->LoweredBotwWater, []{return logic->CanUse(RG_ZELDAS_LULLABY);}), }, { //Locations - LOCATION(RC_BOTW_SOUTH_RUBBLE_CHEST, logic->HasExplosives()), - LOCATION(RC_BOTW_COFFIN_KEY , (logic->HasItem(RG_BRONZE_SCALE) || logic->LoweredBotwWater) && logic->CanUse(RG_STICKS) || logic->CanUse(RG_DINS_FIRE)), LOCATION(RC_BOTW_SOUTH_SUNKEN_CHEST, logic->LoweredBotwWater), + LOCATION(RC_BOTW_SOUTH_BURIED_CHEST, logic->HasExplosives()), LOCATION(RC_BOTW_WEST_SUNKEN_CHEST , logic->LoweredBotwWater), LOCATION(RC_BOTW_ENTRYWAY_WEST_POT , logic->CanBreakPots()), LOCATION(RC_BOTW_ENTRYWAY_EAST_POT , logic->CanBreakPots()), @@ -47,27 +46,27 @@ void RegionTable_Init_BottomOfTheWell() { //This region combines the Middle with the perimeter's hidden areas. If a warp puts link into the middle without crossing the perimeter or using lens, it will need it's own region areaTable[RR_BOTW_REQUIRES_LENS] = Region("Bottom of the Well Requires Lens", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTW_WEST_FAKE_WALL_CHEST, true), - LOCATION(RC_BOTW_EAST_FAKE_WALL_CHEST, true), - LOCATION(RC_BOTW_CENTRAL_WEST_CHEST , true), + LOCATION(RC_BOTW_WEST_FAKE_WALL_CHEST , true), + LOCATION(RC_BOTW_EAST_FAKE_WALL_CHEST , true), + LOCATION(RC_BOTW_WOODEN_X_ROOM_WEST_CHEST, true), //N64 has no extra check here, but I can't get past without dealing with the spider or taking a hit - LOCATION(RC_BOTW_CENTRAL_EAST_CHEST , logic->CanPassEnemy(RE_BIG_SKULLTULA) || logic->TakeDamage()), + LOCATION(RC_BOTW_WOODEN_X_ROOM_EAST_CHEST, logic->CanPassEnemy(RE_BIG_SKULLTULA) || logic->TakeDamage()), //Not technically behind a wall, but still logically needs lens due to pits - LOCATION(RC_BOTW_NORTH_RUBBLE_CHEST , logic->HasExplosives()), + LOCATION(RC_BOTW_NORTH_BURIED_CHEST , logic->HasExplosives()), }, { //Exits - Entrance(RR_BOTW_LOBBY , []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), - Entrance(RR_BOTW_CENTRAL_ROOMS, []{return logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 3);}), - Entrance(RR_BOTW_B3 , []{return true;}), - Entrance(RR_BOTW_B3_PLATFORM , []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), + Entrance(RR_BOTW_LOBBY , []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), + Entrance(RR_BOTW_INNER_ROOMS, []{return logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 3);}), + Entrance(RR_BOTW_B3 , []{return true;}), + Entrance(RR_BOTW_B3_PLATFORM, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), }); //This area can be reached without lens in logic from basement, but that could require silver rupees if they are shuffled. areaTable[RR_BOTW_SOUTHWEST_ROOM] = Region("Bottom of the Well Southwest Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTW_FAKE_WALL_SOUTH_POT , logic->CanBreakPots()), - LOCATION(RC_BOTW_FAKE_WALL_CENTRAL_POT, logic->CanBreakPots()), LOCATION(RC_BOTW_FAKE_WALL_NORTH_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_FAKE_WALL_CENTRAL_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_FAKE_WALL_SOUTH_POT , logic->CanBreakPots()), }, { //Exits Entrance(RR_BOTW_LOBBY, []{return ctx->GetTrickOption(RT_LENS_BOTW) || logic->CanUse(RG_LENS_OF_TRUTH);}), @@ -97,14 +96,14 @@ void RegionTable_Init_BottomOfTheWell() { }); //If the player can voidwarp into one of these rooms they will need splitting up, and Fake walls will need specifying into middle and the rest moved to perimeter - areaTable[RR_BOTW_CENTRAL_ROOMS] = Region("Bottom of the Well Central Rooms", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, { + areaTable[RR_BOTW_INNER_ROOMS] = Region("Bottom of the Well Inner Rooms", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, { //Events EventAccess(&logic->DekuBabaSticks, []{return logic->CanGetDekuBabaSticks();}), - EventAccess(&logic->DekuBabaNuts, []{return logic->CanGetDekuBabaNuts();}), + EventAccess(&logic->DekuBabaNuts , []{return logic->CanGetDekuBabaNuts();}), }, { //Locations - LOCATION(RC_BOTW_CENTER_WEST_ROOM_GS, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)), - LOCATION(RC_BOTW_CENTER_EAST_ROOM_GS, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)), + LOCATION(RC_BOTW_INNER_WEST_ROOM_GS, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)), + LOCATION(RC_BOTW_INVISIBLE_LEDGE_GS, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)), }, { //Exits Entrance(RR_BOTW_REQUIRES_LENS, []{return logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 3);}), @@ -112,9 +111,9 @@ void RegionTable_Init_BottomOfTheWell() { areaTable[RR_BOTW_COFFIN_ROOM] = Region("Bottom of the Well Coffin Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTW_COFFIN_KEY, logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW)), - LOCATION(RC_BOTW_SOUTHEAST_COFFIN_HEART, logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW)), - LOCATION(RC_BOTW_OPEN_COFFIN_HEART, logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW)), + LOCATION(RC_BOTW_COFFIN_KEY , logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW)), + LOCATION(RC_BOTW_OPEN_COFFIN_HEART, true), + LOCATION(RC_BOTW_SE_COFFIN_HEART , logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW)), }, { //Exits Entrance(RR_BOTW_LOBBY, []{return logic->LoweredBotwWater || logic->HasItem(RG_BRONZE_SCALE);}), @@ -132,20 +131,20 @@ void RegionTable_Init_BottomOfTheWell() { areaTable[RR_BOTW_B3] = Region("Bottom of the Well B3", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTW_B3_CHEST , logic->BlastOrSmash()), - LOCATION(RC_BOTW_B3_WEST_CENTER_POT , logic->CanBreakPots()), - LOCATION(RC_BOTW_B3_EAST_CENTER_POT , logic->CanBreakPots()), - LOCATION(RC_BOTW_B3_WEST_V_MID_NORTH_POT, logic->CanBreakPots()), - LOCATION(RC_BOTW_B3_EAST_V_MIDDLE_POT , logic->CanBreakPots()), - LOCATION(RC_BOTW_B3_WEST_V_SOUTHMOST_POT, logic->CanBreakPots()), - LOCATION(RC_BOTW_B3_EAST_V_SOUTHMOST_POT, logic->CanBreakPots()), - LOCATION(RC_BOTW_B3_EAST_V_NORTHMOST_POT, logic->CanBreakPots()), - LOCATION(RC_BOTW_B3_EAST_V_MID_NORTH_POT, logic->CanBreakPots()), - LOCATION(RC_BOTW_B3_WEST_V_MID_SOUTH_POT, logic->CanBreakPots()), - LOCATION(RC_BOTW_B3_EAST_V_MID_SOUTH_POT, logic->CanBreakPots()), - LOCATION(RC_BOTW_B3_WEST_V_MIDDLE_POT , logic->CanBreakPots()), - LOCATION(RC_BOTW_B3_WEST_V_NORTHMOST_POT, logic->CanBreakPots()), - LOCATION(RC_BOTW_B3_SUN_FAIRY , logic->CanUse(RG_SUNS_SONG)), + LOCATION(RC_BOTW_B3_CHEST , logic->BlastOrSmash()), + LOCATION(RC_BOTW_B3_WEST_CENTER_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_EAST_CENTER_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_WEST_V_N_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_WEST_V_NW_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_WEST_V_W_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_WEST_V_SW_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_WEST_V_S_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_EAST_V_N_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_EAST_V_NW_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_EAST_V_W_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_EAST_V_S_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_EAST_V_SW_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_B3_SUN_FAIRY , logic->CanUse(RG_SUNS_SONG)), }, { //Exits Entrance(RR_BOTW_SOUTHWEST_ROOM , []{return true;}), @@ -165,11 +164,11 @@ void RegionTable_Init_BottomOfTheWell() { areaTable[RR_BOTW_B3_PLATFORM] = Region("Bottom of the Well B3 Platform", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTW_B3_PLATFORM_WEST_RUPEE , true), - LOCATION(RC_BOTW_B3_PLATFORM_NORTHWEST_RUPEE, true), - LOCATION(RC_BOTW_B3_PLATFORM_NORTH_RUPEE , true), - LOCATION(RC_BOTW_B3_PLATFORM_NORTHEAST_RUPEE, true), - LOCATION(RC_BOTW_B3_PLATFORM_EAST_RUPEE , true), + LOCATION(RC_BOTW_B3_PLATFORM_N_RUPEE , true), + LOCATION(RC_BOTW_B3_PLATFORM_NW_RUPEE, true), + LOCATION(RC_BOTW_B3_PLATFORM_NE_RUPEE, true), + LOCATION(RC_BOTW_B3_PLATFORM_W_RUPEE , true), + LOCATION(RC_BOTW_B3_PLATFORM_E_RUPEE , true), }, { //Exits Entrance(RR_BOTW_B3, []{return true;}), @@ -190,18 +189,18 @@ void RegionTable_Init_BottomOfTheWell() { }, { //Locations //Implies CanBreakPots() - LOCATION(RC_BOTW_MQ_CAGED_POT , Here(RR_BOTW_MQ_LOBBY, []{return logic->BlastOrSmash();}) && logic->CanHitEyeTargets()), - LOCATION(RC_BOTW_MQ_RUBBLE_NORTH_HEART, logic->HasExplosives()), - LOCATION(RC_BOTW_MQ_RUBBLE_SOUTH_HEART, logic->HasExplosives()), + LOCATION(RC_BOTW_MQ_CAGED_POT , Here(RR_BOTW_MQ_LOBBY, []{return logic->BlastOrSmash();}) && logic->CanHitEyeTargets()), + LOCATION(RC_BOTW_MQ_N_BURIED_HEART, logic->HasExplosives()), + LOCATION(RC_BOTW_MQ_S_BURIED_HEART, logic->HasExplosives()), }, { //Exits - Entrance(RR_BOTW_ENTRYWAY , []{return logic->IsChild;}), - Entrance(RR_BOTW_MQ_WEST_SWITCH , []{return Here(RR_BOTW_MQ_LOBBY, []{return logic->BlastOrSmash();}) && logic->CanPassEnemy(RE_BIG_SKULLTULA);}), - Entrance(RR_BOTW_MQ_COFFIN_ROOM , []{return (logic->LoweredBotwWater || logic->HasItem(RG_BRONZE_SCALE)) && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 2);}), - Entrance(RR_BOTW_MQ_OUTER_CAGE , []{return logic->IsChild && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 2) && logic->CanUseProjectile();}), - Entrance(RR_BOTW_MQ_DEAD_HAND_ROOM , []{return logic->IsChild && logic->LoweredBotwWater;}), - Entrance(RR_BOTW_MQ_WOODEN_X_ROOM , []{return logic->CanUse(RG_ZELDAS_LULLABY);}), - Entrance(RR_BOTW_MQ_B3 , []{return true;}), + Entrance(RR_BOTW_ENTRYWAY , []{return logic->IsChild;}), + Entrance(RR_BOTW_MQ_WEST_SWITCH , []{return Here(RR_BOTW_MQ_LOBBY, []{return logic->BlastOrSmash();}) && logic->CanPassEnemy(RE_BIG_SKULLTULA);}), + Entrance(RR_BOTW_MQ_COFFIN_ROOM , []{return (logic->LoweredBotwWater || logic->HasItem(RG_BRONZE_SCALE)) && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 2);}), + Entrance(RR_BOTW_MQ_OUTER_CAGE , []{return logic->IsChild && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 2) && logic->CanUseProjectile();}), + Entrance(RR_BOTW_MQ_DEAD_HAND_ROOM, []{return logic->IsChild && logic->LoweredBotwWater;}), + Entrance(RR_BOTW_MQ_WOODEN_X_ROOM , []{return logic->CanUse(RG_ZELDAS_LULLABY);}), + Entrance(RR_BOTW_MQ_B3 , []{return true;}), }); areaTable[RR_BOTW_MQ_WEST_SWITCH] = Region("Bottom of the Well MQ West Switch", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, { @@ -216,9 +215,9 @@ void RegionTable_Init_BottomOfTheWell() { areaTable[RR_BOTW_MQ_COFFIN_ROOM] = Region("Bottom of the Well MQ Coffin Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTW_MQ_COFFIN_ROOM_GS , logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)), - LOCATION(RC_BOTW_MQ_NORTHEAST_COFFIN_HEART, logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW)), - LOCATION(RC_BOTW_MQ_SOUTH_COFFIN_HEART , logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW)), + LOCATION(RC_BOTW_MQ_COFFIN_ROOM_GS , logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)), + LOCATION(RC_BOTW_MQ_NE_COFFIN_HEART, logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW)), + LOCATION(RC_BOTW_MQ_S_COFFIN_HEART , logic->HasFireSourceWithTorch() || logic->CanUse(RG_FAIRY_BOW)), }, { //Exits Entrance(RR_BOTW_MQ_LOBBY, []{return (logic->LoweredBotwWater || logic->HasItem(RG_BRONZE_SCALE)) && logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 2);}), @@ -235,7 +234,7 @@ void RegionTable_Init_BottomOfTheWell() { areaTable[RR_BOTW_MQ_DEAD_HAND_ROOM] = Region("Bottom of the Well MQ Dead Hand Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations LOCATION(RC_BOTW_MQ_DEAD_HAND_CHEST , logic->CanKillEnemy(RE_DEAD_HAND)), - LOCATION(RC_BOTW_MQ_DEAD_HAND_RUBBLE_KEY, logic->HasExplosives() || (ctx->GetTrickOption(RT_BOTW_MQ_DEADHAND_KEY) && logic->CanUse(RG_BOOMERANG))), + LOCATION(RC_BOTW_MQ_DEAD_HAND_BURIED_KEY, logic->HasExplosives() || (ctx->GetTrickOption(RT_BOTW_MQ_DEADHAND_KEY) && logic->CanUse(RG_BOOMERANG))), }, { //Exits //This assumes we spawned in dead hand's room, if whatever trick made this relevant instead puts us in the previous room, remove the kill Dead Hand check. @@ -244,9 +243,9 @@ void RegionTable_Init_BottomOfTheWell() { areaTable[RR_BOTW_MQ_WOODEN_X_ROOM] = Region("Bottom of the Well MQ Wooden X Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTW_MQ_WOODEN_X_CHEST , true), + LOCATION(RC_BOTW_MQ_WOODEN_X_CHEST , true), //This location technically involves an invisible platform, but it's intended to do lensless in vanilla and is clearly signposted by pots. - LOCATION(RC_BOTW_MQ_EAST_INNER_ROOM_KEY , true), + LOCATION(RC_BOTW_MQ_INVISIBLE_LEDGE_KEY , true), //The enemies in this room are invisible and crowd around the player, being awkward to deal with blind unless you already know how. //the right wall is safe, and can be followed to get behind the grave which you can then pull easily assuming you can tank invisible keese //Using a deku nut however stuns everything easily. and if you have a melee weapon you can kill the skull through the grave then grab the drop @@ -254,14 +253,14 @@ void RegionTable_Init_BottomOfTheWell() { //Also you get cheap shotted on entry sometimes. //An MQ lens trick is recommended here, and a review of this room for OHKO logic what that is added is advised. //In the meantime I assume damage taken or the easy answer (nuts) - LOCATION(RC_BOTW_MQ_WEST_CENTER_ROOM_GS , logic->OpenedWestRoomMQBotw && (logic->TakeDamage() || logic->CanUse(RG_NUTS)) && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)), - LOCATION(RC_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT , logic->CanBreakPots()), - LOCATION(RC_BOTW_MQ_WOODEN_X_ROOM_EAST_POT , logic->CanBreakPots()), - LOCATION(RC_BOTW_MQ_WOODEN_X_ROOM_WEST_POT , logic->CanBreakPots()), - LOCATION(RC_BOTW_MQ_EAST_INNER_ROOM_FAR_POT , logic->CanBreakPots()), - LOCATION(RC_BOTW_MQ_EAST_INNER_ROOM_MID_POT , logic->CanBreakPots()), - LOCATION(RC_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT, logic->CanBreakPots()), - LOCATION(RC_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY , logic->CanUse(RG_SUNS_SONG)), + LOCATION(RC_BOTW_MQ_UNDER_GRAVE_GS , logic->OpenedWestRoomMQBotw && (logic->TakeDamage() || logic->CanUse(RG_NUTS)) && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)), + LOCATION(RC_BOTW_MQ_WOODEN_X_ROOM_W_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_MQ_WOODEN_X_ROOM_C_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_MQ_WOODEN_X_ROOM_E_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_MQ_INVISIBLE_LEDGE_NW_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_MQ_INVISIBLE_LEDGE_NE_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_MQ_INVISIBLE_LEDGE_S_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_MQ_NEAR_POTS_SUN_FAIRY , logic->CanUse(RG_SUNS_SONG)), }, { //Exits //If a relevant trick causes you to be able to warp into here without going through LOBBY, a new eventAccess will be needed for lowering the gates with ZL @@ -272,11 +271,11 @@ void RegionTable_Init_BottomOfTheWell() { areaTable[RR_BOTW_MQ_B3] = Region("Bottom of the Well MQ B3", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations //behind invisible big skulltulas, but with navi spotting it's easy to avoid them, or at worst, tank your way through as they do not block the path - LOCATION(RC_BOTW_MQ_B3_GS , logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)), - LOCATION(RC_BOTW_MQ_B3_SOUTH_HEART , true), - LOCATION(RC_BOTW_MQ_B3_NORTHWEST_HEART, true), - LOCATION(RC_BOTW_MQ_B3_NORTHEAST_HEART, true), - LOCATION(RC_BOTW_MQ_B3_SUN_FAIRY , logic->CanUse(RG_SUNS_SONG)), + LOCATION(RC_BOTW_MQ_B3_GS , logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)), + LOCATION(RC_BOTW_MQ_B3_S_HEART , true), + LOCATION(RC_BOTW_MQ_B3_NW_HEART , true), + LOCATION(RC_BOTW_MQ_B3_NE_HEART , true), + LOCATION(RC_BOTW_MQ_B3_SUN_FAIRY, logic->CanUse(RG_SUNS_SONG)), }, { //Exits Entrance(RR_BOTW_MQ_LOBBY, []{return true;}), diff --git a/soh/soh/Enhancements/randomizer/location_list.cpp b/soh/soh/Enhancements/randomizer/location_list.cpp index 5c3adf9ba66..79b3e526ef2 100644 --- a/soh/soh/Enhancements/randomizer/location_list.cpp +++ b/soh/soh/Enhancements/randomizer/location_list.cpp @@ -538,27 +538,76 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_SHADOW_TEMPLE_MQ_FREESTANDING_KEY] = Location::Collectable(RC_SHADOW_TEMPLE_MQ_FREESTANDING_KEY, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_ITEM00, SCENE_SHADOW_TEMPLE, 1553, 0x06, "MQ Freestanding Key", RHT_SHADOW_TEMPLE_MQ_FREESTANDING_KEY, RG_SHADOW_TEMPLE_SMALL_KEY, true); // Bottom of the Well Vanilla - locationTable[RC_BOTW_WEST_FAKE_WALL_CHEST] = Location::Chest(RC_BOTW_WEST_FAKE_WALL_CHEST , RCQUEST_VANILLA, RCTYPE_SMALL_KEY , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 22600 , 0x08, "West Fake Wall Chest" , RHT_BOTW_WEST_FAKE_WALL_CHEST , RG_BOTW_SMALL_KEY, true); - locationTable[RC_BOTW_SOUTH_RUBBLE_CHEST] = Location::Chest(RC_BOTW_SOUTH_RUBBLE_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 20578 , 0x02, "South Rubble Chest" , RHT_BOTW_SOUTH_RUBBLE_CHEST , RG_BOMBCHU_10 ); - locationTable[RC_BOTW_EAST_FAKE_WALL_CHEST] = Location::Chest(RC_BOTW_EAST_FAKE_WALL_CHEST , RCQUEST_VANILLA, RCTYPE_SMALL_KEY , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 22597 , 0x05, "East Fake Wall Chest" , RHT_BOTW_EAST_FAKE_WALL_CHEST , RG_BOTW_SMALL_KEY, true); - locationTable[RC_BOTW_CENTRAL_WEST_CHEST] = Location::Chest(RC_BOTW_CENTRAL_WEST_CHEST , RCQUEST_VANILLA, RCTYPE_COMPASS , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 2049 , 0x01, "Central West Chest" , RHT_BOTW_CENTRAL_WEST_CHEST , RG_BOTW_COMPASS , true); - locationTable[RC_BOTW_CENTRAL_EAST_CHEST] = Location::Chest(RC_BOTW_CENTRAL_EAST_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 20558 , 0x0E, "Central East Chest" , RHT_BOTW_CENTRAL_EAST_CHEST , RG_DEKU_NUTS_5 ); - locationTable[RC_BOTW_NORTH_RUBBLE_CHEST] = Location::Chest(RC_BOTW_NORTH_RUBBLE_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 23684 , 0x04, "North Rubble Chest" , RHT_BOTW_NORTH_RUBBLE_CHEST , RG_DEKU_NUTS_10 ); - locationTable[RC_BOTW_DEAD_HAND_CHEST] = Location::Chest(RC_BOTW_DEAD_HAND_CHEST , RCQUEST_VANILLA, RCTYPE_BOSS_HEART_OR_OTHER_REWARD, ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 4419 , 0x03, "Dead Hand Chest" , RHT_BOTW_DEAD_HAND_CHEST , RG_LENS_OF_TRUTH , true); - locationTable[RC_BOTW_INVISIBLE_CHEST] = Location::Chest(RC_BOTW_INVISIBLE_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 27348 , 0x14, "Invisible Chest" , RHT_BOTW_INVISIBLE_CHEST , RG_HUGE_RUPEE ); - locationTable[RC_BOTW_SOUTH_SUNKEN_CHEST] = Location::Chest(RC_BOTW_SOUTH_SUNKEN_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 23760 , 0x10, "South Sunken Chest" , RHT_BOTW_SOUTH_SUNKEN_CHEST , RG_BOMBS_10 ); - locationTable[RC_BOTW_WEST_SUNKEN_CHEST] = Location::Chest(RC_BOTW_WEST_SUNKEN_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 22793 , 0x09, "West Sunken Chest" , RHT_BOTW_WEST_SUNKEN_CHEST , RG_RECOVERY_HEART); - locationTable[RC_BOTW_B3_CHEST] = Location::Chest(RC_BOTW_B3_CHEST , RCQUEST_VANILLA, RCTYPE_MAP , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 2087 , 0x07, "B3 Chest" , RHT_BOTW_B3_CHEST , RG_BOTW_MAP , true); - locationTable[RC_BOTW_3_HIDDEN_PITS_CHEST] = Location::Chest(RC_BOTW_3_HIDDEN_PITS_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 21802 , 0x0A, "3 Hidden Pits Chest" , RHT_BOTW_3_HIDDEN_PITS_CHEST , RG_DEKU_SHIELD ); - locationTable[RC_BOTW_OUTER_CAGE_CHEST] = Location::Chest(RC_BOTW_OUTER_CAGE_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 21836 , 0x0C, "Outer Cage Chest" , RHT_BOTW_OUTER_CAGE_CHEST , RG_HYLIAN_SHIELD ); - locationTable[RC_BOTW_COFFIN_KEY] = Location::Collectable(RC_BOTW_COFFIN_KEY , RCQUEST_VANILLA, RCTYPE_SMALL_KEY , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 273 , 0x01, "Coffin Key" , RHT_BOTW_COFFIN_KEY , RG_BOTW_SMALL_KEY, true); + locationTable[RC_BOTW_SOUTH_SUNKEN_CHEST] = Location::Chest(RC_BOTW_SOUTH_SUNKEN_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 23760 , 0x10, "South Sunken Chest" , RHT_BOTW_SOUTH_SUNKEN_CHEST , RG_BOMBS_10 ); + locationTable[RC_BOTW_SOUTH_BURIED_CHEST] = Location::Chest(RC_BOTW_SOUTH_BURIED_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 20578 , 0x02, "South Buried Chest" , RHT_BOTW_SOUTH_BURIED_CHEST , RG_BOMBCHU_10 ); + locationTable[RC_BOTW_WEST_SUNKEN_CHEST] = Location::Chest(RC_BOTW_WEST_SUNKEN_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 22793 , 0x09, "West Sunken Chest" , RHT_BOTW_WEST_SUNKEN_CHEST , RG_RECOVERY_HEART); + locationTable[RC_BOTW_ENTRYWAY_WEST_POT] = Location::Pot(RC_BOTW_ENTRYWAY_WEST_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-41, 389) , "Entryway West Pot" , RHT_BOTW_ENTRYWAY_EAST_POT , RG_DEKU_STICK_1 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_ENTRYWAY_WEST_POT)); + locationTable[RC_BOTW_ENTRYWAY_EAST_POT] = Location::Pot(RC_BOTW_ENTRYWAY_EAST_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(36, 389) , "Entryway East Pot" , RHT_BOTW_ENTRYWAY_WEST_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_ENTRYWAY_EAST_POT)); + locationTable[RC_BOTW_SUNKEN_POT] = Location::Pot(RC_BOTW_SUNKEN_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(3, -1641) , "Sunken Pot" , RHT_BOTW_SUNKEN_POT , RG_BOMBS_5 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_SUNKEN_POT)); + locationTable[RC_BOTW_WEST_FAKE_WALL_CHEST] = Location::Chest(RC_BOTW_WEST_FAKE_WALL_CHEST , RCQUEST_VANILLA, RCTYPE_SMALL_KEY , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 22600 , 0x08, "West Fake Wall Chest" , RHT_BOTW_WEST_FAKE_WALL_CHEST , RG_BOTW_SMALL_KEY, true); + locationTable[RC_BOTW_EAST_FAKE_WALL_CHEST] = Location::Chest(RC_BOTW_EAST_FAKE_WALL_CHEST , RCQUEST_VANILLA, RCTYPE_SMALL_KEY , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 22597 , 0x05, "East Fake Wall Chest" , RHT_BOTW_EAST_FAKE_WALL_CHEST , RG_BOTW_SMALL_KEY, true); + locationTable[RC_BOTW_WOODEN_X_ROOM_WEST_CHEST] = Location::Chest(RC_BOTW_WOODEN_X_ROOM_WEST_CHEST , RCQUEST_VANILLA, RCTYPE_COMPASS , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 2049 , 0x01, "Wooden X Room West Chest" , RHT_BOTW_WOODEN_X_ROOM_WEST_CHEST , RG_BOTW_COMPASS , true); + locationTable[RC_BOTW_WOODEN_X_ROOM_EAST_CHEST] = Location::Chest(RC_BOTW_WOODEN_X_ROOM_EAST_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 20558 , 0x0E, "Wooden X Room East Chest" , RHT_BOTW_WOODEN_X_ROOM_EAST_CHEST , RG_DEKU_NUTS_5 ); + locationTable[RC_BOTW_NORTH_BURIED_CHEST] = Location::Chest(RC_BOTW_NORTH_BURIED_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 23684 , 0x04, "North Buried Chest" , RHT_BOTW_NORTH_BURIED_CHEST , RG_DEKU_NUTS_10 ); + locationTable[RC_BOTW_FAKE_WALL_NORTH_POT] = Location::Pot(RC_BOTW_FAKE_WALL_NORTH_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-965, -32) , "Fake Wall North Pot" , RHT_BOTW_FAKE_WALL_NORTH_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_FAKE_WALL_NORTH_POT)); + locationTable[RC_BOTW_FAKE_WALL_CENTRAL_POT] = Location::Pot(RC_BOTW_FAKE_WALL_CENTRAL_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-966, 9) , "Fake Wall Central Pot" , RHT_BOTW_FAKE_WALL_CENTRAL_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT)); + locationTable[RC_BOTW_FAKE_WALL_SOUTH_POT] = Location::Pot(RC_BOTW_FAKE_WALL_SOUTH_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-969, 55) , "Fake Wall South Pot" , RHT_BOTW_FAKE_WALL_SOUTH_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_FAKE_WALL_SOUTH_POT)); + locationTable[RC_BOTW_3_HIDDEN_PITS_CHEST] = Location::Chest(RC_BOTW_3_HIDDEN_PITS_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 21802 , 0x0A, "3 Hidden Pits Chest" , RHT_BOTW_3_HIDDEN_PITS_CHEST , RG_DEKU_SHIELD ); + locationTable[RC_BOTW_3_HIDDEN_PITS_POT] = Location::Pot(RC_BOTW_3_HIDDEN_PITS_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(874, -1294) , "3 Hidden Pits Pot" , RHT_BOTW_3_HIDDEN_PITS_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_3_HIDDEN_PITS_POT)); + locationTable[RC_BOTW_OUTER_CAGE_CHEST] = Location::Chest(RC_BOTW_OUTER_CAGE_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 21836 , 0x0C, "Outer Cage Chest" , RHT_BOTW_OUTER_CAGE_CHEST , RG_HYLIAN_SHIELD ); + locationTable[RC_BOTW_OUTER_CAGE_GS] = Location::GSToken(RC_BOTW_OUTER_CAGE_GS , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, 10241 , 0x01, "Outer Cage GS" , RHT_BOTW_OUTER_CAGE_GS); + locationTable[RC_BOTW_INVISIBLE_LEDGE_GS] = Location::GSToken(RC_BOTW_INVISIBLE_LEDGE_GS , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, 10242 , 0x02, "Invisible Ledge GS" , RHT_BOTW_INVISIBLE_LEDGE_GS); + locationTable[RC_BOTW_INNER_WEST_ROOM_GS] = Location::GSToken(RC_BOTW_INNER_WEST_ROOM_GS , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, 10244 , 0x04, "West Inner Room GS" , RHT_BOTW_WEST_INNER_ROOM_GS); + locationTable[RC_BOTW_COFFIN_KEY] = Location::Collectable(RC_BOTW_COFFIN_KEY , RCQUEST_VANILLA, RCTYPE_SMALL_KEY , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 273 , 0x01, "Coffin Key" , RHT_BOTW_COFFIN_KEY , RG_BOTW_SMALL_KEY, true); + locationTable[RC_BOTW_OPEN_COFFIN_HEART] = Location::Collectable(RC_BOTW_OPEN_COFFIN_HEART , RCQUEST_VANILLA, RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-2144, -859) , "Open Coffin Heart" , RHT_BOTW_OPEN_COFFIN_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_OPEN_COFFIN_HEART)); + locationTable[RC_BOTW_SE_COFFIN_HEART] = Location::Collectable(RC_BOTW_SE_COFFIN_HEART , RCQUEST_VANILLA, RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-1947, -625) , "Southeast Coffin Heart" , RHT_BOTW_SE_COFFIN_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_SE_COFFIN_HEART)); + locationTable[RC_BOTW_DEAD_HAND_CHEST] = Location::Chest(RC_BOTW_DEAD_HAND_CHEST , RCQUEST_VANILLA, RCTYPE_BOSS_HEART_OR_OTHER_REWARD, ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 4419 , 0x03, "Dead Hand Chest" , RHT_BOTW_DEAD_HAND_CHEST , RG_LENS_OF_TRUTH , true); + locationTable[RC_BOTW_INVISIBLE_CHEST] = Location::Chest(RC_BOTW_INVISIBLE_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 27348 , 0x14, "Invisible Chest" , RHT_BOTW_INVISIBLE_CHEST , RG_HUGE_RUPEE ); + locationTable[RC_BOTW_B3_CHEST] = Location::Chest(RC_BOTW_B3_CHEST , RCQUEST_VANILLA, RCTYPE_MAP , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 2087 , 0x07, "B3 Chest" , RHT_BOTW_B3_CHEST , RG_BOTW_MAP , true); + locationTable[RC_BOTW_B3_WEST_CENTER_POT] = Location::Pot(RC_BOTW_B3_WEST_CENTER_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-95, -673) , "B3 West Center Pot" , RHT_BOTW_B3_WEST_CENTER_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_CENTER_POT)); + locationTable[RC_BOTW_B3_EAST_CENTER_POT] = Location::Pot(RC_BOTW_B3_EAST_CENTER_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(75, -598) , "B3 East Center Pot" , RHT_BOTW_B3_EAST_CENTER_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_CENTER_POT)); + locationTable[RC_BOTW_B3_WEST_V_N_POT] = Location::Pot(RC_BOTW_B3_WEST_V_N_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(296, -1206) , "B3 West V Northmost Pot" , RHT_BOTW_B3_WEST_V_N_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_N_POT)); + locationTable[RC_BOTW_B3_WEST_V_NW_POT] = Location::Pot(RC_BOTW_B3_WEST_V_NW_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(270, -1151) , "B3 West V Northwest Pot" , RHT_BOTW_B3_WEST_V_MID_NW_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_NW_POT)); + locationTable[RC_BOTW_B3_WEST_V_W_POT] = Location::Pot(RC_BOTW_B3_WEST_V_W_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(257, -1099) , "B3 West V Westmost Pot" , RHT_BOTW_B3_WEST_V_W_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_W_POT)); + locationTable[RC_BOTW_B3_WEST_V_SW_POT] = Location::Pot(RC_BOTW_B3_WEST_V_SW_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(313, -1086) , "B3 West V Southwest Pot" , RHT_BOTW_B3_WEST_V_SW_POT , RG_DEKU_NUTS_5 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_SW_POT)); + locationTable[RC_BOTW_B3_WEST_V_S_POT] = Location::Pot(RC_BOTW_B3_WEST_V_S_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(378, -1089) , "B3 West V Southmost Pot" , RHT_BOTW_B3_WEST_V_S_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_S_POT)); + locationTable[RC_BOTW_B3_EAST_V_N_POT] = Location::Pot(RC_BOTW_B3_EAST_V_N_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1345) , "B3 East V Northmost Pot" , RHT_BOTW_B3_EAST_V_N_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_N_POT)); + locationTable[RC_BOTW_B3_EAST_V_NW_POT] = Location::Pot(RC_BOTW_B3_EAST_V_NW_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(562, -1304) , "B3 East V Northwest Pot" , RHT_BOTW_B3_EAST_V_NW_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_NW_POT)); + locationTable[RC_BOTW_B3_EAST_V_W_POT] = Location::Pot(RC_BOTW_B3_EAST_V_W_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1254) , "B3 East V Westmost Pot" , RHT_BOTW_B3_EAST_V_W_POT , RG_GREEN_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_W_POT)); + locationTable[RC_BOTW_B3_EAST_V_SW_POT] = Location::Pot(RC_BOTW_B3_EAST_V_SW_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(618, -1254) , "B3 East V Southwest Pot" , RHT_BOTW_B3_EAST_V_SW_POT , RG_DEKU_STICK_1 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_SW_POT)); + locationTable[RC_BOTW_B3_EAST_V_S_POT] = Location::Pot(RC_BOTW_B3_EAST_V_S_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(665, -1252) , "B3 East V Southmost Pot" , RHT_BOTW_B3_EAST_V_S_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_S_POT)); + locationTable[RC_BOTW_B3_SUN_FAIRY] = Location::Fairy(RC_BOTW_B3_SUN_FAIRY , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -1531), "B3 Sun Fairy" , RHT_BOTW_B3_SUN_FAIRY , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_SUN_FAIRY)); + locationTable[RC_BOTW_B3_PLATFORM_N_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_N_RUPEE , RCQUEST_VANILLA, RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(47, -805) , "B3 Platform N Rupee" , RHT_BOTW_B3_PLATFORM_N_RUPEE , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_PLATFORM_N_RUPEE)); + locationTable[RC_BOTW_B3_PLATFORM_NW_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_NW_RUPEE , RCQUEST_VANILLA, RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-19, -828) , "B3 Platform NW Rupee" , RHT_BOTW_B3_PLATFORM_NW_RUPEE , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_RHT_BOTW_B3_PLATFORM_NW_RUPEE)); + locationTable[RC_BOTW_B3_PLATFORM_NE_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_NE_RUPEE , RCQUEST_VANILLA, RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(94, -762) , "B3 Platform NE Rupee" , RHT_BOTW_B3_PLATFORM_NE_RUPEE , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_RHT_BOTW_B3_PLATFORM_NE_RUPEE)); + locationTable[RC_BOTW_B3_PLATFORM_W_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_W_RUPEE , RCQUEST_VANILLA, RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-67, -748) , "B3 Platform W Rupee" , RHT_BOTW_B3_PLATFORM_W_RUPEE , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_RHT_BOTW_B3_PLATFORM_W_RUPEE)); + locationTable[RC_BOTW_B3_PLATFORM_E_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_E_RUPEE , RCQUEST_VANILLA, RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(85, -710) , "B3 Platform E Rupee" , RHT_BOTW_B3_PLATFORM_E_RUPEE , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_RHT_BOTW_B3_PLATFORM_E_RUPEE)); // Bottom of the Well Master Quest - locationTable[RC_BOTW_MQ_WOODEN_X_CHEST] = Location::Chest(RC_BOTW_MQ_WOODEN_X_CHEST , RCQUEST_MQ , RCTYPE_MAP , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 2083 , 0x03, "MQ Wooden X Chest" , RHT_BOTW_MQ_WOODEN_X_CHEST , RG_BOTW_MAP , true); - locationTable[RC_BOTW_MQ_REDEAD_CHEST] = Location::Chest(RC_BOTW_MQ_REDEAD_CHEST , RCQUEST_MQ , RCTYPE_BOSS_HEART_OR_OTHER_REWARD, ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, -20159, 0x01, "MQ Redead Chest" , RHT_BOTW_MQ_REDEAD_CHEST , RG_LENS_OF_TRUTH , true); - locationTable[RC_BOTW_MQ_DEAD_HAND_CHEST] = Location::Chest(RC_BOTW_MQ_DEAD_HAND_CHEST , RCQUEST_MQ , RCTYPE_COMPASS , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 6146 , 0x02, "MQ Dead Hand Chest" , RHT_BOTW_MQ_DEAD_HAND_CHEST , RG_BOTW_COMPASS , true); - locationTable[RC_BOTW_MQ_DEAD_HAND_RUBBLE_KEY] = Location::Collectable(RC_BOTW_MQ_DEAD_HAND_RUBBLE_KEY, RCQUEST_MQ , RCTYPE_SMALL_KEY , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 529 , 0x02, "MQ Dead Hand Rubble Key", RHT_BOTW_MQ_DEAD_HAND_RUBBLE_KEY, RG_BOTW_SMALL_KEY, true); - locationTable[RC_BOTW_MQ_EAST_INNER_ROOM_KEY] = Location::Collectable(RC_BOTW_MQ_EAST_INNER_ROOM_KEY , RCQUEST_MQ , RCTYPE_SMALL_KEY , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 273 , 0x01, "MQ East Inner Room Key" , RHT_BOTW_MQ_EAST_INNER_ROOM_KEY , RG_BOTW_SMALL_KEY, true); - + locationTable[RC_BOTW_MQ_CAGED_POT] = Location::Pot(RC_BOTW_MQ_CAGED_POT , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(421, -174) , "MQ Caged Pot" , RHT_BOTW_MQ_CAGED_POT , RG_GREEN_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_CAGED_POT)); + locationTable[RC_BOTW_MQ_N_BURIED_HEART] = Location::Collectable(RC_BOTW_MQ_N_BURIED_HEART , RCQUEST_MQ , RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-83, -350) , "MQ North Buried Heart" , RHT_BOTW_MQ_N_BURIED_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_N_BURIED_HEART)); + locationTable[RC_BOTW_MQ_S_BURIED_HEART] = Location::Collectable(RC_BOTW_MQ_S_BURIED_HEART , RCQUEST_MQ , RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-83, -274) , "MQ South Buried Heart" , RHT_BOTW_MQ_S_BURIED_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_S_BURIED_HEART)); + locationTable[RC_BOTW_MQ_COFFIN_ROOM_GS] = Location::GSToken(RC_BOTW_MQ_COFFIN_ROOM_GS , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, 10244, 0x04, "MQ Coffin Room GS" , RHT_BOTW_MQ_COFFIN_ROOM_GS); + locationTable[RC_BOTW_MQ_NE_COFFIN_HEART] = Location::Collectable(RC_BOTW_MQ_NE_COFFIN_HEART , RCQUEST_MQ , RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-1945, -863) , "MQ Northeast Coffin Heart", RHT_BOTW_MQ_NE_COFFIN_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_NE_COFFIN_HEART)); + locationTable[RC_BOTW_MQ_S_COFFIN_HEART] = Location::Collectable(RC_BOTW_MQ_S_COFFIN_HEART , RCQUEST_MQ , RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-2143, -621) , "MQ South Coffin Heart" , RHT_BOTW_MQ_S_COFFIN_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_S_COFFIN_HEART)); + locationTable[RC_BOTW_MQ_DEAD_HAND_CHEST] = Location::Chest(RC_BOTW_MQ_DEAD_HAND_CHEST , RCQUEST_MQ , RCTYPE_COMPASS , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 6146 , 0x02, "MQ Dead Hand Chest" , RHT_BOTW_MQ_DEAD_HAND_CHEST , RG_BOTW_COMPASS , true); + locationTable[RC_BOTW_MQ_DEAD_HAND_BURIED_KEY] = Location::Collectable(RC_BOTW_MQ_DEAD_HAND_BURIED_KEY , RCQUEST_MQ , RCTYPE_SMALL_KEY , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 529 , 0x02, "MQ Dead Hand Buried Key" , RHT_BOTW_MQ_DEAD_HAND_BURIED_KEY , RG_BOTW_SMALL_KEY, true); + locationTable[RC_BOTW_MQ_WOODEN_X_CHEST] = Location::Chest(RC_BOTW_MQ_WOODEN_X_CHEST , RCQUEST_MQ , RCTYPE_MAP , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 2083 , 0x03, "MQ Wooden X Chest" , RHT_BOTW_MQ_WOODEN_X_CHEST , RG_BOTW_MAP , true); + locationTable[RC_BOTW_MQ_INVISIBLE_LEDGE_KEY] = Location::Collectable(RC_BOTW_MQ_INVISIBLE_LEDGE_KEY , RCQUEST_MQ , RCTYPE_SMALL_KEY , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 273 , 0x01, "MQ Invisible Ledge Key" , RHT_BOTW_MQ_IMVISIBLE_LEDGE_KEY , RG_BOTW_SMALL_KEY, true); + locationTable[RC_BOTW_MQ_UNDER_GRAVE_GS] = Location::GSToken(RC_BOTW_MQ_UNDER_GRAVE_GS , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, 10242 , 0x02, "MQ Under Grave GS" , RHT_BOTW_MQ_UNDER_GRAVE_GS); + locationTable[RC_BOTW_MQ_WOODEN_X_ROOM_W_POT] = Location::Pot(RC_BOTW_MQ_WOODEN_X_ROOM_W_POT , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(269, -376) , "MQ Wooden X Room W Pot" , RHT_BOTW_MQ_WOODEN_X_ROOM_W_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_WOODEN_X_ROOM_W_POT)); + locationTable[RC_BOTW_MQ_WOODEN_X_ROOM_C_POT] = Location::Pot(RC_BOTW_MQ_WOODEN_X_ROOM_C_POT , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(339, -377) , "MQ Wooden X Room C Pot" , RHT_BOTW_MQ_WOODEN_X_ROOM_C_POT , RG_ARROWS_10 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_WOODEN_X_ROOM_C_POT)); + locationTable[RC_BOTW_MQ_WOODEN_X_ROOM_E_POT] = Location::Pot(RC_BOTW_MQ_WOODEN_X_ROOM_E_POT , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(416, -377) , "MQ Wooden X Room E Pot" , RHT_BOTW_MQ_WOODEN_X_ROOM_E_POT , RG_BOMBS_10 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_WOODEN_X_ROOM_E_POT)); + locationTable[RC_BOTW_MQ_INVISIBLE_LEDGE_NW_POT] = Location::Pot(RC_BOTW_MQ_INVISIBLE_LEDGE_NW_POT, RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(288, -1240) , "MQ Invisible Ledge NW Pot", RHT_BOTW_MQ_INVISIBLE_LEDGE_NW_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_NW_POT)); + locationTable[RC_BOTW_MQ_INVISIBLE_LEDGE_NE_POT] = Location::Pot(RC_BOTW_MQ_INVISIBLE_LEDGE_NE_POT, RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(438, -1234) , "MQ Invisible Ledge NE Pot", RHT_BOTW_MQ_INVISIBLE_LEDGE_NE_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_NE_POT)); + locationTable[RC_BOTW_MQ_INVISIBLE_LEDGE_S_POT] = Location::Pot(RC_BOTW_MQ_INVISIBLE_LEDGE_S_POT , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(444, -1114) , "MQ Invisible Ledge S Pot" , RHT_BOTW_MQ_INVISIBLE_LEDGE_S_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_S_POT)); + locationTable[RC_BOTW_MQ_NEAR_POTS_SUN_FAIRY] = Location::Fairy(RC_BOTW_MQ_NEAR_POTS_SUN_FAIRY , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -437) , "MQ Near Pots Sun Fairy" , RHT_BOTW_MQ_NEAR_POTS_SUN_FAIRY , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_NEAR_POTS_SUN_FAIRY)); + locationTable[RC_BOTW_MQ_B3_GS] = Location::GSToken(RC_BOTW_MQ_B3_GS , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, 10241 , 0x01, "MQ B3 GS" , RHT_BOTW_MQ_B3_GS); + locationTable[RC_BOTW_MQ_B3_S_HEART] = Location::Collectable(RC_BOTW_MQ_B3_S_HEART , RCQUEST_MQ , RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(1083, -1174) , "MQ B3 South Heart" , RHT_BOTW_MQ_B3_S_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_B3_S_HEART)); + locationTable[RC_BOTW_MQ_B3_NW_HEART] = Location::Collectable(RC_BOTW_MQ_B3_NW_HEART , RCQUEST_MQ , RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(1044, -1223) , "MQ B3 Northwest Heart" , RHT_BOTW_MQ_B3_NW_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_B3_NW_HEART)); + locationTable[RC_BOTW_MQ_B3_NE_HEART] = Location::Collectable(RC_BOTW_MQ_B3_NE_HEART , RCQUEST_MQ , RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(1114, -1223) , "MQ B3 Notheast Heart" , RHT_BOTW_MQ_B3_NE_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_B3_NE_HEART)); + locationTable[RC_BOTW_MQ_B3_SUN_FAIRY] = Location::Fairy(RC_BOTW_MQ_B3_SUN_FAIRY , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -1458), "MQ B3 Sun Fairy" , RHT_BOTW_MQ_B3_SUN_FAIRY , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_B3_SUN_FAIRY)); + locationTable[RC_BOTW_MQ_REDEAD_CHEST] = Location::Chest(RC_BOTW_MQ_REDEAD_CHEST , RCQUEST_MQ , RCTYPE_BOSS_HEART_OR_OTHER_REWARD, ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, -20159, 0x01, "MQ Redead Chest" , RHT_BOTW_MQ_REDEAD_CHEST , RG_LENS_OF_TRUTH , true); + // Ice Cavern Vanilla locationTable[RC_ICE_CAVERN_MAP_CHEST] = Location::Chest(RC_ICE_CAVERN_MAP_CHEST, RCQUEST_VANILLA, RCTYPE_MAP, ACTOR_EN_BOX, SCENE_ICE_CAVERN, 2080, 0x00, "Map Chest", RHT_ICE_CAVERN_MAP_CHEST, RG_ICE_CAVERN_MAP, true); locationTable[RC_ICE_CAVERN_COMPASS_CHEST] = Location::Chest(RC_ICE_CAVERN_COMPASS_CHEST, RCQUEST_VANILLA, RCTYPE_COMPASS, ACTOR_EN_BOX, SCENE_ICE_CAVERN, 2049, 0x01, "Compass Chest", RHT_ICE_CAVERN_COMPASS_CHEST, RG_ICE_CAVERN_COMPASS, true); @@ -739,13 +788,6 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_SHADOW_TEMPLE_MQ_GS_AFTER_WIND] = Location::GSToken(RC_SHADOW_TEMPLE_MQ_GS_AFTER_WIND, RCQUEST_MQ, SCENE_SHADOW_TEMPLE, 9992, 0x08, "MQ GS After Wind", RHT_SHADOW_TEMPLE_MQ_GS_AFTER_WIND); locationTable[RC_SHADOW_TEMPLE_MQ_GS_AFTER_SHIP] = Location::GSToken(RC_SHADOW_TEMPLE_MQ_GS_AFTER_SHIP, RCQUEST_MQ, SCENE_SHADOW_TEMPLE, 10000, 0x10, "MQ GS After Ship", RHT_SHADOW_TEMPLE_MQ_GS_AFTER_SHIP); locationTable[RC_SHADOW_TEMPLE_MQ_GS_NEAR_BOSS] = Location::GSToken(RC_SHADOW_TEMPLE_MQ_GS_NEAR_BOSS, RCQUEST_MQ, SCENE_SHADOW_TEMPLE, 9988, 0x04, "MQ GS Near Boss", RHT_SHADOW_TEMPLE_MQ_GS_NEAR_BOSS); - // Bottom of the Well - locationTable[RC_BOTW_OUTER_CAGE_GS] = Location::GSToken(RC_BOTW_OUTER_CAGE_GS, RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, 10241, 0x01, "GS Like Like Cage", RHT_BOTTOM_OF_THE_WELL_GS_LIKE_LIKE_CAGE); - locationTable[RC_BOTW_CENTER_EAST_ROOM_GS] = Location::GSToken(RC_BOTW_CENTER_EAST_ROOM_GS, RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, 10242, 0x02, "GS East Inner Room", RHT_BOTTOM_OF_THE_WELL_GS_EAST_INNER_ROOM); - locationTable[RC_BOTW_CENTER_WEST_ROOM_GS] = Location::GSToken(RC_BOTW_CENTER_WEST_ROOM_GS, RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, 10244, 0x04, "GS West Inner Room", RHT_BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM); - locationTable[RC_BOTW_MQ_B3_GS] = Location::GSToken(RC_BOTW_MQ_B3_GS, RCQUEST_MQ, SCENE_BOTTOM_OF_THE_WELL, 10241, 0x01, "MQ GS Basement", RHT_BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT); - locationTable[RC_BOTW_MQ_COFFIN_ROOM_GS] = Location::GSToken(RC_BOTW_MQ_COFFIN_ROOM_GS, RCQUEST_MQ, SCENE_BOTTOM_OF_THE_WELL, 10244, 0x04, "MQ GS Coffin Room", RHT_BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM); - locationTable[RC_BOTW_MQ_WEST_CENTER_ROOM_GS] = Location::GSToken(RC_BOTW_MQ_WEST_CENTER_ROOM_GS, RCQUEST_MQ, SCENE_BOTTOM_OF_THE_WELL, 10242, 0x02, "MQ GS West Inner Room", RHT_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM); // Ice Cavern locationTable[RC_ICE_CAVERN_GS_PUSH_BLOCK_ROOM] = Location::GSToken(RC_ICE_CAVERN_GS_PUSH_BLOCK_ROOM, RCQUEST_VANILLA, SCENE_ICE_CAVERN, 10497, 0x01, "GS Push Block Room", RHT_ICE_CAVERN_GS_PUSH_BLOCK_ROOM); locationTable[RC_ICE_CAVERN_GS_SPINNING_SCYTHE_ROOM] = Location::GSToken(RC_ICE_CAVERN_GS_SPINNING_SCYTHE_ROOM, RCQUEST_VANILLA, SCENE_ICE_CAVERN, 10498, 0x02, "GS Spinning Scythe Room", RHT_ICE_CAVERN_GS_SPINNING_SCYTHE_ROOM); @@ -1377,25 +1419,6 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_16] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_16, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(337, -300), "Ganons Tower Pot 16", "Ganons Castle Ganons Tower Pot 16", RHT_POT_GANONS_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_16)); locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_17] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_17, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(299, -340), "Ganons Tower Pot 17", "Ganons Castle Ganons Tower Pot 17", RHT_POT_GANONS_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_17)); locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_18] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_18, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(260, -380), "Ganons Tower Pot 18", "Ganons Castle Ganons Tower Pot 18", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18)); - locationTable[RC_BOTW_B3_WEST_CENTER_POT] = Location::Pot(RC_BOTW_B3_WEST_CENTER_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-95, -673), "B3 West Center Pot", RHT_BOTW_B3_WEST_CENTER_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_CENTER_POT)); - locationTable[RC_BOTW_B3_EAST_CENTER_POT] = Location::Pot(RC_BOTW_B3_EAST_CENTER_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(75, -598), "B3 East Center Pot", RHT_BOTW_B3_EAST_CENTER_POT, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_CENTER_POT)); - locationTable[RC_BOTW_B3_WEST_V_NORTHMOST_POT] = Location::Pot(RC_BOTW_B3_WEST_V_NORTHMOST_POT, RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(296, -1206), "B3 West V Northmost Pot", "BotW B3 West V Northmost Pot", RHT_BOTW_B3_WEST_V_NORTHMOST_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_NORTHMOST_POT)); - locationTable[RC_BOTW_B3_WEST_V_MID_NORTH_POT] = Location::Pot(RC_BOTW_B3_WEST_V_MID_NORTH_POT, RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(270, -1151), "B3 West V Mid North Pot", "BotW B3 West V Middle North Pot", RHT_BOTW_B3_WEST_V_MID_NORTH_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_MID_NORTH_POT)); - locationTable[RC_BOTW_B3_WEST_V_MIDDLE_POT] = Location::Pot(RC_BOTW_B3_WEST_V_MIDDLE_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(257, -1099), "B3 West V Middle Pot", "BotW B3 West V Middle Pot", RHT_BOTW_B3_WEST_V_MIDDLE_POT, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_MIDDLE_POT)); - locationTable[RC_BOTW_B3_WEST_V_MID_SOUTH_POT] = Location::Pot(RC_BOTW_B3_WEST_V_MID_SOUTH_POT, RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(313, -1086), "B3 West V Mid South Pot", "BotW B3 West V Middle South Pot", RHT_BOTW_B3_WEST_V_MID_SOUTH_POT, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_MID_SOUTH_POT)); - locationTable[RC_BOTW_B3_WEST_V_SOUTHMOST_POT] = Location::Pot(RC_BOTW_B3_WEST_V_SOUTHMOST_POT, RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(378, -1089), "B3 West V Southmost Pot", "BotW B3 West V Southmost Pot", RHT_BOTW_B3_WEST_V_SOUTHMOST_POT, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_SOUTHMOST_POT)); - locationTable[RC_BOTW_B3_EAST_V_NORTHMOST_POT] = Location::Pot(RC_BOTW_B3_EAST_V_NORTHMOST_POT, RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1345), "B3 East V Northmost Pot", "BotW B3 East V Northmost Pot", RHT_BOTW_B3_EAST_V_NORTHMOST_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_NORTHMOST_POT)); - locationTable[RC_BOTW_B3_EAST_V_MID_NORTH_POT] = Location::Pot(RC_BOTW_B3_EAST_V_MID_NORTH_POT, RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(562, -1304), "B3 East V Mid North Pot", "BotW B3 East V Middle North Pot", RHT_BOTW_B3_EAST_V_MID_NORTH_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_MID_NORTH_POT)); - locationTable[RC_BOTW_B3_EAST_V_MIDDLE_POT] = Location::Pot(RC_BOTW_B3_EAST_V_MIDDLE_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1254), "B3 East V Middle Pot", "BotW B3 East V Middle Pot", RHT_BOTW_B3_EAST_V_MIDDLE_POT, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_MIDDLE_POT)); - locationTable[RC_BOTW_B3_EAST_V_MID_SOUTH_POT] = Location::Pot(RC_BOTW_B3_EAST_V_MID_SOUTH_POT, RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(618, -1254), "B3 East V Mid South Pot", "BotW B3 East V Middle South Pot", RHT_BOTW_B3_EAST_V_MID_SOUTH_POT, RG_DEKU_STICK_1, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_MID_SOUTH_POT)); - locationTable[RC_BOTW_B3_EAST_V_SOUTHMOST_POT] = Location::Pot(RC_BOTW_B3_EAST_V_SOUTHMOST_POT, RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(665, -1252), "B3 East V Southmost Pot", "BotW B3 East V Southmost Pot", RHT_BOTW_B3_EAST_V_SOUTHMOST_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_SOUTHMOST_POT)); - locationTable[RC_BOTW_FAKE_WALL_SOUTH_POT] = Location::Pot(RC_BOTW_FAKE_WALL_SOUTH_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-969, 55) , "Fake Wall South Pot" , RHT_BOTW_FAKE_WALL_SOUTH_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_FAKE_WALL_SOUTH_POT)); - locationTable[RC_BOTW_FAKE_WALL_CENTRAL_POT] = Location::Pot(RC_BOTW_FAKE_WALL_CENTRAL_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-966, 9) , "Fake Wall Central Pot", RHT_BOTW_FAKE_WALL_CENTRAL_POT, RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT)); - locationTable[RC_BOTW_FAKE_WALL_NORTH_POT] = Location::Pot(RC_BOTW_FAKE_WALL_NORTH_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-965, -32) , "Fake Wall North Pot" , RHT_BOTW_FAKE_WALL_NORTH_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_FAKE_WALL_NORTH_POT)); - locationTable[RC_BOTW_ENTRYWAY_WEST_POT] = Location::Pot(RC_BOTW_ENTRYWAY_WEST_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-41, 389) , "Entryway West Pot" , RHT_BOTW_ENTRYWAY_EAST_POT , RG_DEKU_STICK_1 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_ENTRYWAY_EAST_POT)); - locationTable[RC_BOTW_ENTRYWAY_EAST_POT] = Location::Pot(RC_BOTW_ENTRYWAY_EAST_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(36, 389) , "Entryway East Pot" , RHT_BOTW_ENTRYWAY_WEST_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_ENTRYWAY_WEST_POT)); - locationTable[RC_BOTW_3_HIDDEN_PITS_POT] = Location::Pot(RC_BOTW_3_HIDDEN_PITS_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(874, -1294), "3 Hidden Pits Pot 1" , RHT_BOTW_3_HIDDEN_PITS_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_3_HIDDEN_PITS_POT)); - locationTable[RC_BOTW_SUNKEN_POT] = Location::Pot(RC_BOTW_SUNKEN_POT , RCQUEST_VANILLA, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(3, -1641) , "Sunken Pot" , RHT_BOTW_SUNKEN_POT , RG_BOMBS_5 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_SUNKEN_POT)); locationTable[RC_ICE_CAVERN_HALL_POT_1] = Location::Pot(RC_ICE_CAVERN_HALL_POT_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-206, 449), "Hall Pot 1", "Ice Cavern Hall Pot 1", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HALL_POT_1)); locationTable[RC_ICE_CAVERN_HALL_POT_2] = Location::Pot(RC_ICE_CAVERN_HALL_POT_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-203, 492), "Hall Pot 2", "Ice Cavern Hall Pot 2", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HALL_POT_2)); locationTable[RC_ICE_CAVERN_SPINNING_BLADE_POT_1] = Location::Pot(RC_ICE_CAVERN_SPINNING_BLADE_POT_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(433, -732), "Spinning Blade Pot 1", "Ice Cavern Spinning Blade Pot 1", RHT_POT_ICE_CAVERN, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_1)); @@ -1496,13 +1519,6 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4303, -2657), "MQ Spike Baricade Pot", "Shadow Temple MQ Spike Baricade Pot", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT)); locationTable[RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4575, -811), "MQ Dead Hand Pot 1", "Shadow Temple MQ Dead Hand Pot 1", RHT_POT_SHADOW_TEMPLE, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1)); locationTable[RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4036, -811), "MQ Dead Hand Pot 2", "Shadow Temple MQ Dead Hand Pot 2", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2)); - locationTable[RC_BOTW_MQ_WOODEN_X_ROOM_WEST_POT] = Location::Pot(RC_BOTW_MQ_WOODEN_X_ROOM_WEST_POT , RCQUEST_MQ, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(269, -376) , "MQ Wooden X West Pot" , RHT_BOTW_MQ_WOODEN_X_ROOM_WEST_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_WOODEN_X_ROOM_WEST_POT)); - locationTable[RC_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT] = Location::Pot(RC_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT, RCQUEST_MQ, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(339, -377) , "MQ Wooden X Center Pot" , RHT_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT)); - locationTable[RC_BOTW_MQ_WOODEN_X_ROOM_EAST_POT] = Location::Pot(RC_BOTW_MQ_WOODEN_X_ROOM_EAST_POT , RCQUEST_MQ, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(416, -377) , "MQ Wooden X East Pot" , RHT_BOTW_MQ_WOODEN_X_ROOM_EAST_POT , RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_WOODEN_X_ROOM_EAST_POT)); - locationTable[RC_BOTW_MQ_CAGED_POT] = Location::Pot(RC_BOTW_MQ_CAGED_POT , RCQUEST_MQ, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(421, -174) , "MQ Caged Pot" , RHT_BOTW_MQ_CAGED_POT , RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_CAGED_POT)); - locationTable[RC_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT] = Location::Pot(RC_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT, RCQUEST_MQ, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(444, -1114), "MQ East Inner Room Near Pot", RHT_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT)); - locationTable[RC_BOTW_MQ_EAST_INNER_ROOM_MID_POT] = Location::Pot(RC_BOTW_MQ_EAST_INNER_ROOM_MID_POT , RCQUEST_MQ, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(438, -1234), "MQ East Inner Room Mid Pot" , RHT_BOTW_MQ_EAST_INNER_ROOM_MID_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_EAST_INNER_ROOM_MID_POT)); - locationTable[RC_BOTW_MQ_EAST_INNER_ROOM_FAR_POT] = Location::Pot(RC_BOTW_MQ_EAST_INNER_ROOM_FAR_POT , RCQUEST_MQ, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(288, -1240), "MQ East Inner Room Far Pot" , RHT_BOTW_MQ_EAST_INNER_ROOM_FAR_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_EAST_INNER_ROOM_FAR_POT)); locationTable[RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-357, 957), "MQ Entrance Pot 1", "Fire Temple MQ Entrance Pot 1", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1)); locationTable[RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_2] = Location::Pot(RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(356, 959), "MQ Entrance Pot 2", "Fire Temple MQ Entrance Pot 2", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2)); locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(187, -1449), "MQ Before Mini Boss Pot 1", "Fire Temple MQ Before Mini Boss Pot 1", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1)); @@ -1808,7 +1824,6 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY] = Location::Fairy(RC_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY, RCQUEST_VANILLA,RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(0x1000, 54), "Beamos Song of Storms Fairy", "Beamos Song of Storms Fairy", RHT_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY)); locationTable[RC_SHADOW_TEMPLE_PIT_STORM_FAIRY] = Location::Fairy(RC_SHADOW_TEMPLE_PIT_STORM_FAIRY, RCQUEST_VANILLA,RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(0x1000, 3339), "Pit Room Song of Storms Fairy", "Pit Room Song of Storms Fairy", RHT_SHADOW_TEMPLE_PIT_STORM_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_PIT_STORM_FAIRY)); locationTable[RC_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY] = Location::Fairy(RC_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY, RCQUEST_VANILLA,RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(0x1000, -127), "Wind Hint Sun's Song Fairy", "Wind Hint Sun's Song Fairy", RHT_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY)); - locationTable[RC_BOTW_B3_SUN_FAIRY] = Location::Fairy(RC_BOTW_B3_SUN_FAIRY, RCQUEST_VANILLA,RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -1531), "B3 Sun Fairy" , RHT_BOTW_B3_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_SUN_FAIRY)); locationTable[RC_ICE_CAVERN_ENTRANCE_STORMS_FAIRY] = Location::Fairy(RC_ICE_CAVERN_ENTRANCE_STORMS_FAIRY, RCQUEST_VANILLA,RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(0x1000, 1186), "Entrance Song of Storms Fairy", "Ice Cavern Entrance Song of Storms Fairy", RHT_ICE_CAVERN_ENTRANCE_STORMS_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_ENTRANCE_STORMS_FAIRY)); locationTable[RC_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY] = Location::Fairy(RC_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY, RCQUEST_VANILLA,RCAREA_GERUDO_TRAINING_GROUND,SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(0x1000, -445), "Entrance Song of Storms Fairy", "GTG Entrance Song of Storms Fairy", RHT_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY)); locationTable[RC_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY] = Location::Fairy(RC_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY, RCQUEST_VANILLA,RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(0x1000, 587), "Spirit Trial Beamos Sun's Song Fairy", "Spirit Trial Beamos Sun's Song Fairy", RHT_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY)); @@ -1822,8 +1837,6 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_SHADOW_TEMPLE_MQ_BEAMOS_STORM_FAIRY] = Location::Fairy(RC_SHADOW_TEMPLE_MQ_BEAMOS_STORM_FAIRY, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(0x1000, 55), "MQ Beamos Song of Storms Fairy", "MQ Beamos Song of Storms Fairy", RHT_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_BEAMOS_STORM_FAIRY)); locationTable[RC_SHADOW_TEMPLE_MQ_PIT_STORM_FAIRY] = Location::Fairy(RC_SHADOW_TEMPLE_MQ_PIT_STORM_FAIRY, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(0x1000, 3342), "MQ Pit Room Song of Storms Fairy", "MQ Pit Room Song of Storms Fairy", RHT_SHADOW_TEMPLE_PIT_STORM_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_PIT_STORM_FAIRY)); locationTable[RC_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY] = Location::Fairy(RC_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(0x1000, -127), "MQ Wind Hint Sun's Song Fairy", "MQ Wind Hint Sun's Song Fairy", RHT_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY)); - locationTable[RC_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY] = Location::Fairy(RC_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY, RCQUEST_MQ, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -437) , "MQ Wooden X Room Sun Fairy", RHT_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY)); - locationTable[RC_BOTW_MQ_B3_SUN_FAIRY] = Location::Fairy(RC_BOTW_MQ_B3_SUN_FAIRY , RCQUEST_MQ, RCAREA_BOTW, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -1458), "MQ B3 Sun Fairy" , RHT_BOTW_MQ_B3_SUN_FAIRY , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_B3_SUN_FAIRY)); // Freestanding Hearts and Rupees locationTable[RC_KF_BOULDER_RUPEE_2] = Location::Collectable(RC_KF_BOULDER_RUPEE_2, RCQUEST_BOTH, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_KOKIRI_FOREST, TWO_ACTOR_PARAMS(-712, 1857), "Boulder Maze Second Rupee", RHT_KOKIRI_FOREST_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_BOULDER_RUPEE_2)); @@ -1981,14 +1994,6 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_SPIRIT_TEMPLE_ADULT_CLIMB_LEFT_HEART] = Location::Collectable(RC_SPIRIT_TEMPLE_ADULT_CLIMB_LEFT_HEART, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(708, 227), "Adult Climb Left Heart", RHT_SPIRIT_TEMPLE_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_ADULT_CLIMB_LEFT_HEART)); locationTable[RC_SPIRIT_TEMPLE_ADULT_CLIMB_RIGHT_HEART] = Location::Collectable(RC_SPIRIT_TEMPLE_ADULT_CLIMB_RIGHT_HEART, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(661, 227), "Adult Climb Right Heart", RHT_SPIRIT_TEMPLE_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_ADULT_CLIMB_RIGHT_HEART)); - locationTable[RC_BOTW_B3_PLATFORM_NORTH_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_NORTH_RUPEE, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(47, -805), "B3 Platform North Rupee", RHT_BOTW_B3_PLATFORM_NORTH_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_PLATFORM_NORTH_RUPEE)); - locationTable[RC_BOTW_B3_PLATFORM_NORTHWEST_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_NORTHWEST_RUPEE, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-19, -828), "B3 Platform Northwest Rupee", RHT_BOTW_B3_PLATFORM_NORTHWEST_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_RHT_BOTW_B3_PLATFORM_NORTHWEST_RUPEE)); - locationTable[RC_BOTW_B3_PLATFORM_NORTHEAST_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_NORTHEAST_RUPEE, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(94, -762), "B3 Platform Northeast Rupee", RHT_BOTW_B3_PLATFORM_NORTHEAST_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_RHT_BOTW_B3_PLATFORM_NORTHEAST_RUPEE)); - locationTable[RC_BOTW_B3_PLATFORM_WEST_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_WEST_RUPEE, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-67, -748), "B3 Platform West Rupee", RHT_BOTW_B3_PLATFORM_WEST_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_RHT_BOTW_B3_PLATFORM_WEST_RUPEE)); - locationTable[RC_BOTW_B3_PLATFORM_EAST_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_EAST_RUPEE, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(85, -710), "B3 Platform East Rupee", RHT_BOTW_B3_PLATFORM_EAST_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_RHT_BOTW_B3_PLATFORM_EAST_RUPEE)); - locationTable[RC_BOTW_SOUTHEAST_COFFIN_HEART] = Location::Collectable(RC_BOTW_SOUTHEAST_COFFIN_HEART, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-1947, -625), "Southeast Coffin Left Heart", RHT_BOTW_SOUTHEAST_COFFIN_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_SOUTHEAST_COFFIN_HEART)); - locationTable[RC_BOTW_OPEN_COFFIN_HEART] = Location::Collectable(RC_BOTW_OPEN_COFFIN_HEART, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-2144, -859), "Open Coffin Heart", RHT_BOTW_OPEN_COFFIN_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_OPEN_COFFIN_HEART)); - locationTable[RC_ICE_CAVERN_LOBBY_RUPEE] = Location::Collectable(RC_ICE_CAVERN_LOBBY_RUPEE, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-105, 854), "Lobby Rupee", RHT_ICE_CAVERN_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_LOBBY_RUPEE)); locationTable[RC_ICE_CAVERN_MAP_ROOM_LEFT_HEART] = Location::Collectable(RC_ICE_CAVERN_MAP_ROOM_LEFT_HEART, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1171, -2258), "Map Room Left Heart", RHT_ICE_CAVERN_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MAP_ROOM_LEFT_HEART)); locationTable[RC_ICE_CAVERN_MAP_ROOM_MIDDLE_HEART] = Location::Collectable(RC_ICE_CAVERN_MAP_ROOM_MIDDLE_HEART, RCQUEST_VANILLA, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1212, -2213), "Map Room Middle Heart", RHT_ICE_CAVERN_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MAP_ROOM_MIDDLE_HEART)); @@ -2045,14 +2050,6 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_LEFT_HEART] = Location::Collectable(RC_SPIRIT_TEMPLE_MQ_CHILD_LEFT_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1151, -535), "MQ Child Early Left Heart", RHT_SPIRIT_TEMPLE_MQ_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_LEFT_HEART)); locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_RIGHT_HEART] = Location::Collectable(RC_SPIRIT_TEMPLE_MQ_CHILD_RIGHT_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-976, -535), "MQ Child Early Right Heart", RHT_SPIRIT_TEMPLE_MQ_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_RIGHT_HEART)); - locationTable[RC_BOTW_MQ_RUBBLE_NORTH_HEART] = Location::Collectable(RC_BOTW_MQ_RUBBLE_NORTH_HEART , RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-83, -350) , "MQ Rubble North Heart" , RHT_BOTW_MQ_RUBBLE_NORTH_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_RUBBLE_NORTH_HEART)); - locationTable[RC_BOTW_MQ_RUBBLE_SOUTH_HEART] = Location::Collectable(RC_BOTW_MQ_RUBBLE_SOUTH_HEART , RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-83, -274) , "MQ Rubble South Heart" , RHT_BOTW_MQ_RUBBLE_SOUTH_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_RUBBLE_SOUTH_HEART)); - locationTable[RC_BOTW_MQ_NORTHEAST_COFFIN_HEART] = Location::Collectable(RC_BOTW_MQ_NORTHEAST_COFFIN_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-1945, -863), "MQ Northeast Coffin heart", RHT_BOTW_MQ_NORTHEAST_COFFIN_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_NORTHEAST_COFFIN_HEART)); - locationTable[RC_BOTW_MQ_SOUTH_COFFIN_HEART] = Location::Collectable(RC_BOTW_MQ_SOUTH_COFFIN_HEART , RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-2143, -621), "MQ South Coffin Heart" , RHT_BOTW_MQ_SOUTH_COFFIN_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_SOUTH_COFFIN_HEART)); - locationTable[RC_BOTW_MQ_B3_SOUTH_HEART] = Location::Collectable(RC_BOTW_MQ_B3_SOUTH_HEART , RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(1083, -1174), "MQ B3 South Heart" , RHT_BOTW_MQ_B3_SOUTH_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MQ_B3_SOUTH_HEART)); - locationTable[RC_BOTW_MQ_B3_NORTHWEST_HEART] = Location::Collectable(RC_BOTW_MQ_B3_NORTHWEST_HEART , RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(1044, -1223), "MQ B3 Northwest Heart" , RHT_BOTW_MQ_B3_NORTHWEST_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MQ_B3_NORTHWEST_HEART)); - locationTable[RC_BOTW_MQ_B3_NORTHEAST_HEART] = Location::Collectable(RC_BOTW_MQ_B3_NORTHEAST_HEART , RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(1114, -1223), "MQ B3 Notheast Heart" , RHT_BOTW_MQ_B3_NORTHEAST_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MQ_B3_NORTHEAST_HEART)); - locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_HEART] = Location::Collectable(RC_GANONS_CASTLE_MQ_WATER_TRIAL_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1743, -528), "MQ Water Trial Heart", RHT_GANONS_CASTLE_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_HEART)); locationTable[RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART] = Location::Collectable(RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2506, -1096), "MQ Light Trial Right Heart", RHT_GANONS_CASTLE_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART)); locationTable[RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART] = Location::Collectable(RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2655, -549), "MQ Light Trial Left Heart", RHT_GANONS_CASTLE_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART)); diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index ea1236d86c8..8e4aae8216d 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -1323,21 +1323,21 @@ std::map rcToRandomizerInf = { { RC_GANONS_CASTLE_GANONS_TOWER_POT_18, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18 }, { RC_BOTW_B3_WEST_CENTER_POT, RAND_INF_BOTW_B3_WEST_CENTER_POT }, { RC_BOTW_B3_EAST_CENTER_POT, RAND_INF_BOTW_B3_EAST_CENTER_POT }, - { RC_BOTW_B3_WEST_V_MID_NORTH_POT, RAND_INF_BOTW_B3_WEST_V_MID_NORTH_POT }, - { RC_BOTW_B3_EAST_V_MIDDLE_POT, RAND_INF_BOTW_B3_EAST_V_MIDDLE_POT }, - { RC_BOTW_B3_WEST_V_SOUTHMOST_POT, RAND_INF_BOTW_B3_WEST_V_SOUTHMOST_POT }, - { RC_BOTW_B3_EAST_V_SOUTHMOST_POT, RAND_INF_BOTW_B3_EAST_V_SOUTHMOST_POT }, - { RC_BOTW_B3_EAST_V_NORTHMOST_POT, RAND_INF_BOTW_B3_EAST_V_NORTHMOST_POT }, - { RC_BOTW_B3_EAST_V_MID_NORTH_POT, RAND_INF_BOTW_B3_EAST_V_MID_NORTH_POT }, - { RC_BOTW_B3_WEST_V_MID_SOUTH_POT, RAND_INF_BOTW_B3_WEST_V_MID_SOUTH_POT }, - { RC_BOTW_B3_EAST_V_MID_SOUTH_POT, RAND_INF_BOTW_B3_EAST_V_MID_SOUTH_POT }, - { RC_BOTW_B3_WEST_V_MIDDLE_POT, RAND_INF_BOTW_B3_WEST_V_MIDDLE_POT }, - { RC_BOTW_B3_WEST_V_NORTHMOST_POT, RAND_INF_BOTW_B3_WEST_V_NORTHMOST_POT }, + { RC_BOTW_B3_WEST_V_NW_POT, RAND_INF_BOTW_B3_WEST_V_NW_POT }, + { RC_BOTW_B3_EAST_V_W_POT, RAND_INF_BOTW_B3_EAST_V_W_POT }, + { RC_BOTW_B3_WEST_V_S_POT, RAND_INF_BOTW_B3_WEST_V_S_POT }, + { RC_BOTW_B3_EAST_V_S_POT, RAND_INF_BOTW_B3_EAST_V_S_POT }, + { RC_BOTW_B3_EAST_V_N_POT, RAND_INF_BOTW_B3_EAST_V_N_POT }, + { RC_BOTW_B3_EAST_V_NW_POT, RAND_INF_BOTW_B3_EAST_V_NW_POT }, + { RC_BOTW_B3_WEST_V_SW_POT, RAND_INF_BOTW_B3_WEST_V_SW_POT }, + { RC_BOTW_B3_EAST_V_SW_POT, RAND_INF_BOTW_B3_EAST_V_SW_POT }, + { RC_BOTW_B3_WEST_V_W_POT, RAND_INF_BOTW_B3_WEST_V_W_POT }, + { RC_BOTW_B3_WEST_V_N_POT, RAND_INF_BOTW_B3_WEST_V_N_POT }, { RC_BOTW_FAKE_WALL_SOUTH_POT, RAND_INF_BOTW_FAKE_WALL_SOUTH_POT }, { RC_BOTW_FAKE_WALL_CENTRAL_POT, RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT }, { RC_BOTW_FAKE_WALL_NORTH_POT, RAND_INF_BOTW_FAKE_WALL_NORTH_POT }, - { RC_BOTW_ENTRYWAY_WEST_POT, RAND_INF_BOTW_ENTRYWAY_EAST_POT }, - { RC_BOTW_ENTRYWAY_EAST_POT, RAND_INF_BOTW_ENTRYWAY_WEST_POT }, + { RC_BOTW_ENTRYWAY_WEST_POT, RAND_INF_BOTW_ENTRYWAY_WEST_POT }, + { RC_BOTW_ENTRYWAY_EAST_POT, RAND_INF_BOTW_ENTRYWAY_EAST_POT }, { RC_BOTW_3_HIDDEN_PITS_POT, RAND_INF_BOTW_3_HIDDEN_PITS_POT }, { RC_BOTW_SUNKEN_POT, RAND_INF_BOTW_SUNKEN_POT }, { RC_ICE_CAVERN_HALL_POT_1, RAND_INF_ICE_CAVERN_HALL_POT_1 }, @@ -1438,13 +1438,13 @@ std::map rcToRandomizerInf = { { RC_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT, RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT }, { RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1, RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1 }, { RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2, RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2 }, - { RC_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT, RAND_INF_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT }, - { RC_BOTW_MQ_WOODEN_X_ROOM_EAST_POT, RAND_INF_BOTW_MQ_WOODEN_X_ROOM_EAST_POT }, - { RC_BOTW_MQ_WOODEN_X_ROOM_WEST_POT, RAND_INF_BOTW_MQ_WOODEN_X_ROOM_WEST_POT }, + { RC_BOTW_MQ_WOODEN_X_ROOM_C_POT, RAND_INF_BOTW_MQ_WOODEN_X_ROOM_C_POT }, + { RC_BOTW_MQ_WOODEN_X_ROOM_E_POT, RAND_INF_BOTW_MQ_WOODEN_X_ROOM_E_POT }, + { RC_BOTW_MQ_WOODEN_X_ROOM_W_POT, RAND_INF_BOTW_MQ_WOODEN_X_ROOM_W_POT }, { RC_BOTW_MQ_CAGED_POT, RAND_INF_BOTW_MQ_CAGED_POT }, - { RC_BOTW_MQ_EAST_INNER_ROOM_FAR_POT, RAND_INF_BOTW_MQ_EAST_INNER_ROOM_FAR_POT }, - { RC_BOTW_MQ_EAST_INNER_ROOM_MID_POT, RAND_INF_BOTW_MQ_EAST_INNER_ROOM_MID_POT }, - { RC_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT, RAND_INF_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT }, + { RC_BOTW_MQ_INVISIBLE_LEDGE_NE_POT, RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_NW_POT }, + { RC_BOTW_MQ_INVISIBLE_LEDGE_NE_POT, RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_NE_POT }, + { RC_BOTW_MQ_INVISIBLE_LEDGE_S_POT, RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_S_POT }, { RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_1, RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1 }, { RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_2, RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2 }, { RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1, RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1 }, diff --git a/soh/soh/Enhancements/randomizer/randomizerTypes.h b/soh/soh/Enhancements/randomizer/randomizerTypes.h index 645c1d0f9b3..e69a84833e9 100644 --- a/soh/soh/Enhancements/randomizer/randomizerTypes.h +++ b/soh/soh/Enhancements/randomizer/randomizerTypes.h @@ -262,7 +262,7 @@ typedef enum { RCTYPE_GOSSIP_STONE, // RANDOTODO make these into event access RCTYPE_STATIC_HINT, // RANDOTODO make these into event access RCTYPE_SONG_LOCATION, // Song locations - RCTYPE_BOSS_HEART_OR_OTHER_REWARD, // Boss heart container or lesser dungeon rewards (lens, ice arrow) + RCTYPE_BOSS_HEART_OR_OTHER_REWARD, // Boss heart container or lesser dungeon rewards (lens, ice arrow) RANDOTODO more concise name? RCTYPE_POT, // Pots RCTYPE_DUNGEON_REWARD, // Dungeon rewards (blue warps) RCTYPE_OCARINA, // Ocarina locations @@ -897,7 +897,7 @@ typedef enum { RR_BOTW_SOUTHWEST_ROOM, RR_BOTW_3_HIDDEN_PITS_ROOM, RR_BOTW_OUTER_CAGE, - RR_BOTW_CENTRAL_ROOMS, + RR_BOTW_INNER_ROOMS, RR_BOTW_COFFIN_ROOM, RR_BOTW_DEAD_HAND_ROOM, RR_BOTW_B3, @@ -1447,31 +1447,77 @@ typedef enum { RC_JABU_JABUS_BELLY_MQ_GS_INVISIBLE_ENEMIES_ROOM, RC_JABU_JABUS_BELLY_MQ_GS_NEAR_BOSS, RC_JABU_JABUS_BELLY_BARINADE_HEART, - RC_BOTW_WEST_FAKE_WALL_CHEST, - RC_BOTW_SOUTH_RUBBLE_CHEST, - RC_BOTW_NORTH_RUBBLE_CHEST, + + RC_BOTW_SOUTH_SUNKEN_CHEST, + RC_BOTW_SOUTH_BURIED_CHEST, RC_BOTW_WEST_SUNKEN_CHEST, - RC_BOTW_COFFIN_KEY, - RC_BOTW_CENTRAL_WEST_CHEST, - RC_BOTW_CENTRAL_EAST_CHEST, + RC_BOTW_ENTRYWAY_WEST_POT, + RC_BOTW_ENTRYWAY_EAST_POT, + RC_BOTW_SUNKEN_POT, + RC_BOTW_WEST_FAKE_WALL_CHEST, RC_BOTW_EAST_FAKE_WALL_CHEST, + RC_BOTW_WOODEN_X_ROOM_WEST_CHEST, + RC_BOTW_WOODEN_X_ROOM_EAST_CHEST, + RC_BOTW_NORTH_BURIED_CHEST, + RC_BOTW_FAKE_WALL_NORTH_POT, + RC_BOTW_FAKE_WALL_CENTRAL_POT, + RC_BOTW_FAKE_WALL_SOUTH_POT, RC_BOTW_3_HIDDEN_PITS_CHEST, + RC_BOTW_3_HIDDEN_PITS_POT, RC_BOTW_OUTER_CAGE_CHEST, - RC_BOTW_B3_CHEST, - RC_BOTW_SOUTH_SUNKEN_CHEST, - RC_BOTW_INVISIBLE_CHEST, - RC_BOTW_DEAD_HAND_CHEST, - RC_BOTW_CENTER_WEST_ROOM_GS, - RC_BOTW_CENTER_EAST_ROOM_GS, RC_BOTW_OUTER_CAGE_GS, - RC_BOTW_MQ_WOODEN_X_CHEST, - RC_BOTW_MQ_EAST_INNER_ROOM_KEY, - RC_BOTW_MQ_DEAD_HAND_CHEST, - RC_BOTW_MQ_DEAD_HAND_RUBBLE_KEY, - RC_BOTW_MQ_REDEAD_CHEST, + RC_BOTW_INNER_WEST_ROOM_GS, + RC_BOTW_INVISIBLE_LEDGE_GS, + RC_BOTW_COFFIN_KEY, + RC_BOTW_OPEN_COFFIN_HEART, + RC_BOTW_SE_COFFIN_HEART, + RC_BOTW_DEAD_HAND_CHEST, + RC_BOTW_INVISIBLE_CHEST, + RC_BOTW_B3_CHEST, + RC_BOTW_B3_WEST_CENTER_POT, + RC_BOTW_B3_EAST_CENTER_POT, + RC_BOTW_B3_WEST_V_N_POT, + RC_BOTW_B3_WEST_V_NW_POT, + RC_BOTW_B3_WEST_V_W_POT, + RC_BOTW_B3_WEST_V_SW_POT, + RC_BOTW_B3_WEST_V_S_POT, + RC_BOTW_B3_EAST_V_N_POT, + RC_BOTW_B3_EAST_V_NW_POT, + RC_BOTW_B3_EAST_V_W_POT, + RC_BOTW_B3_EAST_V_SW_POT, + RC_BOTW_B3_EAST_V_S_POT, + RC_BOTW_B3_SUN_FAIRY, + RC_BOTW_B3_PLATFORM_N_RUPEE, + RC_BOTW_B3_PLATFORM_NW_RUPEE, + RC_BOTW_B3_PLATFORM_NE_RUPEE, + RC_BOTW_B3_PLATFORM_W_RUPEE, + RC_BOTW_B3_PLATFORM_E_RUPEE, + + RC_BOTW_MQ_CAGED_POT, + RC_BOTW_MQ_N_BURIED_HEART, + RC_BOTW_MQ_S_BURIED_HEART, RC_BOTW_MQ_COFFIN_ROOM_GS, - RC_BOTW_MQ_WEST_CENTER_ROOM_GS, + RC_BOTW_MQ_NE_COFFIN_HEART, + RC_BOTW_MQ_S_COFFIN_HEART, + RC_BOTW_MQ_DEAD_HAND_CHEST, + RC_BOTW_MQ_DEAD_HAND_BURIED_KEY, + RC_BOTW_MQ_WOODEN_X_CHEST, + RC_BOTW_MQ_INVISIBLE_LEDGE_KEY, + RC_BOTW_MQ_UNDER_GRAVE_GS, + RC_BOTW_MQ_WOODEN_X_ROOM_W_POT, + RC_BOTW_MQ_WOODEN_X_ROOM_C_POT, + RC_BOTW_MQ_WOODEN_X_ROOM_E_POT, + RC_BOTW_MQ_INVISIBLE_LEDGE_NW_POT, + RC_BOTW_MQ_INVISIBLE_LEDGE_NE_POT, + RC_BOTW_MQ_INVISIBLE_LEDGE_S_POT, + RC_BOTW_MQ_NEAR_POTS_SUN_FAIRY, RC_BOTW_MQ_B3_GS, + RC_BOTW_MQ_B3_S_HEART, + RC_BOTW_MQ_B3_NW_HEART, + RC_BOTW_MQ_B3_NE_HEART, + RC_BOTW_MQ_B3_SUN_FAIRY, + RC_BOTW_MQ_REDEAD_CHEST, + RC_FOREST_TEMPLE_FIRST_ROOM_CHEST, RC_FOREST_TEMPLE_FIRST_STALFOS_CHEST, RC_FOREST_TEMPLE_RAISED_ISLAND_COURTYARD_CHEST, @@ -1951,25 +1997,6 @@ typedef enum { RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_3, RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_4, RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_5, - RC_BOTW_B3_WEST_CENTER_POT, - RC_BOTW_B3_EAST_CENTER_POT, - RC_BOTW_B3_WEST_V_NORTHMOST_POT, - RC_BOTW_B3_WEST_V_MID_NORTH_POT, - RC_BOTW_B3_WEST_V_MIDDLE_POT, - RC_BOTW_B3_WEST_V_MID_SOUTH_POT, - RC_BOTW_B3_WEST_V_SOUTHMOST_POT, - RC_BOTW_B3_EAST_V_NORTHMOST_POT, - RC_BOTW_B3_EAST_V_MID_NORTH_POT, - RC_BOTW_B3_EAST_V_MIDDLE_POT, - RC_BOTW_B3_EAST_V_MID_SOUTH_POT, - RC_BOTW_B3_EAST_V_SOUTHMOST_POT, - RC_BOTW_FAKE_WALL_SOUTH_POT, - RC_BOTW_FAKE_WALL_CENTRAL_POT, - RC_BOTW_FAKE_WALL_NORTH_POT, - RC_BOTW_ENTRYWAY_WEST_POT, - RC_BOTW_ENTRYWAY_EAST_POT, - RC_BOTW_3_HIDDEN_PITS_POT, - RC_BOTW_SUNKEN_POT, RC_FOREST_TEMPLE_LOBBY_POT_1, RC_FOREST_TEMPLE_LOBBY_POT_2, RC_FOREST_TEMPLE_LOBBY_POT_3, @@ -2147,13 +2174,6 @@ typedef enum { RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_1, RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_2, RC_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_POT_1, - RC_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT, - RC_BOTW_MQ_WOODEN_X_ROOM_EAST_POT, - RC_BOTW_MQ_WOODEN_X_ROOM_WEST_POT, - RC_BOTW_MQ_CAGED_POT, - RC_BOTW_MQ_EAST_INNER_ROOM_FAR_POT, - RC_BOTW_MQ_EAST_INNER_ROOM_MID_POT, - RC_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT, RC_FOREST_TEMPLE_MQ_LOBBY_POT_1, RC_FOREST_TEMPLE_MQ_LOBBY_POT_2, RC_FOREST_TEMPLE_MQ_LOBBY_POT_3, @@ -2548,13 +2568,6 @@ typedef enum { RC_SHADOW_TEMPLE_AFTER_SHIP_LOWER_HEART, RC_SPIRIT_TEMPLE_ADULT_CLIMB_LEFT_HEART, RC_SPIRIT_TEMPLE_ADULT_CLIMB_RIGHT_HEART, - RC_BOTW_B3_PLATFORM_NORTH_RUPEE, - RC_BOTW_B3_PLATFORM_NORTHWEST_RUPEE, - RC_BOTW_B3_PLATFORM_NORTHEAST_RUPEE, - RC_BOTW_B3_PLATFORM_WEST_RUPEE, - RC_BOTW_B3_PLATFORM_EAST_RUPEE, - RC_BOTW_SOUTHEAST_COFFIN_HEART, - RC_BOTW_OPEN_COFFIN_HEART, RC_ICE_CAVERN_LOBBY_RUPEE, RC_ICE_CAVERN_MAP_ROOM_LEFT_HEART, RC_ICE_CAVERN_MAP_ROOM_MIDDLE_HEART, @@ -2601,13 +2614,6 @@ typedef enum { RC_SHADOW_TEMPLE_MQ_AFTER_SHIP_LOWER_HEART, RC_SPIRIT_TEMPLE_MQ_CHILD_LEFT_HEART, RC_SPIRIT_TEMPLE_MQ_CHILD_RIGHT_HEART, - RC_BOTW_MQ_NORTHEAST_COFFIN_HEART, - RC_BOTW_MQ_RUBBLE_NORTH_HEART, - RC_BOTW_MQ_RUBBLE_SOUTH_HEART, - RC_BOTW_MQ_SOUTH_COFFIN_HEART, - RC_BOTW_MQ_B3_SOUTH_HEART, - RC_BOTW_MQ_B3_NORTHWEST_HEART, - RC_BOTW_MQ_B3_NORTHEAST_HEART, RC_GANONS_CASTLE_MQ_WATER_TRIAL_HEART, RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART, RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART, @@ -2806,7 +2812,6 @@ typedef enum { RC_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY, RC_SHADOW_TEMPLE_PIT_STORM_FAIRY, RC_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY, - RC_BOTW_B3_SUN_FAIRY, RC_ICE_CAVERN_ENTRANCE_STORMS_FAIRY, RC_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY, RC_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY, @@ -2819,8 +2824,6 @@ typedef enum { RC_SHADOW_TEMPLE_MQ_BEAMOS_STORM_FAIRY, RC_SHADOW_TEMPLE_MQ_PIT_STORM_FAIRY, RC_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY, - RC_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY, - RC_BOTW_MQ_B3_SUN_FAIRY, RC_MAX } RandomizerCheck; @@ -4040,12 +4043,12 @@ typedef enum { RHT_JABU_JABUS_BELLY_MQ_GS_NEAR_BOSS, RHT_JABU_JABUS_BELLY_BARINADE_HEART, RHT_BOTW_WEST_FAKE_WALL_CHEST, - RHT_BOTW_SOUTH_RUBBLE_CHEST, - RHT_BOTW_NORTH_RUBBLE_CHEST, + RHT_BOTW_SOUTH_BURIED_CHEST, + RHT_BOTW_NORTH_BURIED_CHEST, RHT_BOTW_WEST_SUNKEN_CHEST, RHT_BOTW_COFFIN_KEY, - RHT_BOTW_CENTRAL_WEST_CHEST, - RHT_BOTW_CENTRAL_EAST_CHEST, + RHT_BOTW_WOODEN_X_ROOM_WEST_CHEST, + RHT_BOTW_WOODEN_X_ROOM_EAST_CHEST, RHT_BOTW_EAST_FAKE_WALL_CHEST, RHT_BOTW_3_HIDDEN_PITS_CHEST, RHT_BOTW_OUTER_CAGE_CHEST, @@ -4053,17 +4056,17 @@ typedef enum { RHT_BOTW_SOUTH_SUNKEN_CHEST, RHT_BOTW_INVISIBLE_CHEST, RHT_BOTW_DEAD_HAND_CHEST, - RHT_BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM, - RHT_BOTTOM_OF_THE_WELL_GS_EAST_INNER_ROOM, - RHT_BOTTOM_OF_THE_WELL_GS_LIKE_LIKE_CAGE, + RHT_BOTW_WEST_INNER_ROOM_GS, + RHT_BOTW_INVISIBLE_LEDGE_GS, + RHT_BOTW_OUTER_CAGE_GS, RHT_BOTW_MQ_WOODEN_X_CHEST, - RHT_BOTW_MQ_EAST_INNER_ROOM_KEY, + RHT_BOTW_MQ_IMVISIBLE_LEDGE_KEY, RHT_BOTW_MQ_DEAD_HAND_CHEST, - RHT_BOTW_MQ_DEAD_HAND_RUBBLE_KEY, + RHT_BOTW_MQ_DEAD_HAND_BURIED_KEY, RHT_BOTW_MQ_REDEAD_CHEST, - RHT_BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM, - RHT_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM, - RHT_BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT, + RHT_BOTW_MQ_COFFIN_ROOM_GS, + RHT_BOTW_MQ_UNDER_GRAVE_GS, + RHT_BOTW_MQ_B3_GS, RHT_FOREST_TEMPLE_FIRST_ROOM_CHEST, RHT_FOREST_TEMPLE_FIRST_STALFOS_CHEST, RHT_FOREST_TEMPLE_RAISED_ISLAND_COURTYARD_CHEST, @@ -4850,23 +4853,23 @@ typedef enum { RHT_BOTW_FAKE_WALL_NORTH_POT, RHT_BOTW_B3_WEST_CENTER_POT, RHT_BOTW_B3_EAST_CENTER_POT, - RHT_BOTW_B3_WEST_V_NORTHMOST_POT, - RHT_BOTW_B3_WEST_V_MID_NORTH_POT, - RHT_BOTW_B3_WEST_V_MIDDLE_POT, - RHT_BOTW_B3_WEST_V_MID_SOUTH_POT, - RHT_BOTW_B3_WEST_V_SOUTHMOST_POT, - RHT_BOTW_B3_EAST_V_NORTHMOST_POT, - RHT_BOTW_B3_EAST_V_MID_NORTH_POT, - RHT_BOTW_B3_EAST_V_MIDDLE_POT, - RHT_BOTW_B3_EAST_V_MID_SOUTH_POT, - RHT_BOTW_B3_EAST_V_SOUTHMOST_POT, - RHT_BOTW_MQ_WOODEN_X_ROOM_WEST_POT, - RHT_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT, - RHT_BOTW_MQ_WOODEN_X_ROOM_EAST_POT, + RHT_BOTW_B3_WEST_V_N_POT, + RHT_BOTW_B3_WEST_V_MID_NW_POT, + RHT_BOTW_B3_WEST_V_W_POT, + RHT_BOTW_B3_WEST_V_SW_POT, + RHT_BOTW_B3_WEST_V_S_POT, + RHT_BOTW_B3_EAST_V_N_POT, + RHT_BOTW_B3_EAST_V_NW_POT, + RHT_BOTW_B3_EAST_V_W_POT, + RHT_BOTW_B3_EAST_V_SW_POT, + RHT_BOTW_B3_EAST_V_S_POT, + RHT_BOTW_MQ_WOODEN_X_ROOM_W_POT, + RHT_BOTW_MQ_WOODEN_X_ROOM_C_POT, + RHT_BOTW_MQ_WOODEN_X_ROOM_E_POT, RHT_BOTW_MQ_CAGED_POT, - RHT_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT, - RHT_BOTW_MQ_EAST_INNER_ROOM_MID_POT, - RHT_BOTW_MQ_EAST_INNER_ROOM_FAR_POT, + RHT_BOTW_MQ_INVISIBLE_LEDGE_S_POT, + RHT_BOTW_MQ_INVISIBLE_LEDGE_NE_POT, + RHT_BOTW_MQ_INVISIBLE_LEDGE_NW_POT, RHT_POT_ICE_CAVERN, // Ganon Line RHT_GANON_JOKE01, @@ -4911,20 +4914,20 @@ typedef enum { RHT_SHADOW_TEMPLE_HEART, RHT_SPIRIT_TEMPLE_HEART, RHT_SPIRIT_TEMPLE_MQ_HEART, - RHT_BOTW_SOUTHEAST_COFFIN_HEART, + RHT_BOTW_SE_COFFIN_HEART, RHT_BOTW_OPEN_COFFIN_HEART, - RHT_BOTW_MQ_B3_SOUTH_HEART, - RHT_BOTW_MQ_B3_NORTHWEST_HEART, - RHT_BOTW_MQ_B3_NORTHEAST_HEART, - RHT_BOTW_B3_PLATFORM_NORTH_RUPEE, - RHT_BOTW_B3_PLATFORM_NORTHWEST_RUPEE, - RHT_BOTW_B3_PLATFORM_NORTHEAST_RUPEE, - RHT_BOTW_B3_PLATFORM_WEST_RUPEE, - RHT_BOTW_B3_PLATFORM_EAST_RUPEE, - RHT_BOTW_MQ_RUBBLE_NORTH_HEART, - RHT_BOTW_MQ_RUBBLE_SOUTH_HEART, - RHT_BOTW_MQ_NORTHEAST_COFFIN_HEART, - RHT_BOTW_MQ_SOUTH_COFFIN_HEART, + RHT_BOTW_MQ_B3_S_HEART, + RHT_BOTW_MQ_B3_NW_HEART, + RHT_BOTW_MQ_B3_NE_HEART, + RHT_BOTW_B3_PLATFORM_N_RUPEE, + RHT_BOTW_B3_PLATFORM_NW_RUPEE, + RHT_BOTW_B3_PLATFORM_NE_RUPEE, + RHT_BOTW_B3_PLATFORM_W_RUPEE, + RHT_BOTW_B3_PLATFORM_E_RUPEE, + RHT_BOTW_MQ_N_BURIED_HEART, + RHT_BOTW_MQ_S_BURIED_HEART, + RHT_BOTW_MQ_NE_COFFIN_HEART, + RHT_BOTW_MQ_S_COFFIN_HEART, RHT_ICE_CAVERN_HEART, RHT_ICE_CAVERN_RUPEE, RHT_GERUDO_TRAINING_GROUNDS_HEART, @@ -5039,7 +5042,7 @@ typedef enum { RHT_WATER_TEMPLE_MQ_DARK_LINK_LEFT_STORM_FAIRY, RHT_WATER_TEMPLE_MQ_DARK_LINK_RIGHT_SUN_FAIRY, RHT_SPIRIT_TEMPLE_MQ_DINALFOS_ROOM_SUN_FAIRY, - RHT_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY, + RHT_BOTW_MQ_NEAR_POTS_SUN_FAIRY, RHT_BOTW_MQ_B3_SUN_FAIRY, // MAX RHT_MAX diff --git a/soh/soh/Enhancements/randomizer/randomizer_inf.h b/soh/soh/Enhancements/randomizer/randomizer_inf.h index 3199ed680cc..a456243376e 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_inf.h +++ b/soh/soh/Enhancements/randomizer/randomizer_inf.h @@ -519,21 +519,21 @@ typedef enum { RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18, RAND_INF_BOTW_B3_WEST_CENTER_POT, RAND_INF_BOTW_B3_EAST_CENTER_POT, - RAND_INF_BOTW_B3_WEST_V_NORTHMOST_POT, - RAND_INF_BOTW_B3_WEST_V_MID_NORTH_POT, - RAND_INF_BOTW_B3_WEST_V_MIDDLE_POT, - RAND_INF_BOTW_B3_WEST_V_MID_SOUTH_POT, - RAND_INF_BOTW_B3_WEST_V_SOUTHMOST_POT, - RAND_INF_BOTW_B3_EAST_V_NORTHMOST_POT, - RAND_INF_BOTW_B3_EAST_V_MID_NORTH_POT, - RAND_INF_BOTW_B3_EAST_V_MIDDLE_POT, - RAND_INF_BOTW_B3_EAST_V_MID_SOUTH_POT, - RAND_INF_BOTW_B3_EAST_V_SOUTHMOST_POT, + RAND_INF_BOTW_B3_WEST_V_N_POT, + RAND_INF_BOTW_B3_WEST_V_NW_POT, + RAND_INF_BOTW_B3_WEST_V_W_POT, + RAND_INF_BOTW_B3_WEST_V_SW_POT, + RAND_INF_BOTW_B3_WEST_V_S_POT, + RAND_INF_BOTW_B3_EAST_V_N_POT, + RAND_INF_BOTW_B3_EAST_V_NW_POT, + RAND_INF_BOTW_B3_EAST_V_W_POT, + RAND_INF_BOTW_B3_EAST_V_SW_POT, + RAND_INF_BOTW_B3_EAST_V_S_POT, RAND_INF_BOTW_FAKE_WALL_SOUTH_POT, RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT, RAND_INF_BOTW_FAKE_WALL_NORTH_POT, - RAND_INF_BOTW_ENTRYWAY_EAST_POT, RAND_INF_BOTW_ENTRYWAY_WEST_POT, + RAND_INF_BOTW_ENTRYWAY_EAST_POT, RAND_INF_BOTW_3_HIDDEN_PITS_POT, RAND_INF_BOTW_SUNKEN_POT, RAND_INF_ICE_CAVERN_HALL_POT_1, @@ -634,13 +634,13 @@ typedef enum { RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT, RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1, RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2, - RAND_INF_BOTW_MQ_WOODEN_X_ROOM_CENTER_POT, - RAND_INF_BOTW_MQ_WOODEN_X_ROOM_EAST_POT, - RAND_INF_BOTW_MQ_WOODEN_X_ROOM_WEST_POT, + RAND_INF_BOTW_MQ_WOODEN_X_ROOM_C_POT, + RAND_INF_BOTW_MQ_WOODEN_X_ROOM_E_POT, + RAND_INF_BOTW_MQ_WOODEN_X_ROOM_W_POT, RAND_INF_BOTW_MQ_CAGED_POT, - RAND_INF_BOTW_MQ_EAST_INNER_ROOM_FAR_POT, - RAND_INF_BOTW_MQ_EAST_INNER_ROOM_MID_POT, - RAND_INF_BOTW_MQ_EAST_INNER_ROOM_NEAR_POT, + RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_NW_POT, + RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_NE_POT, + RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_S_POT, RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1, RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2, RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1, @@ -1001,12 +1001,12 @@ typedef enum { RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_1, RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_2, RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_3, - RAND_INF_RHT_BOTW_B3_PLATFORM_WEST_RUPEE, - RAND_INF_RHT_BOTW_B3_PLATFORM_NORTHWEST_RUPEE, - RAND_INF_BOTW_B3_PLATFORM_NORTH_RUPEE, - RAND_INF_RHT_BOTW_B3_PLATFORM_NORTHEAST_RUPEE, - RAND_INF_RHT_BOTW_B3_PLATFORM_EAST_RUPEE, - RAND_INF_BOTW_SOUTHEAST_COFFIN_HEART, + RAND_INF_RHT_BOTW_B3_PLATFORM_W_RUPEE, + RAND_INF_RHT_BOTW_B3_PLATFORM_NW_RUPEE, + RAND_INF_BOTW_B3_PLATFORM_N_RUPEE, + RAND_INF_RHT_BOTW_B3_PLATFORM_NE_RUPEE, + RAND_INF_RHT_BOTW_B3_PLATFORM_E_RUPEE, + RAND_INF_BOTW_SE_COFFIN_HEART, RAND_INF_BOTW_OPEN_COFFIN_HEART, RAND_INF_GERUDO_TRAINING_GROUND_BEAMOS_SOUTH_HEART, RAND_INF_GERUDO_TRAINING_GROUND_BEAMOS_EAST_HEART, @@ -1048,13 +1048,13 @@ typedef enum { RAND_INF_SHADOW_TEMPLE_MQ_AFTER_SHIP_LOWER_HEART, RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_LEFT_HEART, RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_RIGHT_HEART, - RAND_INF_BOTW_MQ_NORTHEAST_COFFIN_HEART, - RAND_INF_BOTW_MQ_RUBBLE_NORTH_HEART, - RAND_INF_BOTW_MQ_RUBBLE_SOUTH_HEART, - RAND_INF_BOTW_MQ_SOUTH_COFFIN_HEART, - RAND_INF_MQ_B3_SOUTH_HEART, - RAND_INF_MQ_B3_NORTHWEST_HEART, - RAND_INF_MQ_B3_NORTHEAST_HEART, + RAND_INF_BOTW_MQ_NE_COFFIN_HEART, + RAND_INF_BOTW_MQ_N_BURIED_HEART, + RAND_INF_BOTW_MQ_S_BURIED_HEART, + RAND_INF_BOTW_MQ_S_COFFIN_HEART, + RAND_INF_BOTW_MQ_B3_S_HEART, + RAND_INF_BOTW_MQ_B3_NW_HEART, + RAND_INF_BOTW_MQ_B3_NE_HEART, RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_HEART, RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART, RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART, @@ -1270,7 +1270,7 @@ typedef enum { RAND_INF_SHADOW_TEMPLE_MQ_BEAMOS_STORM_FAIRY, RAND_INF_SHADOW_TEMPLE_MQ_PIT_STORM_FAIRY, RAND_INF_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY, - RAND_INF_BOTW_MQ_WOODEN_X_ROOM_SUN_FAIRY, + RAND_INF_BOTW_MQ_NEAR_POTS_SUN_FAIRY, RAND_INF_BOTW_MQ_B3_SUN_FAIRY, // If you add anything to this list, you need to update the size of randomizerInf in z64save.h to be ceil(RAND_INF_MAX / 16) From 28895ecd3d37c416c871c42cd653a397eeb59b5d Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Mon, 13 Jan 2025 18:22:08 +0000 Subject: [PATCH 4/6] more tweaks --- .../Enhancements/debugger/debugSaveEditor.h | 89 ++++++------ .../hint_list/hint_list_exclude_dungeon.cpp | 8 +- soh/soh/Enhancements/randomizer/dungeon.cpp | 10 +- .../dungeons/bottom_of_the_well.cpp | 10 +- .../Enhancements/randomizer/location_list.cpp | 136 +++++++++--------- .../Enhancements/randomizer/randomizer.cpp | 50 ++++--- .../Enhancements/randomizer/randomizerTypes.h | 18 +-- .../Enhancements/randomizer/randomizer_inf.h | 83 +++++------ 8 files changed, 205 insertions(+), 199 deletions(-) diff --git a/soh/soh/Enhancements/debugger/debugSaveEditor.h b/soh/soh/Enhancements/debugger/debugSaveEditor.h index d186bc84858..818c3d542c8 100644 --- a/soh/soh/Enhancements/debugger/debugSaveEditor.h +++ b/soh/soh/Enhancements/debugger/debugSaveEditor.h @@ -825,25 +825,7 @@ const std::vector flagTables = { { RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_16, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_16" }, { RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_17, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_17" }, { RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18, "RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18" }, - { RAND_INF_BOTW_B3_WEST_CENTER_POT, "RAND_INF_BOTW_B3_WEST_CENTER_POT" }, - { RAND_INF_BOTW_B3_EAST_CENTER_POT, "RAND_INF_BOTW_B3_EAST_CENTER_POT" }, - { RAND_INF_BOTW_B3_WEST_V_NW_POT, "RAND_INF_BOTW_B3_WEST_V_NW_POT" }, - { RAND_INF_BOTW_B3_EAST_V_W_POT, "RAND_INF_BOTW_B3_EAST_V_W_POT" }, - { RAND_INF_BOTW_B3_WEST_V_S_POT, "RAND_INF_BOTW_B3_WEST_V_S_POT" }, - { RAND_INF_BOTW_B3_EAST_V_S_POT, "RAND_INF_BOTW_B3_EAST_V_S_POT" }, - { RAND_INF_BOTW_B3_EAST_V_N_POT, "RAND_INF_BOTW_B3_EAST_V_N_POT" }, - { RAND_INF_BOTW_B3_EAST_V_NW_POT, "RAND_INF_BOTW_B3_EAST_V_NW_POT" }, - { RAND_INF_BOTW_B3_WEST_V_SW_POT, "RAND_INF_BOTW_B3_WEST_V_SW_POT" }, - { RAND_INF_BOTW_B3_EAST_V_SW_POT, "RAND_INF_BOTW_B3_EAST_V_SW_POT" }, - { RAND_INF_BOTW_B3_WEST_V_W_POT, "RAND_INF_BOTW_B3_WEST_V_W_POT" }, - { RAND_INF_BOTW_B3_WEST_V_N_POT, "RAND_INF_BOTW_B3_WEST_V_N_POT" }, - { RAND_INF_BOTW_FAKE_WALL_SOUTH_POT, "RAND_INF_BOTW_FAKE_WALL_SOUTH_POT" }, - { RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT, "RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT" }, - { RAND_INF_BOTW_FAKE_WALL_NORTH_POT, "RAND_INF_BOTW_FAKE_WALL_NORTH_POT" }, - { RAND_INF_BOTW_ENTRYWAY_WEST_POT, "RAND_INF_BOTW_ENTRYWAY_WEST_POT" }, - { RAND_INF_BOTW_ENTRYWAY_EAST_POT, "RAND_INF_BOTW_ENTRYWAY_EAST_POT" }, - { RAND_INF_BOTW_3_HIDDEN_PITS_POT, "RAND_INF_BOTW_3_HIDDEN_PITS_POT" }, - { RAND_INF_BOTW_SUNKEN_POT, "RAND_INF_BOTW_SUNKEN_POT" }, + { RAND_INF_ICE_CAVERN_HALL_POT_1, "RAND_INF_ICE_CAVERN_HALL_POT_1" }, { RAND_INF_ICE_CAVERN_HALL_POT_2, "RAND_INF_ICE_CAVERN_HALL_POT_2" }, { RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_1, "RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_1" }, @@ -942,13 +924,6 @@ const std::vector flagTables = { { RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT, "RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT" }, { RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1, "RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1" }, { RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2, "RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2" }, - { RAND_INF_BOTW_MQ_WOODEN_X_ROOM_C_POT, "RAND_INF_BOTW_MQ_WOODEN_X_ROOM_C_POT" }, - { RAND_INF_BOTW_MQ_WOODEN_X_ROOM_E_POT, "RAND_INF_BOTW_MQ_WOODEN_X_ROOM_E_POT" }, - { RAND_INF_BOTW_MQ_WOODEN_X_ROOM_W_POT, "RAND_INF_BOTW_MQ_WOODEN_X_ROOM_W_POT" }, - { RAND_INF_BOTW_MQ_CAGED_POT, "RAND_INF_BOTW_MQ_CAGED_POT" }, - { RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_NW_POT, "RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_NW_POT" }, - { RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_NE_POT, "RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_NE_POT" }, - { RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_S_POT, "RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_S_POT" }, { RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1, "RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1" }, { RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2, "RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2" }, { RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1, "RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1" }, @@ -1294,14 +1269,6 @@ const std::vector flagTables = { { RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_1, "RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_1" }, { RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_2, "RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_2" }, { RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_3, "RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_3" }, - { RAND_INF_BOTW_B3_PLATFORM_N_RUPEE, "RAND_INF_BOTW_B3_PLATFORM_N_RUPEE" }, - { RAND_INF_RHT_BOTW_B3_PLATFORM_NW_RUPEE, "RAND_INF_RHT_BOTW_B3_PLATFORM_NW_RUPEE" }, - { RAND_INF_RHT_BOTW_B3_PLATFORM_NE_RUPEE, "RAND_INF_RHT_BOTW_B3_PLATFORM_NE_RUPEE" }, - { RAND_INF_RHT_BOTW_B3_PLATFORM_W_RUPEE, "RAND_INF_RHT_BOTW_B3_PLATFORM_W_RUPEE" }, - { RAND_INF_RHT_BOTW_B3_PLATFORM_E_RUPEE, "RAND_INF_RHT_BOTW_B3_PLATFORM_E_RUPEE" }, - { RAND_INF_BOTW_SE_COFFIN_HEART, "RAND_INF_BOTW_SE_COFFIN_HEART" }, - { RAND_INF_RHT_BOTW_B3_PLATFORM_E_RUPEE, "RAND_INF_RHT_BOTW_B3_PLATFORM_EAST_RUPEE" }, - { RAND_INF_BOTW_OPEN_COFFIN_HEART, "RAND_INF_BOTW_OPEN_COFFIN_HEART" }, { RAND_INF_GERUDO_TRAINING_GROUND_BEAMOS_SOUTH_HEART, "RAND_INF_GERUDO_TRAINING_GROUND_BEAMOS_SOUTH_HEART" }, { RAND_INF_GERUDO_TRAINING_GROUND_BEAMOS_EAST_HEART, "RAND_INF_GERUDO_TRAINING_GROUND_BEAMOS_EAST_HEART" }, { RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_HEART_1, "RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_HEART_1" }, @@ -1335,13 +1302,6 @@ const std::vector flagTables = { { RAND_INF_SHADOW_TEMPLE_MQ_AFTER_SHIP_UPPER_LEFT_HEART, "RAND_INF_SHADOW_TEMPLE_MQ_AFTER_SHIP_UPPER_LEFT_HEART" }, { RAND_INF_SHADOW_TEMPLE_MQ_AFTER_SHIP_UPPER_RIGHT_HEART, "RAND_INF_SHADOW_TEMPLE_MQ_AFTER_SHIP_UPPER_RIGHT_HEART" }, { RAND_INF_SHADOW_TEMPLE_MQ_AFTER_SHIP_LOWER_HEART, "RAND_INF_SHADOW_TEMPLE_MQ_AFTER_SHIP_LOWER_HEART" }, - { RAND_INF_BOTW_MQ_NE_COFFIN_HEART, "RAND_INF_BOTW_MQ_NE_COFFIN_HEART" }, - { RAND_INF_BOTW_MQ_N_BURIED_HEART, "RAND_INF_BOTW_MQ_N_BURIED_HEART" }, - { RAND_INF_BOTW_MQ_S_BURIED_HEART, "RAND_INF_BOTW_MQ_S_BURIED_HEART" }, - { RAND_INF_BOTW_MQ_S_COFFIN_HEART, "RAND_INF_BOTW_MQ_S_COFFIN_HEART" }, - { RAND_INF_BOTW_MQ_B3_S_HEART, "RAND_INF_BOTW_MQ_B3_S_HEART" }, - { RAND_INF_BOTW_MQ_B3_NW_HEART, "RAND_INF_BOTW_MQ_B3_NW_HEART" }, - { RAND_INF_BOTW_MQ_B3_NE_HEART, "RAND_INF_BOTW_MQ_B3_NE_HEART" }, { RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_HEART, "RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_HEART" }, { RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART, "RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART" }, { RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART, "RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART" }, @@ -1543,7 +1503,6 @@ const std::vector flagTables = { { RAND_INF_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY, "RAND_INF_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY" }, { RAND_INF_SHADOW_TEMPLE_PIT_STORM_FAIRY, "RAND_INF_SHADOW_TEMPLE_PIT_STORM_FAIRY" }, { RAND_INF_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY, "RAND_INF_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY" }, - { RAND_INF_BOTW_B3_SUN_FAIRY, "RAND_INF_BOTW_B3_SUN_FAIRY" }, { RAND_INF_ICE_CAVERN_ENTRANCE_STORMS_FAIRY, "RAND_INF_ICE_CAVERN_ENTRANCE_STORMS_FAIRY" }, { RAND_INF_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY, "RAND_INF_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY" }, { RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY, "RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY" }, @@ -1556,9 +1515,51 @@ const std::vector flagTables = { { RAND_INF_SHADOW_TEMPLE_MQ_BEAMOS_STORM_FAIRY, "RAND_INF_SHADOW_TEMPLE_MQ_BEAMOS_STORM_FAIRY" }, { RAND_INF_SHADOW_TEMPLE_MQ_PIT_STORM_FAIRY, "RAND_INF_SHADOW_TEMPLE_MQ_PIT_STORM_FAIRY" }, { RAND_INF_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY, "RAND_INF_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY" }, - { RAND_INF_BOTW_MQ_NEAR_POTS_SUN_FAIRY, "RAND_INF_BOTW_MQ_NEAR_POTS_SUN_FAIRY" }, - { RAND_INF_BOTW_MQ_B3_SUN_FAIRY, "RAND_INF_BOTW_MQ_B3_SUN_FAIRY" }, + + { RAND_INF_BOTW_ENTRYWAY_WEST_POT , "RAND_INF_BOTW_ENTRYWAY_WEST_POT" }, + { RAND_INF_BOTW_ENTRYWAY_EAST_POT , "RAND_INF_BOTW_ENTRYWAY_EAST_POT" }, + { RAND_INF_BOTW_SUNKEN_POT , "RAND_INF_BOTW_SUNKEN_POT" }, + { RAND_INF_BOTW_FAKE_WALL_SOUTH_POT , "RAND_INF_BOTW_FAKE_WALL_SOUTH_POT" }, + { RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT , "RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT" }, + { RAND_INF_BOTW_FAKE_WALL_NORTH_POT , "RAND_INF_BOTW_FAKE_WALL_NORTH_POT" }, + { RAND_INF_BOTW_3_HIDDEN_PITS_POT , "RAND_INF_BOTW_3_HIDDEN_PITS_POT" }, + { RAND_INF_BOTW_OPEN_COFFIN_HEART , "RAND_INF_BOTW_OPEN_COFFIN_HEART" }, + { RAND_INF_BOTW_SE_COFFIN_HEART , "RAND_INF_BOTW_SE_COFFIN_HEART" }, + { RAND_INF_BOTW_B3_WEST_CENTER_POT , "RAND_INF_BOTW_B3_WEST_CENTER_POT" }, + { RAND_INF_BOTW_B3_EAST_CENTER_POT , "RAND_INF_BOTW_B3_EAST_CENTER_POT" }, + { RAND_INF_BOTW_B3_WEST_V_N_POT , "RAND_INF_BOTW_B3_WEST_V_N_POT" }, + { RAND_INF_BOTW_B3_WEST_V_NW_POT , "RAND_INF_BOTW_B3_WEST_V_NW_POT" }, + { RAND_INF_BOTW_B3_WEST_V_W_POT , "RAND_INF_BOTW_B3_WEST_V_W_POT" }, + { RAND_INF_BOTW_B3_WEST_V_SW_POT , "RAND_INF_BOTW_B3_WEST_V_SW_POT" }, + { RAND_INF_BOTW_B3_WEST_V_S_POT , "RAND_INF_BOTW_B3_WEST_V_S_POT" }, + { RAND_INF_BOTW_B3_EAST_V_N_POT , "RAND_INF_BOTW_B3_EAST_V_N_POT" }, + { RAND_INF_BOTW_B3_EAST_V_NW_POT , "RAND_INF_BOTW_B3_EAST_V_NW_POT" }, + { RAND_INF_BOTW_B3_EAST_V_W_POT , "RAND_INF_BOTW_B3_EAST_V_W_POT" }, + { RAND_INF_BOTW_B3_EAST_V_SW_POT , "RAND_INF_BOTW_B3_EAST_V_SW_POT" }, + { RAND_INF_BOTW_B3_EAST_V_S_POT , "RAND_INF_BOTW_B3_EAST_V_S_POT" }, + { RAND_INF_BOTW_B3_SUN_FAIRY , "RAND_INF_BOTW_B3_SUN_FAIRY" }, + { RAND_INF_BOTW_B3_PLATFORM_N_RUPEE , "RAND_INF_BOTW_B3_PLATFORM_N_RUPEE" }, + { RAND_INF_BOTW_B3_PLATFORM_NW_RUPEE , "RAND_INF_BOTW_B3_PLATFORM_NW_RUPEE" }, + { RAND_INF_BOTW_B3_PLATFORM_NE_RUPEE , "RAND_INF_BOTW_B3_PLATFORM_NE_RUPEE" }, + { RAND_INF_BOTW_B3_PLATFORM_W_RUPEE , "RAND_INF_BOTW_B3_PLATFORM_W_RUPEE" }, + { RAND_INF_BOTW_B3_PLATFORM_E_RUPEE , "RAND_INF_BOTW_B3_PLATFORM_E_RUPEE" }, + { RAND_INF_BOTW_MQ_CAGED_POT , "RAND_INF_BOTW_MQ_CAGED_POT" }, + { RAND_INF_BOTW_MQ_N_BURIED_HEART , "RAND_INF_BOTW_MQ_N_BURIED_HEART" }, + { RAND_INF_BOTW_MQ_S_BURIED_HEART , "RAND_INF_BOTW_MQ_S_BURIED_HEART" }, + { RAND_INF_BOTW_MQ_NE_COFFIN_HEART , "RAND_INF_BOTW_MQ_NE_COFFIN_HEART" }, + { RAND_INF_BOTW_MQ_S_COFFIN_HEART , "RAND_INF_BOTW_MQ_S_COFFIN_HEART" }, + { RAND_INF_BOTW_MQ_WOODEN_X_ROOM_W_POT, "RAND_INF_BOTW_MQ_WOODEN_X_ROOM_W_POT" }, + { RAND_INF_BOTW_MQ_WOODEN_X_ROOM_C_POT, "RAND_INF_BOTW_MQ_WOODEN_X_ROOM_C_POT" }, + { RAND_INF_BOTW_MQ_NEAR_POTS_SUN_FAIRY, "RAND_INF_BOTW_MQ_NEAR_POTS_SUN_FAIRY" }, + { RAND_INF_BOTW_MQ_WOODEN_X_ROOM_E_POT, "RAND_INF_BOTW_MQ_WOODEN_X_ROOM_E_POT" }, + { RAND_INF_BOTW_MQ_UNSEEN_LEDGE_NW_POT, "RAND_INF_BOTW_MQ_UNSEEN_LEDGE_NW_POT" }, + { RAND_INF_BOTW_MQ_UNSEEN_LEDGE_NE_POT, "RAND_INF_BOTW_MQ_UNSEEN_LEDGE_NE_POT" }, + { RAND_INF_BOTW_MQ_UNSEEN_LEDGE_S_POT , "RAND_INF_BOTW_MQ_UNSEEN_LEDGE_S_POT" }, + { RAND_INF_BOTW_MQ_B3_S_HEART , "RAND_INF_BOTW_MQ_B3_S_HEART" }, + { RAND_INF_BOTW_MQ_B3_NW_HEART , "RAND_INF_BOTW_MQ_B3_NW_HEART" }, + { RAND_INF_BOTW_MQ_B3_NE_HEART , "RAND_INF_BOTW_MQ_B3_NE_HEART" }, + { RAND_INF_BOTW_MQ_B3_SUN_FAIRY , "RAND_INF_BOTW_MQ_B3_SUN_FAIRY" }, } }, }; diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp index 44c624728b6..0f5870664cd 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp @@ -1629,7 +1629,7 @@ hintTextTable[RHT_SHADOW_TEMPLE_MAP_CHEST] = HintText(CustomMessage("They say th /*french*/ "Selon moi, le #secret explosif du Poigneur# est #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, el #explosivo secreto de la Mano Muerta# esconde #[[1]]#. - hintTextTable[RHT_BOTW_MQ_IMVISIBLE_LEDGE_KEY] = HintText(CustomMessage("They say that an #invisible path in the well# leads to #[[1]]#.", + hintTextTable[RHT_BOTW_MQ_UNSEEN_LEDGE_KEY] = HintText(CustomMessage("They say that an #invisible path in the well# leads to #[[1]]#.", /*german*/ "Man erzählt sich, daß ein #unsichtbarer Pfad im Brunnen# zu #[[1]]# führe.", /*french*/ "Selon moi, dans un #chemin caché dans le Puits# gît #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, un #camino invisible del pozo# conduce a #[[1]]#. @@ -1710,11 +1710,11 @@ hintTextTable[RHT_SHADOW_TEMPLE_MAP_CHEST] = HintText(CustomMessage("They say th hintTextTable[RHT_BOTW_MQ_CAGED_POT] = HintText(CustomMessage("They say that #a pot caged in the well# contains #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_MQ_INVISIBLE_LEDGE_S_POT] = HintText(CustomMessage("They say that #a doorside pot sitting on nothing# in the well contains #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_MQ_UNSEEN_LEDGE_S_POT] = HintText(CustomMessage("They say that #a doorside pot sitting on nothing# in the well contains #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_MQ_INVISIBLE_LEDGE_NE_POT] = HintText(CustomMessage("They say that #a pot sitting on the corner of nothing# in the well contains #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_MQ_UNSEEN_LEDGE_NE_POT] = HintText(CustomMessage("They say that #a pot sitting on the corner of nothing# in the well contains #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_BOTW_MQ_INVISIBLE_LEDGE_NW_POT] = HintText(CustomMessage("They say that #a ledgeside pot sitting on nothing# in the well contains #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_BOTW_MQ_UNSEEN_LEDGE_NW_POT] = HintText(CustomMessage("They say that #a ledgeside pot sitting on nothing# in the well contains #[[1]]#.", {QM_RED, QM_GREEN})); hintTextTable[RHT_BOTW_SE_COFFIN_HEART] = HintText(CustomMessage("They say that in #well's doorside coffin# rests #[[1]]#.", {QM_RED, QM_GREEN})); diff --git a/soh/soh/Enhancements/randomizer/dungeon.cpp b/soh/soh/Enhancements/randomizer/dungeon.cpp index 9f1b9970939..6fd4fe313d9 100644 --- a/soh/soh/Enhancements/randomizer/dungeon.cpp +++ b/soh/soh/Enhancements/randomizer/dungeon.cpp @@ -1019,7 +1019,7 @@ Dungeons::Dungeons() { RC_BOTW_OUTER_CAGE_CHEST, RC_BOTW_COFFIN_KEY, RC_BOTW_OUTER_CAGE_GS, - RC_BOTW_INVISIBLE_LEDGE_GS, + RC_BOTW_UNSEEN_LEDGE_GS, RC_BOTW_INNER_WEST_ROOM_GS, RC_BOTW_B3_PLATFORM_W_RUPEE, RC_BOTW_B3_PLATFORM_NW_RUPEE, @@ -1036,7 +1036,7 @@ Dungeons::Dungeons() { RC_BOTW_MQ_REDEAD_CHEST, RC_BOTW_MQ_DEAD_HAND_CHEST, RC_BOTW_MQ_DEAD_HAND_BURIED_KEY, - RC_BOTW_MQ_INVISIBLE_LEDGE_KEY, + RC_BOTW_MQ_UNSEEN_LEDGE_KEY, RC_BOTW_MQ_B3_GS, RC_BOTW_MQ_COFFIN_ROOM_GS, RC_BOTW_MQ_UNDER_GRAVE_GS, @@ -1074,13 +1074,13 @@ Dungeons::Dungeons() { }, { // MQ Pots - RC_BOTW_MQ_INVISIBLE_LEDGE_NE_POT, + RC_BOTW_MQ_UNSEEN_LEDGE_NE_POT, RC_BOTW_MQ_WOODEN_X_ROOM_C_POT, RC_BOTW_MQ_WOODEN_X_ROOM_E_POT, RC_BOTW_MQ_WOODEN_X_ROOM_W_POT, RC_BOTW_MQ_CAGED_POT, - RC_BOTW_MQ_INVISIBLE_LEDGE_S_POT, - RC_BOTW_MQ_INVISIBLE_LEDGE_NW_POT, + RC_BOTW_MQ_UNSEEN_LEDGE_S_POT, + RC_BOTW_MQ_UNSEEN_LEDGE_NW_POT, }, {}, {}); dungeonList[ICE_CAVERN] = DungeonInfo("Ice Cavern", RHT_ICE_CAVERN, RG_ICE_CAVERN_MAP, RG_ICE_CAVERN_COMPASS, diff --git a/soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp b/soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp index 51c4b260da1..83c4c35573f 100644 --- a/soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp +++ b/soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp @@ -103,7 +103,7 @@ void RegionTable_Init_BottomOfTheWell() { }, { //Locations LOCATION(RC_BOTW_INNER_WEST_ROOM_GS, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)), - LOCATION(RC_BOTW_INVISIBLE_LEDGE_GS, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)), + LOCATION(RC_BOTW_UNSEEN_LEDGE_GS, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)), }, { //Exits Entrance(RR_BOTW_REQUIRES_LENS, []{return logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 3);}), @@ -245,7 +245,7 @@ void RegionTable_Init_BottomOfTheWell() { //Locations LOCATION(RC_BOTW_MQ_WOODEN_X_CHEST , true), //This location technically involves an invisible platform, but it's intended to do lensless in vanilla and is clearly signposted by pots. - LOCATION(RC_BOTW_MQ_INVISIBLE_LEDGE_KEY , true), + LOCATION(RC_BOTW_MQ_UNSEEN_LEDGE_KEY , true), //The enemies in this room are invisible and crowd around the player, being awkward to deal with blind unless you already know how. //the right wall is safe, and can be followed to get behind the grave which you can then pull easily assuming you can tank invisible keese //Using a deku nut however stuns everything easily. and if you have a melee weapon you can kill the skull through the grave then grab the drop @@ -257,9 +257,9 @@ void RegionTable_Init_BottomOfTheWell() { LOCATION(RC_BOTW_MQ_WOODEN_X_ROOM_W_POT , logic->CanBreakPots()), LOCATION(RC_BOTW_MQ_WOODEN_X_ROOM_C_POT , logic->CanBreakPots()), LOCATION(RC_BOTW_MQ_WOODEN_X_ROOM_E_POT , logic->CanBreakPots()), - LOCATION(RC_BOTW_MQ_INVISIBLE_LEDGE_NW_POT, logic->CanBreakPots()), - LOCATION(RC_BOTW_MQ_INVISIBLE_LEDGE_NE_POT, logic->CanBreakPots()), - LOCATION(RC_BOTW_MQ_INVISIBLE_LEDGE_S_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_MQ_UNSEEN_LEDGE_NW_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_MQ_UNSEEN_LEDGE_NE_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_MQ_UNSEEN_LEDGE_S_POT , logic->CanBreakPots()), LOCATION(RC_BOTW_MQ_NEAR_POTS_SUN_FAIRY , logic->CanUse(RG_SUNS_SONG)), }, { //Exits diff --git a/soh/soh/Enhancements/randomizer/location_list.cpp b/soh/soh/Enhancements/randomizer/location_list.cpp index 79b3e526ef2..0c32e1cb92a 100644 --- a/soh/soh/Enhancements/randomizer/location_list.cpp +++ b/soh/soh/Enhancements/randomizer/location_list.cpp @@ -538,75 +538,75 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_SHADOW_TEMPLE_MQ_FREESTANDING_KEY] = Location::Collectable(RC_SHADOW_TEMPLE_MQ_FREESTANDING_KEY, RCQUEST_MQ, RCTYPE_SMALL_KEY, ACTOR_EN_ITEM00, SCENE_SHADOW_TEMPLE, 1553, 0x06, "MQ Freestanding Key", RHT_SHADOW_TEMPLE_MQ_FREESTANDING_KEY, RG_SHADOW_TEMPLE_SMALL_KEY, true); // Bottom of the Well Vanilla - locationTable[RC_BOTW_SOUTH_SUNKEN_CHEST] = Location::Chest(RC_BOTW_SOUTH_SUNKEN_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 23760 , 0x10, "South Sunken Chest" , RHT_BOTW_SOUTH_SUNKEN_CHEST , RG_BOMBS_10 ); - locationTable[RC_BOTW_SOUTH_BURIED_CHEST] = Location::Chest(RC_BOTW_SOUTH_BURIED_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 20578 , 0x02, "South Buried Chest" , RHT_BOTW_SOUTH_BURIED_CHEST , RG_BOMBCHU_10 ); - locationTable[RC_BOTW_WEST_SUNKEN_CHEST] = Location::Chest(RC_BOTW_WEST_SUNKEN_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 22793 , 0x09, "West Sunken Chest" , RHT_BOTW_WEST_SUNKEN_CHEST , RG_RECOVERY_HEART); - locationTable[RC_BOTW_ENTRYWAY_WEST_POT] = Location::Pot(RC_BOTW_ENTRYWAY_WEST_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-41, 389) , "Entryway West Pot" , RHT_BOTW_ENTRYWAY_EAST_POT , RG_DEKU_STICK_1 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_ENTRYWAY_WEST_POT)); - locationTable[RC_BOTW_ENTRYWAY_EAST_POT] = Location::Pot(RC_BOTW_ENTRYWAY_EAST_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(36, 389) , "Entryway East Pot" , RHT_BOTW_ENTRYWAY_WEST_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_ENTRYWAY_EAST_POT)); - locationTable[RC_BOTW_SUNKEN_POT] = Location::Pot(RC_BOTW_SUNKEN_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(3, -1641) , "Sunken Pot" , RHT_BOTW_SUNKEN_POT , RG_BOMBS_5 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_SUNKEN_POT)); - locationTable[RC_BOTW_WEST_FAKE_WALL_CHEST] = Location::Chest(RC_BOTW_WEST_FAKE_WALL_CHEST , RCQUEST_VANILLA, RCTYPE_SMALL_KEY , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 22600 , 0x08, "West Fake Wall Chest" , RHT_BOTW_WEST_FAKE_WALL_CHEST , RG_BOTW_SMALL_KEY, true); - locationTable[RC_BOTW_EAST_FAKE_WALL_CHEST] = Location::Chest(RC_BOTW_EAST_FAKE_WALL_CHEST , RCQUEST_VANILLA, RCTYPE_SMALL_KEY , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 22597 , 0x05, "East Fake Wall Chest" , RHT_BOTW_EAST_FAKE_WALL_CHEST , RG_BOTW_SMALL_KEY, true); - locationTable[RC_BOTW_WOODEN_X_ROOM_WEST_CHEST] = Location::Chest(RC_BOTW_WOODEN_X_ROOM_WEST_CHEST , RCQUEST_VANILLA, RCTYPE_COMPASS , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 2049 , 0x01, "Wooden X Room West Chest" , RHT_BOTW_WOODEN_X_ROOM_WEST_CHEST , RG_BOTW_COMPASS , true); - locationTable[RC_BOTW_WOODEN_X_ROOM_EAST_CHEST] = Location::Chest(RC_BOTW_WOODEN_X_ROOM_EAST_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 20558 , 0x0E, "Wooden X Room East Chest" , RHT_BOTW_WOODEN_X_ROOM_EAST_CHEST , RG_DEKU_NUTS_5 ); - locationTable[RC_BOTW_NORTH_BURIED_CHEST] = Location::Chest(RC_BOTW_NORTH_BURIED_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 23684 , 0x04, "North Buried Chest" , RHT_BOTW_NORTH_BURIED_CHEST , RG_DEKU_NUTS_10 ); - locationTable[RC_BOTW_FAKE_WALL_NORTH_POT] = Location::Pot(RC_BOTW_FAKE_WALL_NORTH_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-965, -32) , "Fake Wall North Pot" , RHT_BOTW_FAKE_WALL_NORTH_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_FAKE_WALL_NORTH_POT)); - locationTable[RC_BOTW_FAKE_WALL_CENTRAL_POT] = Location::Pot(RC_BOTW_FAKE_WALL_CENTRAL_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-966, 9) , "Fake Wall Central Pot" , RHT_BOTW_FAKE_WALL_CENTRAL_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT)); - locationTable[RC_BOTW_FAKE_WALL_SOUTH_POT] = Location::Pot(RC_BOTW_FAKE_WALL_SOUTH_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-969, 55) , "Fake Wall South Pot" , RHT_BOTW_FAKE_WALL_SOUTH_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_FAKE_WALL_SOUTH_POT)); - locationTable[RC_BOTW_3_HIDDEN_PITS_CHEST] = Location::Chest(RC_BOTW_3_HIDDEN_PITS_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 21802 , 0x0A, "3 Hidden Pits Chest" , RHT_BOTW_3_HIDDEN_PITS_CHEST , RG_DEKU_SHIELD ); - locationTable[RC_BOTW_3_HIDDEN_PITS_POT] = Location::Pot(RC_BOTW_3_HIDDEN_PITS_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(874, -1294) , "3 Hidden Pits Pot" , RHT_BOTW_3_HIDDEN_PITS_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_3_HIDDEN_PITS_POT)); - locationTable[RC_BOTW_OUTER_CAGE_CHEST] = Location::Chest(RC_BOTW_OUTER_CAGE_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 21836 , 0x0C, "Outer Cage Chest" , RHT_BOTW_OUTER_CAGE_CHEST , RG_HYLIAN_SHIELD ); - locationTable[RC_BOTW_OUTER_CAGE_GS] = Location::GSToken(RC_BOTW_OUTER_CAGE_GS , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, 10241 , 0x01, "Outer Cage GS" , RHT_BOTW_OUTER_CAGE_GS); - locationTable[RC_BOTW_INVISIBLE_LEDGE_GS] = Location::GSToken(RC_BOTW_INVISIBLE_LEDGE_GS , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, 10242 , 0x02, "Invisible Ledge GS" , RHT_BOTW_INVISIBLE_LEDGE_GS); - locationTable[RC_BOTW_INNER_WEST_ROOM_GS] = Location::GSToken(RC_BOTW_INNER_WEST_ROOM_GS , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, 10244 , 0x04, "West Inner Room GS" , RHT_BOTW_WEST_INNER_ROOM_GS); - locationTable[RC_BOTW_COFFIN_KEY] = Location::Collectable(RC_BOTW_COFFIN_KEY , RCQUEST_VANILLA, RCTYPE_SMALL_KEY , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 273 , 0x01, "Coffin Key" , RHT_BOTW_COFFIN_KEY , RG_BOTW_SMALL_KEY, true); - locationTable[RC_BOTW_OPEN_COFFIN_HEART] = Location::Collectable(RC_BOTW_OPEN_COFFIN_HEART , RCQUEST_VANILLA, RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-2144, -859) , "Open Coffin Heart" , RHT_BOTW_OPEN_COFFIN_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_OPEN_COFFIN_HEART)); - locationTable[RC_BOTW_SE_COFFIN_HEART] = Location::Collectable(RC_BOTW_SE_COFFIN_HEART , RCQUEST_VANILLA, RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-1947, -625) , "Southeast Coffin Heart" , RHT_BOTW_SE_COFFIN_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_SE_COFFIN_HEART)); - locationTable[RC_BOTW_DEAD_HAND_CHEST] = Location::Chest(RC_BOTW_DEAD_HAND_CHEST , RCQUEST_VANILLA, RCTYPE_BOSS_HEART_OR_OTHER_REWARD, ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 4419 , 0x03, "Dead Hand Chest" , RHT_BOTW_DEAD_HAND_CHEST , RG_LENS_OF_TRUTH , true); - locationTable[RC_BOTW_INVISIBLE_CHEST] = Location::Chest(RC_BOTW_INVISIBLE_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 27348 , 0x14, "Invisible Chest" , RHT_BOTW_INVISIBLE_CHEST , RG_HUGE_RUPEE ); - locationTable[RC_BOTW_B3_CHEST] = Location::Chest(RC_BOTW_B3_CHEST , RCQUEST_VANILLA, RCTYPE_MAP , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 2087 , 0x07, "B3 Chest" , RHT_BOTW_B3_CHEST , RG_BOTW_MAP , true); - locationTable[RC_BOTW_B3_WEST_CENTER_POT] = Location::Pot(RC_BOTW_B3_WEST_CENTER_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-95, -673) , "B3 West Center Pot" , RHT_BOTW_B3_WEST_CENTER_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_CENTER_POT)); - locationTable[RC_BOTW_B3_EAST_CENTER_POT] = Location::Pot(RC_BOTW_B3_EAST_CENTER_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(75, -598) , "B3 East Center Pot" , RHT_BOTW_B3_EAST_CENTER_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_CENTER_POT)); - locationTable[RC_BOTW_B3_WEST_V_N_POT] = Location::Pot(RC_BOTW_B3_WEST_V_N_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(296, -1206) , "B3 West V Northmost Pot" , RHT_BOTW_B3_WEST_V_N_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_N_POT)); - locationTable[RC_BOTW_B3_WEST_V_NW_POT] = Location::Pot(RC_BOTW_B3_WEST_V_NW_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(270, -1151) , "B3 West V Northwest Pot" , RHT_BOTW_B3_WEST_V_MID_NW_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_NW_POT)); - locationTable[RC_BOTW_B3_WEST_V_W_POT] = Location::Pot(RC_BOTW_B3_WEST_V_W_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(257, -1099) , "B3 West V Westmost Pot" , RHT_BOTW_B3_WEST_V_W_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_W_POT)); - locationTable[RC_BOTW_B3_WEST_V_SW_POT] = Location::Pot(RC_BOTW_B3_WEST_V_SW_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(313, -1086) , "B3 West V Southwest Pot" , RHT_BOTW_B3_WEST_V_SW_POT , RG_DEKU_NUTS_5 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_SW_POT)); - locationTable[RC_BOTW_B3_WEST_V_S_POT] = Location::Pot(RC_BOTW_B3_WEST_V_S_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(378, -1089) , "B3 West V Southmost Pot" , RHT_BOTW_B3_WEST_V_S_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_S_POT)); - locationTable[RC_BOTW_B3_EAST_V_N_POT] = Location::Pot(RC_BOTW_B3_EAST_V_N_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1345) , "B3 East V Northmost Pot" , RHT_BOTW_B3_EAST_V_N_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_N_POT)); - locationTable[RC_BOTW_B3_EAST_V_NW_POT] = Location::Pot(RC_BOTW_B3_EAST_V_NW_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(562, -1304) , "B3 East V Northwest Pot" , RHT_BOTW_B3_EAST_V_NW_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_NW_POT)); - locationTable[RC_BOTW_B3_EAST_V_W_POT] = Location::Pot(RC_BOTW_B3_EAST_V_W_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1254) , "B3 East V Westmost Pot" , RHT_BOTW_B3_EAST_V_W_POT , RG_GREEN_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_W_POT)); - locationTable[RC_BOTW_B3_EAST_V_SW_POT] = Location::Pot(RC_BOTW_B3_EAST_V_SW_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(618, -1254) , "B3 East V Southwest Pot" , RHT_BOTW_B3_EAST_V_SW_POT , RG_DEKU_STICK_1 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_SW_POT)); - locationTable[RC_BOTW_B3_EAST_V_S_POT] = Location::Pot(RC_BOTW_B3_EAST_V_S_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(665, -1252) , "B3 East V Southmost Pot" , RHT_BOTW_B3_EAST_V_S_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_S_POT)); - locationTable[RC_BOTW_B3_SUN_FAIRY] = Location::Fairy(RC_BOTW_B3_SUN_FAIRY , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -1531), "B3 Sun Fairy" , RHT_BOTW_B3_SUN_FAIRY , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_SUN_FAIRY)); - locationTable[RC_BOTW_B3_PLATFORM_N_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_N_RUPEE , RCQUEST_VANILLA, RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(47, -805) , "B3 Platform N Rupee" , RHT_BOTW_B3_PLATFORM_N_RUPEE , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_PLATFORM_N_RUPEE)); - locationTable[RC_BOTW_B3_PLATFORM_NW_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_NW_RUPEE , RCQUEST_VANILLA, RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-19, -828) , "B3 Platform NW Rupee" , RHT_BOTW_B3_PLATFORM_NW_RUPEE , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_RHT_BOTW_B3_PLATFORM_NW_RUPEE)); - locationTable[RC_BOTW_B3_PLATFORM_NE_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_NE_RUPEE , RCQUEST_VANILLA, RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(94, -762) , "B3 Platform NE Rupee" , RHT_BOTW_B3_PLATFORM_NE_RUPEE , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_RHT_BOTW_B3_PLATFORM_NE_RUPEE)); - locationTable[RC_BOTW_B3_PLATFORM_W_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_W_RUPEE , RCQUEST_VANILLA, RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-67, -748) , "B3 Platform W Rupee" , RHT_BOTW_B3_PLATFORM_W_RUPEE , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_RHT_BOTW_B3_PLATFORM_W_RUPEE)); - locationTable[RC_BOTW_B3_PLATFORM_E_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_E_RUPEE , RCQUEST_VANILLA, RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(85, -710) , "B3 Platform E Rupee" , RHT_BOTW_B3_PLATFORM_E_RUPEE , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_RHT_BOTW_B3_PLATFORM_E_RUPEE)); + locationTable[RC_BOTW_SOUTH_SUNKEN_CHEST] = Location::Chest(RC_BOTW_SOUTH_SUNKEN_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 23760 , 0x10, "South Sunken Chest" , RHT_BOTW_SOUTH_SUNKEN_CHEST , RG_BOMBS_10 ); + locationTable[RC_BOTW_SOUTH_BURIED_CHEST] = Location::Chest(RC_BOTW_SOUTH_BURIED_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 20578 , 0x02, "South Buried Chest" , RHT_BOTW_SOUTH_BURIED_CHEST , RG_BOMBCHU_10 ); + locationTable[RC_BOTW_WEST_SUNKEN_CHEST] = Location::Chest(RC_BOTW_WEST_SUNKEN_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 22793 , 0x09, "West Sunken Chest" , RHT_BOTW_WEST_SUNKEN_CHEST , RG_RECOVERY_HEART); + locationTable[RC_BOTW_ENTRYWAY_WEST_POT] = Location::Pot(RC_BOTW_ENTRYWAY_WEST_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-41, 389) , "Entryway West Pot" , RHT_BOTW_ENTRYWAY_EAST_POT , RG_DEKU_STICK_1 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_ENTRYWAY_WEST_POT)); + locationTable[RC_BOTW_ENTRYWAY_EAST_POT] = Location::Pot(RC_BOTW_ENTRYWAY_EAST_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(36, 389) , "Entryway East Pot" , RHT_BOTW_ENTRYWAY_WEST_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_ENTRYWAY_EAST_POT)); + locationTable[RC_BOTW_SUNKEN_POT] = Location::Pot(RC_BOTW_SUNKEN_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(3, -1641) , "Sunken Pot" , RHT_BOTW_SUNKEN_POT , RG_BOMBS_5 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_SUNKEN_POT)); + locationTable[RC_BOTW_WEST_FAKE_WALL_CHEST] = Location::Chest(RC_BOTW_WEST_FAKE_WALL_CHEST , RCQUEST_VANILLA, RCTYPE_SMALL_KEY , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 22600 , 0x08, "West Fake Wall Chest" , RHT_BOTW_WEST_FAKE_WALL_CHEST , RG_BOTW_SMALL_KEY, true); + locationTable[RC_BOTW_EAST_FAKE_WALL_CHEST] = Location::Chest(RC_BOTW_EAST_FAKE_WALL_CHEST , RCQUEST_VANILLA, RCTYPE_SMALL_KEY , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 22597 , 0x05, "East Fake Wall Chest" , RHT_BOTW_EAST_FAKE_WALL_CHEST , RG_BOTW_SMALL_KEY, true); + locationTable[RC_BOTW_WOODEN_X_ROOM_WEST_CHEST] = Location::Chest(RC_BOTW_WOODEN_X_ROOM_WEST_CHEST, RCQUEST_VANILLA, RCTYPE_COMPASS , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 2049 , 0x01, "Wooden X Room West Chest", RHT_BOTW_WOODEN_X_ROOM_WEST_CHEST, RG_BOTW_COMPASS , true); + locationTable[RC_BOTW_WOODEN_X_ROOM_EAST_CHEST] = Location::Chest(RC_BOTW_WOODEN_X_ROOM_EAST_CHEST, RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 20558 , 0x0E, "Wooden X Room East Chest", RHT_BOTW_WOODEN_X_ROOM_EAST_CHEST, RG_DEKU_NUTS_5 ); + locationTable[RC_BOTW_NORTH_BURIED_CHEST] = Location::Chest(RC_BOTW_NORTH_BURIED_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 23684 , 0x04, "North Buried Chest" , RHT_BOTW_NORTH_BURIED_CHEST , RG_DEKU_NUTS_10 ); + locationTable[RC_BOTW_FAKE_WALL_NORTH_POT] = Location::Pot(RC_BOTW_FAKE_WALL_NORTH_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-965, -32) , "Fake Wall North Pot" , RHT_BOTW_FAKE_WALL_NORTH_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_FAKE_WALL_NORTH_POT)); + locationTable[RC_BOTW_FAKE_WALL_CENTRAL_POT] = Location::Pot(RC_BOTW_FAKE_WALL_CENTRAL_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-966, 9) , "Fake Wall Central Pot" , RHT_BOTW_FAKE_WALL_CENTRAL_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT)); + locationTable[RC_BOTW_FAKE_WALL_SOUTH_POT] = Location::Pot(RC_BOTW_FAKE_WALL_SOUTH_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-969, 55) , "Fake Wall South Pot" , RHT_BOTW_FAKE_WALL_SOUTH_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_FAKE_WALL_SOUTH_POT)); + locationTable[RC_BOTW_3_HIDDEN_PITS_CHEST] = Location::Chest(RC_BOTW_3_HIDDEN_PITS_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 21802 , 0x0A, "3 Hidden Pits Chest" , RHT_BOTW_3_HIDDEN_PITS_CHEST , RG_DEKU_SHIELD ); + locationTable[RC_BOTW_3_HIDDEN_PITS_POT] = Location::Pot(RC_BOTW_3_HIDDEN_PITS_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(874, -1294) , "3 Hidden Pits Pot" , RHT_BOTW_3_HIDDEN_PITS_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_3_HIDDEN_PITS_POT)); + locationTable[RC_BOTW_OUTER_CAGE_CHEST] = Location::Chest(RC_BOTW_OUTER_CAGE_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 21836 , 0x0C, "Outer Cage Chest" , RHT_BOTW_OUTER_CAGE_CHEST , RG_HYLIAN_SHIELD ); + locationTable[RC_BOTW_OUTER_CAGE_GS] = Location::GSToken(RC_BOTW_OUTER_CAGE_GS , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, 10241 , 0x01, "Outer Cage GS" , RHT_BOTW_OUTER_CAGE_GS); + locationTable[RC_BOTW_UNSEEN_LEDGE_GS] = Location::GSToken(RC_BOTW_UNSEEN_LEDGE_GS , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, 10242 , 0x02, "Invisible Ledge GS" , RHT_BOTW_INVISIBLE_LEDGE_GS); + locationTable[RC_BOTW_INNER_WEST_ROOM_GS] = Location::GSToken(RC_BOTW_INNER_WEST_ROOM_GS , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, 10244 , 0x04, "West Inner Room GS" , RHT_BOTW_WEST_INNER_ROOM_GS); + locationTable[RC_BOTW_COFFIN_KEY] = Location::Collectable(RC_BOTW_COFFIN_KEY , RCQUEST_VANILLA, RCTYPE_SMALL_KEY , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 273 , 0x01, "Coffin Key" , RHT_BOTW_COFFIN_KEY , RG_BOTW_SMALL_KEY, true); + locationTable[RC_BOTW_OPEN_COFFIN_HEART] = Location::Collectable(RC_BOTW_OPEN_COFFIN_HEART , RCQUEST_VANILLA, RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-2144, -859) , "Open Coffin Heart" , RHT_BOTW_OPEN_COFFIN_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_OPEN_COFFIN_HEART)); + locationTable[RC_BOTW_SE_COFFIN_HEART] = Location::Collectable(RC_BOTW_SE_COFFIN_HEART , RCQUEST_VANILLA, RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-1947, -625) , "SE Coffin Heart" , RHT_BOTW_SE_COFFIN_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_SE_COFFIN_HEART)); + locationTable[RC_BOTW_DEAD_HAND_CHEST] = Location::Chest(RC_BOTW_DEAD_HAND_CHEST , RCQUEST_VANILLA, RCTYPE_BOSS_HEART_OR_OTHER_REWARD, ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 4419 , 0x03, "Dead Hand Chest" , RHT_BOTW_DEAD_HAND_CHEST , RG_LENS_OF_TRUTH , true); + locationTable[RC_BOTW_INVISIBLE_CHEST] = Location::Chest(RC_BOTW_INVISIBLE_CHEST , RCQUEST_VANILLA, RCTYPE_STANDARD , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 27348 , 0x14, "Invisible Chest" , RHT_BOTW_INVISIBLE_CHEST , RG_HUGE_RUPEE ); + locationTable[RC_BOTW_B3_CHEST] = Location::Chest(RC_BOTW_B3_CHEST , RCQUEST_VANILLA, RCTYPE_MAP , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 2087 , 0x07, "B3 Chest" , RHT_BOTW_B3_CHEST , RG_BOTW_MAP , true); + locationTable[RC_BOTW_B3_WEST_CENTER_POT] = Location::Pot(RC_BOTW_B3_WEST_CENTER_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-95, -673) , "B3 West Center Pot" , RHT_BOTW_B3_WEST_CENTER_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_CENTER_POT)); + locationTable[RC_BOTW_B3_EAST_CENTER_POT] = Location::Pot(RC_BOTW_B3_EAST_CENTER_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(75, -598) , "B3 East Center Pot" , RHT_BOTW_B3_EAST_CENTER_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_CENTER_POT)); + locationTable[RC_BOTW_B3_WEST_V_N_POT] = Location::Pot(RC_BOTW_B3_WEST_V_N_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(296, -1206) , "B3 West V Northmost Pot" , RHT_BOTW_B3_WEST_V_N_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_N_POT)); + locationTable[RC_BOTW_B3_WEST_V_NW_POT] = Location::Pot(RC_BOTW_B3_WEST_V_NW_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(270, -1151) , "B3 West V Northwest Pot" , RHT_BOTW_B3_WEST_V_MID_NW_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_NW_POT)); + locationTable[RC_BOTW_B3_WEST_V_W_POT] = Location::Pot(RC_BOTW_B3_WEST_V_W_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(257, -1099) , "B3 West V Westmost Pot" , RHT_BOTW_B3_WEST_V_W_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_W_POT)); + locationTable[RC_BOTW_B3_WEST_V_SW_POT] = Location::Pot(RC_BOTW_B3_WEST_V_SW_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(313, -1086) , "B3 West V Southwest Pot" , RHT_BOTW_B3_WEST_V_SW_POT , RG_DEKU_NUTS_5 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_SW_POT)); + locationTable[RC_BOTW_B3_WEST_V_S_POT] = Location::Pot(RC_BOTW_B3_WEST_V_S_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(378, -1089) , "B3 West V Southmost Pot" , RHT_BOTW_B3_WEST_V_S_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_WEST_V_S_POT)); + locationTable[RC_BOTW_B3_EAST_V_N_POT] = Location::Pot(RC_BOTW_B3_EAST_V_N_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1345) , "B3 East V Northmost Pot" , RHT_BOTW_B3_EAST_V_N_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_N_POT)); + locationTable[RC_BOTW_B3_EAST_V_NW_POT] = Location::Pot(RC_BOTW_B3_EAST_V_NW_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(562, -1304) , "B3 East V Northwest Pot" , RHT_BOTW_B3_EAST_V_NW_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_NW_POT)); + locationTable[RC_BOTW_B3_EAST_V_W_POT] = Location::Pot(RC_BOTW_B3_EAST_V_W_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1254) , "B3 East V Westmost Pot" , RHT_BOTW_B3_EAST_V_W_POT , RG_GREEN_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_W_POT)); + locationTable[RC_BOTW_B3_EAST_V_SW_POT] = Location::Pot(RC_BOTW_B3_EAST_V_SW_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(618, -1254) , "B3 East V Southwest Pot" , RHT_BOTW_B3_EAST_V_SW_POT , RG_DEKU_STICK_1 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_SW_POT)); + locationTable[RC_BOTW_B3_EAST_V_S_POT] = Location::Pot(RC_BOTW_B3_EAST_V_S_POT , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(665, -1252) , "B3 East V Southmost Pot" , RHT_BOTW_B3_EAST_V_S_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_EAST_V_S_POT)); + locationTable[RC_BOTW_B3_SUN_FAIRY] = Location::Fairy(RC_BOTW_B3_SUN_FAIRY , RCQUEST_VANILLA, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -1531), "B3 Sun Fairy" , RHT_BOTW_B3_SUN_FAIRY , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_SUN_FAIRY)); + locationTable[RC_BOTW_B3_PLATFORM_N_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_N_RUPEE , RCQUEST_VANILLA, RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(47, -805) , "B3 Platform N Rupee" , RHT_BOTW_B3_PLATFORM_N_RUPEE , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_PLATFORM_N_RUPEE)); + locationTable[RC_BOTW_B3_PLATFORM_NW_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_NW_RUPEE , RCQUEST_VANILLA, RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-19, -828) , "B3 Platform NW Rupee" , RHT_BOTW_B3_PLATFORM_NW_RUPEE , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_PLATFORM_NW_RUPEE)); + locationTable[RC_BOTW_B3_PLATFORM_NE_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_NE_RUPEE , RCQUEST_VANILLA, RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(94, -762) , "B3 Platform NE Rupee" , RHT_BOTW_B3_PLATFORM_NE_RUPEE , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_PLATFORM_NE_RUPEE)); + locationTable[RC_BOTW_B3_PLATFORM_W_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_W_RUPEE , RCQUEST_VANILLA, RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-67, -748) , "B3 Platform W Rupee" , RHT_BOTW_B3_PLATFORM_W_RUPEE , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_PLATFORM_W_RUPEE)); + locationTable[RC_BOTW_B3_PLATFORM_E_RUPEE] = Location::Collectable(RC_BOTW_B3_PLATFORM_E_RUPEE , RCQUEST_VANILLA, RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(85, -710) , "B3 Platform E Rupee" , RHT_BOTW_B3_PLATFORM_E_RUPEE , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B3_PLATFORM_E_RUPEE)); // Bottom of the Well Master Quest - locationTable[RC_BOTW_MQ_CAGED_POT] = Location::Pot(RC_BOTW_MQ_CAGED_POT , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(421, -174) , "MQ Caged Pot" , RHT_BOTW_MQ_CAGED_POT , RG_GREEN_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_CAGED_POT)); - locationTable[RC_BOTW_MQ_N_BURIED_HEART] = Location::Collectable(RC_BOTW_MQ_N_BURIED_HEART , RCQUEST_MQ , RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-83, -350) , "MQ North Buried Heart" , RHT_BOTW_MQ_N_BURIED_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_N_BURIED_HEART)); - locationTable[RC_BOTW_MQ_S_BURIED_HEART] = Location::Collectable(RC_BOTW_MQ_S_BURIED_HEART , RCQUEST_MQ , RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-83, -274) , "MQ South Buried Heart" , RHT_BOTW_MQ_S_BURIED_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_S_BURIED_HEART)); - locationTable[RC_BOTW_MQ_COFFIN_ROOM_GS] = Location::GSToken(RC_BOTW_MQ_COFFIN_ROOM_GS , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, 10244, 0x04, "MQ Coffin Room GS" , RHT_BOTW_MQ_COFFIN_ROOM_GS); - locationTable[RC_BOTW_MQ_NE_COFFIN_HEART] = Location::Collectable(RC_BOTW_MQ_NE_COFFIN_HEART , RCQUEST_MQ , RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-1945, -863) , "MQ Northeast Coffin Heart", RHT_BOTW_MQ_NE_COFFIN_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_NE_COFFIN_HEART)); - locationTable[RC_BOTW_MQ_S_COFFIN_HEART] = Location::Collectable(RC_BOTW_MQ_S_COFFIN_HEART , RCQUEST_MQ , RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-2143, -621) , "MQ South Coffin Heart" , RHT_BOTW_MQ_S_COFFIN_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_S_COFFIN_HEART)); - locationTable[RC_BOTW_MQ_DEAD_HAND_CHEST] = Location::Chest(RC_BOTW_MQ_DEAD_HAND_CHEST , RCQUEST_MQ , RCTYPE_COMPASS , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 6146 , 0x02, "MQ Dead Hand Chest" , RHT_BOTW_MQ_DEAD_HAND_CHEST , RG_BOTW_COMPASS , true); - locationTable[RC_BOTW_MQ_DEAD_HAND_BURIED_KEY] = Location::Collectable(RC_BOTW_MQ_DEAD_HAND_BURIED_KEY , RCQUEST_MQ , RCTYPE_SMALL_KEY , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 529 , 0x02, "MQ Dead Hand Buried Key" , RHT_BOTW_MQ_DEAD_HAND_BURIED_KEY , RG_BOTW_SMALL_KEY, true); - locationTable[RC_BOTW_MQ_WOODEN_X_CHEST] = Location::Chest(RC_BOTW_MQ_WOODEN_X_CHEST , RCQUEST_MQ , RCTYPE_MAP , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 2083 , 0x03, "MQ Wooden X Chest" , RHT_BOTW_MQ_WOODEN_X_CHEST , RG_BOTW_MAP , true); - locationTable[RC_BOTW_MQ_INVISIBLE_LEDGE_KEY] = Location::Collectable(RC_BOTW_MQ_INVISIBLE_LEDGE_KEY , RCQUEST_MQ , RCTYPE_SMALL_KEY , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 273 , 0x01, "MQ Invisible Ledge Key" , RHT_BOTW_MQ_IMVISIBLE_LEDGE_KEY , RG_BOTW_SMALL_KEY, true); - locationTable[RC_BOTW_MQ_UNDER_GRAVE_GS] = Location::GSToken(RC_BOTW_MQ_UNDER_GRAVE_GS , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, 10242 , 0x02, "MQ Under Grave GS" , RHT_BOTW_MQ_UNDER_GRAVE_GS); - locationTable[RC_BOTW_MQ_WOODEN_X_ROOM_W_POT] = Location::Pot(RC_BOTW_MQ_WOODEN_X_ROOM_W_POT , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(269, -376) , "MQ Wooden X Room W Pot" , RHT_BOTW_MQ_WOODEN_X_ROOM_W_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_WOODEN_X_ROOM_W_POT)); - locationTable[RC_BOTW_MQ_WOODEN_X_ROOM_C_POT] = Location::Pot(RC_BOTW_MQ_WOODEN_X_ROOM_C_POT , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(339, -377) , "MQ Wooden X Room C Pot" , RHT_BOTW_MQ_WOODEN_X_ROOM_C_POT , RG_ARROWS_10 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_WOODEN_X_ROOM_C_POT)); - locationTable[RC_BOTW_MQ_WOODEN_X_ROOM_E_POT] = Location::Pot(RC_BOTW_MQ_WOODEN_X_ROOM_E_POT , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(416, -377) , "MQ Wooden X Room E Pot" , RHT_BOTW_MQ_WOODEN_X_ROOM_E_POT , RG_BOMBS_10 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_WOODEN_X_ROOM_E_POT)); - locationTable[RC_BOTW_MQ_INVISIBLE_LEDGE_NW_POT] = Location::Pot(RC_BOTW_MQ_INVISIBLE_LEDGE_NW_POT, RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(288, -1240) , "MQ Invisible Ledge NW Pot", RHT_BOTW_MQ_INVISIBLE_LEDGE_NW_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_NW_POT)); - locationTable[RC_BOTW_MQ_INVISIBLE_LEDGE_NE_POT] = Location::Pot(RC_BOTW_MQ_INVISIBLE_LEDGE_NE_POT, RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(438, -1234) , "MQ Invisible Ledge NE Pot", RHT_BOTW_MQ_INVISIBLE_LEDGE_NE_POT, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_NE_POT)); - locationTable[RC_BOTW_MQ_INVISIBLE_LEDGE_S_POT] = Location::Pot(RC_BOTW_MQ_INVISIBLE_LEDGE_S_POT , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(444, -1114) , "MQ Invisible Ledge S Pot" , RHT_BOTW_MQ_INVISIBLE_LEDGE_S_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_S_POT)); - locationTable[RC_BOTW_MQ_NEAR_POTS_SUN_FAIRY] = Location::Fairy(RC_BOTW_MQ_NEAR_POTS_SUN_FAIRY , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -437) , "MQ Near Pots Sun Fairy" , RHT_BOTW_MQ_NEAR_POTS_SUN_FAIRY , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_NEAR_POTS_SUN_FAIRY)); - locationTable[RC_BOTW_MQ_B3_GS] = Location::GSToken(RC_BOTW_MQ_B3_GS , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, 10241 , 0x01, "MQ B3 GS" , RHT_BOTW_MQ_B3_GS); - locationTable[RC_BOTW_MQ_B3_S_HEART] = Location::Collectable(RC_BOTW_MQ_B3_S_HEART , RCQUEST_MQ , RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(1083, -1174) , "MQ B3 South Heart" , RHT_BOTW_MQ_B3_S_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_B3_S_HEART)); - locationTable[RC_BOTW_MQ_B3_NW_HEART] = Location::Collectable(RC_BOTW_MQ_B3_NW_HEART , RCQUEST_MQ , RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(1044, -1223) , "MQ B3 Northwest Heart" , RHT_BOTW_MQ_B3_NW_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_B3_NW_HEART)); - locationTable[RC_BOTW_MQ_B3_NE_HEART] = Location::Collectable(RC_BOTW_MQ_B3_NE_HEART , RCQUEST_MQ , RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(1114, -1223) , "MQ B3 Notheast Heart" , RHT_BOTW_MQ_B3_NE_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_B3_NE_HEART)); - locationTable[RC_BOTW_MQ_B3_SUN_FAIRY] = Location::Fairy(RC_BOTW_MQ_B3_SUN_FAIRY , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -1458), "MQ B3 Sun Fairy" , RHT_BOTW_MQ_B3_SUN_FAIRY , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_B3_SUN_FAIRY)); - locationTable[RC_BOTW_MQ_REDEAD_CHEST] = Location::Chest(RC_BOTW_MQ_REDEAD_CHEST , RCQUEST_MQ , RCTYPE_BOSS_HEART_OR_OTHER_REWARD, ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, -20159, 0x01, "MQ Redead Chest" , RHT_BOTW_MQ_REDEAD_CHEST , RG_LENS_OF_TRUTH , true); + locationTable[RC_BOTW_MQ_CAGED_POT] = Location::Pot(RC_BOTW_MQ_CAGED_POT , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(421, -174) , "MQ Caged Pot" , RHT_BOTW_MQ_CAGED_POT , RG_GREEN_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_CAGED_POT)); + locationTable[RC_BOTW_MQ_N_BURIED_HEART] = Location::Collectable(RC_BOTW_MQ_N_BURIED_HEART , RCQUEST_MQ , RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-83, -350) , "MQ North Buried Heart" , RHT_BOTW_MQ_N_BURIED_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_N_BURIED_HEART)); + locationTable[RC_BOTW_MQ_S_BURIED_HEART] = Location::Collectable(RC_BOTW_MQ_S_BURIED_HEART , RCQUEST_MQ , RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-83, -274) , "MQ South Buried Heart" , RHT_BOTW_MQ_S_BURIED_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_S_BURIED_HEART)); + locationTable[RC_BOTW_MQ_COFFIN_ROOM_GS] = Location::GSToken(RC_BOTW_MQ_COFFIN_ROOM_GS , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, 10244, 0x04, "MQ Coffin Room GS" , RHT_BOTW_MQ_COFFIN_ROOM_GS); + locationTable[RC_BOTW_MQ_NE_COFFIN_HEART] = Location::Collectable(RC_BOTW_MQ_NE_COFFIN_HEART , RCQUEST_MQ , RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-1945, -863) , "MQ NE Coffin Heart" , RHT_BOTW_MQ_NE_COFFIN_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_NE_COFFIN_HEART)); + locationTable[RC_BOTW_MQ_S_COFFIN_HEART] = Location::Collectable(RC_BOTW_MQ_S_COFFIN_HEART , RCQUEST_MQ , RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-2143, -621) , "MQ S Coffin Heart" , RHT_BOTW_MQ_S_COFFIN_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_S_COFFIN_HEART)); + locationTable[RC_BOTW_MQ_DEAD_HAND_CHEST] = Location::Chest(RC_BOTW_MQ_DEAD_HAND_CHEST , RCQUEST_MQ , RCTYPE_COMPASS , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 6146 , 0x02, "MQ Dead Hand Chest" , RHT_BOTW_MQ_DEAD_HAND_CHEST , RG_BOTW_COMPASS , true); + locationTable[RC_BOTW_MQ_DEAD_HAND_BURIED_KEY] = Location::Collectable(RC_BOTW_MQ_DEAD_HAND_BURIED_KEY , RCQUEST_MQ , RCTYPE_SMALL_KEY , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 529 , 0x02, "MQ Dead Hand Buried Key" , RHT_BOTW_MQ_DEAD_HAND_BURIED_KEY , RG_BOTW_SMALL_KEY, true); + locationTable[RC_BOTW_MQ_WOODEN_X_CHEST] = Location::Chest(RC_BOTW_MQ_WOODEN_X_CHEST , RCQUEST_MQ , RCTYPE_MAP , ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, 2083 , 0x03, "MQ Wooden X Chest" , RHT_BOTW_MQ_WOODEN_X_CHEST , RG_BOTW_MAP , true); + locationTable[RC_BOTW_MQ_UNSEEN_LEDGE_KEY] = Location::Collectable(RC_BOTW_MQ_UNSEEN_LEDGE_KEY , RCQUEST_MQ , RCTYPE_SMALL_KEY , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, 273 , 0x01, "MQ Unseen Ledge Key" , RHT_BOTW_MQ_UNSEEN_LEDGE_KEY , RG_BOTW_SMALL_KEY, true); + locationTable[RC_BOTW_MQ_UNDER_GRAVE_GS] = Location::GSToken(RC_BOTW_MQ_UNDER_GRAVE_GS , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, 10242 , 0x02, "MQ Under Grave GS" , RHT_BOTW_MQ_UNDER_GRAVE_GS); + locationTable[RC_BOTW_MQ_WOODEN_X_ROOM_W_POT] = Location::Pot(RC_BOTW_MQ_WOODEN_X_ROOM_W_POT , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(269, -376) , "MQ Wooden X Room W Pot" , RHT_BOTW_MQ_WOODEN_X_ROOM_W_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_WOODEN_X_ROOM_W_POT)); + locationTable[RC_BOTW_MQ_WOODEN_X_ROOM_C_POT] = Location::Pot(RC_BOTW_MQ_WOODEN_X_ROOM_C_POT , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(339, -377) , "MQ Wooden X Room C Pot" , RHT_BOTW_MQ_WOODEN_X_ROOM_C_POT , RG_ARROWS_10 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_WOODEN_X_ROOM_C_POT)); + locationTable[RC_BOTW_MQ_WOODEN_X_ROOM_E_POT] = Location::Pot(RC_BOTW_MQ_WOODEN_X_ROOM_E_POT , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(416, -377) , "MQ Wooden X Room E Pot" , RHT_BOTW_MQ_WOODEN_X_ROOM_E_POT , RG_BOMBS_10 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_WOODEN_X_ROOM_E_POT)); + locationTable[RC_BOTW_MQ_UNSEEN_LEDGE_NW_POT] = Location::Pot(RC_BOTW_MQ_UNSEEN_LEDGE_NW_POT , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(288, -1240) , "MQ Unseen Ledge NW Pot" , RHT_BOTW_MQ_UNSEEN_LEDGE_NW_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_UNSEEN_LEDGE_NW_POT)); + locationTable[RC_BOTW_MQ_UNSEEN_LEDGE_NE_POT] = Location::Pot(RC_BOTW_MQ_UNSEEN_LEDGE_NE_POT , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(438, -1234) , "MQ Unseen Ledge NE Pot" , RHT_BOTW_MQ_UNSEEN_LEDGE_NE_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_UNSEEN_LEDGE_NE_POT)); + locationTable[RC_BOTW_MQ_UNSEEN_LEDGE_S_POT] = Location::Pot(RC_BOTW_MQ_UNSEEN_LEDGE_S_POT , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(444, -1114) , "MQ Unseen Ledge S Pot" , RHT_BOTW_MQ_UNSEEN_LEDGE_S_POT , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_UNSEEN_LEDGE_S_POT)); + locationTable[RC_BOTW_MQ_NEAR_POTS_SUN_FAIRY] = Location::Fairy(RC_BOTW_MQ_NEAR_POTS_SUN_FAIRY , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -437) , "MQ Near Pots Sun Fairy" , RHT_BOTW_MQ_NEAR_POTS_SUN_FAIRY , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_NEAR_POTS_SUN_FAIRY)); + locationTable[RC_BOTW_MQ_B3_GS] = Location::GSToken(RC_BOTW_MQ_B3_GS , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, 10241 , 0x01, "MQ B3 GS" , RHT_BOTW_MQ_B3_GS); + locationTable[RC_BOTW_MQ_B3_S_HEART] = Location::Collectable(RC_BOTW_MQ_B3_S_HEART , RCQUEST_MQ , RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(1083, -1174) , "MQ B3 South Heart" , RHT_BOTW_MQ_B3_S_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_B3_S_HEART)); + locationTable[RC_BOTW_MQ_B3_NW_HEART] = Location::Collectable(RC_BOTW_MQ_B3_NW_HEART , RCQUEST_MQ , RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(1044, -1223) , "MQ B3 Northwest Heart" , RHT_BOTW_MQ_B3_NW_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_B3_NW_HEART)); + locationTable[RC_BOTW_MQ_B3_NE_HEART] = Location::Collectable(RC_BOTW_MQ_B3_NE_HEART , RCQUEST_MQ , RCTYPE_FREESTANDING , ACTOR_EN_ITEM00, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(1114, -1223) , "MQ B3 Notheast Heart" , RHT_BOTW_MQ_B3_NE_HEART , RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_B3_NE_HEART)); + locationTable[RC_BOTW_MQ_B3_SUN_FAIRY] = Location::Fairy(RC_BOTW_MQ_B3_SUN_FAIRY , RCQUEST_MQ , SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -1458), "MQ B3 Sun Fairy" , RHT_BOTW_MQ_B3_SUN_FAIRY , SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_MQ_B3_SUN_FAIRY)); + locationTable[RC_BOTW_MQ_REDEAD_CHEST] = Location::Chest(RC_BOTW_MQ_REDEAD_CHEST , RCQUEST_MQ , RCTYPE_BOSS_HEART_OR_OTHER_REWARD, ACTOR_EN_BOX , SCENE_BOTTOM_OF_THE_WELL, -20159, 0x01, "MQ Redead Chest" , RHT_BOTW_MQ_REDEAD_CHEST , RG_LENS_OF_TRUTH , true); // Ice Cavern Vanilla locationTable[RC_ICE_CAVERN_MAP_CHEST] = Location::Chest(RC_ICE_CAVERN_MAP_CHEST, RCQUEST_VANILLA, RCTYPE_MAP, ACTOR_EN_BOX, SCENE_ICE_CAVERN, 2080, 0x00, "Map Chest", RHT_ICE_CAVERN_MAP_CHEST, RG_ICE_CAVERN_MAP, true); diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index 8e4aae8216d..aa10087faea 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -1321,25 +1321,36 @@ std::map rcToRandomizerInf = { { RC_GANONS_CASTLE_GANONS_TOWER_POT_16, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_16 }, { RC_GANONS_CASTLE_GANONS_TOWER_POT_17, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_17 }, { RC_GANONS_CASTLE_GANONS_TOWER_POT_18, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18 }, - { RC_BOTW_B3_WEST_CENTER_POT, RAND_INF_BOTW_B3_WEST_CENTER_POT }, - { RC_BOTW_B3_EAST_CENTER_POT, RAND_INF_BOTW_B3_EAST_CENTER_POT }, - { RC_BOTW_B3_WEST_V_NW_POT, RAND_INF_BOTW_B3_WEST_V_NW_POT }, - { RC_BOTW_B3_EAST_V_W_POT, RAND_INF_BOTW_B3_EAST_V_W_POT }, + + + { RC_BOTW_ENTRYWAY_WEST_POT, RAND_INF_BOTW_ENTRYWAY_WEST_POT }, + { RC_BOTW_ENTRYWAY_EAST_POT, RAND_INF_BOTW_ENTRYWAY_EAST_POT }, + { RC_BOTW_SUNKEN_POT, RAND_INF_BOTW_SUNKEN_POT }, + { RC_BOTW_FAKE_WALL_SOUTH_POT, RAND_INF_BOTW_FAKE_WALL_SOUTH_POT }, + { RC_BOTW_FAKE_WALL_CENTRAL_POT, RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT }, + { RC_BOTW_FAKE_WALL_NORTH_POT, RAND_INF_BOTW_FAKE_WALL_NORTH_POT }, + { RC_BOTW_3_HIDDEN_PITS_POT, RAND_INF_BOTW_3_HIDDEN_PITS_POT }, + { RC_BOTW_B3_WEST_CENTER_POT, RAND_INF_BOTW_B3_WEST_CENTER_POT }, + { RC_BOTW_B3_EAST_CENTER_POT, RAND_INF_BOTW_B3_EAST_CENTER_POT }, + { RC_BOTW_B3_WEST_V_N_POT, RAND_INF_BOTW_B3_WEST_V_N_POT }, + { RC_BOTW_B3_WEST_V_NW_POT, RAND_INF_BOTW_B3_WEST_V_NW_POT }, + { RC_BOTW_B3_WEST_V_W_POT, RAND_INF_BOTW_B3_WEST_V_W_POT }, + { RC_BOTW_B3_WEST_V_SW_POT, RAND_INF_BOTW_B3_WEST_V_SW_POT }, { RC_BOTW_B3_WEST_V_S_POT, RAND_INF_BOTW_B3_WEST_V_S_POT }, { RC_BOTW_B3_EAST_V_S_POT, RAND_INF_BOTW_B3_EAST_V_S_POT }, { RC_BOTW_B3_EAST_V_N_POT, RAND_INF_BOTW_B3_EAST_V_N_POT }, - { RC_BOTW_B3_EAST_V_NW_POT, RAND_INF_BOTW_B3_EAST_V_NW_POT }, - { RC_BOTW_B3_WEST_V_SW_POT, RAND_INF_BOTW_B3_WEST_V_SW_POT }, - { RC_BOTW_B3_EAST_V_SW_POT, RAND_INF_BOTW_B3_EAST_V_SW_POT }, - { RC_BOTW_B3_WEST_V_W_POT, RAND_INF_BOTW_B3_WEST_V_W_POT }, - { RC_BOTW_B3_WEST_V_N_POT, RAND_INF_BOTW_B3_WEST_V_N_POT }, - { RC_BOTW_FAKE_WALL_SOUTH_POT, RAND_INF_BOTW_FAKE_WALL_SOUTH_POT }, - { RC_BOTW_FAKE_WALL_CENTRAL_POT, RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT }, - { RC_BOTW_FAKE_WALL_NORTH_POT, RAND_INF_BOTW_FAKE_WALL_NORTH_POT }, - { RC_BOTW_ENTRYWAY_WEST_POT, RAND_INF_BOTW_ENTRYWAY_WEST_POT }, - { RC_BOTW_ENTRYWAY_EAST_POT, RAND_INF_BOTW_ENTRYWAY_EAST_POT }, - { RC_BOTW_3_HIDDEN_PITS_POT, RAND_INF_BOTW_3_HIDDEN_PITS_POT }, - { RC_BOTW_SUNKEN_POT, RAND_INF_BOTW_SUNKEN_POT }, + { RC_BOTW_B3_EAST_V_NW_POT, RAND_INF_BOTW_B3_EAST_V_NW_POT }, + { RC_BOTW_B3_EAST_V_W_POT, RAND_INF_BOTW_B3_EAST_V_W_POT }, + { RC_BOTW_B3_EAST_V_SW_POT, RAND_INF_BOTW_B3_EAST_V_SW_POT }, + + { RC_BOTW_MQ_CAGED_POT, RAND_INF_BOTW_MQ_CAGED_POT }, + { RC_BOTW_MQ_WOODEN_X_ROOM_C_POT, RAND_INF_BOTW_MQ_WOODEN_X_ROOM_C_POT }, + { RC_BOTW_MQ_WOODEN_X_ROOM_E_POT, RAND_INF_BOTW_MQ_WOODEN_X_ROOM_E_POT }, + { RC_BOTW_MQ_WOODEN_X_ROOM_W_POT, RAND_INF_BOTW_MQ_WOODEN_X_ROOM_W_POT }, + { RC_BOTW_MQ_UNSEEN_LEDGE_NE_POT, RAND_INF_BOTW_MQ_UNSEEN_LEDGE_NW_POT }, + { RC_BOTW_MQ_UNSEEN_LEDGE_NE_POT, RAND_INF_BOTW_MQ_UNSEEN_LEDGE_NE_POT }, + { RC_BOTW_MQ_UNSEEN_LEDGE_S_POT, RAND_INF_BOTW_MQ_UNSEEN_LEDGE_S_POT }, + { RC_ICE_CAVERN_HALL_POT_1, RAND_INF_ICE_CAVERN_HALL_POT_1 }, { RC_ICE_CAVERN_HALL_POT_2, RAND_INF_ICE_CAVERN_HALL_POT_2 }, { RC_ICE_CAVERN_SPINNING_BLADE_POT_1, RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_1 }, @@ -1438,13 +1449,6 @@ std::map rcToRandomizerInf = { { RC_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT, RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT }, { RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1, RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1 }, { RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2, RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2 }, - { RC_BOTW_MQ_WOODEN_X_ROOM_C_POT, RAND_INF_BOTW_MQ_WOODEN_X_ROOM_C_POT }, - { RC_BOTW_MQ_WOODEN_X_ROOM_E_POT, RAND_INF_BOTW_MQ_WOODEN_X_ROOM_E_POT }, - { RC_BOTW_MQ_WOODEN_X_ROOM_W_POT, RAND_INF_BOTW_MQ_WOODEN_X_ROOM_W_POT }, - { RC_BOTW_MQ_CAGED_POT, RAND_INF_BOTW_MQ_CAGED_POT }, - { RC_BOTW_MQ_INVISIBLE_LEDGE_NE_POT, RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_NW_POT }, - { RC_BOTW_MQ_INVISIBLE_LEDGE_NE_POT, RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_NE_POT }, - { RC_BOTW_MQ_INVISIBLE_LEDGE_S_POT, RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_S_POT }, { RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_1, RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1 }, { RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_2, RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2 }, { RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1, RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1 }, diff --git a/soh/soh/Enhancements/randomizer/randomizerTypes.h b/soh/soh/Enhancements/randomizer/randomizerTypes.h index e69a84833e9..e8d7b1cae6c 100644 --- a/soh/soh/Enhancements/randomizer/randomizerTypes.h +++ b/soh/soh/Enhancements/randomizer/randomizerTypes.h @@ -1467,7 +1467,7 @@ typedef enum { RC_BOTW_OUTER_CAGE_CHEST, RC_BOTW_OUTER_CAGE_GS, RC_BOTW_INNER_WEST_ROOM_GS, - RC_BOTW_INVISIBLE_LEDGE_GS, + RC_BOTW_UNSEEN_LEDGE_GS, RC_BOTW_COFFIN_KEY, RC_BOTW_OPEN_COFFIN_HEART, RC_BOTW_SE_COFFIN_HEART, @@ -1502,14 +1502,14 @@ typedef enum { RC_BOTW_MQ_DEAD_HAND_CHEST, RC_BOTW_MQ_DEAD_HAND_BURIED_KEY, RC_BOTW_MQ_WOODEN_X_CHEST, - RC_BOTW_MQ_INVISIBLE_LEDGE_KEY, + RC_BOTW_MQ_UNSEEN_LEDGE_KEY, RC_BOTW_MQ_UNDER_GRAVE_GS, RC_BOTW_MQ_WOODEN_X_ROOM_W_POT, RC_BOTW_MQ_WOODEN_X_ROOM_C_POT, RC_BOTW_MQ_WOODEN_X_ROOM_E_POT, - RC_BOTW_MQ_INVISIBLE_LEDGE_NW_POT, - RC_BOTW_MQ_INVISIBLE_LEDGE_NE_POT, - RC_BOTW_MQ_INVISIBLE_LEDGE_S_POT, + RC_BOTW_MQ_UNSEEN_LEDGE_NW_POT, + RC_BOTW_MQ_UNSEEN_LEDGE_NE_POT, + RC_BOTW_MQ_UNSEEN_LEDGE_S_POT, RC_BOTW_MQ_NEAR_POTS_SUN_FAIRY, RC_BOTW_MQ_B3_GS, RC_BOTW_MQ_B3_S_HEART, @@ -4060,7 +4060,7 @@ typedef enum { RHT_BOTW_INVISIBLE_LEDGE_GS, RHT_BOTW_OUTER_CAGE_GS, RHT_BOTW_MQ_WOODEN_X_CHEST, - RHT_BOTW_MQ_IMVISIBLE_LEDGE_KEY, + RHT_BOTW_MQ_UNSEEN_LEDGE_KEY, RHT_BOTW_MQ_DEAD_HAND_CHEST, RHT_BOTW_MQ_DEAD_HAND_BURIED_KEY, RHT_BOTW_MQ_REDEAD_CHEST, @@ -4867,9 +4867,9 @@ typedef enum { RHT_BOTW_MQ_WOODEN_X_ROOM_C_POT, RHT_BOTW_MQ_WOODEN_X_ROOM_E_POT, RHT_BOTW_MQ_CAGED_POT, - RHT_BOTW_MQ_INVISIBLE_LEDGE_S_POT, - RHT_BOTW_MQ_INVISIBLE_LEDGE_NE_POT, - RHT_BOTW_MQ_INVISIBLE_LEDGE_NW_POT, + RHT_BOTW_MQ_UNSEEN_LEDGE_S_POT, + RHT_BOTW_MQ_UNSEEN_LEDGE_NE_POT, + RHT_BOTW_MQ_UNSEEN_LEDGE_NW_POT, RHT_POT_ICE_CAVERN, // Ganon Line RHT_GANON_JOKE01, diff --git a/soh/soh/Enhancements/randomizer/randomizer_inf.h b/soh/soh/Enhancements/randomizer/randomizer_inf.h index a456243376e..a6528ec1c2a 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_inf.h +++ b/soh/soh/Enhancements/randomizer/randomizer_inf.h @@ -517,25 +517,6 @@ typedef enum { RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_16, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_17, RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18, - RAND_INF_BOTW_B3_WEST_CENTER_POT, - RAND_INF_BOTW_B3_EAST_CENTER_POT, - RAND_INF_BOTW_B3_WEST_V_N_POT, - RAND_INF_BOTW_B3_WEST_V_NW_POT, - RAND_INF_BOTW_B3_WEST_V_W_POT, - RAND_INF_BOTW_B3_WEST_V_SW_POT, - RAND_INF_BOTW_B3_WEST_V_S_POT, - RAND_INF_BOTW_B3_EAST_V_N_POT, - RAND_INF_BOTW_B3_EAST_V_NW_POT, - RAND_INF_BOTW_B3_EAST_V_W_POT, - RAND_INF_BOTW_B3_EAST_V_SW_POT, - RAND_INF_BOTW_B3_EAST_V_S_POT, - RAND_INF_BOTW_FAKE_WALL_SOUTH_POT, - RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT, - RAND_INF_BOTW_FAKE_WALL_NORTH_POT, - RAND_INF_BOTW_ENTRYWAY_WEST_POT, - RAND_INF_BOTW_ENTRYWAY_EAST_POT, - RAND_INF_BOTW_3_HIDDEN_PITS_POT, - RAND_INF_BOTW_SUNKEN_POT, RAND_INF_ICE_CAVERN_HALL_POT_1, RAND_INF_ICE_CAVERN_HALL_POT_2, RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_1, @@ -634,13 +615,6 @@ typedef enum { RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT, RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1, RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2, - RAND_INF_BOTW_MQ_WOODEN_X_ROOM_C_POT, - RAND_INF_BOTW_MQ_WOODEN_X_ROOM_E_POT, - RAND_INF_BOTW_MQ_WOODEN_X_ROOM_W_POT, - RAND_INF_BOTW_MQ_CAGED_POT, - RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_NW_POT, - RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_NE_POT, - RAND_INF_BOTW_MQ_INVISIBLE_LEDGE_S_POT, RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1, RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2, RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1, @@ -1001,13 +975,6 @@ typedef enum { RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_1, RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_2, RAND_INF_ICE_CAVERN_SLIDING_BLOCK_RUPEE_3, - RAND_INF_RHT_BOTW_B3_PLATFORM_W_RUPEE, - RAND_INF_RHT_BOTW_B3_PLATFORM_NW_RUPEE, - RAND_INF_BOTW_B3_PLATFORM_N_RUPEE, - RAND_INF_RHT_BOTW_B3_PLATFORM_NE_RUPEE, - RAND_INF_RHT_BOTW_B3_PLATFORM_E_RUPEE, - RAND_INF_BOTW_SE_COFFIN_HEART, - RAND_INF_BOTW_OPEN_COFFIN_HEART, RAND_INF_GERUDO_TRAINING_GROUND_BEAMOS_SOUTH_HEART, RAND_INF_GERUDO_TRAINING_GROUND_BEAMOS_EAST_HEART, RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_HEART_1, @@ -1048,13 +1015,6 @@ typedef enum { RAND_INF_SHADOW_TEMPLE_MQ_AFTER_SHIP_LOWER_HEART, RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_LEFT_HEART, RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_RIGHT_HEART, - RAND_INF_BOTW_MQ_NE_COFFIN_HEART, - RAND_INF_BOTW_MQ_N_BURIED_HEART, - RAND_INF_BOTW_MQ_S_BURIED_HEART, - RAND_INF_BOTW_MQ_S_COFFIN_HEART, - RAND_INF_BOTW_MQ_B3_S_HEART, - RAND_INF_BOTW_MQ_B3_NW_HEART, - RAND_INF_BOTW_MQ_B3_NE_HEART, RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_HEART, RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART, RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART, @@ -1257,7 +1217,6 @@ typedef enum { RAND_INF_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY, RAND_INF_SHADOW_TEMPLE_PIT_STORM_FAIRY, RAND_INF_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY, - RAND_INF_BOTW_B3_SUN_FAIRY, RAND_INF_ICE_CAVERN_ENTRANCE_STORMS_FAIRY, RAND_INF_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY, RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY, @@ -1270,7 +1229,49 @@ typedef enum { RAND_INF_SHADOW_TEMPLE_MQ_BEAMOS_STORM_FAIRY, RAND_INF_SHADOW_TEMPLE_MQ_PIT_STORM_FAIRY, RAND_INF_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY, + + RAND_INF_BOTW_ENTRYWAY_WEST_POT, + RAND_INF_BOTW_ENTRYWAY_EAST_POT, + RAND_INF_BOTW_SUNKEN_POT, + RAND_INF_BOTW_FAKE_WALL_SOUTH_POT, + RAND_INF_BOTW_FAKE_WALL_CENTRAL_POT, + RAND_INF_BOTW_FAKE_WALL_NORTH_POT, + RAND_INF_BOTW_3_HIDDEN_PITS_POT, + RAND_INF_BOTW_OPEN_COFFIN_HEART, + RAND_INF_BOTW_SE_COFFIN_HEART, + RAND_INF_BOTW_B3_WEST_CENTER_POT, + RAND_INF_BOTW_B3_EAST_CENTER_POT, + RAND_INF_BOTW_B3_WEST_V_N_POT, + RAND_INF_BOTW_B3_WEST_V_NW_POT, + RAND_INF_BOTW_B3_WEST_V_W_POT, + RAND_INF_BOTW_B3_WEST_V_SW_POT, + RAND_INF_BOTW_B3_WEST_V_S_POT, + RAND_INF_BOTW_B3_EAST_V_N_POT, + RAND_INF_BOTW_B3_EAST_V_NW_POT, + RAND_INF_BOTW_B3_EAST_V_W_POT, + RAND_INF_BOTW_B3_EAST_V_SW_POT, + RAND_INF_BOTW_B3_EAST_V_S_POT, + RAND_INF_BOTW_B3_SUN_FAIRY, + RAND_INF_BOTW_B3_PLATFORM_N_RUPEE, + RAND_INF_BOTW_B3_PLATFORM_NW_RUPEE, + RAND_INF_BOTW_B3_PLATFORM_NE_RUPEE, + RAND_INF_BOTW_B3_PLATFORM_W_RUPEE, + RAND_INF_BOTW_B3_PLATFORM_E_RUPEE, + RAND_INF_BOTW_MQ_CAGED_POT, + RAND_INF_BOTW_MQ_N_BURIED_HEART, + RAND_INF_BOTW_MQ_S_BURIED_HEART, + RAND_INF_BOTW_MQ_NE_COFFIN_HEART, + RAND_INF_BOTW_MQ_S_COFFIN_HEART, + RAND_INF_BOTW_MQ_WOODEN_X_ROOM_W_POT, + RAND_INF_BOTW_MQ_WOODEN_X_ROOM_C_POT, RAND_INF_BOTW_MQ_NEAR_POTS_SUN_FAIRY, + RAND_INF_BOTW_MQ_WOODEN_X_ROOM_E_POT, + RAND_INF_BOTW_MQ_UNSEEN_LEDGE_NW_POT, + RAND_INF_BOTW_MQ_UNSEEN_LEDGE_NE_POT, + RAND_INF_BOTW_MQ_UNSEEN_LEDGE_S_POT, + RAND_INF_BOTW_MQ_B3_S_HEART , + RAND_INF_BOTW_MQ_B3_NW_HEART, + RAND_INF_BOTW_MQ_B3_NE_HEART, RAND_INF_BOTW_MQ_B3_SUN_FAIRY, // If you add anything to this list, you need to update the size of randomizerInf in z64save.h to be ceil(RAND_INF_MAX / 16) From aaca1e6fd8561cda2882b2f69f3da011dd75a36b Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Mon, 13 Jan 2025 18:25:21 +0000 Subject: [PATCH 5/6] final cleanup --- .../dungeons/bottom_of_the_well.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp b/soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp index b90ce275522..59506960c5b 100644 --- a/soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp +++ b/soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp @@ -103,7 +103,7 @@ void RegionTable_Init_BottomOfTheWell() { }, { //Locations LOCATION(RC_BOTW_INNER_WEST_ROOM_GS, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)), - LOCATION(RC_BOTW_UNSEEN_LEDGE_GS, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)), + LOCATION(RC_BOTW_UNSEEN_LEDGE_GS , logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_BOOMERANG)), }, { //Exits Entrance(RR_BOTW_REQUIRES_LENS, []{return logic->SmallKeys(RR_BOTTOM_OF_THE_WELL, 3);}), @@ -243,7 +243,7 @@ void RegionTable_Init_BottomOfTheWell() { areaTable[RR_BOTW_MQ_WOODEN_X_ROOM] = Region("Bottom of the Well MQ Wooden X Room", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_BOTW_MQ_WOODEN_X_CHEST , true), + LOCATION(RC_BOTW_MQ_WOODEN_X_CHEST , true), //This location technically involves an invisible platform, but it's intended to do lensless in vanilla and is clearly signposted by pots. LOCATION(RC_BOTW_MQ_UNSEEN_LEDGE_KEY , true), //The enemies in this room are invisible and crowd around the player, being awkward to deal with blind unless you already know how. @@ -253,14 +253,14 @@ void RegionTable_Init_BottomOfTheWell() { //Also you get cheap shotted on entry sometimes. //An MQ lens trick is recommended here, and a review of this room for OHKO logic what that is added is advised. //In the meantime I assume damage taken or the easy answer (nuts) - LOCATION(RC_BOTW_MQ_UNDER_GRAVE_GS , logic->OpenedWestRoomMQBotw && (logic->TakeDamage() || logic->CanUse(RG_NUTS)) && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)), - LOCATION(RC_BOTW_MQ_WOODEN_X_ROOM_W_POT , logic->CanBreakPots()), - LOCATION(RC_BOTW_MQ_WOODEN_X_ROOM_C_POT , logic->CanBreakPots()), - LOCATION(RC_BOTW_MQ_WOODEN_X_ROOM_E_POT , logic->CanBreakPots()), + LOCATION(RC_BOTW_MQ_UNDER_GRAVE_GS , logic->OpenedWestRoomMQBotw && (logic->TakeDamage() || logic->CanUse(RG_NUTS)) && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)), + LOCATION(RC_BOTW_MQ_WOODEN_X_ROOM_W_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_MQ_WOODEN_X_ROOM_C_POT, logic->CanBreakPots()), + LOCATION(RC_BOTW_MQ_WOODEN_X_ROOM_E_POT, logic->CanBreakPots()), LOCATION(RC_BOTW_MQ_UNSEEN_LEDGE_NW_POT, logic->CanBreakPots()), LOCATION(RC_BOTW_MQ_UNSEEN_LEDGE_NE_POT, logic->CanBreakPots()), LOCATION(RC_BOTW_MQ_UNSEEN_LEDGE_S_POT , logic->CanBreakPots()), - LOCATION(RC_BOTW_MQ_NEAR_POTS_SUN_FAIRY , logic->CanUse(RG_SUNS_SONG)), + LOCATION(RC_BOTW_MQ_NEAR_POTS_SUN_FAIRY, logic->CanUse(RG_SUNS_SONG)), }, { //Exits //If a relevant trick causes you to be able to warp into here without going through LOBBY, a new eventAccess will be needed for lowering the gates with ZL From 3bb7d2e989245fd87935bb6bdde4b2983eede148 Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Wed, 15 Jan 2025 20:28:31 +0000 Subject: [PATCH 6/6] add HW renames --- .../Enhancements/debugger/debugSaveEditor.h | 11 ++++---- .../hint_list/hint_list_exclude_overworld.cpp | 12 +++++--- .../randomizer/3drando/item_pool.cpp | 2 +- soh/soh/Enhancements/randomizer/entrance.cpp | 8 +++--- .../Enhancements/randomizer/hook_handlers.cpp | 10 +++---- .../location_access/gerudo_fortress.cpp | 2 +- .../overworld/desert_colossus.cpp | 2 +- .../overworld/haunted_wasteland.cpp | 28 +++++++++---------- .../Enhancements/randomizer/location_list.cpp | 14 +++++----- .../Enhancements/randomizer/randomizer.cpp | 12 ++++---- .../Enhancements/randomizer/randomizerTypes.h | 21 ++++++++------ .../Enhancements/randomizer/randomizer_inf.h | 11 ++++---- soh/soh/OTRGlobals.cpp | 6 ++-- 13 files changed, 75 insertions(+), 64 deletions(-) diff --git a/soh/soh/Enhancements/debugger/debugSaveEditor.h b/soh/soh/Enhancements/debugger/debugSaveEditor.h index 818c3d542c8..d709fd058e1 100644 --- a/soh/soh/Enhancements/debugger/debugSaveEditor.h +++ b/soh/soh/Enhancements/debugger/debugSaveEditor.h @@ -475,7 +475,6 @@ const std::vector flagTables = { { RAND_INF_SHOP_ITEMS_MARKET_BOMBCHU_SHOP_ITEM_7, "SHOP_ITEMS_MARKET_BOMBCHU_SHOP_ITEM_7" }, { RAND_INF_SHOP_ITEMS_MARKET_BOMBCHU_SHOP_ITEM_8, "SHOP_ITEMS_MARKET_BOMBCHU_SHOP_ITEM_8" }, - { RAND_INF_MERCHANTS_CARPET_SALESMAN, "RAND_INF_MERCHANTS_CARPET_SALESMAN" }, { RAND_INF_MERCHANTS_MEDIGORON, "RAND_INF_MERCHANTS_MEDIGORON" }, { RAND_INF_MERCHANTS_GRANNYS_SHOP, "RAND_INF_MERCHANTS_GRANNY_SHOP"}, { RAND_INF_MERCHANTS_MAGIC_BEAN_SALESMAN, "RAND_INF_MERCHANTS_MAGIC_BEAN_SALESMAN"}, @@ -532,10 +531,6 @@ const std::vector flagTables = { { RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_2, "RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_2" }, { RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_3, "RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_3" }, { RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_4, "RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_4" }, - { RAND_INF_WASTELAND_NEAR_GS_POT_1, "RAND_INF_WASTELAND_NEAR_GS_POT_1" }, - { RAND_INF_WASTELAND_NEAR_GS_POT_2, "RAND_INF_WASTELAND_NEAR_GS_POT_2" }, - { RAND_INF_WASTELAND_NEAR_GS_POT_3, "RAND_INF_WASTELAND_NEAR_GS_POT_3" }, - { RAND_INF_WASTELAND_NEAR_GS_POT_4, "RAND_INF_WASTELAND_NEAR_GS_POT_4" }, { RAND_INF_MK_GUARD_HOUSE_CHILD_POT_1, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_1" }, { RAND_INF_MK_GUARD_HOUSE_CHILD_POT_2, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_2" }, { RAND_INF_MK_GUARD_HOUSE_CHILD_POT_3, "RAND_INF_MK_GUARD_HOUSE_CHILD_POT_3" }, @@ -1517,6 +1512,12 @@ const std::vector flagTables = { { RAND_INF_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY, "RAND_INF_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY" }, + { RAND_INF_WASTELAND_CARPET_MERCHANT , "RAND_INF_WASTELAND_CARPET_MERCHANT" }, + { RAND_INF_WASTELAND_NW_POT , "RAND_INF_WASTELAND_NW_POT" }, + { RAND_INF_WASTELAND_NE_POT , "RAND_INF_WASTELAND_NE_POT" }, + { RAND_INF_WASTELAND_SW_POT , "RAND_INF_WASTELAND_SW_POT" }, + { RAND_INF_WASTELAND_SE_POT , "RAND_INF_WASTELAND_SE_POT" }, + { RAND_INF_BOTW_ENTRYWAY_WEST_POT , "RAND_INF_BOTW_ENTRYWAY_WEST_POT" }, { RAND_INF_BOTW_ENTRYWAY_EAST_POT , "RAND_INF_BOTW_ENTRYWAY_EAST_POT" }, { RAND_INF_BOTW_SUNKEN_POT , "RAND_INF_BOTW_SUNKEN_POT" }, diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_overworld.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_overworld.cpp index 7837f2cb635..c1ac86da886 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_overworld.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_overworld.cpp @@ -516,7 +516,7 @@ void StaticData::HintTable_Init_Exclude_Overworld() { /*french*/ "Selon moi, #secourir les charpentiers capturés# assure #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, #rescatar los apresados carpinteros# se premia con #[[1]]#. - hintTextTable[RHT_WASTELAND_BOMBCHU_SALESMAN] = HintText(CustomMessage("They say that a #carpet guru# sells #[[1]]#.", + hintTextTable[RHT_WASTELAND_CARPET_MERCHANT] = HintText(CustomMessage("They say that a #carpet guru# sells #[[1]]#.", /*german*/ "Man erzählt sich, daß ein #Teppichguru# #[[1]]# verkaufe.", /*french*/ "Selon moi, #un marchand du désert# vend #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, el #genio de una alfombra# vende #[[1]]#. @@ -1499,9 +1499,13 @@ void StaticData::HintTable_Init_Exclude_Overworld() { /*german*/ "", /*french*/ "Selon moi, une #jarre dans la Forteresse Gerudo# contient #[[1]]#.", {QM_RED, QM_GREEN})); - hintTextTable[RHT_POT_WASTELAND] = HintText(CustomMessage("They say that a #pot in Haunted Wasteland# contains #[[1]]#.", - /*german*/ "", - /*french*/ "Selon moi, une #jarre dans le Désert Hanté# contient #[[1]]#.", {QM_RED, QM_GREEN})); + hintTextTable[RHT_WASTELAND_NW_POT] = HintText(CustomMessage("They say that the #northwest pot under the haunted dais# contains #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_WASTELAND_NE_POT] = HintText(CustomMessage("They say that the #northeast pot under the haunted dais# contains #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_WASTELAND_SW_POT] = HintText(CustomMessage("They say that the #southwest pot under the haunted dais# contains #[[1]]#.", {QM_RED, QM_GREEN})); + + hintTextTable[RHT_WASTELAND_SE_POT] = HintText(CustomMessage("They say that the #southeast pot under the haunted dais# contains #[[1]]#.", {QM_RED, QM_GREEN})); hintTextTable[RHT_POT_MARKET] = HintText(CustomMessage("They say that a #pot in Market# contains #[[1]]#.", /*german*/ "", diff --git a/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp b/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp index 9dc6aa1fff3..a87130cde60 100644 --- a/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/item_pool.cpp @@ -1006,7 +1006,7 @@ void GenerateItemPool() { } else { ctx->PlaceItemInLocation(RC_KAK_GRANNYS_SHOP, RG_BLUE_POTION_REFILL, false, true); ctx->PlaceItemInLocation(RC_GC_MEDIGORON, RG_GIANTS_KNIFE, false, true); - ctx->PlaceItemInLocation(RC_WASTELAND_BOMBCHU_SALESMAN, RG_BOMBCHU_10, false, true); + ctx->PlaceItemInLocation(RC_WASTELAND_CARPET_MERCHANT, RG_BOMBCHU_10, false, true); } if (ctx->GetOption(RSK_SHUFFLE_FROG_SONG_RUPEES)) { diff --git a/soh/soh/Enhancements/randomizer/entrance.cpp b/soh/soh/Enhancements/randomizer/entrance.cpp index 29c9ff8d264..fbe3c68e2e9 100644 --- a/soh/soh/Enhancements/randomizer/entrance.cpp +++ b/soh/soh/Enhancements/randomizer/entrance.cpp @@ -1081,10 +1081,10 @@ int EntranceShuffler::ShuffleAllEntrances() { { EntranceType::Overworld, RR_ZORAS_DOMAIN, RR_LAKE_HYLIA, ENTR_LAKE_HYLIA_UNDERWATER_SHORTCUT } }, { { EntranceType::Overworld, RR_GV_FORTRESS_SIDE, RR_GERUDO_FORTRESS, ENTR_GERUDOS_FORTRESS_EAST_EXIT }, { EntranceType::Overworld, RR_GERUDO_FORTRESS, RR_GV_FORTRESS_SIDE, ENTR_GERUDO_VALLEY_WEST_EXIT } }, - { { EntranceType::Overworld, RR_GF_OUTSIDE_GATE, RR_WASTELAND_NEAR_FORTRESS, ENTR_HAUNTED_WASTELAND_EAST_EXIT }, - { EntranceType::Overworld, RR_WASTELAND_NEAR_FORTRESS, RR_GF_OUTSIDE_GATE, ENTR_GERUDOS_FORTRESS_GATE_EXIT } }, - { { EntranceType::Overworld, RR_WASTELAND_NEAR_COLOSSUS, RR_DESERT_COLOSSUS, ENTR_DESERT_COLOSSUS_EAST_EXIT }, - { EntranceType::Overworld, RR_DESERT_COLOSSUS, RR_WASTELAND_NEAR_COLOSSUS, ENTR_HAUNTED_WASTELAND_WEST_EXIT } }, + { { EntranceType::Overworld, RR_GF_OUTSIDE_GATE, RR_WASTELAND_SOUTH_OF_RIVER, ENTR_HAUNTED_WASTELAND_EAST_EXIT }, + { EntranceType::Overworld, RR_WASTELAND_SOUTH_OF_RIVER, RR_GF_OUTSIDE_GATE, ENTR_GERUDOS_FORTRESS_GATE_EXIT } }, + { { EntranceType::Overworld, RR_WASTELAND_NORTH, RR_DESERT_COLOSSUS, ENTR_DESERT_COLOSSUS_EAST_EXIT }, + { EntranceType::Overworld, RR_DESERT_COLOSSUS, RR_WASTELAND_NORTH, ENTR_HAUNTED_WASTELAND_WEST_EXIT } }, { { EntranceType::Overworld, RR_MARKET_ENTRANCE, RR_THE_MARKET, ENTR_MARKET_SOUTH_EXIT }, { EntranceType::Overworld, RR_THE_MARKET, RR_MARKET_ENTRANCE, ENTR_MARKET_ENTRANCE_NORTH_EXIT } }, { { EntranceType::Overworld, RR_THE_MARKET, RR_CASTLE_GROUNDS, ENTR_CASTLE_GROUNDS_SOUTH_EXIT }, diff --git a/soh/soh/Enhancements/randomizer/hook_handlers.cpp b/soh/soh/Enhancements/randomizer/hook_handlers.cpp index e720d33dab0..213707e8647 100644 --- a/soh/soh/Enhancements/randomizer/hook_handlers.cpp +++ b/soh/soh/Enhancements/randomizer/hook_handlers.cpp @@ -545,7 +545,7 @@ u8 EnJs_RandoCanGetCarpetMerchantItem() { return (RAND_GET_OPTION(RSK_SHUFFLE_MERCHANTS) == RO_SHUFFLE_MERCHANTS_ALL || RAND_GET_OPTION(RSK_SHUFFLE_MERCHANTS) == RO_SHUFFLE_MERCHANTS_ALL_BUT_BEANS) && // If the rando check has already been awarded, use vanilla behavior. - !Flags_GetRandomizerInf(RAND_INF_MERCHANTS_CARPET_SALESMAN); + !Flags_GetRandomizerInf(RAND_INF_WASTELAND_CARPET_MERCHANT); } u8 EnGm_RandoCanGetMedigoronItem() { @@ -736,7 +736,7 @@ void RandomizerOnDialogMessageHandler() { break; case TEXT_CARPET_SALESMAN_1: if (revealMerchant && nonBeanMerchants) { - reveal = RC_WASTELAND_BOMBCHU_SALESMAN; + reveal = RC_WASTELAND_CARPET_MERCHANT; } break; case TEXT_BIGGORON_BETTER_AT_SMITHING: @@ -1101,19 +1101,19 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_l } case VB_CHECK_RANDO_PRICE_OF_CARPET_SALESMAN: { if (EnJs_RandoCanGetCarpetMerchantItem()){ - *should = gSaveContext.rupees < OTRGlobals::Instance->gRandoContext->GetItemLocation(RC_WASTELAND_BOMBCHU_SALESMAN)->GetPrice(); + *should = gSaveContext.rupees < OTRGlobals::Instance->gRandoContext->GetItemLocation(RC_WASTELAND_CARPET_MERCHANT)->GetPrice(); } break; } case VB_GIVE_ITEM_FROM_CARPET_SALESMAN: { EnJs* enJs = va_arg(args, EnJs*); if (EnJs_RandoCanGetCarpetMerchantItem()){ - Rupees_ChangeBy(OTRGlobals::Instance->gRandoContext->GetItemLocation(RC_WASTELAND_BOMBCHU_SALESMAN)->GetPrice() * -1); + Rupees_ChangeBy(OTRGlobals::Instance->gRandoContext->GetItemLocation(RC_WASTELAND_CARPET_MERCHANT)->GetPrice() * -1); enJs->actor.parent = NULL; enJs->actor.textId = TEXT_CARPET_SALESMAN_ARMS_DEALER; enJs->actionFunc = (EnJsActionFunc)func_80A890C0; enJs->actor.flags |= ACTOR_FLAG_WILL_TALK; - Flags_SetRandomizerInf(RAND_INF_MERCHANTS_CARPET_SALESMAN); + Flags_SetRandomizerInf(RAND_INF_WASTELAND_CARPET_MERCHANT); *should = true; } break; diff --git a/soh/soh/Enhancements/randomizer/location_access/gerudo_fortress.cpp b/soh/soh/Enhancements/randomizer/location_access/gerudo_fortress.cpp index 6af0551e078..66b586c91d0 100644 --- a/soh/soh/Enhancements/randomizer/location_access/gerudo_fortress.cpp +++ b/soh/soh/Enhancements/randomizer/location_access/gerudo_fortress.cpp @@ -58,7 +58,7 @@ void RegionTable_Init_GerudoFortress() { }, {}, { //Exits Entrance(RR_GERUDO_FORTRESS, []{return (logic->IsAdult && (logic->CanUse(RG_HOOKSHOT) || !ctx->GetOption(RSK_SHUFFLE_OVERWORLD_ENTRANCES))) || logic->GF_GateOpen;}), - Entrance(RR_WASTELAND_NEAR_FORTRESS, []{return true;}), + Entrance(RR_WASTELAND_SOUTH_OF_RIVER, []{return true;}), }); areaTable[RR_GF_STORMS_GROTTO] = Region("GF Storms Grotto", "GF Storms Grotto", {}, NO_DAY_NIGHT_CYCLE, { diff --git a/soh/soh/Enhancements/randomizer/location_access/overworld/desert_colossus.cpp b/soh/soh/Enhancements/randomizer/location_access/overworld/desert_colossus.cpp index 0ef2bbdfc7c..f0da58585d3 100644 --- a/soh/soh/Enhancements/randomizer/location_access/overworld/desert_colossus.cpp +++ b/soh/soh/Enhancements/randomizer/location_access/overworld/desert_colossus.cpp @@ -26,7 +26,7 @@ void RegionTable_Init_DesertColossus() { Entrance(RR_DESERT_COLOSSUS_OASIS, []{return logic->CanUse(RG_SONG_OF_STORMS) && (logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_IRON_BOOTS));}), Entrance(RR_COLOSSUS_GREAT_FAIRY_FOUNTAIN, []{return logic->HasExplosives();}), Entrance(RR_SPIRIT_TEMPLE_ENTRYWAY, []{return true;}), - Entrance(RR_WASTELAND_NEAR_COLOSSUS, []{return true;}), + Entrance(RR_WASTELAND_NORTH, []{return true;}), Entrance(RR_COLOSSUS_GROTTO, []{return logic->CanUse(RG_SILVER_GAUNTLETS);}), }); diff --git a/soh/soh/Enhancements/randomizer/location_access/overworld/haunted_wasteland.cpp b/soh/soh/Enhancements/randomizer/location_access/overworld/haunted_wasteland.cpp index 60e616f76a7..cac4f4ca946 100644 --- a/soh/soh/Enhancements/randomizer/location_access/overworld/haunted_wasteland.cpp +++ b/soh/soh/Enhancements/randomizer/location_access/overworld/haunted_wasteland.cpp @@ -4,7 +4,7 @@ using namespace Rando; void RegionTable_Init_HauntedWasteland() { - areaTable[RR_WASTELAND_NEAR_FORTRESS] = Region("Wasteland Near Fortress", "Haunted Wasteland", {RA_HAUNTED_WASTELAND}, NO_DAY_NIGHT_CYCLE, {}, {}, { + areaTable[RR_WASTELAND_SOUTH_OF_RIVER] = Region("Wasteland South Of River", "Haunted Wasteland", {RA_HAUNTED_WASTELAND}, NO_DAY_NIGHT_CYCLE, {}, {}, { //Exits Entrance(RR_GF_OUTSIDE_GATE, []{return true;}), Entrance(RR_HAUNTED_WASTELAND, []{return logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_LONGSHOT) || ctx->GetTrickOption(RT_HW_CROSSING);}), @@ -12,25 +12,25 @@ void RegionTable_Init_HauntedWasteland() { areaTable[RR_HAUNTED_WASTELAND] = Region("Haunted Wasteland", "Haunted Wasteland", {RA_HAUNTED_WASTELAND}, NO_DAY_NIGHT_CYCLE, { //Events - EventAccess(&logic->FairyPot, []{return true;}), - EventAccess(&logic->NutPot, []{return true;}), - EventAccess(&logic->CarpetMerchant, []{return logic->HasItem(RG_ADULT_WALLET) && CanBuyAnother(RC_WASTELAND_BOMBCHU_SALESMAN) && (logic->CanJumpslashExceptHammer() || logic->CanUse(RG_HOVER_BOOTS));}), + EventAccess(&logic->FairyPot , []{return true;}), + EventAccess(&logic->NutPot , []{return true;}), + EventAccess(&logic->CarpetMerchant, []{return logic->HasItem(RG_ADULT_WALLET) && CanBuyAnother(RC_WASTELAND_CARPET_MERCHANT) && (logic->CanJumpslash() || logic->CanUse(RG_HOVER_BOOTS));}), }, { //Locations - LOCATION(RC_WASTELAND_CHEST, logic->HasFireSource()), - LOCATION(RC_WASTELAND_BOMBCHU_SALESMAN, logic->CanJumpslashExceptHammer() || logic->CanUse(RG_HOVER_BOOTS)), - LOCATION(RC_WASTELAND_GS, logic->HookshotOrBoomerang()), - LOCATION(RC_WASTELAND_NEAR_GS_POT_1, logic->CanBreakPots()), - LOCATION(RC_WASTELAND_NEAR_GS_POT_2, logic->CanBreakPots()), - LOCATION(RC_WASTELAND_NEAR_GS_POT_3, logic->CanBreakPots()), - LOCATION(RC_WASTELAND_NEAR_GS_POT_4, logic->CanBreakPots()), + LOCATION(RC_WASTELAND_CHEST , logic->HasFireSource()), + LOCATION(RC_WASTELAND_CARPET_MERCHANT, logic->CanJumpslash() || logic->CanUse(RG_HOVER_BOOTS)), + LOCATION(RC_WASTELAND_GS , logic->HookshotOrBoomerang()), + LOCATION(RC_WASTELAND_NW_POT , logic->CanBreakPots()), + LOCATION(RC_WASTELAND_NE_POT , logic->CanBreakPots()), + LOCATION(RC_WASTELAND_SW_POT , logic->CanBreakPots()), + LOCATION(RC_WASTELAND_SE_POT , logic->CanBreakPots()), }, { //Exits - Entrance(RR_WASTELAND_NEAR_COLOSSUS, []{return ctx->GetTrickOption(RT_LENS_HW) || logic->CanUse(RG_LENS_OF_TRUTH);}), - Entrance(RR_WASTELAND_NEAR_FORTRESS, []{return logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_LONGSHOT) || ctx->GetTrickOption(RT_HW_CROSSING);}), + Entrance(RR_WASTELAND_NORTH , []{return ctx->GetTrickOption(RT_LENS_HW) || logic->CanUse(RG_LENS_OF_TRUTH);}), + Entrance(RR_WASTELAND_SOUTH_OF_RIVER, []{return logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_LONGSHOT) || ctx->GetTrickOption(RT_HW_CROSSING);}), }); - areaTable[RR_WASTELAND_NEAR_COLOSSUS] = Region("Wasteland Near Colossus", "Haunted Wasteland", {RA_HAUNTED_WASTELAND}, NO_DAY_NIGHT_CYCLE, {}, {}, { + areaTable[RR_WASTELAND_NORTH] = Region("Wasteland North", "Haunted Wasteland", {RA_HAUNTED_WASTELAND}, NO_DAY_NIGHT_CYCLE, {}, {}, { //Exits Entrance(RR_DESERT_COLOSSUS, []{return true;}), Entrance(RR_HAUNTED_WASTELAND, []{return ctx->GetTrickOption(RT_HW_REVERSE) || false;}), diff --git a/soh/soh/Enhancements/randomizer/location_list.cpp b/soh/soh/Enhancements/randomizer/location_list.cpp index 0c32e1cb92a..3e21ddc4581 100644 --- a/soh/soh/Enhancements/randomizer/location_list.cpp +++ b/soh/soh/Enhancements/randomizer/location_list.cpp @@ -210,8 +210,13 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_GF_SOUTH_F1_CARPENTER] = Location::Collectable(RC_GF_SOUTH_F1_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3601, 0x0E, "GF South F1 Carpenter", RHT_GF_SOUTH_F1_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, true); locationTable[RC_GF_SOUTH_F2_CARPENTER] = Location::Collectable(RC_GF_SOUTH_F2_CARPENTER, RCQUEST_BOTH, RCTYPE_GF_KEY, ACTOR_EN_ITEM00, SCENE_THIEVES_HIDEOUT, 3857, 0x0F, "GF South F2 Carpenter", RHT_GF_SOUTH_F2_CARPENTER, RG_GERUDO_FORTRESS_SMALL_KEY, true); // Haunted Wasteland - locationTable[RC_WASTELAND_CHEST] = Location::Chest(RC_WASTELAND_CHEST, RCQUEST_BOTH, RCTYPE_STANDARD, RCAREA_WASTELAND, ACTOR_EN_BOX, SCENE_HAUNTED_WASTELAND, -30048, 0x00, "Chest", RHT_WASTELAND_CHEST, RG_PURPLE_RUPEE); - locationTable[RC_WASTELAND_BOMBCHU_SALESMAN] = Location::Base(RC_WASTELAND_BOMBCHU_SALESMAN, RCQUEST_BOTH, RCTYPE_MERCHANT, RCAREA_WASTELAND, ACTOR_ID_MAX, SCENE_HAUNTED_WASTELAND, 0x00, "Carpet Salesman", RHT_WASTELAND_BOMBCHU_SALESMAN, RG_BUY_BOMBCHUS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MERCHANTS_CARPET_SALESMAN), false, 200); + locationTable[RC_WASTELAND_CHEST] = Location::Chest(RC_WASTELAND_CHEST, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_EN_BOX, SCENE_HAUNTED_WASTELAND, -30048, 0x00, "Chest" , RHT_WASTELAND_CHEST , RG_PURPLE_RUPEE); + locationTable[RC_WASTELAND_CARPET_MERCHANT] = Location::Base(RC_WASTELAND_CARPET_MERCHANT, RCQUEST_BOTH, RCTYPE_MERCHANT, ACTOR_ID_MAX, SCENE_HAUNTED_WASTELAND, 0x00, "Carpet Merchant", RHT_WASTELAND_CARPET_MERCHANT, RG_BUY_BOMBCHUS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_CARPET_MERCHANT), false, 200); + locationTable[RC_WASTELAND_GS] = Location::GSToken(RC_WASTELAND_GS, RCQUEST_BOTH, SCENE_HAUNTED_WASTELAND, 13570, 0x02, "GS" , RHT_WASTELAND_GS , 0x15); + locationTable[RC_WASTELAND_NW_POT] = Location::Pot(RC_WASTELAND_NW_POT, RCQUEST_BOTH, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(485, -2463), "Northwest Pot" , RHT_WASTELAND_NW_POT , RG_GREEN_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_NW_POT)); + locationTable[RC_WASTELAND_NE_POT] = Location::Pot(RC_WASTELAND_NE_POT, RCQUEST_BOTH, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(801, -2460), "Northeast Pot" , RHT_WASTELAND_NE_POT , RG_RECOVERY_HEART , SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_NE_POT)); + locationTable[RC_WASTELAND_SW_POT] = Location::Pot(RC_WASTELAND_SW_POT, RCQUEST_BOTH, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(488, -2424), "Southwest Pot" , RHT_WASTELAND_SW_POT , RG_BLUE_RUPEE , SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_SW_POT)); + locationTable[RC_WASTELAND_SE_POT] = Location::Pot(RC_WASTELAND_SE_POT, RCQUEST_BOTH, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(806, -2426), "Southeast Pot" , RHT_WASTELAND_SE_POT , RG_DEKU_NUTS_5 , SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_SE_POT)); // Desert Colossus locationTable[RC_COLOSSUS_FREESTANDING_POH] = Location::Collectable(RC_COLOSSUS_FREESTANDING_POH, RCQUEST_BOTH, RCTYPE_STANDARD, ACTOR_EN_ITEM00, SCENE_DESERT_COLOSSUS, 3334, 0x0D, "Freestanding PoH", RHT_COLOSSUS_FREESTANDING_POH, RG_PIECE_OF_HEART, true); locationTable[RC_COLOSSUS_DEKU_SCRUB_GROTTO_REAR] = Location::Base(RC_COLOSSUS_DEKU_SCRUB_GROTTO_REAR, RCQUEST_BOTH, RCTYPE_SCRUB, RCAREA_DESERT_COLOSSUS, ACTOR_EN_DNS, SCENE_GROTTOS, TWO_ACTOR_PARAMS(0x07, 0xFD), "Deku Scrub Grotto Rear", RHT_COLOSSUS_DEKU_SCRUB_GROTTO_REAR, RG_BUY_RED_POTION_40, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SCRUBS_PURCHASED_COLOSSUS_DEKU_SCRUB_GROTTO_REAR), false, 40); @@ -823,7 +828,6 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_GF_GS_ARCHERY_RANGE] = Location::GSToken(RC_GF_GS_ARCHERY_RANGE, RCQUEST_BOTH, SCENE_GERUDOS_FORTRESS, 21505, 0x01, "GS Archery Range", RHT_GF_GS_ARCHERY_RANGE, 0x14); locationTable[RC_GF_GS_TOP_FLOOR] = Location::GSToken(RC_GF_GS_TOP_FLOOR, RCQUEST_BOTH, SCENE_GERUDOS_FORTRESS, 21506, 0x02, "GS Top Floor", RHT_GF_GS_TOP_FLOOR, 0x14); // Wasteland & Desert Colossus - locationTable[RC_WASTELAND_GS] = Location::GSToken(RC_WASTELAND_GS, RCQUEST_BOTH, SCENE_HAUNTED_WASTELAND, 13570, 0x02, "GS", RHT_WASTELAND_GS, 0x15); locationTable[RC_COLOSSUS_GS_BEAN_PATCH] = Location::GSToken(RC_COLOSSUS_GS_BEAN_PATCH, RCQUEST_BOTH, SCENE_DESERT_COLOSSUS, 29953, 0x01, "GS Bean Patch", RHT_COLOSSUS_GS_BEAN_PATCH, 0x15); locationTable[RC_COLOSSUS_GS_HILL] = Location::GSToken(RC_COLOSSUS_GS_HILL, RCQUEST_BOTH, SCENE_DESERT_COLOSSUS, 21764, 0x04, "GS Hill", RHT_COLOSSUS_GS_HILL, 0x15); locationTable[RC_COLOSSUS_GS_TREE] = Location::GSToken(RC_COLOSSUS_GS_TREE, RCQUEST_BOTH, SCENE_DESERT_COLOSSUS, 21768, 0x08, "GS Tree", RHT_COLOSSUS_GS_TREE, 0x15); @@ -1123,10 +1127,6 @@ void Rando::StaticData::InitLocationTable() { // locationTable[RC_GF_SOUTH_F1_CARPENTER_CELL_POT_2] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(61, 549), "South F1 Carpenter Cell Pot 2", "GF South F1 Carpenter Cell Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_2)); locationTable[RC_GF_SOUTH_F1_CARPENTER_CELL_POT_3] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_3, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(215, 549), "South F1 Carpenter Cell Pot 3", "GF South F1 Carpenter Cell Pot 3", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_3)); locationTable[RC_GF_SOUTH_F1_CARPENTER_CELL_POT_4] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_4, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(254, 529), "South F1 Carpenter Cell Pot 4", "GF South F1 Carpenter Cell Pot 4", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_4)); - locationTable[RC_WASTELAND_NEAR_GS_POT_1] = Location::Pot(RC_WASTELAND_NEAR_GS_POT_1, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(488, -2424), "Near GS Pot 1", "Wasteland Near GS Pot 1", RHT_POT_GERUDO_FORTRESS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_NEAR_GS_POT_1)); - locationTable[RC_WASTELAND_NEAR_GS_POT_2] = Location::Pot(RC_WASTELAND_NEAR_GS_POT_2, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(485, -2463), "Near GS Pot 2", "Wasteland Near GS Pot 2", RHT_POT_GERUDO_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_NEAR_GS_POT_2)); - locationTable[RC_WASTELAND_NEAR_GS_POT_3] = Location::Pot(RC_WASTELAND_NEAR_GS_POT_3, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(806, -2426), "Near GS Pot 3", "Wasteland Near GS Pot 3", RHT_POT_GERUDO_FORTRESS, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_NEAR_GS_POT_3)); - locationTable[RC_WASTELAND_NEAR_GS_POT_4] = Location::Pot(RC_WASTELAND_NEAR_GS_POT_4, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(801, -2460), "Near GS Pot 4", "Wasteland Near GS Pot 4", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_NEAR_GS_POT_4)); locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_1] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_1, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-60, 27), "Guard House Child Pot 1", "MK Guard House Child Pot 1", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_1)); locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_2] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_2, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-89, 28), "Guard House Child Pot 2", "MK Guard House Child Pot 2", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_2)); locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_3] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_3, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-110, 6), "Guard House Child Pot 3", "MK Guard House Child Pot 3", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_3)); diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index 005a340806b..e3c4d2eb0d2 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -916,7 +916,6 @@ std::map rcToRandomizerInf = { { RC_TOT_MASTER_SWORD, RAND_INF_TOT_MASTER_SWORD }, { RC_GC_MEDIGORON, RAND_INF_MERCHANTS_MEDIGORON }, { RC_KAK_GRANNYS_SHOP, RAND_INF_MERCHANTS_GRANNYS_SHOP }, - { RC_WASTELAND_BOMBCHU_SALESMAN, RAND_INF_MERCHANTS_CARPET_SALESMAN }, { RC_ZR_MAGIC_BEAN_SALESMAN, RAND_INF_MERCHANTS_MAGIC_BEAN_SALESMAN }, { RC_LW_TRADE_COJIRO, RAND_INF_ADULT_TRADES_LW_TRADE_COJIRO }, { RC_GV_TRADE_SAW, RAND_INF_ADULT_TRADES_GV_TRADE_SAW }, @@ -1028,10 +1027,13 @@ std::map rcToRandomizerInf = { { RC_GF_SOUTH_F1_CARPENTER_CELL_POT_2, RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_2 }, { RC_GF_SOUTH_F1_CARPENTER_CELL_POT_3, RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_3 }, { RC_GF_SOUTH_F1_CARPENTER_CELL_POT_4, RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_4 }, - { RC_WASTELAND_NEAR_GS_POT_1, RAND_INF_WASTELAND_NEAR_GS_POT_1 }, - { RC_WASTELAND_NEAR_GS_POT_2, RAND_INF_WASTELAND_NEAR_GS_POT_2 }, - { RC_WASTELAND_NEAR_GS_POT_3, RAND_INF_WASTELAND_NEAR_GS_POT_3 }, - { RC_WASTELAND_NEAR_GS_POT_4, RAND_INF_WASTELAND_NEAR_GS_POT_4 }, + + { RC_WASTELAND_CARPET_MERCHANT , RAND_INF_WASTELAND_CARPET_MERCHANT }, + { RC_WASTELAND_SW_POT , RAND_INF_WASTELAND_SW_POT }, + { RC_WASTELAND_NW_POT , RAND_INF_WASTELAND_NW_POT }, + { RC_WASTELAND_SE_POT , RAND_INF_WASTELAND_SE_POT }, + { RC_WASTELAND_NE_POT , RAND_INF_WASTELAND_NE_POT }, + { RC_MK_GUARD_HOUSE_CHILD_POT_1, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_1 }, { RC_MK_GUARD_HOUSE_CHILD_POT_2, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_2 }, { RC_MK_GUARD_HOUSE_CHILD_POT_3, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_3 }, diff --git a/soh/soh/Enhancements/randomizer/randomizerTypes.h b/soh/soh/Enhancements/randomizer/randomizerTypes.h index 9e6f9b123d6..11f69292d0e 100644 --- a/soh/soh/Enhancements/randomizer/randomizerTypes.h +++ b/soh/soh/Enhancements/randomizer/randomizerTypes.h @@ -383,9 +383,9 @@ typedef enum { RR_GERUDO_FORTRESS, RR_GF_OUTSIDE_GATE, RR_GF_STORMS_GROTTO, - RR_WASTELAND_NEAR_FORTRESS, + RR_WASTELAND_SOUTH_OF_RIVER, RR_HAUNTED_WASTELAND, - RR_WASTELAND_NEAR_COLOSSUS, + RR_WASTELAND_NORTH, RR_DESERT_COLOSSUS, RR_DESERT_COLOSSUS_OASIS, RR_DESERT_COLOSSUS_OUTSIDE_TEMPLE, @@ -1356,7 +1356,7 @@ typedef enum { RC_HIDEOUT_JAIL_GUARD_3_TORCHES, RC_HIDEOUT_JAIL_GUARD_4_TORCHES, RC_HIDEOUT_GERUDO_MEMBERSHIP_CARD, - RC_WASTELAND_BOMBCHU_SALESMAN, + RC_WASTELAND_CARPET_MERCHANT, RC_WASTELAND_CHEST, RC_WASTELAND_GS, RC_COLOSSUS_GREAT_FAIRY_REWARD, @@ -1830,10 +1830,10 @@ typedef enum { RC_GF_SOUTH_F1_CARPENTER_CELL_POT_2, RC_GF_SOUTH_F1_CARPENTER_CELL_POT_3, RC_GF_SOUTH_F1_CARPENTER_CELL_POT_4, - RC_WASTELAND_NEAR_GS_POT_1, - RC_WASTELAND_NEAR_GS_POT_2, - RC_WASTELAND_NEAR_GS_POT_3, - RC_WASTELAND_NEAR_GS_POT_4, + RC_WASTELAND_NW_POT, + RC_WASTELAND_NE_POT, + RC_WASTELAND_SW_POT, + RC_WASTELAND_SE_POT, RC_HF_COW_GROTTO_POT_1, RC_HF_COW_GROTTO_POT_2, RC_MK_GUARD_HOUSE_CHILD_POT_1, @@ -3953,7 +3953,7 @@ typedef enum { RHT_HIDEOUT_JAIL_GUARD_3_TORCHES, RHT_HIDEOUT_JAIL_GUARD_4_TORCHES, RHT_HIDEOUT_GERUDO_MEMBERSHIP_CARD, - RHT_WASTELAND_BOMBCHU_SALESMAN, + RHT_WASTELAND_CARPET_MERCHANT, RHT_WASTELAND_CHEST, RHT_WASTELAND_GS, RHT_COLOSSUS_GREAT_FAIRY_REWARD, @@ -4828,7 +4828,10 @@ typedef enum { // Shuffle Pots RHT_POT_KOKIRI_FOREST, RHT_POT_GERUDO_FORTRESS, - RHT_POT_WASTELAND, + RHT_WASTELAND_NW_POT, + RHT_WASTELAND_NE_POT, + RHT_WASTELAND_SW_POT, + RHT_WASTELAND_SE_POT, RHT_POT_MARKET, RHT_POT_KAKARIKO, RHT_POT_GRAVEYARD, diff --git a/soh/soh/Enhancements/randomizer/randomizer_inf.h b/soh/soh/Enhancements/randomizer/randomizer_inf.h index a6528ec1c2a..889bcafe5f4 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_inf.h +++ b/soh/soh/Enhancements/randomizer/randomizer_inf.h @@ -127,7 +127,6 @@ typedef enum { RAND_INF_SHOP_ITEMS_MARKET_BOMBCHU_SHOP_ITEM_7, RAND_INF_SHOP_ITEMS_MARKET_BOMBCHU_SHOP_ITEM_8, - RAND_INF_MERCHANTS_CARPET_SALESMAN, RAND_INF_MERCHANTS_MEDIGORON, RAND_INF_MERCHANTS_GRANNYS_SHOP, RAND_INF_MERCHANTS_MAGIC_BEAN_SALESMAN, @@ -223,10 +222,6 @@ typedef enum { RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_2, RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_3, RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_4, - RAND_INF_WASTELAND_NEAR_GS_POT_1, - RAND_INF_WASTELAND_NEAR_GS_POT_2, - RAND_INF_WASTELAND_NEAR_GS_POT_3, - RAND_INF_WASTELAND_NEAR_GS_POT_4, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_1, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_2, RAND_INF_MK_GUARD_HOUSE_CHILD_POT_3, @@ -1230,6 +1225,12 @@ typedef enum { RAND_INF_SHADOW_TEMPLE_MQ_PIT_STORM_FAIRY, RAND_INF_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY, + RAND_INF_WASTELAND_CARPET_MERCHANT, + RAND_INF_WASTELAND_NW_POT, + RAND_INF_WASTELAND_NE_POT, + RAND_INF_WASTELAND_SW_POT, + RAND_INF_WASTELAND_SE_POT, + RAND_INF_BOTW_ENTRYWAY_WEST_POT, RAND_INF_BOTW_ENTRYWAY_EAST_POT, RAND_INF_BOTW_SUNKEN_POT, diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index 3cf63f18ba3..efd1c577367 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -2164,11 +2164,11 @@ extern "C" int CustomMessage_RetrieveIfExists(PlayState* play) { else if (textId == TEXT_MEDIGORON && nonBeanMerchants){ messageEntry = OTRGlobals::Instance->gRandomizer->GetMerchantMessage(RC_GC_MEDIGORON, TEXT_MEDIGORON, TEXT_NONE, Randomizer_GetSettingValue(RSK_MERCHANT_TEXT_HINT) == RO_GENERIC_OFF); } - else if (textId == TEXT_CARPET_SALESMAN_1 && !Flags_GetRandomizerInf(RAND_INF_MERCHANTS_CARPET_SALESMAN) && nonBeanMerchants){ + else if (textId == TEXT_CARPET_SALESMAN_1 && !Flags_GetRandomizerInf(RAND_INF_WASTELAND_CARPET_MERCHANT) && nonBeanMerchants){ if (Randomizer_GetSettingValue(RSK_MERCHANT_TEXT_HINT)){ - messageEntry = OTRGlobals::Instance->gRandomizer->GetMerchantMessage(RC_WASTELAND_BOMBCHU_SALESMAN, TEXT_CARPET_SALESMAN_1, TEXT_NONE, Randomizer_GetSettingValue(RSK_MERCHANT_TEXT_HINT) == RO_GENERIC_OFF); + messageEntry = OTRGlobals::Instance->gRandomizer->GetMerchantMessage(RC_WASTELAND_CARPET_MERCHANT, TEXT_CARPET_SALESMAN_1, TEXT_NONE, Randomizer_GetSettingValue(RSK_MERCHANT_TEXT_HINT) == RO_GENERIC_OFF); } else { - messageEntry = OTRGlobals::Instance->gRandomizer->GetMerchantMessage(RC_WASTELAND_BOMBCHU_SALESMAN, TEXT_CARPET_SALESMAN_MYSTERIOUS, TEXT_NONE, Randomizer_GetSettingValue(RSK_MERCHANT_TEXT_HINT) == RO_GENERIC_OFF); + messageEntry = OTRGlobals::Instance->gRandomizer->GetMerchantMessage(RC_WASTELAND_CARPET_MERCHANT, TEXT_CARPET_SALESMAN_MYSTERIOUS, TEXT_NONE, Randomizer_GetSettingValue(RSK_MERCHANT_TEXT_HINT) == RO_GENERIC_OFF); } } else if (textId == TEXT_CARPET_SALESMAN_ARMS_DEALER){