diff --git a/soh/CMakeLists.txt b/soh/CMakeLists.txt index 93586ce55..fec894735 100644 --- a/soh/CMakeLists.txt +++ b/soh/CMakeLists.txt @@ -180,6 +180,7 @@ set(Header_Files__soh__Enhancements__randomizer "soh/Enhancements/randomizer/randomizer.h" "soh/Enhancements/randomizer/randomizer_item_tracker.h" "soh/Enhancements/randomizer/adult_trade_shuffle.h" + "soh/Enhancements/randomizer/randomizer_check_objects.h" ) source_group("Header Files\\soh\\Enhancements\\randomizer" FILES ${Header_Files__soh__Enhancements__randomizer}) @@ -278,6 +279,7 @@ set(Source_Files__soh__Enhancements__randomizer "soh/Enhancements/randomizer/randomizer.cpp" "soh/Enhancements/randomizer/randomizer_item_tracker.cpp" "soh/Enhancements/randomizer/adult_trade_shuffle.c" + "soh/Enhancements/randomizer/randomizer_check_objects.cpp" ) source_group("Source Files\\soh\\Enhancements\\randomizer" FILES ${Source_Files__soh__Enhancements__randomizer}) diff --git a/soh/soh/Enhancements/randomizer/3drando/item_location.cpp b/soh/soh/Enhancements/randomizer/3drando/item_location.cpp index 213b62f0a..08d191740 100644 --- a/soh/soh/Enhancements/randomizer/3drando/item_location.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/item_location.cpp @@ -7,787 +7,788 @@ #include "debug.hpp" #include "keys.hpp" #include +#include "../randomizerTypes.h" //Location definitions static std::array locationTable; void LocationTable_Init() { - locationTable[NONE] = ItemLocation::Base (0xFF, 0xFF, "Invalid Location", NONE, NONE, {}, SpoilerCollectionCheck::None()); + locationTable[NONE] = ItemLocation::Base (RC_UNKNOWN_CHECK, 0xFF, 0xFF, "Invalid Location", NONE, NONE, {}, SpoilerCollectionCheck::None()); //Kokiri Forest scene flag name hint key (hint_list.cpp) vanilla item categories collection check (if needed) collection check group - locationTable[KF_KOKIRI_SWORD_CHEST] = ItemLocation::Chest (0x55, 0x00, "KF Kokiri Sword Chest", KF_KOKIRI_SWORD_CHEST, KOKIRI_SWORD, {Category::cKokiriForest, Category::cForest,}, SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); - locationTable[KF_MIDOS_TOP_LEFT_CHEST] = ItemLocation::Chest (0x28, 0x00, "KF Mido Top Left Chest", KF_MIDOS_TOP_LEFT_CHEST, BLUE_RUPEE, {Category::cKokiriForest, Category::cForest,}, SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); - locationTable[KF_MIDOS_TOP_RIGHT_CHEST] = ItemLocation::Chest (0x28, 0x01, "KF Mido Top Right Chest", KF_MIDOS_TOP_RIGHT_CHEST, BLUE_RUPEE, {Category::cKokiriForest, Category::cForest,}, SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); - locationTable[KF_MIDOS_BOTTOM_LEFT_CHEST] = ItemLocation::Chest (0x28, 0x02, "KF Mido Bottom Left Chest", KF_MIDOS_BOTTOM_LEFT_CHEST, GREEN_RUPEE, {Category::cKokiriForest, Category::cForest,}, SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); - locationTable[KF_MIDOS_BOTTOM_RIGHT_CHEST] = ItemLocation::Chest (0x28, 0x03, "KF Mido Bottom Right Chest", KF_MIDOS_BOTTOM_RIGHT_CHEST, RECOVERY_HEART, {Category::cKokiriForest, Category::cForest,}, SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); - locationTable[KF_STORMS_GROTTO_CHEST] = ItemLocation::Chest (0x3E, 0x0C, "KF Storms Grotto Chest", KF_STORMS_GROTTO_CHEST, RED_RUPEE, {Category::cKokiriForest, Category::cForest, Category::cGrotto}, SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); + locationTable[KF_KOKIRI_SWORD_CHEST] = ItemLocation::Chest (RC_KF_KOKIRI_SWORD_CHEST, 0x55, 0x00, "KF Kokiri Sword Chest", KF_KOKIRI_SWORD_CHEST, KOKIRI_SWORD, {Category::cKokiriForest, Category::cForest,}, SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); + locationTable[KF_MIDOS_TOP_LEFT_CHEST] = ItemLocation::Chest (RC_KF_MIDOS_TOP_LEFT_CHEST, 0x28, 0x00, "KF Mido Top Left Chest", KF_MIDOS_TOP_LEFT_CHEST, BLUE_RUPEE, {Category::cKokiriForest, Category::cForest,}, SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); + locationTable[KF_MIDOS_TOP_RIGHT_CHEST] = ItemLocation::Chest (RC_KF_MIDOS_TOP_RIGHT_CHEST, 0x28, 0x01, "KF Mido Top Right Chest", KF_MIDOS_TOP_RIGHT_CHEST, BLUE_RUPEE, {Category::cKokiriForest, Category::cForest,}, SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); + locationTable[KF_MIDOS_BOTTOM_LEFT_CHEST] = ItemLocation::Chest (RC_KF_MIDOS_BOTTOM_LEFT_CHEST, 0x28, 0x02, "KF Mido Bottom Left Chest", KF_MIDOS_BOTTOM_LEFT_CHEST, GREEN_RUPEE, {Category::cKokiriForest, Category::cForest,}, SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); + locationTable[KF_MIDOS_BOTTOM_RIGHT_CHEST] = ItemLocation::Chest (RC_KF_MIDOS_BOTTOM_RIGHT_CHEST, 0x28, 0x03, "KF Mido Bottom Right Chest", KF_MIDOS_BOTTOM_RIGHT_CHEST, RECOVERY_HEART, {Category::cKokiriForest, Category::cForest,}, SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); + locationTable[KF_STORMS_GROTTO_CHEST] = ItemLocation::Chest (RC_KF_STORMS_GROTTO_CHEST, 0x3E, 0x0C, "KF Storms Grotto Chest", KF_STORMS_GROTTO_CHEST, RED_RUPEE, {Category::cKokiriForest, Category::cForest, Category::cGrotto}, SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); //Lost Woods - locationTable[LW_NEAR_SHORTCUTS_GROTTO_CHEST] = ItemLocation::Chest (0x3E, 0x14, "LW Near Shortcuts Grotto Chest", LW_NEAR_SHORTCUTS_GROTTO_CHEST, BLUE_RUPEE, {Category::cLostWoods, Category::cForest, Category::cGrotto}, SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); - locationTable[LW_SKULL_KID] = ItemLocation::Base (0x5B, 0x3E, "LW Skull Kid", LW_SKULL_KID, PIECE_OF_HEART, {Category::cLostWoods, Category::cForest,}, SpoilerCollectionCheck::ItemGetInf(30), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); - locationTable[LW_TRADE_COJIRO] = ItemLocation::Base (0x5B, 0x1F, "LW Trade Cojiro", LW_TRADE_COJIRO, ODD_MUSHROOM, {Category::cLostWoods, Category::cForest, Category::cAdultTrade}, SpoilerCollectionCheck::ItemGetInf(37), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); - locationTable[LW_TRADE_ODD_POTION] = ItemLocation::Base (0x5B, 0x21, "LW Trade Odd Potion", LW_TRADE_ODD_POTION, ODD_POTION, {Category::cLostWoods, Category::cForest, Category::cAdultTrade}, SpoilerCollectionCheck::ItemGetInf(57), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); - locationTable[LW_OCARINA_MEMORY_GAME] = ItemLocation::Base (0x5B, 0x76, "LW Ocarina Memory Game", LW_OCARINA_MEMORY_GAME, PIECE_OF_HEART, {Category::cLostWoods, Category::cForest, Category::cMinigame}, SpoilerCollectionCheck::ItemGetInf(31), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); - locationTable[LW_TARGET_IN_WOODS] = ItemLocation::Base (0x5B, 0x60, "LW Target in Woods", LW_TARGET_IN_WOODS, PROGRESSIVE_SLINGSHOT, {Category::cLostWoods, Category::cForest,}, SpoilerCollectionCheck::ItemGetInf(21), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); - locationTable[LW_DEKU_SCRUB_NEAR_DEKU_THEATER_RIGHT] = ItemLocation::Base (0x5B, 0x30, "LW Deku Scrub Near Deku Theater Right",LW_DEKU_SCRUB_NEAR_DEKU_THEATER_RIGHT, BUY_DEKU_NUT_5, {Category::cLostWoods, Category::cForest, Category::cDekuScrub}, SpoilerCollectionCheck::Scrub(0x5B, 0x01), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); - locationTable[LW_DEKU_SCRUB_NEAR_DEKU_THEATER_LEFT] = ItemLocation::Base (0x5B, 0x31, "LW Deku Scrub Near Deku Theater Left", LW_DEKU_SCRUB_NEAR_DEKU_THEATER_LEFT, BUY_DEKU_STICK_1, {Category::cLostWoods, Category::cForest, Category::cDekuScrub}, SpoilerCollectionCheck::Scrub(0x5B, 0x02), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); - locationTable[LW_DEKU_SCRUB_NEAR_BRIDGE] = ItemLocation::Base (0x5B, 0x77, "LW Deku Scrub Near Bridge", LW_DEKU_SCRUB_NEAR_BRIDGE, PROGRESSIVE_STICK_UPGRADE, {Category::cLostWoods, Category::cForest, Category::cDekuScrub, Category::cDekuScrubUpgrades}, SpoilerCollectionCheck::Scrub(0x5B, 0x0A), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); - locationTable[LW_DEKU_SCRUB_GROTTO_REAR] = ItemLocation::GrottoScrub(0xF5, 0x33, "LW Deku Scrub Grotto Rear", LW_DEKU_SCRUB_GROTTO_REAR, BUY_DEKU_SEEDS_30, {Category::cLostWoods, Category::cForest, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x1F, 0x04), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); - locationTable[LW_DEKU_SCRUB_GROTTO_FRONT] = ItemLocation::GrottoScrub(0xF5, 0x79, "LW Deku Scrub Grotto Front", LW_DEKU_SCRUB_GROTTO_FRONT, PROGRESSIVE_NUT_UPGRADE, {Category::cLostWoods, Category::cForest, Category::cDekuScrub, Category::cDekuScrubUpgrades, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x1F, 0x0B), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); - locationTable[DEKU_THEATER_SKULL_MASK] = ItemLocation::Base (0x3E, 0x77, "Deku Theater Skull Mask", DEKU_THEATER_SKULL_MASK, PROGRESSIVE_STICK_UPGRADE, {Category::cLostWoods, Category::cForest, Category::cGrotto}, SpoilerCollectionCheck::ItemGetInf(22), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); - locationTable[DEKU_THEATER_MASK_OF_TRUTH] = ItemLocation::Base (0x3E, 0x7A, "Deku Theater Mask of Truth", DEKU_THEATER_MASK_OF_TRUTH, PROGRESSIVE_NUT_UPGRADE, {Category::cLostWoods, Category::cForest, Category::cNeedSpiritualStones, Category::cGrotto}, SpoilerCollectionCheck::ItemGetInf(23), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[LW_NEAR_SHORTCUTS_GROTTO_CHEST] = ItemLocation::Chest (RC_LW_NEAR_SHORTCUTS_GROTTO_CHEST, 0x3E, 0x14, "LW Near Shortcuts Grotto Chest", LW_NEAR_SHORTCUTS_GROTTO_CHEST, BLUE_RUPEE, {Category::cLostWoods, Category::cForest, Category::cGrotto}, SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[LW_SKULL_KID] = ItemLocation::Base (RC_LW_SKULL_KID, 0x5B, 0x3E, "LW Skull Kid", LW_SKULL_KID, PIECE_OF_HEART, {Category::cLostWoods, Category::cForest,}, SpoilerCollectionCheck::ItemGetInf(30), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[LW_TRADE_COJIRO] = ItemLocation::Base (RC_LW_TRADE_COJIRO, 0x5B, 0x1F, "LW Trade Cojiro", LW_TRADE_COJIRO, ODD_MUSHROOM, {Category::cLostWoods, Category::cForest, Category::cAdultTrade}, SpoilerCollectionCheck::ItemGetInf(37), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[LW_TRADE_ODD_POTION] = ItemLocation::Base (RC_LW_TRADE_ODD_POTION, 0x5B, 0x21, "LW Trade Odd Potion", LW_TRADE_ODD_POTION, ODD_POTION, {Category::cLostWoods, Category::cForest, Category::cAdultTrade}, SpoilerCollectionCheck::ItemGetInf(57), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[LW_OCARINA_MEMORY_GAME] = ItemLocation::Base (RC_LW_OCARINA_MEMORY_GAME, 0x5B, 0x76, "LW Ocarina Memory Game", LW_OCARINA_MEMORY_GAME, PIECE_OF_HEART, {Category::cLostWoods, Category::cForest, Category::cMinigame}, SpoilerCollectionCheck::ItemGetInf(31), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[LW_TARGET_IN_WOODS] = ItemLocation::Base (RC_LW_TARGET_IN_WOODS, 0x5B, 0x60, "LW Target in Woods", LW_TARGET_IN_WOODS, PROGRESSIVE_SLINGSHOT, {Category::cLostWoods, Category::cForest,}, SpoilerCollectionCheck::ItemGetInf(21), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[LW_DEKU_SCRUB_NEAR_DEKU_THEATER_RIGHT] = ItemLocation::Base (RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_RIGHT, 0x5B, 0x30, "LW Deku Scrub Near Deku Theater Right",LW_DEKU_SCRUB_NEAR_DEKU_THEATER_RIGHT, BUY_DEKU_NUT_5, {Category::cLostWoods, Category::cForest, Category::cDekuScrub}, SpoilerCollectionCheck::Scrub(0x5B, 0x01), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[LW_DEKU_SCRUB_NEAR_DEKU_THEATER_LEFT] = ItemLocation::Base (RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_LEFT, 0x5B, 0x31, "LW Deku Scrub Near Deku Theater Left", LW_DEKU_SCRUB_NEAR_DEKU_THEATER_LEFT, BUY_DEKU_STICK_1, {Category::cLostWoods, Category::cForest, Category::cDekuScrub}, SpoilerCollectionCheck::Scrub(0x5B, 0x02), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[LW_DEKU_SCRUB_NEAR_BRIDGE] = ItemLocation::Base (RC_LW_DEKU_SCRUB_NEAR_BRIDGE, 0x5B, 0x77, "LW Deku Scrub Near Bridge", LW_DEKU_SCRUB_NEAR_BRIDGE, PROGRESSIVE_STICK_UPGRADE, {Category::cLostWoods, Category::cForest, Category::cDekuScrub, Category::cDekuScrubUpgrades}, SpoilerCollectionCheck::Scrub(0x5B, 0x0A), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[LW_DEKU_SCRUB_GROTTO_REAR] = ItemLocation::GrottoScrub(RC_LW_DEKU_SCRUB_GROTTO_REAR, 0xF5, 0x33, "LW Deku Scrub Grotto Rear", LW_DEKU_SCRUB_GROTTO_REAR, BUY_DEKU_SEEDS_30, {Category::cLostWoods, Category::cForest, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x1F, 0x04), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[LW_DEKU_SCRUB_GROTTO_FRONT] = ItemLocation::GrottoScrub(RC_LW_DEKU_SCRUB_GROTTO_FRONT, 0xF5, 0x79, "LW Deku Scrub Grotto Front", LW_DEKU_SCRUB_GROTTO_FRONT, PROGRESSIVE_NUT_UPGRADE, {Category::cLostWoods, Category::cForest, Category::cDekuScrub, Category::cDekuScrubUpgrades, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x1F, 0x0B), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[DEKU_THEATER_SKULL_MASK] = ItemLocation::Base (RC_DEKU_THEATER_SKULL_MASK, 0x3E, 0x77, "Deku Theater Skull Mask", DEKU_THEATER_SKULL_MASK, PROGRESSIVE_STICK_UPGRADE, {Category::cLostWoods, Category::cForest, Category::cGrotto}, SpoilerCollectionCheck::ItemGetInf(22), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[DEKU_THEATER_MASK_OF_TRUTH] = ItemLocation::Base (RC_DEKU_THEATER_MASK_OF_TRUTH, 0x3E, 0x7A, "Deku Theater Mask of Truth", DEKU_THEATER_MASK_OF_TRUTH, PROGRESSIVE_NUT_UPGRADE, {Category::cLostWoods, Category::cForest, Category::cNeedSpiritualStones, Category::cGrotto}, SpoilerCollectionCheck::ItemGetInf(23), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); //Sacred Forest Meadow - locationTable[SFM_WOLFOS_GROTTO_CHEST] = ItemLocation::Chest (0x3E, 0x11, "SFM Wolfos Grotto Chest", SFM_WOLFOS_GROTTO_CHEST, PURPLE_RUPEE, {Category::cSacredForestMeadow, Category::cForest, Category::cGrotto}, SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); - locationTable[SFM_DEKU_SCRUB_GROTTO_REAR] = ItemLocation::GrottoScrub(0xEE, 0x39, "SFM Deku Scrub Grotto Rear", SFM_DEKU_SCRUB_GROTTO_REAR, BUY_RED_POTION_30, {Category::cSacredForestMeadow, Category::cForest, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x18, 0x08), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); - locationTable[SFM_DEKU_SCRUB_GROTTO_FRONT] = ItemLocation::GrottoScrub(0xEE, 0x3A, "SFM Deku Scrub Grotto Front", SFM_DEKU_SCRUB_GROTTO_FRONT, BUY_GREEN_POTION, {Category::cSacredForestMeadow, Category::cForest, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x18, 0x09), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[SFM_WOLFOS_GROTTO_CHEST] = ItemLocation::Chest (RC_SFM_WOLFOS_GROTTO_CHEST, 0x3E, 0x11, "SFM Wolfos Grotto Chest", SFM_WOLFOS_GROTTO_CHEST, PURPLE_RUPEE, {Category::cSacredForestMeadow, Category::cForest, Category::cGrotto}, SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[SFM_DEKU_SCRUB_GROTTO_REAR] = ItemLocation::GrottoScrub(RC_SFM_DEKU_SCRUB_GROTTO_REAR, 0xEE, 0x39, "SFM Deku Scrub Grotto Rear", SFM_DEKU_SCRUB_GROTTO_REAR, BUY_RED_POTION_30, {Category::cSacredForestMeadow, Category::cForest, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x18, 0x08), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[SFM_DEKU_SCRUB_GROTTO_FRONT] = ItemLocation::GrottoScrub(RC_SFM_DEKU_SCRUB_GROTTO_FRONT, 0xEE, 0x3A, "SFM Deku Scrub Grotto Front", SFM_DEKU_SCRUB_GROTTO_FRONT, BUY_GREEN_POTION, {Category::cSacredForestMeadow, Category::cForest, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x18, 0x09), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); //Hyrule Field - locationTable[HF_SOUTHEAST_GROTTO_CHEST] = ItemLocation::Chest (0x3E, 0x02, "HF Southeast Grotto Chest", HF_SOUTHEAST_GROTTO_CHEST, RED_RUPEE, {Category::cHyruleField, Category::cGrotto,}, SpoilerCollectionCheckGroup::GROUP_HYRULE_FIELD); - locationTable[HF_OPEN_GROTTO_CHEST] = ItemLocation::Chest (0x3E, 0x03, "HF Open Grotto Chest", HF_OPEN_GROTTO_CHEST, BLUE_RUPEE, {Category::cHyruleField, Category::cGrotto,}, SpoilerCollectionCheckGroup::GROUP_HYRULE_FIELD); - locationTable[HF_NEAR_MARKET_GROTTO_CHEST] = ItemLocation::Chest (0x3E, 0x00, "HF Near Market Grotto Chest", HF_NEAR_MARKET_GROTTO_CHEST, BLUE_RUPEE, {Category::cHyruleField, Category::cGrotto,}, SpoilerCollectionCheckGroup::GROUP_HYRULE_FIELD); - locationTable[HF_OCARINA_OF_TIME_ITEM] = ItemLocation::Base (0x51, 0x0C, "HF Ocarina of Time Item", HF_OCARINA_OF_TIME_ITEM, PROGRESSIVE_OCARINA, {Category::cHyruleField, Category::cNeedSpiritualStones,}, SpoilerCollectionCheck::EventChkInf(0x43), SpoilerCollectionCheckGroup::GROUP_HYRULE_FIELD); - locationTable[HF_TEKTITE_GROTTO_FREESTANDING_POH] = ItemLocation::Collectable(0x3E, 0x01, "HF Tektite Grotto Freestanding PoH", HF_TEKTITE_GROTTO_FREESTANDING_POH, PIECE_OF_HEART, {Category::cHyruleField, Category::cGrotto,}, SpoilerCollectionCheckGroup::GROUP_HYRULE_FIELD); - locationTable[HF_DEKU_SCRUB_GROTTO] = ItemLocation::GrottoScrub(0xE6, 0x3E, "HF Deku Scrub Grotto", HF_DEKU_SCRUB_GROTTO, PIECE_OF_HEART, {Category::cHyruleField, Category::cDekuScrub, Category::cDekuScrubUpgrades, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x10, 0x03), SpoilerCollectionCheckGroup::GROUP_HYRULE_FIELD); + locationTable[HF_SOUTHEAST_GROTTO_CHEST] = ItemLocation::Chest (RC_HF_SOUTHEAST_GROTTO_CHEST, 0x3E, 0x02, "HF Southeast Grotto Chest", HF_SOUTHEAST_GROTTO_CHEST, RED_RUPEE, {Category::cHyruleField, Category::cGrotto,}, SpoilerCollectionCheckGroup::GROUP_HYRULE_FIELD); + locationTable[HF_OPEN_GROTTO_CHEST] = ItemLocation::Chest (RC_HF_OPEN_GROTTO_CHEST, 0x3E, 0x03, "HF Open Grotto Chest", HF_OPEN_GROTTO_CHEST, BLUE_RUPEE, {Category::cHyruleField, Category::cGrotto,}, SpoilerCollectionCheckGroup::GROUP_HYRULE_FIELD); + locationTable[HF_NEAR_MARKET_GROTTO_CHEST] = ItemLocation::Chest (RC_HF_NEAR_MARKET_GROTTO_CHEST, 0x3E, 0x00, "HF Near Market Grotto Chest", HF_NEAR_MARKET_GROTTO_CHEST, BLUE_RUPEE, {Category::cHyruleField, Category::cGrotto,}, SpoilerCollectionCheckGroup::GROUP_HYRULE_FIELD); + locationTable[HF_OCARINA_OF_TIME_ITEM] = ItemLocation::Base (RC_HF_OCARINA_OF_TIME_ITEM, 0x51, 0x0C, "HF Ocarina of Time Item", HF_OCARINA_OF_TIME_ITEM, PROGRESSIVE_OCARINA, {Category::cHyruleField, Category::cNeedSpiritualStones,}, SpoilerCollectionCheck::EventChkInf(0x43), SpoilerCollectionCheckGroup::GROUP_HYRULE_FIELD); + locationTable[HF_TEKTITE_GROTTO_FREESTANDING_POH] = ItemLocation::Collectable(RC_HF_TEKTITE_GROTTO_FREESTANDING_POH, 0x3E, 0x01, "HF Tektite Grotto Freestanding PoH", HF_TEKTITE_GROTTO_FREESTANDING_POH, PIECE_OF_HEART, {Category::cHyruleField, Category::cGrotto,}, SpoilerCollectionCheckGroup::GROUP_HYRULE_FIELD); + locationTable[HF_DEKU_SCRUB_GROTTO] = ItemLocation::GrottoScrub(RC_HF_DEKU_SCRUB_GROTTO, 0xE6, 0x3E, "HF Deku Scrub Grotto", HF_DEKU_SCRUB_GROTTO, PIECE_OF_HEART, {Category::cHyruleField, Category::cDekuScrub, Category::cDekuScrubUpgrades, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x10, 0x03), SpoilerCollectionCheckGroup::GROUP_HYRULE_FIELD); //Lake Hylia - locationTable[LH_CHILD_FISHING] = ItemLocation::Base (0x49, 0x3E, "LH Child Fishing", LH_CHILD_FISHING, PIECE_OF_HEART, {Category::cLakeHylia, Category::cMinigame,}, SpoilerCollectionCheck::Fishing(0x02), SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); - locationTable[LH_ADULT_FISHING] = ItemLocation::Base (0x49, 0x38, "LH Adult Fishing", LH_ADULT_FISHING, PROGRESSIVE_SCALE, {Category::cLakeHylia, Category::cMinigame,}, SpoilerCollectionCheck::Fishing(0x03), SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); - locationTable[LH_LAB_DIVE] = ItemLocation::Base (0x38, 0x3E, "LH Lab Dive", LH_LAB_DIVE, PIECE_OF_HEART, {Category::cLakeHylia,}, SpoilerCollectionCheck::ItemGetInf(24), SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); - locationTable[LH_TRADE_FROG] = ItemLocation::Base (0x38, 0x25, "LH Lab Trade Eyeball Frog", LH_TRADE_FROG, EYEDROPS, {Category::cLakeHylia, Category::cAdultTrade}, SpoilerCollectionCheck::ItemGetInf(61), SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); - locationTable[LH_UNDERWATER_ITEM] = ItemLocation::Base (0x57, 0x15, "LH Underwater Item", LH_UNDERWATER_ITEM, RUTOS_LETTER, {Category::cLakeHylia,}, SpoilerCollectionCheck::EventChkInf(0x31), SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); - locationTable[LH_SUN] = ItemLocation::Base (0x57, 0x58, "LH Sun", LH_SUN, FIRE_ARROWS, {Category::cLakeHylia,}, SpoilerCollectionCheck::Chest(0x57, 0x00), SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); - locationTable[LH_FREESTANDING_POH] = ItemLocation::Collectable(0x57, 0x1E, "LH Freestanding PoH", LH_FREESTANDING_POH, PIECE_OF_HEART, {Category::cLakeHylia,}, SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); - locationTable[LH_DEKU_SCRUB_GROTTO_LEFT] = ItemLocation::GrottoScrub(0xEF, 0x30, "LH Deku Scrub Grotto Left", LH_DEKU_SCRUB_GROTTO_LEFT, BUY_DEKU_NUT_5, {Category::cLakeHylia, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x19, 0x01), SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); - locationTable[LH_DEKU_SCRUB_GROTTO_RIGHT] = ItemLocation::GrottoScrub(0xEF, 0x37, "LH Deku Scrub Grotto Right", LH_DEKU_SCRUB_GROTTO_RIGHT, BUY_BOMBS_535, {Category::cLakeHylia, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x19, 0x06), SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); - locationTable[LH_DEKU_SCRUB_GROTTO_CENTER] = ItemLocation::GrottoScrub(0xEF, 0x33, "LH Deku Scrub Grotto Center", LH_DEKU_SCRUB_GROTTO_CENTER, BUY_DEKU_SEEDS_30, {Category::cLakeHylia, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x19, 0x04), SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); + locationTable[LH_CHILD_FISHING] = ItemLocation::Base (RC_LH_CHILD_FISHING, 0x49, 0x3E, "LH Child Fishing", LH_CHILD_FISHING, PIECE_OF_HEART, {Category::cLakeHylia, Category::cMinigame,}, SpoilerCollectionCheck::Fishing(0x02), SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); + locationTable[LH_ADULT_FISHING] = ItemLocation::Base (RC_LH_ADULT_FISHING, 0x49, 0x38, "LH Adult Fishing", LH_ADULT_FISHING, PROGRESSIVE_SCALE, {Category::cLakeHylia, Category::cMinigame,}, SpoilerCollectionCheck::Fishing(0x03), SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); + locationTable[LH_LAB_DIVE] = ItemLocation::Base (RC_LH_LAB_DIVE, 0x38, 0x3E, "LH Lab Dive", LH_LAB_DIVE, PIECE_OF_HEART, {Category::cLakeHylia,}, SpoilerCollectionCheck::ItemGetInf(24), SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); + locationTable[LH_TRADE_FROG] = ItemLocation::Base (RC_LH_TRADE_FROG, 0x38, 0x25, "LH Lab Trade Eyeball Frog", LH_TRADE_FROG, EYEDROPS, {Category::cLakeHylia, Category::cAdultTrade}, SpoilerCollectionCheck::ItemGetInf(61), SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); + locationTable[LH_UNDERWATER_ITEM] = ItemLocation::Base (RC_LH_UNDERWATER_ITEM, 0x57, 0x15, "LH Underwater Item", LH_UNDERWATER_ITEM, RUTOS_LETTER, {Category::cLakeHylia,}, SpoilerCollectionCheck::EventChkInf(0x31), SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); + locationTable[LH_SUN] = ItemLocation::Base (RC_LH_SUN, 0x57, 0x58, "LH Sun", LH_SUN, FIRE_ARROWS, {Category::cLakeHylia,}, SpoilerCollectionCheck::Chest(0x57, 0x00), SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); + locationTable[LH_FREESTANDING_POH] = ItemLocation::Collectable(RC_LH_FREESTANDING_POH, 0x57, 0x1E, "LH Freestanding PoH", LH_FREESTANDING_POH, PIECE_OF_HEART, {Category::cLakeHylia,}, SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); + locationTable[LH_DEKU_SCRUB_GROTTO_LEFT] = ItemLocation::GrottoScrub(RC_LH_DEKU_SCRUB_GROTTO_LEFT, 0xEF, 0x30, "LH Deku Scrub Grotto Left", LH_DEKU_SCRUB_GROTTO_LEFT, BUY_DEKU_NUT_5, {Category::cLakeHylia, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x19, 0x01), SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); + locationTable[LH_DEKU_SCRUB_GROTTO_RIGHT] = ItemLocation::GrottoScrub(RC_LH_DEKU_SCRUB_GROTTO_RIGHT, 0xEF, 0x37, "LH Deku Scrub Grotto Right", LH_DEKU_SCRUB_GROTTO_RIGHT, BUY_BOMBS_535, {Category::cLakeHylia, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x19, 0x06), SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); + locationTable[LH_DEKU_SCRUB_GROTTO_CENTER] = ItemLocation::GrottoScrub(RC_LH_DEKU_SCRUB_GROTTO_CENTER, 0xEF, 0x33, "LH Deku Scrub Grotto Center", LH_DEKU_SCRUB_GROTTO_CENTER, BUY_DEKU_SEEDS_30, {Category::cLakeHylia, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x19, 0x04), SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); //Gerudo Valley - locationTable[GV_CHEST] = ItemLocation::Chest (0x5A, 0x00, "GV Chest", GV_CHEST, PURPLE_RUPEE, {Category::cGerudoValley, Category::cGerudo,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[GV_TRADE_SAW] = ItemLocation::Base (0x5A, 0x22, "GV Trade Saw", GV_TRADE_SAW, BROKEN_SWORD, {Category::cGerudoValley, Category::cGerudo, Category::cAdultTrade}, SpoilerCollectionCheck::ItemGetInf(58), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[GV_WATERFALL_FREESTANDING_POH] = ItemLocation::Collectable(0x5A, 0x01, "GV Waterfall Freestanding PoH", GV_WATERFALL_FREESTANDING_POH, PIECE_OF_HEART, {Category::cGerudoValley, Category::cGerudo,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[GV_CRATE_FREESTANDING_POH] = ItemLocation::Collectable(0x5A, 0x02, "GV Crate Freestanding PoH", GV_CRATE_FREESTANDING_POH, PIECE_OF_HEART, {Category::cGerudoValley, Category::cGerudo,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[GV_DEKU_SCRUB_GROTTO_REAR] = ItemLocation::GrottoScrub(0xF0, 0x39, "GV Deku Scrub Grotto Rear", GV_DEKU_SCRUB_GROTTO_REAR, BUY_RED_POTION_30, {Category::cGerudoValley, Category::cGerudo, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x1A, 0x08), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[GV_DEKU_SCRUB_GROTTO_FRONT] = ItemLocation::GrottoScrub(0xF0, 0x3A, "GV Deku Scrub Grotto Front", GV_DEKU_SCRUB_GROTTO_FRONT, BUY_GREEN_POTION, {Category::cGerudoValley, Category::cGerudo, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x1A, 0x09), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[GV_CHEST] = ItemLocation::Chest (RC_GV_CHEST, 0x5A, 0x00, "GV Chest", GV_CHEST, PURPLE_RUPEE, {Category::cGerudoValley, Category::cGerudo,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[GV_TRADE_SAW] = ItemLocation::Base (RC_GV_TRADE_SAW, 0x5A, 0x22, "GV Trade Saw", GV_TRADE_SAW, BROKEN_SWORD, {Category::cGerudoValley, Category::cGerudo, Category::cAdultTrade}, SpoilerCollectionCheck::ItemGetInf(58), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[GV_WATERFALL_FREESTANDING_POH] = ItemLocation::Collectable(RC_GV_WATERFALL_FREESTANDING_POH, 0x5A, 0x01, "GV Waterfall Freestanding PoH", GV_WATERFALL_FREESTANDING_POH, PIECE_OF_HEART, {Category::cGerudoValley, Category::cGerudo,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[GV_CRATE_FREESTANDING_POH] = ItemLocation::Collectable(RC_GV_CRATE_FREESTANDING_POH, 0x5A, 0x02, "GV Crate Freestanding PoH", GV_CRATE_FREESTANDING_POH, PIECE_OF_HEART, {Category::cGerudoValley, Category::cGerudo,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[GV_DEKU_SCRUB_GROTTO_REAR] = ItemLocation::GrottoScrub(RC_GV_DEKU_SCRUB_GROTTO_REAR, 0xF0, 0x39, "GV Deku Scrub Grotto Rear", GV_DEKU_SCRUB_GROTTO_REAR, BUY_RED_POTION_30, {Category::cGerudoValley, Category::cGerudo, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x1A, 0x08), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[GV_DEKU_SCRUB_GROTTO_FRONT] = ItemLocation::GrottoScrub(RC_GV_DEKU_SCRUB_GROTTO_FRONT, 0xF0, 0x3A, "GV Deku Scrub Grotto Front", GV_DEKU_SCRUB_GROTTO_FRONT, BUY_GREEN_POTION, {Category::cGerudoValley, Category::cGerudo, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x1A, 0x09), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); //Gerudo Fortress - locationTable[GF_CHEST] = ItemLocation::Chest (0x5D, 0x00, "GF Chest", GF_CHEST, PIECE_OF_HEART, {Category::cGerudoFortress, Category::cGerudo,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[GF_HBA_1000_POINTS] = ItemLocation::Base (0x5D, 0x3E, "GF HBA 1000 Points", GF_HBA_1000_POINTS, PIECE_OF_HEART, {Category::cGerudoFortress, Category::cGerudo, Category::cMinigame}, SpoilerCollectionCheck::InfTable(0x19, 0x08), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[GF_HBA_1500_POINTS] = ItemLocation::Base (0x5D, 0x30, "GF HBA 1500 Points", GF_HBA_1500_POINTS, PROGRESSIVE_BOW, {Category::cGerudoFortress, Category::cGerudo, Category::cMinigame}, SpoilerCollectionCheck::ItemGetInf(7), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[GF_GERUDO_MEMBERSHIP_CARD] = ItemLocation::Base (0x0C, 0x3A, "GF Gerudo Membership Card", GF_GERUDO_MEMBERSHIP_CARD, GERUDO_MEMBERSHIP_CARD, {Category::cGerudoFortress, Category::cGerudo,}, SpoilerCollectionCheck::GerudoToken(), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[GF_NORTH_F1_CARPENTER] = ItemLocation::Collectable(0x0C, 0x0C, "GF North F1 Carpenter", GF_NORTH_F1_CARPENTER, GERUDO_FORTRESS_SMALL_KEY, {Category::cGerudoFortress, Category::cGerudo, Category::cVanillaGFSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[GF_NORTH_F2_CARPENTER] = ItemLocation::Collectable(0x0C, 0x0A, "GF North F2 Carpenter", GF_NORTH_F2_CARPENTER, GERUDO_FORTRESS_SMALL_KEY, {Category::cGerudoFortress, Category::cGerudo, Category::cVanillaGFSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[GF_SOUTH_F1_CARPENTER] = ItemLocation::Collectable(0x0C, 0x0E, "GF South F1 Carpenter", GF_SOUTH_F1_CARPENTER, GERUDO_FORTRESS_SMALL_KEY, {Category::cGerudoFortress, Category::cGerudo, Category::cVanillaGFSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[GF_SOUTH_F2_CARPENTER] = ItemLocation::Collectable(0x0C, 0x0F, "GF South F2 Carpenter", GF_SOUTH_F2_CARPENTER, GERUDO_FORTRESS_SMALL_KEY, {Category::cGerudoFortress, Category::cGerudo, Category::cVanillaGFSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[GF_CHEST] = ItemLocation::Chest (RC_GF_CHEST, 0x5D, 0x00, "GF Chest", GF_CHEST, PIECE_OF_HEART, {Category::cGerudoFortress, Category::cGerudo,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[GF_HBA_1000_POINTS] = ItemLocation::Base (RC_GF_HBA_1000_POINTS, 0x5D, 0x3E, "GF HBA 1000 Points", GF_HBA_1000_POINTS, PIECE_OF_HEART, {Category::cGerudoFortress, Category::cGerudo, Category::cMinigame}, SpoilerCollectionCheck::InfTable(0x19, 0x08), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[GF_HBA_1500_POINTS] = ItemLocation::Base (RC_GF_HBA_1500_POINTS, 0x5D, 0x30, "GF HBA 1500 Points", GF_HBA_1500_POINTS, PROGRESSIVE_BOW, {Category::cGerudoFortress, Category::cGerudo, Category::cMinigame}, SpoilerCollectionCheck::ItemGetInf(7), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[GF_GERUDO_MEMBERSHIP_CARD] = ItemLocation::Base (RC_GF_GERUDO_MEMBERSHIP_CARD, 0x0C, 0x3A, "GF Gerudo Membership Card", GF_GERUDO_MEMBERSHIP_CARD, GERUDO_MEMBERSHIP_CARD, {Category::cGerudoFortress, Category::cGerudo,}, SpoilerCollectionCheck::GerudoToken(), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[GF_NORTH_F1_CARPENTER] = ItemLocation::Collectable(RC_GF_NORTH_F1_CARPENTER, 0x0C, 0x0C, "GF North F1 Carpenter", GF_NORTH_F1_CARPENTER, GERUDO_FORTRESS_SMALL_KEY, {Category::cGerudoFortress, Category::cGerudo, Category::cVanillaGFSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[GF_NORTH_F2_CARPENTER] = ItemLocation::Collectable(RC_GF_NORTH_F2_CARPENTER, 0x0C, 0x0A, "GF North F2 Carpenter", GF_NORTH_F2_CARPENTER, GERUDO_FORTRESS_SMALL_KEY, {Category::cGerudoFortress, Category::cGerudo, Category::cVanillaGFSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[GF_SOUTH_F1_CARPENTER] = ItemLocation::Collectable(RC_GF_SOUTH_F1_CARPENTER, 0x0C, 0x0E, "GF South F1 Carpenter", GF_SOUTH_F1_CARPENTER, GERUDO_FORTRESS_SMALL_KEY, {Category::cGerudoFortress, Category::cGerudo, Category::cVanillaGFSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[GF_SOUTH_F2_CARPENTER] = ItemLocation::Collectable(RC_GF_SOUTH_F2_CARPENTER, 0x0C, 0x0F, "GF South F2 Carpenter", GF_SOUTH_F2_CARPENTER, GERUDO_FORTRESS_SMALL_KEY, {Category::cGerudoFortress, Category::cGerudo, Category::cVanillaGFSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); //Haunted Wasteland - locationTable[WASTELAND_CHEST] = ItemLocation::Chest (0x5E, 0x00, "Wasteland Chest", WASTELAND_CHEST, PURPLE_RUPEE, {Category::cHauntedWasteland,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[WASTELAND_BOMBCHU_SALESMAN] = ItemLocation::Base (0x5E, 0x03, "Wasteland Carpet Salesman", WASTELAND_BOMBCHU_SALESMAN, BOMBCHU_10, {Category::cHauntedWasteland, Category::cMerchant,}, SpoilerCollectionCheck::EventChkInf(0x34), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[WASTELAND_CHEST] = ItemLocation::Chest (RC_WASTELAND_CHEST, 0x5E, 0x00, "Wasteland Chest", WASTELAND_CHEST, PURPLE_RUPEE, {Category::cHauntedWasteland,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[WASTELAND_BOMBCHU_SALESMAN] = ItemLocation::Base (RC_WASTELAND_BOMBCHU_SALESMAN, 0x5E, 0x03, "Wasteland Carpet Salesman", WASTELAND_BOMBCHU_SALESMAN, BOMBCHU_10, {Category::cHauntedWasteland, Category::cMerchant,}, SpoilerCollectionCheck::EventChkInf(0x34), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); //Desert Colossus - locationTable[COLOSSUS_FREESTANDING_POH] = ItemLocation::Collectable(0x5C, 0x0D, "Colossus Freestanding PoH", COLOSSUS_FREESTANDING_POH, PIECE_OF_HEART, {Category::cDesertColossus,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[COLOSSUS_DEKU_SCRUB_GROTTO_REAR] = ItemLocation::GrottoScrub(0xFD, 0x39, "Colossus Deku Scrub Grotto Rear", COLOSSUS_DEKU_SCRUB_GROTTO_REAR, BUY_RED_POTION_30, {Category::cDesertColossus, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x27, 0x08), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[COLOSSUS_DEKU_SCRUB_GROTTO_FRONT] = ItemLocation::GrottoScrub(0xFD, 0x3A, "Colossus Deku Scrub Grotto Front", COLOSSUS_DEKU_SCRUB_GROTTO_FRONT, BUY_GREEN_POTION, {Category::cDesertColossus, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x27, 0x09), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[COLOSSUS_FREESTANDING_POH] = ItemLocation::Collectable(RC_COLOSSUS_FREESTANDING_POH, 0x5C, 0x0D, "Colossus Freestanding PoH", COLOSSUS_FREESTANDING_POH, PIECE_OF_HEART, {Category::cDesertColossus,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[COLOSSUS_DEKU_SCRUB_GROTTO_REAR] = ItemLocation::GrottoScrub(RC_COLOSSUS_DEKU_SCRUB_GROTTO_REAR, 0xFD, 0x39, "Colossus Deku Scrub Grotto Rear", COLOSSUS_DEKU_SCRUB_GROTTO_REAR, BUY_RED_POTION_30, {Category::cDesertColossus, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x27, 0x08), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[COLOSSUS_DEKU_SCRUB_GROTTO_FRONT] = ItemLocation::GrottoScrub(RC_COLOSSUS_DEKU_SCRUB_GROTTO_FRONT, 0xFD, 0x3A, "Colossus Deku Scrub Grotto Front", COLOSSUS_DEKU_SCRUB_GROTTO_FRONT, BUY_GREEN_POTION, {Category::cDesertColossus, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x27, 0x09), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); //Market - locationTable[MARKET_TREASURE_CHEST_GAME_REWARD] = ItemLocation::Chest (0x10, 0x0A, "MK Treasure Chest Game Reward", MARKET_TREASURE_CHEST_GAME_REWARD, TREASURE_GAME_HEART, {Category::cInnerMarket, Category::cMarket, Category::cMinigame}, SpoilerCollectionCheck::ItemGetInf(19), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_BOMBCHU_BOWLING_FIRST_PRIZE] = ItemLocation::Base (0x4B, 0x33, "MK Bombchu Bowling First Prize", MARKET_BOMBCHU_BOWLING_FIRST_PRIZE, PROGRESSIVE_BOMB_BAG, {Category::cInnerMarket, Category::cMarket, Category::cMinigame}, SpoilerCollectionCheck::ItemGetInf(25), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_BOMBCHU_BOWLING_SECOND_PRIZE] = ItemLocation::Base (0x4B, 0x3E, "MK Bombchu Bowling Second Prize", MARKET_BOMBCHU_BOWLING_SECOND_PRIZE, PIECE_OF_HEART, {Category::cInnerMarket, Category::cMarket, Category::cMinigame}, SpoilerCollectionCheck::ItemGetInf(26), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_BOMBCHU_BOWLING_BOMBCHUS] = ItemLocation::Base (0x4B, 0xFF, "MK Bombchu Bowling Bombchus", NONE, BOMBCHU_DROP, {Category::cInnerMarket, Category::cMarket, Category::cMinigame}, SpoilerCollectionCheck::None(), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_LOST_DOG] = ItemLocation::Base (0x35, 0x3E, "MK Lost Dog", MARKET_LOST_DOG, PIECE_OF_HEART, {Category::cInnerMarket, Category::cMarket,}, SpoilerCollectionCheck::InfTable(0x19, 0x09), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_SHOOTING_GALLERY_REWARD] = ItemLocation::Base (0x42, 0x60, "MK Shooting Gallery", MARKET_SHOOTING_GALLERY_REWARD, PROGRESSIVE_SLINGSHOT, {Category::cInnerMarket, Category::cMarket, Category::cMinigame}, SpoilerCollectionCheck::ItemGetInf(5), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_10_BIG_POES] = ItemLocation::Base (0x4D, 0x0F, "MK 10 Big Poes", MARKET_10_BIG_POES, EMPTY_BOTTLE, {Category::cInnerMarket, Category::cMarket,}, SpoilerCollectionCheck::BigPoePoints(), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_TREASURE_CHEST_GAME_ITEM_1] = ItemLocation::Chest (0x10, 0x01, "MK Chest Game First Room Chest", MARKET_TREASURE_CHEST_GAME_ITEM_1, TREASURE_GAME_SMALL_KEY, {Category::cInnerMarket, Category::cMarket, Category::cMinigame, Category::cChestMinigame}, SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_TREASURE_CHEST_GAME_ITEM_2] = ItemLocation::Chest (0x10, 0x03, "MK Chest Game Second Room Chest", MARKET_TREASURE_CHEST_GAME_ITEM_2, TREASURE_GAME_SMALL_KEY, {Category::cInnerMarket, Category::cMarket, Category::cMinigame, Category::cChestMinigame}, SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_TREASURE_CHEST_GAME_ITEM_3] = ItemLocation::Chest (0x10, 0x05, "MK Chest Game Third Room Chest", MARKET_TREASURE_CHEST_GAME_ITEM_3, TREASURE_GAME_SMALL_KEY, {Category::cInnerMarket, Category::cMarket, Category::cMinigame, Category::cChestMinigame}, SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_TREASURE_CHEST_GAME_ITEM_4] = ItemLocation::Chest (0x10, 0x07, "MK Chest Game Fourth Room Chest", MARKET_TREASURE_CHEST_GAME_ITEM_4, TREASURE_GAME_SMALL_KEY, {Category::cInnerMarket, Category::cMarket, Category::cMinigame, Category::cChestMinigame}, SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_TREASURE_CHEST_GAME_ITEM_5] = ItemLocation::Chest (0x10, 0x09, "MK Chest Game Fifth Room Chest", MARKET_TREASURE_CHEST_GAME_ITEM_5, TREASURE_GAME_SMALL_KEY, {Category::cInnerMarket, Category::cMarket, Category::cMinigame, Category::cChestMinigame}, SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_TREASURE_CHEST_GAME_REWARD] = ItemLocation::Chest (RC_MARKET_TREASURE_CHEST_GAME_REWARD, 0x10, 0x0A, "MK Treasure Chest Game Reward", MARKET_TREASURE_CHEST_GAME_REWARD, TREASURE_GAME_HEART, {Category::cInnerMarket, Category::cMarket, Category::cMinigame}, SpoilerCollectionCheck::ItemGetInf(19), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_BOMBCHU_BOWLING_FIRST_PRIZE] = ItemLocation::Base (RC_MARKET_BOMBCHU_BOWLING_FIRST_PRIZE, 0x4B, 0x33, "MK Bombchu Bowling First Prize", MARKET_BOMBCHU_BOWLING_FIRST_PRIZE, PROGRESSIVE_BOMB_BAG, {Category::cInnerMarket, Category::cMarket, Category::cMinigame}, SpoilerCollectionCheck::ItemGetInf(25), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_BOMBCHU_BOWLING_SECOND_PRIZE] = ItemLocation::Base (RC_MARKET_BOMBCHU_BOWLING_SECOND_PRIZE, 0x4B, 0x3E, "MK Bombchu Bowling Second Prize", MARKET_BOMBCHU_BOWLING_SECOND_PRIZE, PIECE_OF_HEART, {Category::cInnerMarket, Category::cMarket, Category::cMinigame}, SpoilerCollectionCheck::ItemGetInf(26), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_BOMBCHU_BOWLING_BOMBCHUS] = ItemLocation::Base (RC_MARKET_BOMBCHU_BOWLING_BOMBCHUS, 0x4B, 0xFF, "MK Bombchu Bowling Bombchus", NONE, BOMBCHU_DROP, {Category::cInnerMarket, Category::cMarket, Category::cMinigame}, SpoilerCollectionCheck::None(), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_LOST_DOG] = ItemLocation::Base (RC_MARKET_LOST_DOG, 0x35, 0x3E, "MK Lost Dog", MARKET_LOST_DOG, PIECE_OF_HEART, {Category::cInnerMarket, Category::cMarket,}, SpoilerCollectionCheck::InfTable(0x19, 0x09), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_SHOOTING_GALLERY_REWARD] = ItemLocation::Base (RC_MARKET_SHOOTING_GALLERY_REWARD, 0x42, 0x60, "MK Shooting Gallery", MARKET_SHOOTING_GALLERY_REWARD, PROGRESSIVE_SLINGSHOT, {Category::cInnerMarket, Category::cMarket, Category::cMinigame}, SpoilerCollectionCheck::ItemGetInf(5), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_10_BIG_POES] = ItemLocation::Base (RC_MARKET_10_BIG_POES, 0x4D, 0x0F, "MK 10 Big Poes", MARKET_10_BIG_POES, EMPTY_BOTTLE, {Category::cInnerMarket, Category::cMarket,}, SpoilerCollectionCheck::BigPoePoints(), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_TREASURE_CHEST_GAME_ITEM_1] = ItemLocation::Chest (RC_MARKET_TREASURE_CHEST_GAME_ITEM_1, 0x10, 0x01, "MK Chest Game First Room Chest", MARKET_TREASURE_CHEST_GAME_ITEM_1, TREASURE_GAME_SMALL_KEY, {Category::cInnerMarket, Category::cMarket, Category::cMinigame, Category::cChestMinigame}, SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_TREASURE_CHEST_GAME_ITEM_2] = ItemLocation::Chest (RC_MARKET_TREASURE_CHEST_GAME_ITEM_2, 0x10, 0x03, "MK Chest Game Second Room Chest", MARKET_TREASURE_CHEST_GAME_ITEM_2, TREASURE_GAME_SMALL_KEY, {Category::cInnerMarket, Category::cMarket, Category::cMinigame, Category::cChestMinigame}, SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_TREASURE_CHEST_GAME_ITEM_3] = ItemLocation::Chest (RC_MARKET_TREASURE_CHEST_GAME_ITEM_3, 0x10, 0x05, "MK Chest Game Third Room Chest", MARKET_TREASURE_CHEST_GAME_ITEM_3, TREASURE_GAME_SMALL_KEY, {Category::cInnerMarket, Category::cMarket, Category::cMinigame, Category::cChestMinigame}, SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_TREASURE_CHEST_GAME_ITEM_4] = ItemLocation::Chest (RC_MARKET_TREASURE_CHEST_GAME_ITEM_4, 0x10, 0x07, "MK Chest Game Fourth Room Chest", MARKET_TREASURE_CHEST_GAME_ITEM_4, TREASURE_GAME_SMALL_KEY, {Category::cInnerMarket, Category::cMarket, Category::cMinigame, Category::cChestMinigame}, SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_TREASURE_CHEST_GAME_ITEM_5] = ItemLocation::Chest (RC_MARKET_TREASURE_CHEST_GAME_ITEM_5, 0x10, 0x09, "MK Chest Game Fifth Room Chest", MARKET_TREASURE_CHEST_GAME_ITEM_5, TREASURE_GAME_SMALL_KEY, {Category::cInnerMarket, Category::cMarket, Category::cMinigame, Category::cChestMinigame}, SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); //Hyrule Castle - locationTable[HC_MALON_EGG] = ItemLocation::Base (0x5F, 0x47, "HC Malon Egg", HC_MALON_EGG, WEIRD_EGG, {Category::cHyruleCastle, Category::cMarket,}, SpoilerCollectionCheck::EventChkInf(0x12), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[HC_ZELDAS_LETTER] = ItemLocation::Base (0x4A, 0x0B, "HC Zeldas Letter", HC_ZELDAS_LETTER, ZELDAS_LETTER, {Category::cHyruleCastle, Category::cMarket,}, SpoilerCollectionCheck::EventChkInf(0x40), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[HC_MALON_EGG] = ItemLocation::Base (RC_HC_MALON_EGG, 0x5F, 0x47, "HC Malon Egg", HC_MALON_EGG, WEIRD_EGG, {Category::cHyruleCastle, Category::cMarket,}, SpoilerCollectionCheck::EventChkInf(0x12), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[HC_ZELDAS_LETTER] = ItemLocation::Base (RC_HC_ZELDAS_LETTER, 0x4A, 0x0B, "HC Zeldas Letter", HC_ZELDAS_LETTER, ZELDAS_LETTER, {Category::cHyruleCastle, Category::cMarket,}, SpoilerCollectionCheck::EventChkInf(0x40), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); //Kakariko - locationTable[KAK_REDEAD_GROTTO_CHEST] = ItemLocation::Chest (0x3E, 0x0A, "Kak Redead Grotto Chest", KAK_REDEAD_GROTTO_CHEST, HUGE_RUPEE, {Category::cKakarikoVillage, Category::cKakariko, Category::cGrotto}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_OPEN_GROTTO_CHEST] = ItemLocation::Chest (0x3E, 0x08, "Kak Open Grotto Chest", KAK_OPEN_GROTTO_CHEST, RED_RUPEE, {Category::cKakarikoVillage, Category::cKakariko, Category::cGrotto}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_10_GOLD_SKULLTULA_REWARD] = ItemLocation::Base (0x50, 0x45, "Kak 10 Gold Skulltula Reward", KAK_10_GOLD_SKULLTULA_REWARD, PROGRESSIVE_WALLET, {Category::cKakarikoVillage, Category::cKakariko, Category::cSkulltulaHouse}, SpoilerCollectionCheck::EventChkInf(0xDA), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_20_GOLD_SKULLTULA_REWARD] = ItemLocation::Base (0x50, 0x39, "Kak 20 Gold Skulltula Reward", KAK_20_GOLD_SKULLTULA_REWARD, STONE_OF_AGONY, {Category::cKakarikoVillage, Category::cKakariko, Category::cSkulltulaHouse}, SpoilerCollectionCheck::EventChkInf(0xDB), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_30_GOLD_SKULLTULA_REWARD] = ItemLocation::Base (0x50, 0x46, "Kak 30 Gold Skulltula Reward", KAK_30_GOLD_SKULLTULA_REWARD, PROGRESSIVE_WALLET, {Category::cKakarikoVillage, Category::cKakariko, Category::cSkulltulaHouse}, SpoilerCollectionCheck::EventChkInf(0xDC), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_40_GOLD_SKULLTULA_REWARD] = ItemLocation::Base (0x50, 0x03, "Kak 40 Gold Skulltula Reward", KAK_40_GOLD_SKULLTULA_REWARD, BOMBCHU_10, {Category::cKakarikoVillage, Category::cKakariko, Category::cSkulltulaHouse}, SpoilerCollectionCheck::EventChkInf(0xDD), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_50_GOLD_SKULLTULA_REWARD] = ItemLocation::Base (0x50, 0x3E, "Kak 50 Gold Skulltula Reward", KAK_50_GOLD_SKULLTULA_REWARD, PIECE_OF_HEART, {Category::cKakarikoVillage, Category::cKakariko, Category::cSkulltulaHouse}, SpoilerCollectionCheck::EventChkInf(0xDE), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_MAN_ON_ROOF] = ItemLocation::Base (0x52, 0x3E, "Kak Man on Roof", KAK_MAN_ON_ROOF, PIECE_OF_HEART, {Category::cKakarikoVillage, Category::cKakariko,}, SpoilerCollectionCheck::ItemGetInf(29), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_SHOOTING_GALLERY_REWARD] = ItemLocation::Base (0x42, 0x30, "Kak Shooting Gallery Reward", KAK_SHOOTING_GALLERY_REWARD, PROGRESSIVE_BOW, {Category::cKakarikoVillage, Category::cKakariko, Category::cMinigame}, SpoilerCollectionCheck::ItemGetInf(6), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_TRADE_ODD_MUSHROOM] = ItemLocation::Base (0x4E, 0x20, "Kak Trade Odd Mushroom", KAK_TRADE_ODD_MUSHROOM, ODD_POTION, {Category::cKakarikoVillage, Category::cKakariko, Category::cAdultTrade}, SpoilerCollectionCheck::ItemGetInf(56), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_ANJU_AS_ADULT] = ItemLocation::Base (0x52, 0x1D, "Kak Anju as Adult", KAK_ANJU_AS_ADULT, CLAIM_CHECK, {Category::cKakarikoVillage, Category::cKakariko,}, SpoilerCollectionCheck::ItemGetInf(36), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_ANJU_AS_CHILD] = ItemLocation::Base (0x52, 0x0F, "Kak Anju as Child", KAK_ANJU_AS_CHILD, EMPTY_BOTTLE, {Category::cKakarikoVillage, Category::cKakariko, Category::cMinigame}, SpoilerCollectionCheck::ItemGetInf(4), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_TRADE_POCKET_CUCCO] = ItemLocation::Base (0x52, 0x0E, "Kak Trade Pocket Cucco", KAK_TRADE_POCKET_CUCCO, COJIRO, {Category::cKakarikoVillage, Category::cKakariko, Category::cAdultTrade}, SpoilerCollectionCheck::ItemGetInf(38), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_IMPAS_HOUSE_FREESTANDING_POH] = ItemLocation::Collectable(0x37, 0x01, "Kak Impas House Freestanding PoH", KAK_IMPAS_HOUSE_FREESTANDING_POH, PIECE_OF_HEART, {Category::cKakarikoVillage, Category::cKakariko,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_WINDMILL_FREESTANDING_POH] = ItemLocation::Collectable(0x48, 0x01, "Kak Windmill Freestanding PoH", KAK_WINDMILL_FREESTANDING_POH, PIECE_OF_HEART, {Category::cKakarikoVillage, Category::cKakariko,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_REDEAD_GROTTO_CHEST] = ItemLocation::Chest (RC_KAK_REDEAD_GROTTO_CHEST, 0x3E, 0x0A, "Kak Redead Grotto Chest", KAK_REDEAD_GROTTO_CHEST, HUGE_RUPEE, {Category::cKakarikoVillage, Category::cKakariko, Category::cGrotto}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_OPEN_GROTTO_CHEST] = ItemLocation::Chest (RC_KAK_OPEN_GROTTO_CHEST, 0x3E, 0x08, "Kak Open Grotto Chest", KAK_OPEN_GROTTO_CHEST, RED_RUPEE, {Category::cKakarikoVillage, Category::cKakariko, Category::cGrotto}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_10_GOLD_SKULLTULA_REWARD] = ItemLocation::Base (RC_KAK_10_GOLD_SKULLTULA_REWARD, 0x50, 0x45, "Kak 10 Gold Skulltula Reward", KAK_10_GOLD_SKULLTULA_REWARD, PROGRESSIVE_WALLET, {Category::cKakarikoVillage, Category::cKakariko, Category::cSkulltulaHouse}, SpoilerCollectionCheck::EventChkInf(0xDA), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_20_GOLD_SKULLTULA_REWARD] = ItemLocation::Base (RC_KAK_20_GOLD_SKULLTULA_REWARD, 0x50, 0x39, "Kak 20 Gold Skulltula Reward", KAK_20_GOLD_SKULLTULA_REWARD, STONE_OF_AGONY, {Category::cKakarikoVillage, Category::cKakariko, Category::cSkulltulaHouse}, SpoilerCollectionCheck::EventChkInf(0xDB), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_30_GOLD_SKULLTULA_REWARD] = ItemLocation::Base (RC_KAK_30_GOLD_SKULLTULA_REWARD, 0x50, 0x46, "Kak 30 Gold Skulltula Reward", KAK_30_GOLD_SKULLTULA_REWARD, PROGRESSIVE_WALLET, {Category::cKakarikoVillage, Category::cKakariko, Category::cSkulltulaHouse}, SpoilerCollectionCheck::EventChkInf(0xDC), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_40_GOLD_SKULLTULA_REWARD] = ItemLocation::Base (RC_KAK_40_GOLD_SKULLTULA_REWARD, 0x50, 0x03, "Kak 40 Gold Skulltula Reward", KAK_40_GOLD_SKULLTULA_REWARD, BOMBCHU_10, {Category::cKakarikoVillage, Category::cKakariko, Category::cSkulltulaHouse}, SpoilerCollectionCheck::EventChkInf(0xDD), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_50_GOLD_SKULLTULA_REWARD] = ItemLocation::Base (RC_KAK_50_GOLD_SKULLTULA_REWARD, 0x50, 0x3E, "Kak 50 Gold Skulltula Reward", KAK_50_GOLD_SKULLTULA_REWARD, PIECE_OF_HEART, {Category::cKakarikoVillage, Category::cKakariko, Category::cSkulltulaHouse}, SpoilerCollectionCheck::EventChkInf(0xDE), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_MAN_ON_ROOF] = ItemLocation::Base (RC_KAK_MAN_ON_ROOF, 0x52, 0x3E, "Kak Man on Roof", KAK_MAN_ON_ROOF, PIECE_OF_HEART, {Category::cKakarikoVillage, Category::cKakariko,}, SpoilerCollectionCheck::ItemGetInf(29), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_SHOOTING_GALLERY_REWARD] = ItemLocation::Base (RC_KAK_SHOOTING_GALLERY_REWARD, 0x42, 0x30, "Kak Shooting Gallery Reward", KAK_SHOOTING_GALLERY_REWARD, PROGRESSIVE_BOW, {Category::cKakarikoVillage, Category::cKakariko, Category::cMinigame}, SpoilerCollectionCheck::ItemGetInf(6), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_TRADE_ODD_MUSHROOM] = ItemLocation::Base (RC_KAK_TRADE_ODD_MUSHROOM, 0x4E, 0x20, "Kak Trade Odd Mushroom", KAK_TRADE_ODD_MUSHROOM, ODD_POTION, {Category::cKakarikoVillage, Category::cKakariko, Category::cAdultTrade}, SpoilerCollectionCheck::ItemGetInf(56), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_ANJU_AS_ADULT] = ItemLocation::Base (RC_KAK_ANJU_AS_ADULT, 0x52, 0x1D, "Kak Anju as Adult", KAK_ANJU_AS_ADULT, CLAIM_CHECK, {Category::cKakarikoVillage, Category::cKakariko,}, SpoilerCollectionCheck::ItemGetInf(36), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_ANJU_AS_CHILD] = ItemLocation::Base (RC_KAK_ANJU_AS_CHILD, 0x52, 0x0F, "Kak Anju as Child", KAK_ANJU_AS_CHILD, EMPTY_BOTTLE, {Category::cKakarikoVillage, Category::cKakariko, Category::cMinigame}, SpoilerCollectionCheck::ItemGetInf(4), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_TRADE_POCKET_CUCCO] = ItemLocation::Base (RC_KAK_TRADE_POCKET_CUCCO, 0x52, 0x0E, "Kak Trade Pocket Cucco", KAK_TRADE_POCKET_CUCCO, COJIRO, {Category::cKakarikoVillage, Category::cKakariko, Category::cAdultTrade}, SpoilerCollectionCheck::ItemGetInf(38), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_IMPAS_HOUSE_FREESTANDING_POH] = ItemLocation::Collectable(RC_KAK_IMPAS_HOUSE_FREESTANDING_POH, 0x37, 0x01, "Kak Impas House Freestanding PoH", KAK_IMPAS_HOUSE_FREESTANDING_POH, PIECE_OF_HEART, {Category::cKakarikoVillage, Category::cKakariko,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_WINDMILL_FREESTANDING_POH] = ItemLocation::Collectable(RC_KAK_WINDMILL_FREESTANDING_POH, 0x48, 0x01, "Kak Windmill Freestanding PoH", KAK_WINDMILL_FREESTANDING_POH, PIECE_OF_HEART, {Category::cKakarikoVillage, Category::cKakariko,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); //Graveyard - locationTable[GRAVEYARD_SHIELD_GRAVE_CHEST] = ItemLocation::Chest (0x40, 0x00, "GY Shield Grave Chest", GRAVEYARD_SHIELD_GRAVE_CHEST, HYLIAN_SHIELD, {Category::cGraveyard, Category::cKakariko,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[GRAVEYARD_HEART_PIECE_GRAVE_CHEST] = ItemLocation::Chest (0x3F, 0x00, "GY Heart Piece Grave Chest", GRAVEYARD_HEART_PIECE_GRAVE_CHEST, PIECE_OF_HEART, {Category::cGraveyard, Category::cKakariko,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[GRAVEYARD_COMPOSERS_GRAVE_CHEST] = ItemLocation::Chest (0x41, 0x00, "GY Composers Grave Chest", GRAVEYARD_COMPOSERS_GRAVE_CHEST, BOMBS_5, {Category::cGraveyard, Category::cKakariko,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[GRAVEYARD_HOOKSHOT_CHEST] = ItemLocation::Chest (0x48, 0x00, "GY Hookshot Chest", GRAVEYARD_HOOKSHOT_CHEST, PROGRESSIVE_HOOKSHOT, {Category::cGraveyard, Category::cKakariko,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[GRAVEYARD_DAMPE_RACE_FREESTANDING_POH] = ItemLocation::Collectable(0x48, 0x07, "GY Dampe Race Freestanding PoH", GRAVEYARD_DAMPE_RACE_FREESTANDING_POH, PIECE_OF_HEART, {Category::cGraveyard, Category::cKakariko, Category::cMinigame}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[GRAVEYARD_FREESTANDING_POH] = ItemLocation::Collectable(0x53, 0x04, "GY Freestanding PoH", GRAVEYARD_FREESTANDING_POH, PIECE_OF_HEART, {Category::cGraveyard, Category::cKakariko,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[GRAVEYARD_DAMPE_GRAVEDIGGING_TOUR] = ItemLocation::Collectable(0x53, 0x08, "GY Dampe Gravedigging Tour", GRAVEYARD_DAMPE_GRAVEDIGGING_TOUR, PIECE_OF_HEART, {Category::cGraveyard, Category::cKakariko,}, SpoilerCollectionCheck::ItemGetInf(20), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[GRAVEYARD_SHIELD_GRAVE_CHEST] = ItemLocation::Chest (RC_GRAVEYARD_SHIELD_GRAVE_CHEST, 0x40, 0x00, "GY Shield Grave Chest", GRAVEYARD_SHIELD_GRAVE_CHEST, HYLIAN_SHIELD, {Category::cGraveyard, Category::cKakariko,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[GRAVEYARD_HEART_PIECE_GRAVE_CHEST] = ItemLocation::Chest (RC_GRAVEYARD_HEART_PIECE_GRAVE_CHEST, 0x3F, 0x00, "GY Heart Piece Grave Chest", GRAVEYARD_HEART_PIECE_GRAVE_CHEST, PIECE_OF_HEART, {Category::cGraveyard, Category::cKakariko,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[GRAVEYARD_COMPOSERS_GRAVE_CHEST] = ItemLocation::Chest (RC_GRAVEYARD_ROYAL_FAMILYS_TOMB_CHEST, 0x41, 0x00, "GY Composers Grave Chest", GRAVEYARD_COMPOSERS_GRAVE_CHEST, BOMBS_5, {Category::cGraveyard, Category::cKakariko,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[GRAVEYARD_HOOKSHOT_CHEST] = ItemLocation::Chest (RC_GRAVEYARD_HOOKSHOT_CHEST, 0x48, 0x00, "GY Hookshot Chest", GRAVEYARD_HOOKSHOT_CHEST, PROGRESSIVE_HOOKSHOT, {Category::cGraveyard, Category::cKakariko,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[GRAVEYARD_DAMPE_RACE_FREESTANDING_POH] = ItemLocation::Collectable(RC_GRAVEYARD_DAMPE_RACE_FREESTANDING_POH, 0x48, 0x07, "GY Dampe Race Freestanding PoH", GRAVEYARD_DAMPE_RACE_FREESTANDING_POH, PIECE_OF_HEART, {Category::cGraveyard, Category::cKakariko, Category::cMinigame}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[GRAVEYARD_FREESTANDING_POH] = ItemLocation::Collectable(RC_GRAVEYARD_FREESTANDING_POH, 0x53, 0x04, "GY Freestanding PoH", GRAVEYARD_FREESTANDING_POH, PIECE_OF_HEART, {Category::cGraveyard, Category::cKakariko,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[GRAVEYARD_DAMPE_GRAVEDIGGING_TOUR] = ItemLocation::Collectable(RC_GRAVEYARD_DAMPE_GRAVEDIGGING_TOUR, 0x53, 0x08, "GY Dampe Gravedigging Tour", GRAVEYARD_DAMPE_GRAVEDIGGING_TOUR, PIECE_OF_HEART, {Category::cGraveyard, Category::cKakariko,}, SpoilerCollectionCheck::ItemGetInf(20), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); //Death Mountain - locationTable[DMT_CHEST] = ItemLocation::Chest (0x60, 0x01, "DMT Chest", DMT_CHEST, PURPLE_RUPEE, {Category::cDeathMountainTrail, Category::cDeathMountain,}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); - locationTable[DMT_STORMS_GROTTO_CHEST] = ItemLocation::Chest (0x3E, 0x17, "DMT Storms Grotto Chest", DMT_STORMS_GROTTO_CHEST, HUGE_RUPEE, {Category::cDeathMountainTrail, Category::cDeathMountain, Category::cGrotto}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); - locationTable[DMT_TRADE_BROKEN_SWORD] = ItemLocation::Base (0x60, 0x23, "DMT Trade Broken Sword", DMT_TRADE_BROKEN_SWORD, PRESCRIPTION, {Category::cDeathMountainTrail, Category::cDeathMountain, Category::cAdultTrade}, SpoilerCollectionCheck::Biggoron(0x4), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); - locationTable[DMT_TRADE_EYEDROPS] = ItemLocation::Base (0x60, 0x26, "DMT Trade Eyedrops", DMT_TRADE_EYEDROPS, CLAIM_CHECK, {Category::cDeathMountainTrail, Category::cDeathMountain, Category::cAdultTrade}, SpoilerCollectionCheck::Biggoron(0x2), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); - locationTable[DMT_TRADE_CLAIM_CHECK] = ItemLocation::Base (0x60, 0x57, "DMT Trade Claim Check", DMT_TRADE_CLAIM_CHECK, BIGGORON_SWORD, {Category::cDeathMountainTrail, Category::cDeathMountain}, SpoilerCollectionCheck::Biggoron(0x1), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); - locationTable[DMT_FREESTANDING_POH] = ItemLocation::Collectable(0x60, 0x1E, "DMT Freestanding PoH", DMT_FREESTANDING_POH, PIECE_OF_HEART, {Category::cDeathMountainTrail, Category::cDeathMountain,}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[DMT_CHEST] = ItemLocation::Chest (RC_DMT_CHEST, 0x60, 0x01, "DMT Chest", DMT_CHEST, PURPLE_RUPEE, {Category::cDeathMountainTrail, Category::cDeathMountain,}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[DMT_STORMS_GROTTO_CHEST] = ItemLocation::Chest (RC_DMT_STORMS_GROTTO_CHEST, 0x3E, 0x17, "DMT Storms Grotto Chest", DMT_STORMS_GROTTO_CHEST, HUGE_RUPEE, {Category::cDeathMountainTrail, Category::cDeathMountain, Category::cGrotto}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[DMT_TRADE_BROKEN_SWORD] = ItemLocation::Base (RC_DMT_TRADE_BROKEN_SWORD, 0x60, 0x23, "DMT Trade Broken Sword", DMT_TRADE_BROKEN_SWORD, PRESCRIPTION, {Category::cDeathMountainTrail, Category::cDeathMountain, Category::cAdultTrade}, SpoilerCollectionCheck::Biggoron(0x4), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[DMT_TRADE_EYEDROPS] = ItemLocation::Base (RC_DMT_TRADE_EYEDROPS, 0x60, 0x26, "DMT Trade Eyedrops", DMT_TRADE_EYEDROPS, CLAIM_CHECK, {Category::cDeathMountainTrail, Category::cDeathMountain, Category::cAdultTrade}, SpoilerCollectionCheck::Biggoron(0x2), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[DMT_TRADE_CLAIM_CHECK] = ItemLocation::Base (RC_DMT_TRADE_CLAIM_CHECK, 0x60, 0x57, "DMT Trade Claim Check", DMT_TRADE_CLAIM_CHECK, BIGGORON_SWORD, {Category::cDeathMountainTrail, Category::cDeathMountain}, SpoilerCollectionCheck::Biggoron(0x1), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[DMT_FREESTANDING_POH] = ItemLocation::Collectable(RC_DMT_FREESTANDING_POH, 0x60, 0x1E, "DMT Freestanding PoH", DMT_FREESTANDING_POH, PIECE_OF_HEART, {Category::cDeathMountainTrail, Category::cDeathMountain,}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); //Goron City - locationTable[GC_MAZE_LEFT_CHEST] = ItemLocation::Chest (0x62, 0x00, "GC Maze Left Chest", GC_MAZE_LEFT_CHEST, HUGE_RUPEE, {Category::cGoronCity,}, SpoilerCollectionCheckGroup::GROUP_GORON_CITY); - locationTable[GC_MAZE_RIGHT_CHEST] = ItemLocation::Chest (0x62, 0x01, "GC Maze Right Chest", GC_MAZE_RIGHT_CHEST, PURPLE_RUPEE, {Category::cGoronCity,}, SpoilerCollectionCheckGroup::GROUP_GORON_CITY); - locationTable[GC_MAZE_CENTER_CHEST] = ItemLocation::Chest (0x62, 0x02, "GC Maze Center Chest", GC_MAZE_CENTER_CHEST, PURPLE_RUPEE, {Category::cGoronCity,}, SpoilerCollectionCheckGroup::GROUP_GORON_CITY); - locationTable[GC_ROLLING_GORON_AS_CHILD] = ItemLocation::Base (0x62, 0x34, "GC Rolling Goron as Child", GC_ROLLING_GORON_AS_CHILD, PROGRESSIVE_BOMB_BAG, {Category::cGoronCity,}, SpoilerCollectionCheck::InfTable(0x11, 0x06), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); - locationTable[GC_ROLLING_GORON_AS_ADULT] = ItemLocation::Base (0x62, 0x2C, "GC Rolling Goron as Adult", GC_ROLLING_GORON_AS_ADULT, GORON_TUNIC, {Category::cGoronCity,}, SpoilerCollectionCheck::InfTable(0x10, 0x01), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); - locationTable[GC_DARUNIAS_JOY] = ItemLocation::Base (0x62, 0x54, "GC Darunias Joy", GC_DARUNIAS_JOY, PROGRESSIVE_STRENGTH, {Category::cGoronCity,}, SpoilerCollectionCheck::EventChkInf(0x36), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); - locationTable[GC_POT_FREESTANDING_POH] = ItemLocation::Collectable(0x62, 0x1F, "GC Pot Freestanding PoH", GC_POT_FREESTANDING_POH, PIECE_OF_HEART, {Category::cGoronCity,}, SpoilerCollectionCheckGroup::GROUP_GORON_CITY); - locationTable[GC_DEKU_SCRUB_GROTTO_LEFT] = ItemLocation::GrottoScrub(0xFB, 0x30, "GC Deku Scrub Grotto Left", GC_DEKU_SCRUB_GROTTO_LEFT, BUY_DEKU_NUT_5, {Category::cGoronCity, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x25, 0x01), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); - locationTable[GC_DEKU_SCRUB_GROTTO_RIGHT] = ItemLocation::GrottoScrub(0xFB, 0x37, "GC Deku Scrub Grotto Right", GC_DEKU_SCRUB_GROTTO_RIGHT, BUY_BOMBS_535, {Category::cGoronCity, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x25, 0x06), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); - locationTable[GC_DEKU_SCRUB_GROTTO_CENTER] = ItemLocation::GrottoScrub(0xFB, 0x33, "GC Deku Scrub Grotto Center", GC_DEKU_SCRUB_GROTTO_CENTER, BUY_ARROWS_30, {Category::cGoronCity, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x25, 0x04), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); - locationTable[GC_MEDIGORON] = ItemLocation::Base (0x62, 0x51, "GC Medigoron", GC_MEDIGORON, GIANTS_KNIFE, {Category::cGoronCity, Category::cMerchant,}, SpoilerCollectionCheck::EventChkInf(0x35), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); + locationTable[GC_MAZE_LEFT_CHEST] = ItemLocation::Chest (RC_GC_MAZE_LEFT_CHEST, 0x62, 0x00, "GC Maze Left Chest", GC_MAZE_LEFT_CHEST, HUGE_RUPEE, {Category::cGoronCity,}, SpoilerCollectionCheckGroup::GROUP_GORON_CITY); + locationTable[GC_MAZE_RIGHT_CHEST] = ItemLocation::Chest (RC_GC_MAZE_RIGHT_CHEST, 0x62, 0x01, "GC Maze Right Chest", GC_MAZE_RIGHT_CHEST, PURPLE_RUPEE, {Category::cGoronCity,}, SpoilerCollectionCheckGroup::GROUP_GORON_CITY); + locationTable[GC_MAZE_CENTER_CHEST] = ItemLocation::Chest (RC_GC_MAZE_CENTER_CHEST, 0x62, 0x02, "GC Maze Center Chest", GC_MAZE_CENTER_CHEST, PURPLE_RUPEE, {Category::cGoronCity,}, SpoilerCollectionCheckGroup::GROUP_GORON_CITY); + locationTable[GC_ROLLING_GORON_AS_CHILD] = ItemLocation::Base (RC_GC_ROLLING_GORON_AS_CHILD, 0x62, 0x34, "GC Rolling Goron as Child", GC_ROLLING_GORON_AS_CHILD, PROGRESSIVE_BOMB_BAG, {Category::cGoronCity,}, SpoilerCollectionCheck::InfTable(0x11, 0x06), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); + locationTable[GC_ROLLING_GORON_AS_ADULT] = ItemLocation::Base (RC_GC_ROLLING_GORON_AS_ADULT, 0x62, 0x2C, "GC Rolling Goron as Adult", GC_ROLLING_GORON_AS_ADULT, GORON_TUNIC, {Category::cGoronCity,}, SpoilerCollectionCheck::InfTable(0x10, 0x01), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); + locationTable[GC_DARUNIAS_JOY] = ItemLocation::Base (RC_GC_DARUNIAS_JOY, 0x62, 0x54, "GC Darunias Joy", GC_DARUNIAS_JOY, PROGRESSIVE_STRENGTH, {Category::cGoronCity,}, SpoilerCollectionCheck::EventChkInf(0x36), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); + locationTable[GC_POT_FREESTANDING_POH] = ItemLocation::Collectable(RC_GC_POT_FREESTANDING_POH, 0x62, 0x1F, "GC Pot Freestanding PoH", GC_POT_FREESTANDING_POH, PIECE_OF_HEART, {Category::cGoronCity,}, SpoilerCollectionCheckGroup::GROUP_GORON_CITY); + locationTable[GC_DEKU_SCRUB_GROTTO_LEFT] = ItemLocation::GrottoScrub(RC_GC_DEKU_SCRUB_GROTTO_LEFT, 0xFB, 0x30, "GC Deku Scrub Grotto Left", GC_DEKU_SCRUB_GROTTO_LEFT, BUY_DEKU_NUT_5, {Category::cGoronCity, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x25, 0x01), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); + locationTable[GC_DEKU_SCRUB_GROTTO_RIGHT] = ItemLocation::GrottoScrub(RC_GC_DEKU_SCRUB_GROTTO_RIGHT, 0xFB, 0x37, "GC Deku Scrub Grotto Right", GC_DEKU_SCRUB_GROTTO_RIGHT, BUY_BOMBS_535, {Category::cGoronCity, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x25, 0x06), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); + locationTable[GC_DEKU_SCRUB_GROTTO_CENTER] = ItemLocation::GrottoScrub(RC_GC_DEKU_SCRUB_GROTTO_CENTER, 0xFB, 0x33, "GC Deku Scrub Grotto Center", GC_DEKU_SCRUB_GROTTO_CENTER, BUY_ARROWS_30, {Category::cGoronCity, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x25, 0x04), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); + locationTable[GC_MEDIGORON] = ItemLocation::Base (RC_GC_MEDIGORON, 0x62, 0x51, "GC Medigoron", GC_MEDIGORON, GIANTS_KNIFE, {Category::cGoronCity, Category::cMerchant,}, SpoilerCollectionCheck::EventChkInf(0x35), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); //Death Mountain Crater - locationTable[DMC_UPPER_GROTTO_CHEST] = ItemLocation::Chest (0x3E, 0x1A, "DMC Upper Grotto Chest", DMC_UPPER_GROTTO_CHEST, BOMBS_20, {Category::cDeathMountainCrater, Category::cDeathMountain, Category::cGrotto}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); - locationTable[DMC_WALL_FREESTANDING_POH] = ItemLocation::Collectable(0x61, 0x02, "DMC Wall Freestanding PoH", DMC_WALL_FREESTANDING_POH, PIECE_OF_HEART, {Category::cDeathMountainCrater, Category::cDeathMountain,}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); - locationTable[DMC_VOLCANO_FREESTANDING_POH] = ItemLocation::Collectable(0x61, 0x08, "DMC Volcano Freestanding PoH", DMC_VOLCANO_FREESTANDING_POH, PIECE_OF_HEART, {Category::cDeathMountainCrater, Category::cDeathMountain,}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); - locationTable[DMC_DEKU_SCRUB] = ItemLocation::Base (0x61, 0x37, "DMC Deku Scrub", DMC_DEKU_SCRUB, BUY_BOMBS_535, {Category::cDeathMountainCrater, Category::cDeathMountain, Category::cDekuScrub}, SpoilerCollectionCheck::Scrub(0x61, 0x06), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); - locationTable[DMC_DEKU_SCRUB_GROTTO_LEFT] = ItemLocation::GrottoScrub(0xF9, 0x30, "DMC Deku Scrub Grotto Left", DMC_DEKU_SCRUB_GROTTO_LEFT, BUY_DEKU_NUT_5, {Category::cDeathMountainCrater, Category::cDeathMountain, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x23, 0x01), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); - locationTable[DMC_DEKU_SCRUB_GROTTO_RIGHT] = ItemLocation::GrottoScrub(0xF9, 0x37, "DMC Deku Scrub Grotto Right", DMC_DEKU_SCRUB_GROTTO_RIGHT, BUY_BOMBS_535, {Category::cDeathMountainCrater, Category::cDeathMountain, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x23, 0x06), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); - locationTable[DMC_DEKU_SCRUB_GROTTO_CENTER] = ItemLocation::GrottoScrub(0xF9, 0x33, "DMC Deku Scrub Grotto Center", DMC_DEKU_SCRUB_GROTTO_CENTER, BUY_ARROWS_30, {Category::cDeathMountainCrater, Category::cDeathMountain, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x23, 0x04), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[DMC_UPPER_GROTTO_CHEST] = ItemLocation::Chest (RC_DMC_UPPER_GROTTO_CHEST, 0x3E, 0x1A, "DMC Upper Grotto Chest", DMC_UPPER_GROTTO_CHEST, BOMBS_20, {Category::cDeathMountainCrater, Category::cDeathMountain, Category::cGrotto}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[DMC_WALL_FREESTANDING_POH] = ItemLocation::Collectable(RC_DMC_WALL_FREESTANDING_POH, 0x61, 0x02, "DMC Wall Freestanding PoH", DMC_WALL_FREESTANDING_POH, PIECE_OF_HEART, {Category::cDeathMountainCrater, Category::cDeathMountain,}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[DMC_VOLCANO_FREESTANDING_POH] = ItemLocation::Collectable(RC_DMC_VOLCANO_FREESTANDING_POH, 0x61, 0x08, "DMC Volcano Freestanding PoH", DMC_VOLCANO_FREESTANDING_POH, PIECE_OF_HEART, {Category::cDeathMountainCrater, Category::cDeathMountain,}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[DMC_DEKU_SCRUB] = ItemLocation::Base (RC_DMC_DEKU_SCRUB, 0x61, 0x37, "DMC Deku Scrub", DMC_DEKU_SCRUB, BUY_BOMBS_535, {Category::cDeathMountainCrater, Category::cDeathMountain, Category::cDekuScrub}, SpoilerCollectionCheck::Scrub(0x61, 0x06), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[DMC_DEKU_SCRUB_GROTTO_LEFT] = ItemLocation::GrottoScrub(RC_DMC_DEKU_SCRUB_GROTTO_LEFT, 0xF9, 0x30, "DMC Deku Scrub Grotto Left", DMC_DEKU_SCRUB_GROTTO_LEFT, BUY_DEKU_NUT_5, {Category::cDeathMountainCrater, Category::cDeathMountain, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x23, 0x01), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[DMC_DEKU_SCRUB_GROTTO_RIGHT] = ItemLocation::GrottoScrub(RC_DMC_DEKU_SCRUB_GROTTO_RIGHT, 0xF9, 0x37, "DMC Deku Scrub Grotto Right", DMC_DEKU_SCRUB_GROTTO_RIGHT, BUY_BOMBS_535, {Category::cDeathMountainCrater, Category::cDeathMountain, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x23, 0x06), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[DMC_DEKU_SCRUB_GROTTO_CENTER] = ItemLocation::GrottoScrub(RC_DMC_DEKU_SCRUB_GROTTO_CENTER, 0xF9, 0x33, "DMC Deku Scrub Grotto Center", DMC_DEKU_SCRUB_GROTTO_CENTER, BUY_ARROWS_30, {Category::cDeathMountainCrater, Category::cDeathMountain, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x23, 0x04), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); //Zoras River - locationTable[ZR_OPEN_GROTTO_CHEST] = ItemLocation::Chest (0x3E, 0x09, "ZR Open Grotto Chest", ZR_OPEN_GROTTO_CHEST, RED_RUPEE, {Category::cZorasRiver, Category::cGrotto,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); - locationTable[ZR_MAGIC_BEAN_SALESMAN] = ItemLocation::Base (0x54, 0x16, "ZR Magic Bean Salesman", ZR_MAGIC_BEAN_SALESMAN, MAGIC_BEAN, {Category::cZorasRiver,}, SpoilerCollectionCheck::MagicBeans(0x54, 0x01), SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); - locationTable[ZR_FROGS_ZELDAS_LULLABY] = ItemLocation::Base (0x54, 0x3E, "ZR Frogs Zelda's Lullaby", ZR_FROGS_ZELDAS_LULLABY, PURPLE_RUPEE, {Category::cZorasRiver,}, SpoilerCollectionCheck::EventChkInf(0xD6), SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); - locationTable[ZR_FROGS_EPONAS_SONG] = ItemLocation::Base (0x54, 0x3E, "ZR Frogs Epona's Song", ZR_FROGS_EPONAS_SONG, PURPLE_RUPEE, {Category::cZorasRiver,}, SpoilerCollectionCheck::EventChkInf(0xD6), SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); - locationTable[ZR_FROGS_SARIAS_SONG] = ItemLocation::Base (0x54, 0x3E, "ZR Frogs Saria's Song", ZR_FROGS_SARIAS_SONG, PURPLE_RUPEE, {Category::cZorasRiver,}, SpoilerCollectionCheck::EventChkInf(0xD6), SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); - locationTable[ZR_FROGS_SUNS_SONG] = ItemLocation::Base (0x54, 0x3E, "ZR Frogs Sun's Song", ZR_FROGS_SUNS_SONG, PURPLE_RUPEE, {Category::cZorasRiver,}, SpoilerCollectionCheck::EventChkInf(0xD6), SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); - locationTable[ZR_FROGS_SONG_OF_TIME] = ItemLocation::Base (0x54, 0x3E, "ZR Frogs Song of Time", ZR_FROGS_SONG_OF_TIME, PURPLE_RUPEE, {Category::cZorasRiver,}, SpoilerCollectionCheck::EventChkInf(0xD6), SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); - locationTable[ZR_FROGS_IN_THE_RAIN] = ItemLocation::Base (0x54, 0x3E, "ZR Frogs in the Rain", ZR_FROGS_IN_THE_RAIN, PIECE_OF_HEART, {Category::cZorasRiver,}, SpoilerCollectionCheck::EventChkInf(0xD6), SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); - locationTable[ZR_FROGS_OCARINA_GAME] = ItemLocation::Base (0x54, 0x76, "ZR Frogs Ocarina Game", ZR_FROGS_OCARINA_GAME, PIECE_OF_HEART, {Category::cZorasRiver, Category::cMinigame,}, SpoilerCollectionCheck::EventChkInf(0xD0), SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); - locationTable[ZR_NEAR_OPEN_GROTTO_FREESTANDING_POH] = ItemLocation::Collectable(0x54, 0x04, "ZR Near Open Grotto Freestanding PoH", ZR_NEAR_OPEN_GROTTO_FREESTANDING_POH, PIECE_OF_HEART, {Category::cZorasRiver,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); - locationTable[ZR_NEAR_DOMAIN_FREESTANDING_POH] = ItemLocation::Collectable(0x54, 0x0B, "ZR Near Domain Freestanding PoH", ZR_NEAR_DOMAIN_FREESTANDING_POH, PIECE_OF_HEART, {Category::cZorasRiver,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); - locationTable[ZR_DEKU_SCRUB_GROTTO_REAR] = ItemLocation::GrottoScrub(0xEB, 0x39, "ZR Deku Scrub Grotto Rear", ZR_DEKU_SCRUB_GROTTO_REAR, BUY_RED_POTION_30, {Category::cZorasRiver, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x15, 0x08), SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); - locationTable[ZR_DEKU_SCRUB_GROTTO_FRONT] = ItemLocation::GrottoScrub(0xEB, 0x3A, "ZR Deku Scrub Grotto Front", ZR_DEKU_SCRUB_GROTTO_FRONT, BUY_GREEN_POTION, {Category::cZorasRiver, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x15, 0x09), SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); + locationTable[ZR_OPEN_GROTTO_CHEST] = ItemLocation::Chest (RC_ZR_OPEN_GROTTO_CHEST, 0x3E, 0x09, "ZR Open Grotto Chest", ZR_OPEN_GROTTO_CHEST, RED_RUPEE, {Category::cZorasRiver, Category::cGrotto,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); + locationTable[ZR_MAGIC_BEAN_SALESMAN] = ItemLocation::Base (RC_ZR_MAGIC_BEAN_SALESMAN, 0x54, 0x16, "ZR Magic Bean Salesman", ZR_MAGIC_BEAN_SALESMAN, MAGIC_BEAN, {Category::cZorasRiver,}, SpoilerCollectionCheck::MagicBeans(0x54, 0x01), SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); + locationTable[ZR_FROGS_ZELDAS_LULLABY] = ItemLocation::Base (RC_ZR_FROGS_ZELDAS_LULLABY, 0x54, 0x3E, "ZR Frogs Zelda's Lullaby", ZR_FROGS_ZELDAS_LULLABY, PURPLE_RUPEE, {Category::cZorasRiver,}, SpoilerCollectionCheck::EventChkInf(0xD6), SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); + locationTable[ZR_FROGS_EPONAS_SONG] = ItemLocation::Base (RC_ZR_FROGS_EPONAS_SONG, 0x54, 0x3E, "ZR Frogs Epona's Song", ZR_FROGS_EPONAS_SONG, PURPLE_RUPEE, {Category::cZorasRiver,}, SpoilerCollectionCheck::EventChkInf(0xD6), SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); + locationTable[ZR_FROGS_SARIAS_SONG] = ItemLocation::Base (RC_ZR_FROGS_SARIAS_SONG, 0x54, 0x3E, "ZR Frogs Saria's Song", ZR_FROGS_SARIAS_SONG, PURPLE_RUPEE, {Category::cZorasRiver,}, SpoilerCollectionCheck::EventChkInf(0xD6), SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); + locationTable[ZR_FROGS_SUNS_SONG] = ItemLocation::Base (RC_ZR_FROGS_SUNS_SONG, 0x54, 0x3E, "ZR Frogs Sun's Song", ZR_FROGS_SUNS_SONG, PURPLE_RUPEE, {Category::cZorasRiver,}, SpoilerCollectionCheck::EventChkInf(0xD6), SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); + locationTable[ZR_FROGS_SONG_OF_TIME] = ItemLocation::Base (RC_ZR_FROGS_SONG_OF_TIME, 0x54, 0x3E, "ZR Frogs Song of Time", ZR_FROGS_SONG_OF_TIME, PURPLE_RUPEE, {Category::cZorasRiver,}, SpoilerCollectionCheck::EventChkInf(0xD6), SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); + locationTable[ZR_FROGS_IN_THE_RAIN] = ItemLocation::Base (RC_ZR_FROGS_IN_THE_RAIN, 0x54, 0x3E, "ZR Frogs in the Rain", ZR_FROGS_IN_THE_RAIN, PIECE_OF_HEART, {Category::cZorasRiver,}, SpoilerCollectionCheck::EventChkInf(0xD6), SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); + locationTable[ZR_FROGS_OCARINA_GAME] = ItemLocation::Base (RC_ZR_FROGS_OCARINA_GAME, 0x54, 0x76, "ZR Frogs Ocarina Game", ZR_FROGS_OCARINA_GAME, PIECE_OF_HEART, {Category::cZorasRiver, Category::cMinigame,}, SpoilerCollectionCheck::EventChkInf(0xD0), SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); + locationTable[ZR_NEAR_OPEN_GROTTO_FREESTANDING_POH] = ItemLocation::Collectable(RC_ZR_NEAR_OPEN_GROTTO_FREESTANDING_POH, 0x54, 0x04, "ZR Near Open Grotto Freestanding PoH", ZR_NEAR_OPEN_GROTTO_FREESTANDING_POH, PIECE_OF_HEART, {Category::cZorasRiver,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); + locationTable[ZR_NEAR_DOMAIN_FREESTANDING_POH] = ItemLocation::Collectable(RC_ZR_NEAR_DOMAIN_FREESTANDING_POH, 0x54, 0x0B, "ZR Near Domain Freestanding PoH", ZR_NEAR_DOMAIN_FREESTANDING_POH, PIECE_OF_HEART, {Category::cZorasRiver,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); + locationTable[ZR_DEKU_SCRUB_GROTTO_REAR] = ItemLocation::GrottoScrub(RC_ZR_DEKU_SCRUB_GROTTO_REAR, 0xEB, 0x39, "ZR Deku Scrub Grotto Rear", ZR_DEKU_SCRUB_GROTTO_REAR, BUY_RED_POTION_30, {Category::cZorasRiver, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x15, 0x08), SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); + locationTable[ZR_DEKU_SCRUB_GROTTO_FRONT] = ItemLocation::GrottoScrub(RC_ZR_DEKU_SCRUB_GROTTO_FRONT, 0xEB, 0x3A, "ZR Deku Scrub Grotto Front", ZR_DEKU_SCRUB_GROTTO_FRONT, BUY_GREEN_POTION, {Category::cZorasRiver, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x15, 0x09), SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); //Zoras Domain - locationTable[ZD_CHEST] = ItemLocation::Chest (0x58, 0x00, "ZD Chest", ZD_CHEST, PIECE_OF_HEART, {Category::cZorasDomain,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); - locationTable[ZD_DIVING_MINIGAME] = ItemLocation::Base (0x58, 0x37, "ZD Diving Minigame", ZD_DIVING_MINIGAME, PROGRESSIVE_SCALE, {Category::cZorasDomain, Category::cMinigame,}, SpoilerCollectionCheck::EventChkInf(0x38), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); - locationTable[ZD_KING_ZORA_THAWED] = ItemLocation::Base (0x58, 0x2D, "ZD King Zora Thawed", ZD_KING_ZORA_THAWED, ZORA_TUNIC, {Category::cZorasDomain,}, SpoilerCollectionCheck::InfTable(0x13, 0x01), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); - locationTable[ZD_TRADE_PRESCRIPTION] = ItemLocation::Base (0x58, 0x24, "ZD Trade Prescription", ZD_TRADE_PRESCRIPTION, EYEBALL_FROG, {Category::cZorasDomain, Category::cAdultTrade}, SpoilerCollectionCheck::ItemGetInf(60), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); + locationTable[ZD_CHEST] = ItemLocation::Chest (RC_ZD_CHEST, 0x58, 0x00, "ZD Chest", ZD_CHEST, PIECE_OF_HEART, {Category::cZorasDomain,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); + locationTable[ZD_DIVING_MINIGAME] = ItemLocation::Base (RC_ZD_DIVING_MINIGAME, 0x58, 0x37, "ZD Diving Minigame", ZD_DIVING_MINIGAME, PROGRESSIVE_SCALE, {Category::cZorasDomain, Category::cMinigame,}, SpoilerCollectionCheck::EventChkInf(0x38), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); + locationTable[ZD_KING_ZORA_THAWED] = ItemLocation::Base (RC_ZD_KING_ZORA_THAWED, 0x58, 0x2D, "ZD King Zora Thawed", ZD_KING_ZORA_THAWED, ZORA_TUNIC, {Category::cZorasDomain,}, SpoilerCollectionCheck::InfTable(0x13, 0x01), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); + locationTable[ZD_TRADE_PRESCRIPTION] = ItemLocation::Base (RC_ZD_TRADE_PRESCRIPTION, 0x58, 0x24, "ZD Trade Prescription", ZD_TRADE_PRESCRIPTION, EYEBALL_FROG, {Category::cZorasDomain, Category::cAdultTrade}, SpoilerCollectionCheck::ItemGetInf(60), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); //Zoras Fountain - locationTable[ZF_ICEBERG_FREESTANDING_POH] = ItemLocation::Collectable(0x59, 0x01, "ZF Iceberg Freestanding PoH", ZF_ICEBERG_FREESTANDING_POH, PIECE_OF_HEART, {Category::cZorasFountain,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); - locationTable[ZF_BOTTOM_FREESTANDING_POH] = ItemLocation::Collectable(0x59, 0x14, "ZF Bottom Freestanding PoH", ZF_BOTTOM_FREESTANDING_POH, PIECE_OF_HEART, {Category::cZorasFountain,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); + locationTable[ZF_ICEBERG_FREESTANDING_POH] = ItemLocation::Collectable(RC_ZF_ICEBERC_FREESTANDING_POH, 0x59, 0x01, "ZF Iceberg Freestanding PoH", ZF_ICEBERG_FREESTANDING_POH, PIECE_OF_HEART, {Category::cZorasFountain,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); + locationTable[ZF_BOTTOM_FREESTANDING_POH] = ItemLocation::Collectable(RC_ZF_BOTTOM_FREESTANDING_POH, 0x59, 0x14, "ZF Bottom Freestanding PoH", ZF_BOTTOM_FREESTANDING_POH, PIECE_OF_HEART, {Category::cZorasFountain,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); //Lon Lon Ranch - locationTable[LLR_TALONS_CHICKENS] = ItemLocation::Base (0x4C, 0x14, "LLR Talons Chickens", LLR_TALONS_CHICKENS, BOTTLE_WITH_MILK, {Category::cLonLonRanch, Category::cMinigame}, SpoilerCollectionCheck::ItemGetInf(10), SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); - locationTable[LLR_FREESTANDING_POH] = ItemLocation::Collectable(0x4C, 0x01, "LLR Freestanding PoH", LLR_FREESTANDING_POH, PIECE_OF_HEART, {Category::cLonLonRanch,}, SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); - locationTable[LLR_DEKU_SCRUB_GROTTO_LEFT] = ItemLocation::GrottoScrub(0xFC, 0x30, "LLR Deku Scrub Grotto Left", LLR_DEKU_SCRUB_GROTTO_LEFT, BUY_DEKU_NUT_5, {Category::cLonLonRanch, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x26, 0x01), SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); - locationTable[LLR_DEKU_SCRUB_GROTTO_RIGHT] = ItemLocation::GrottoScrub(0xFC, 0x37, "LLR Deku Scrub Grotto Right", LLR_DEKU_SCRUB_GROTTO_RIGHT, BUY_BOMBS_535, {Category::cLonLonRanch, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x26, 0x06), SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); - locationTable[LLR_DEKU_SCRUB_GROTTO_CENTER] = ItemLocation::GrottoScrub(0xFC, 0x33, "LLR Deku Scrub Grotto Center", LLR_DEKU_SCRUB_GROTTO_CENTER, BUY_DEKU_SEEDS_30, {Category::cLonLonRanch, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x26, 0x04), SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); + locationTable[LLR_TALONS_CHICKENS] = ItemLocation::Base (RC_LLR_TALONS_CHICKENS, 0x4C, 0x14, "LLR Talons Chickens", LLR_TALONS_CHICKENS, BOTTLE_WITH_MILK, {Category::cLonLonRanch, Category::cMinigame}, SpoilerCollectionCheck::ItemGetInf(10), SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); + locationTable[LLR_FREESTANDING_POH] = ItemLocation::Collectable(RC_LLR_FREESTANDING_POH, 0x4C, 0x01, "LLR Freestanding PoH", LLR_FREESTANDING_POH, PIECE_OF_HEART, {Category::cLonLonRanch,}, SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); + locationTable[LLR_DEKU_SCRUB_GROTTO_LEFT] = ItemLocation::GrottoScrub(RC_LLR_DEKU_SCRUB_GROTTO_LEFT, 0xFC, 0x30, "LLR Deku Scrub Grotto Left", LLR_DEKU_SCRUB_GROTTO_LEFT, BUY_DEKU_NUT_5, {Category::cLonLonRanch, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x26, 0x01), SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); + locationTable[LLR_DEKU_SCRUB_GROTTO_RIGHT] = ItemLocation::GrottoScrub(RC_LLR_DEKU_SCRUB_GROTTO_RIGHT, 0xFC, 0x37, "LLR Deku Scrub Grotto Right", LLR_DEKU_SCRUB_GROTTO_RIGHT, BUY_BOMBS_535, {Category::cLonLonRanch, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x26, 0x06), SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); + locationTable[LLR_DEKU_SCRUB_GROTTO_CENTER] = ItemLocation::GrottoScrub(RC_LLR_DEKU_SCRUB_GROTTO_CENTER, 0xFC, 0x33, "LLR Deku Scrub Grotto Center", LLR_DEKU_SCRUB_GROTTO_CENTER, BUY_DEKU_SEEDS_30, {Category::cLonLonRanch, Category::cDekuScrub, Category::cGrotto}, SpoilerCollectionCheck::Scrub(0x26, 0x04), SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); /*------------------- --- DUNGEONS --- -------------------*/ //Deku Tree Vanilla - locationTable[DEKU_TREE_MAP_CHEST] = ItemLocation::Chest (0x00, 0x03, "Deku Tree Map Chest", DEKU_TREE_MAP_CHEST, DEKU_TREE_MAP, {Category::cDekuTree, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[DEKU_TREE_COMPASS_CHEST] = ItemLocation::Chest (0x00, 0x02, "Deku Tree Compass Chest", DEKU_TREE_COMPASS_CHEST, DEKU_TREE_COMPASS, {Category::cDekuTree, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[DEKU_TREE_COMPASS_ROOM_SIDE_CHEST] = ItemLocation::Chest (0x00, 0x06, "Deku Tree Compass Room Side Chest", DEKU_TREE_COMPASS_ROOM_SIDE_CHEST, RECOVERY_HEART, {Category::cDekuTree,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[DEKU_TREE_BASEMENT_CHEST] = ItemLocation::Chest (0x00, 0x04, "Deku Tree Basement Chest", DEKU_TREE_BASEMENT_CHEST, RECOVERY_HEART, {Category::cDekuTree,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[DEKU_TREE_SLINGSHOT_CHEST] = ItemLocation::Chest (0x00, 0x01, "Deku Tree Slingshot Chest", DEKU_TREE_SLINGSHOT_CHEST, PROGRESSIVE_SLINGSHOT, {Category::cDekuTree,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[DEKU_TREE_SLINGSHOT_ROOM_SIDE_CHEST] = ItemLocation::Chest (0x00, 0x05, "Deku Tree Slingshot Room Side Chest", DEKU_TREE_SLINGSHOT_ROOM_SIDE_CHEST, RECOVERY_HEART, {Category::cDekuTree,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_MAP_CHEST] = ItemLocation::Chest (RC_DEKU_TREE_MAP_CHEST, 0x00, 0x03, "Deku Tree Map Chest", DEKU_TREE_MAP_CHEST, DEKU_TREE_MAP, {Category::cDekuTree, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_COMPASS_CHEST] = ItemLocation::Chest (RC_DEKU_TREE_COMPASS_CHEST, 0x00, 0x02, "Deku Tree Compass Chest", DEKU_TREE_COMPASS_CHEST, DEKU_TREE_COMPASS, {Category::cDekuTree, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_COMPASS_ROOM_SIDE_CHEST] = ItemLocation::Chest (RC_DEKU_TREE_COMPASS_ROOM_SIDE_CHEST, 0x00, 0x06, "Deku Tree Compass Room Side Chest", DEKU_TREE_COMPASS_ROOM_SIDE_CHEST, RECOVERY_HEART, {Category::cDekuTree,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_BASEMENT_CHEST] = ItemLocation::Chest (RC_DEKU_TREE_BASEMENT_CHEST, 0x00, 0x04, "Deku Tree Basement Chest", DEKU_TREE_BASEMENT_CHEST, RECOVERY_HEART, {Category::cDekuTree,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_SLINGSHOT_CHEST] = ItemLocation::Chest (RC_DEKU_TREE_SLINGSHOT_CHEST, 0x00, 0x01, "Deku Tree Slingshot Chest", DEKU_TREE_SLINGSHOT_CHEST, PROGRESSIVE_SLINGSHOT, {Category::cDekuTree,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_SLINGSHOT_ROOM_SIDE_CHEST] = ItemLocation::Chest (RC_DEKU_TREE_SLINGSHOT_ROOM_SIDE_CHEST, 0x00, 0x05, "Deku Tree Slingshot Room Side Chest", DEKU_TREE_SLINGSHOT_ROOM_SIDE_CHEST, RECOVERY_HEART, {Category::cDekuTree,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); //Deku Tree MQ - locationTable[DEKU_TREE_MQ_MAP_CHEST] = ItemLocation::Chest (0x00, 0x03, "Deku Tree MQ Map Chest", DEKU_TREE_MQ_MAP_CHEST, DEKU_TREE_MAP, {Category::cDekuTree, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[DEKU_TREE_MQ_COMPASS_CHEST] = ItemLocation::Chest (0x00, 0x01, "Deku Tree MQ Compass Chest", DEKU_TREE_MQ_COMPASS_CHEST, DEKU_TREE_COMPASS, {Category::cDekuTree, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[DEKU_TREE_MQ_SLINGSHOT_CHEST] = ItemLocation::Chest (0x00, 0x06, "Deku Tree MQ Slingshot Chest", DEKU_TREE_MQ_SLINGSHOT_CHEST, PROGRESSIVE_SLINGSHOT, {Category::cDekuTree,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[DEKU_TREE_MQ_SLINGSHOT_ROOM_BACK_CHEST] = ItemLocation::Chest (0x00, 0x02, "Deku Tree MQ Slingshot Room Back Chest", DEKU_TREE_MQ_SLINGSHOT_ROOM_BACK_CHEST, DEKU_SHIELD, {Category::cDekuTree,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[DEKU_TREE_MQ_BASEMENT_CHEST] = ItemLocation::Chest (0x00, 0x04, "Deku Tree MQ Basement Chest", DEKU_TREE_MQ_BASEMENT_CHEST, DEKU_SHIELD, {Category::cDekuTree,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[DEKU_TREE_MQ_BEFORE_SPINNING_LOG_CHEST] = ItemLocation::Chest (0x00, 0x05, "Deku Tree MQ Before Spinning Log Chest", DEKU_TREE_MQ_BEFORE_SPINNING_LOG_CHEST, RECOVERY_HEART, {Category::cDekuTree,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[DEKU_TREE_MQ_AFTER_SPINNING_LOG_CHEST] = ItemLocation::Chest (0x00, 0x00, "Deku Tree MQ After Spinning Log Chest", DEKU_TREE_MQ_AFTER_SPINNING_LOG_CHEST, PURPLE_RUPEE, {Category::cDekuTree,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[DEKU_TREE_MQ_DEKU_SCRUB] = ItemLocation::Base (0x00, 0x34, "Deku Tree MQ Deku Scrub", DEKU_TREE_MQ_DEKU_SCRUB, BUY_DEKU_SHIELD, {Category::cDekuTree, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x00, 0x05), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_MQ_MAP_CHEST] = ItemLocation::Chest (RC_DEKU_TREE_MQ_MAP_CHEST, 0x00, 0x03, "Deku Tree MQ Map Chest", DEKU_TREE_MQ_MAP_CHEST, DEKU_TREE_MAP, {Category::cDekuTree, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_MQ_COMPASS_CHEST] = ItemLocation::Chest (RC_DEKU_TREE_MQ_COMPASS_CHEST, 0x00, 0x01, "Deku Tree MQ Compass Chest", DEKU_TREE_MQ_COMPASS_CHEST, DEKU_TREE_COMPASS, {Category::cDekuTree, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_MQ_SLINGSHOT_CHEST] = ItemLocation::Chest (RC_DEKU_TREE_MQ_SLINGSHOT_CHEST, 0x00, 0x06, "Deku Tree MQ Slingshot Chest", DEKU_TREE_MQ_SLINGSHOT_CHEST, PROGRESSIVE_SLINGSHOT, {Category::cDekuTree,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_MQ_SLINGSHOT_ROOM_BACK_CHEST] = ItemLocation::Chest (RC_DEKU_TREE_MQ_SLINGSHOT_ROOM_BACK_CHEST, 0x00, 0x02, "Deku Tree MQ Slingshot Room Back Chest", DEKU_TREE_MQ_SLINGSHOT_ROOM_BACK_CHEST, DEKU_SHIELD, {Category::cDekuTree,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_MQ_BASEMENT_CHEST] = ItemLocation::Chest (RC_DEKU_TREE_MQ_BASEMENT_CHEST, 0x00, 0x04, "Deku Tree MQ Basement Chest", DEKU_TREE_MQ_BASEMENT_CHEST, DEKU_SHIELD, {Category::cDekuTree,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_MQ_BEFORE_SPINNING_LOG_CHEST] = ItemLocation::Chest (RC_DEKU_TREE_MQ_BEFORE_SPINNING_LOG_CHEST, 0x00, 0x05, "Deku Tree MQ Before Spinning Log Chest", DEKU_TREE_MQ_BEFORE_SPINNING_LOG_CHEST, RECOVERY_HEART, {Category::cDekuTree,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_MQ_AFTER_SPINNING_LOG_CHEST] = ItemLocation::Chest (RC_DEKU_TREE_MQ_AFTER_SPINNING_LOG_CHEST, 0x00, 0x00, "Deku Tree MQ After Spinning Log Chest", DEKU_TREE_MQ_AFTER_SPINNING_LOG_CHEST, PURPLE_RUPEE, {Category::cDekuTree,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_MQ_DEKU_SCRUB] = ItemLocation::Base (RC_DEKU_TREE_MQ_DEKU_SCRUB, 0x00, 0x34, "Deku Tree MQ Deku Scrub", DEKU_TREE_MQ_DEKU_SCRUB, BUY_DEKU_SHIELD, {Category::cDekuTree, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x00, 0x05), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); //Dodongos Cavern Shared - locationTable[DODONGOS_CAVERN_BOSS_ROOM_CHEST] = ItemLocation::Chest (0x12, 0x00, "Dodongos Cavern Boss Room Chest", DODONGOS_CAVERN_BOSS_ROOM_CHEST, BOMBS_5, {Category::cDodongosCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_BOSS_ROOM_CHEST] = ItemLocation::Chest (RC_DODONGOS_CAVERN_BOSS_ROOM_CHEST, 0x12, 0x00, "Dodongos Cavern Boss Room Chest", DODONGOS_CAVERN_BOSS_ROOM_CHEST, BOMBS_5, {Category::cDodongosCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); //Dodongos Cavern Vanilla - locationTable[DODONGOS_CAVERN_MAP_CHEST] = ItemLocation::Chest (0x01, 0x08, "Dodongos Cavern Map Chest", DODONGOS_CAVERN_MAP_CHEST, DODONGOS_CAVERN_MAP, {Category::cDodongosCavern, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_COMPASS_CHEST] = ItemLocation::Chest (0x01, 0x05, "Dodongos Cavern Compass Chest", DODONGOS_CAVERN_COMPASS_CHEST, DODONGOS_CAVERN_COMPASS, {Category::cDodongosCavern, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_BOMB_FLOWER_PLATFORM_CHEST] = ItemLocation::Chest (0x01, 0x06, "Dodongos Cavern Bomb Flower Platform Chest", DODONGOS_CAVERN_BOMB_FLOWER_PLATFORM_CHEST, RED_RUPEE, {Category::cDodongosCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_BOMB_BAG_CHEST] = ItemLocation::Chest (0x01, 0x04, "Dodongos Cavern Bomb Bag Chest", DODONGOS_CAVERN_BOMB_BAG_CHEST, PROGRESSIVE_BOMB_BAG, {Category::cDodongosCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_END_OF_BRIDGE_CHEST] = ItemLocation::Chest (0x01, 0x0A, "Dodongos Cavern End Of Bridge Chest", DODONGOS_CAVERN_END_OF_BRIDGE_CHEST, DEKU_SHIELD, {Category::cDodongosCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_LEFT] = ItemLocation::Base (0x01, 0x30, "Dodongos Cavern Deku Scrub Near Bomb Bag Left", DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_LEFT, BUY_DEKU_NUT_5, {Category::cDodongosCavern, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x01, 0x01), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_DEKU_SCRUB_SIDE_ROOM_NEAR_DODONGOS] = ItemLocation::Base (0x01, 0x31, "Dodongos Cavern Deku Scrub Side Room Near Dodongos", DODONGOS_CAVERN_DEKU_SCRUB_SIDE_ROOM_NEAR_DODONGOS, BUY_DEKU_STICK_1, {Category::cDodongosCavern, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x01, 0x02), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_RIGHT] = ItemLocation::Base (0x01, 0x33, "Dodongos Cavern Deku Scrub Near Bomb Bag Right", DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_RIGHT, BUY_DEKU_SEEDS_30, {Category::cDodongosCavern, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x01, 0x04), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_DEKU_SCRUB_LOBBY] = ItemLocation::Base (0x01, 0x34, "Dodongos Cavern Deku Scrub Lobby", DODONGOS_CAVERN_DEKU_SCRUB_LOBBY, BUY_DEKU_SHIELD, {Category::cDodongosCavern, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x01, 0x05), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_MAP_CHEST] = ItemLocation::Chest (RC_DODONGOS_CAVERN_MAP_CHEST, 0x01, 0x08, "Dodongos Cavern Map Chest", DODONGOS_CAVERN_MAP_CHEST, DODONGOS_CAVERN_MAP, {Category::cDodongosCavern, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_COMPASS_CHEST] = ItemLocation::Chest (RC_DODONGOS_CAVERN_COMPASS_CHEST, 0x01, 0x05, "Dodongos Cavern Compass Chest", DODONGOS_CAVERN_COMPASS_CHEST, DODONGOS_CAVERN_COMPASS, {Category::cDodongosCavern, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_BOMB_FLOWER_PLATFORM_CHEST] = ItemLocation::Chest (RC_DODONGOS_CAVERN_BOMB_FLOWER_PLATFORM_CHEST, 0x01, 0x06, "Dodongos Cavern Bomb Flower Platform Chest", DODONGOS_CAVERN_BOMB_FLOWER_PLATFORM_CHEST, RED_RUPEE, {Category::cDodongosCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_BOMB_BAG_CHEST] = ItemLocation::Chest (RC_DODONGOS_CAVERN_BOMB_BAG_CHEST, 0x01, 0x04, "Dodongos Cavern Bomb Bag Chest", DODONGOS_CAVERN_BOMB_BAG_CHEST, PROGRESSIVE_BOMB_BAG, {Category::cDodongosCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_END_OF_BRIDGE_CHEST] = ItemLocation::Chest (RC_DODONGOS_CAVERN_END_OF_BRIDGE_CHEST, 0x01, 0x0A, "Dodongos Cavern End Of Bridge Chest", DODONGOS_CAVERN_END_OF_BRIDGE_CHEST, DEKU_SHIELD, {Category::cDodongosCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_LEFT] = ItemLocation::Base (RC_DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_LEFT, 0x01, 0x30, "Dodongos Cavern Deku Scrub Near Bomb Bag Left", DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_LEFT, BUY_DEKU_NUT_5, {Category::cDodongosCavern, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x01, 0x01), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_DEKU_SCRUB_SIDE_ROOM_NEAR_DODONGOS] = ItemLocation::Base (RC_DODONGOS_CAVERN_DEKU_SCRUB_SIDE_ROOM_NEAR_DODONGOS, 0x01, 0x31, "Dodongos Cavern Deku Scrub Side Room Near Dodongos", DODONGOS_CAVERN_DEKU_SCRUB_SIDE_ROOM_NEAR_DODONGOS, BUY_DEKU_STICK_1, {Category::cDodongosCavern, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x01, 0x02), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_RIGHT] = ItemLocation::Base (RC_DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_RIGHT, 0x01, 0x33, "Dodongos Cavern Deku Scrub Near Bomb Bag Right", DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_RIGHT, BUY_DEKU_SEEDS_30, {Category::cDodongosCavern, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x01, 0x04), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_DEKU_SCRUB_LOBBY] = ItemLocation::Base (RC_DODONGOS_CAVERN_DEKU_SCRUB_LOBBY, 0x01, 0x34, "Dodongos Cavern Deku Scrub Lobby", DODONGOS_CAVERN_DEKU_SCRUB_LOBBY, BUY_DEKU_SHIELD, {Category::cDodongosCavern, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x01, 0x05), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); //Dodongos Cavern MQ - locationTable[DODONGOS_CAVERN_MQ_MAP_CHEST] = ItemLocation::Chest (0x01, 0x00, "Dodongos Cavern MQ Map Chest", DODONGOS_CAVERN_MQ_MAP_CHEST, DODONGOS_CAVERN_MAP, {Category::cDodongosCavern, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_MQ_BOMB_BAG_CHEST] = ItemLocation::Chest (0x01, 0x04, "Dodongos Cavern MQ Bomb Bag Chest", DODONGOS_CAVERN_MQ_BOMB_BAG_CHEST, PROGRESSIVE_BOMB_BAG, {Category::cDodongosCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_MQ_COMPASS_CHEST] = ItemLocation::Chest (0x01, 0x05, "Dodongos Cavern MQ Compass Chest", DODONGOS_CAVERN_MQ_COMPASS_CHEST, DODONGOS_CAVERN_COMPASS, {Category::cDodongosCavern, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_MQ_LARVAE_ROOM_CHEST] = ItemLocation::Chest (0x01, 0x02, "Dodongos Cavern MQ Larvae Room Chest", DODONGOS_CAVERN_MQ_LARVAE_ROOM_CHEST, DEKU_SHIELD, {Category::cDodongosCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_MQ_TORCH_PUZZLE_ROOM_CHEST] = ItemLocation::Chest (0x01, 0x03, "Dodongos Cavern MQ Torch Puzzle Room Chest", DODONGOS_CAVERN_MQ_TORCH_PUZZLE_ROOM_CHEST, BLUE_RUPEE, {Category::cDodongosCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_MQ_UNDER_GRAVE_CHEST] = ItemLocation::Chest (0x01, 0x01, "Dodongos Cavern MQ Under Grave Chest", DODONGOS_CAVERN_MQ_UNDER_GRAVE_CHEST, HYLIAN_SHIELD, {Category::cDodongosCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_MQ_DEKU_SCRUB_LOBBY_REAR] = ItemLocation::Base (0x01, 0x31, "Dodongos Cavern Deku Scrub Lobby Rear", DODONGOS_CAVERN_MQ_DEKU_SCRUB_LOBBY_REAR, BUY_DEKU_STICK_1, {Category::cDodongosCavern, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x01, 0x02), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_MQ_DEKU_SCRUB_LOBBY_FRONT] = ItemLocation::Base (0x01, 0x33, "Dodongos Cavern Deku Scrub Lobby Front", DODONGOS_CAVERN_MQ_DEKU_SCRUB_LOBBY_FRONT, BUY_DEKU_SEEDS_30, {Category::cDodongosCavern, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x01, 0x04), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_MQ_DEKU_SCRUB_STAIRCASE] = ItemLocation::Base (0x01, 0x34, "Dodongos Cavern Deku Scrub Staircase", DODONGOS_CAVERN_MQ_DEKU_SCRUB_STAIRCASE, BUY_DEKU_SHIELD, {Category::cDodongosCavern, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x01, 0x05), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_MQ_DEKU_SCRUB_SIDE_ROOM_NEAR_LOWER_LIZALFOS] = ItemLocation::Base (0x01, 0x39, "Dodongos Cavern Deku Scrub Side Room Near Lower Lizalfos",DODONGOS_CAVERN_MQ_DEKU_SCRUB_SIDE_ROOM_NEAR_LOWER_LIZALFOS, BUY_RED_POTION_30, {Category::cDodongosCavern, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x01, 0x08), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_MQ_MAP_CHEST] = ItemLocation::Chest (RC_DODONGOS_CAVERN_MQ_MAP_CHEST, 0x01, 0x00, "Dodongos Cavern MQ Map Chest", DODONGOS_CAVERN_MQ_MAP_CHEST, DODONGOS_CAVERN_MAP, {Category::cDodongosCavern, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_MQ_BOMB_BAG_CHEST] = ItemLocation::Chest (RC_DODONGOS_CAVERN_MQ_BOMB_BAG_CHEST, 0x01, 0x04, "Dodongos Cavern MQ Bomb Bag Chest", DODONGOS_CAVERN_MQ_BOMB_BAG_CHEST, PROGRESSIVE_BOMB_BAG, {Category::cDodongosCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_MQ_COMPASS_CHEST] = ItemLocation::Chest (RC_DODONGOS_CAVERN_MQ_COMPASS_CHEST, 0x01, 0x05, "Dodongos Cavern MQ Compass Chest", DODONGOS_CAVERN_MQ_COMPASS_CHEST, DODONGOS_CAVERN_COMPASS, {Category::cDodongosCavern, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_MQ_LARVAE_ROOM_CHEST] = ItemLocation::Chest (RC_DODONGOS_CAVERN_MQ_LARVAE_ROOM_CHEST, 0x01, 0x02, "Dodongos Cavern MQ Larvae Room Chest", DODONGOS_CAVERN_MQ_LARVAE_ROOM_CHEST, DEKU_SHIELD, {Category::cDodongosCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_MQ_TORCH_PUZZLE_ROOM_CHEST] = ItemLocation::Chest (RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_ROOM_CHEST, 0x01, 0x03, "Dodongos Cavern MQ Torch Puzzle Room Chest", DODONGOS_CAVERN_MQ_TORCH_PUZZLE_ROOM_CHEST, BLUE_RUPEE, {Category::cDodongosCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_MQ_UNDER_GRAVE_CHEST] = ItemLocation::Chest (RC_DODONGOS_CAVERN_MQ_UNDER_GRAVE_CHEST, 0x01, 0x01, "Dodongos Cavern MQ Under Grave Chest", DODONGOS_CAVERN_MQ_UNDER_GRAVE_CHEST, HYLIAN_SHIELD, {Category::cDodongosCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_MQ_DEKU_SCRUB_LOBBY_REAR] = ItemLocation::Base (RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_LOBBY_REAR, 0x01, 0x31, "Dodongos Cavern Deku Scrub Lobby Rear", DODONGOS_CAVERN_MQ_DEKU_SCRUB_LOBBY_REAR, BUY_DEKU_STICK_1, {Category::cDodongosCavern, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x01, 0x02), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_MQ_DEKU_SCRUB_LOBBY_FRONT] = ItemLocation::Base (RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_LOBBY_FRONT, 0x01, 0x33, "Dodongos Cavern Deku Scrub Lobby Front", DODONGOS_CAVERN_MQ_DEKU_SCRUB_LOBBY_FRONT, BUY_DEKU_SEEDS_30, {Category::cDodongosCavern, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x01, 0x04), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_MQ_DEKU_SCRUB_STAIRCASE] = ItemLocation::Base (RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_STAIRCASE, 0x01, 0x34, "Dodongos Cavern Deku Scrub Staircase", DODONGOS_CAVERN_MQ_DEKU_SCRUB_STAIRCASE, BUY_DEKU_SHIELD, {Category::cDodongosCavern, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x01, 0x05), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_MQ_DEKU_SCRUB_SIDE_ROOM_NEAR_LOWER_LIZALFOS] = ItemLocation::Base (RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_SIDE_ROOM_NEAR_LOWER_LIZALFOS, 0x01, 0x39, "Dodongos Cavern Deku Scrub Side Room Near Lower Lizalfos",DODONGOS_CAVERN_MQ_DEKU_SCRUB_SIDE_ROOM_NEAR_LOWER_LIZALFOS, BUY_RED_POTION_30, {Category::cDodongosCavern, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x01, 0x08), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); //Jabu Jabus Belly Vanilla - locationTable[JABU_JABUS_BELLY_MAP_CHEST] = ItemLocation::Chest (0x02, 0x02, "Jabu Jabus Belly Map Chest", JABU_JABUS_BELLY_MAP_CHEST, JABU_JABUS_BELLY_MAP, {Category::cJabuJabusBelly, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[JABU_JABUS_BELLY_COMPASS_CHEST] = ItemLocation::Chest (0x02, 0x04, "Jabu Jabus Belly Compass Chest", JABU_JABUS_BELLY_COMPASS_CHEST, JABU_JABUS_BELLY_COMPASS, {Category::cJabuJabusBelly, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[JABU_JABUS_BELLY_BOOMERANG_CHEST] = ItemLocation::Chest (0x02, 0x01, "Jabu Jabus Belly Boomerang Chest", JABU_JABUS_BELLY_BOOMERANG_CHEST, BOOMERANG, {Category::cJabuJabusBelly,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[JABU_JABUS_BELLY_DEKU_SCRUB] = ItemLocation::Base (0x02, 0x30, "Jabu Jabus Belly Deku Scrub", JABU_JABUS_BELLY_DEKU_SCRUB, BUY_DEKU_NUT_5, {Category::cJabuJabusBelly, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x02, 0x01), SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_MAP_CHEST] = ItemLocation::Chest (RC_JABU_JABUS_BELLY_MAP_CHEST, 0x02, 0x02, "Jabu Jabus Belly Map Chest", JABU_JABUS_BELLY_MAP_CHEST, JABU_JABUS_BELLY_MAP, {Category::cJabuJabusBelly, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_COMPASS_CHEST] = ItemLocation::Chest (RC_JABU_JABUS_BELLY_COMPASS_CHEST, 0x02, 0x04, "Jabu Jabus Belly Compass Chest", JABU_JABUS_BELLY_COMPASS_CHEST, JABU_JABUS_BELLY_COMPASS, {Category::cJabuJabusBelly, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_BOOMERANG_CHEST] = ItemLocation::Chest (RC_JABU_JABUS_BELLY_BOOMERANG_CHEST, 0x02, 0x01, "Jabu Jabus Belly Boomerang Chest", JABU_JABUS_BELLY_BOOMERANG_CHEST, BOOMERANG, {Category::cJabuJabusBelly,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_DEKU_SCRUB] = ItemLocation::Base (RC_JABU_JABUS_BELLY_DEKU_SCRUB, 0x02, 0x30, "Jabu Jabus Belly Deku Scrub", JABU_JABUS_BELLY_DEKU_SCRUB, BUY_DEKU_NUT_5, {Category::cJabuJabusBelly, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x02, 0x01), SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); //Jabu Jabus Belly MQ - locationTable[JABU_JABUS_BELLY_MQ_FIRST_ROOM_SIDE_CHEST] = ItemLocation::Chest (0x02, 0x05, "Jabu Jabus Belly MQ First Room Side Chest", JABU_JABUS_BELLY_MQ_FIRST_ROOM_SIDE_CHEST, DEKU_NUTS_5, {Category::cJabuJabusBelly,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[JABU_JABUS_BELLY_MQ_MAP_CHEST] = ItemLocation::Chest (0x02, 0x03, "Jabu Jabus Belly MQ Map Chest", JABU_JABUS_BELLY_MQ_MAP_CHEST, JABU_JABUS_BELLY_MAP, {Category::cJabuJabusBelly, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[JABU_JABUS_BELLY_MQ_SECOND_ROOM_LOWER_CHEST] = ItemLocation::Chest (0x02, 0x02, "Jabu Jabus Belly MQ Second Room Lower Chest", JABU_JABUS_BELLY_MQ_SECOND_ROOM_LOWER_CHEST, DEKU_NUTS_5, {Category::cJabuJabusBelly,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[JABU_JABUS_BELLY_MQ_COMPASS_CHEST] = ItemLocation::Chest (0x02, 0x00, "Jabu Jabus Belly MQ Compass Chest", JABU_JABUS_BELLY_MQ_COMPASS_CHEST, JABU_JABUS_BELLY_COMPASS, {Category::cJabuJabusBelly, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[JABU_JABUS_BELLY_MQ_SECOND_ROOM_UPPER_CHEST] = ItemLocation::Chest (0x02, 0x07, "Jabu Jabus Belly MQ Second Room Upper Chest", JABU_JABUS_BELLY_MQ_SECOND_ROOM_UPPER_CHEST, RECOVERY_HEART, {Category::cJabuJabusBelly,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[JABU_JABUS_BELLY_MQ_BASEMENT_NEAR_SWITCHES_CHEST] = ItemLocation::Chest (0x02, 0x08, "Jabu Jabus Belly MQ Basement Near Switches Chest", JABU_JABUS_BELLY_MQ_BASEMENT_NEAR_SWITCHES_CHEST, DEKU_NUTS_5, {Category::cJabuJabusBelly,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[JABU_JABUS_BELLY_MQ_BASEMENT_NEAR_VINES_CHEST] = ItemLocation::Chest (0x02, 0x04, "Jabu Jabus Belly MQ Basement Near Vines Chest", JABU_JABUS_BELLY_MQ_BASEMENT_NEAR_VINES_CHEST, BOMBCHU_10, {Category::cJabuJabusBelly,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[JABU_JABUS_BELLY_MQ_NEAR_BOSS_CHEST] = ItemLocation::Chest (0x02, 0x0A, "Jabu Jabus Belly MQ Near Boss Chest", JABU_JABUS_BELLY_MQ_NEAR_BOSS_CHEST, DEKU_SHIELD, {Category::cJabuJabusBelly,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[JABU_JABUS_BELLY_MQ_FALLING_LIKE_LIKE_ROOM_CHEST] = ItemLocation::Chest (0x02, 0x09, "Jabu Jabus Belly MQ Falling Like Like Room Chest", JABU_JABUS_BELLY_MQ_FALLING_LIKE_LIKE_ROOM_CHEST, DEKU_STICK_1, {Category::cJabuJabusBelly,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[JABU_JABUS_BELLY_MQ_BOOMERANG_ROOM_SMALL_CHEST] = ItemLocation::Chest (0x02, 0x01, "Jabu Jabus Belly MQ Boomerang Room Small Chest", JABU_JABUS_BELLY_MQ_BOOMERANG_ROOM_SMALL_CHEST, DEKU_NUTS_5, {Category::cJabuJabusBelly,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[JABU_JABUS_BELLY_MQ_BOOMERANG_CHEST] = ItemLocation::Chest (0x02, 0x06, "Jabu Jabus Belly MQ Boomerang Chest", JABU_JABUS_BELLY_MQ_BOOMERANG_CHEST, BOOMERANG, {Category::cJabuJabusBelly,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_MQ_FIRST_ROOM_SIDE_CHEST] = ItemLocation::Chest (RC_JABU_JABUS_BELLY_MQ_FIRST_ROOM_SIDE_CHEST, 0x02, 0x05, "Jabu Jabus Belly MQ First Room Side Chest", JABU_JABUS_BELLY_MQ_FIRST_ROOM_SIDE_CHEST, DEKU_NUTS_5, {Category::cJabuJabusBelly,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_MQ_MAP_CHEST] = ItemLocation::Chest (RC_JABU_JABUS_BELLY_MQ_MAP_CHEST, 0x02, 0x03, "Jabu Jabus Belly MQ Map Chest", JABU_JABUS_BELLY_MQ_MAP_CHEST, JABU_JABUS_BELLY_MAP, {Category::cJabuJabusBelly, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_MQ_SECOND_ROOM_LOWER_CHEST] = ItemLocation::Chest (RC_JABU_JABUS_BELLY_MQ_SECOND_ROOM_LOWER_CHEST, 0x02, 0x02, "Jabu Jabus Belly MQ Second Room Lower Chest", JABU_JABUS_BELLY_MQ_SECOND_ROOM_LOWER_CHEST, DEKU_NUTS_5, {Category::cJabuJabusBelly,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_MQ_COMPASS_CHEST] = ItemLocation::Chest (RC_JABU_JABUS_BELLY_MQ_COMPASS_CHEST, 0x02, 0x00, "Jabu Jabus Belly MQ Compass Chest", JABU_JABUS_BELLY_MQ_COMPASS_CHEST, JABU_JABUS_BELLY_COMPASS, {Category::cJabuJabusBelly, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_MQ_SECOND_ROOM_UPPER_CHEST] = ItemLocation::Chest (RC_JABU_JABUS_BELLY_MQ_SECOND_ROOM_UPPER_CHEST, 0x02, 0x07, "Jabu Jabus Belly MQ Second Room Upper Chest", JABU_JABUS_BELLY_MQ_SECOND_ROOM_UPPER_CHEST, RECOVERY_HEART, {Category::cJabuJabusBelly,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_MQ_BASEMENT_NEAR_SWITCHES_CHEST] = ItemLocation::Chest (RC_JABU_JABUS_BELLY_MQ_BASEMENT_NEAR_SWITCHES_CHEST, 0x02, 0x08, "Jabu Jabus Belly MQ Basement Near Switches Chest", JABU_JABUS_BELLY_MQ_BASEMENT_NEAR_SWITCHES_CHEST, DEKU_NUTS_5, {Category::cJabuJabusBelly,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_MQ_BASEMENT_NEAR_VINES_CHEST] = ItemLocation::Chest (RC_JABU_JABUS_BELLY_MQ_BASEMENT_NEAR_VINES_CHEST, 0x02, 0x04, "Jabu Jabus Belly MQ Basement Near Vines Chest", JABU_JABUS_BELLY_MQ_BASEMENT_NEAR_VINES_CHEST, BOMBCHU_10, {Category::cJabuJabusBelly,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_MQ_NEAR_BOSS_CHEST] = ItemLocation::Chest (RC_JABU_JABUS_BELLY_MQ_NEAR_BOSS_CHEST, 0x02, 0x0A, "Jabu Jabus Belly MQ Near Boss Chest", JABU_JABUS_BELLY_MQ_NEAR_BOSS_CHEST, DEKU_SHIELD, {Category::cJabuJabusBelly,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_MQ_FALLING_LIKE_LIKE_ROOM_CHEST] = ItemLocation::Chest (RC_JABU_JABUS_BELLY_MQ_FALLING_LIKE_LIKE_ROOM_CHEST, 0x02, 0x09, "Jabu Jabus Belly MQ Falling Like Like Room Chest", JABU_JABUS_BELLY_MQ_FALLING_LIKE_LIKE_ROOM_CHEST, DEKU_STICK_1, {Category::cJabuJabusBelly,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_MQ_BOOMERANG_ROOM_SMALL_CHEST] = ItemLocation::Chest (RC_JABU_JABUS_BELLY_MQ_BOOMERANG_ROOM_SMALL_CHEST, 0x02, 0x01, "Jabu Jabus Belly MQ Boomerang Room Small Chest", JABU_JABUS_BELLY_MQ_BOOMERANG_ROOM_SMALL_CHEST, DEKU_NUTS_5, {Category::cJabuJabusBelly,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_MQ_BOOMERANG_CHEST] = ItemLocation::Chest (RC_JABU_JABUS_BELLY_MQ_BOOMERANG_CHEST, 0x02, 0x06, "Jabu Jabus Belly MQ Boomerang Chest", JABU_JABUS_BELLY_MQ_BOOMERANG_CHEST, BOOMERANG, {Category::cJabuJabusBelly,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); //COW //Forest Temple Vanilla - locationTable[FOREST_TEMPLE_FIRST_ROOM_CHEST] = ItemLocation::Chest (0x03, 0x03, "Forest Temple First Room Chest", FOREST_TEMPLE_FIRST_ROOM_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_FIRST_STALFOS_CHEST] = ItemLocation::Chest (0x03, 0x00, "Forest Temple First Stalfos Chest", FOREST_TEMPLE_FIRST_STALFOS_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_RAISED_ISLAND_COURTYARD_CHEST] = ItemLocation::Chest (0x03, 0x05, "Forest Temple Raised Island Courtyard Chest", FOREST_TEMPLE_RAISED_ISLAND_COURTYARD_CHEST, RECOVERY_HEART, {Category::cForestTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_MAP_CHEST] = ItemLocation::Chest (0x03, 0x01, "Forest Temple Map Chest", FOREST_TEMPLE_MAP_CHEST, FOREST_TEMPLE_MAP, {Category::cForestTemple, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_WELL_CHEST] = ItemLocation::Chest (0x03, 0x09, "Forest Temple Well Chest", FOREST_TEMPLE_WELL_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_FALLING_CEILING_ROOM_CHEST] = ItemLocation::Chest (0x03, 0x07, "Forest Temple Falling Ceiling Room Chest", FOREST_TEMPLE_FALLING_CEILING_ROOM_CHEST, ARROWS_10, {Category::cForestTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_EYE_SWITCH_CHEST] = ItemLocation::Chest (0x03, 0x04, "Forest Temple Eye Switch Chest", FOREST_TEMPLE_EYE_SWITCH_CHEST, ARROWS_30, {Category::cForestTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_BOSS_KEY_CHEST] = ItemLocation::Chest (0x03, 0x0E, "Forest Temple Boss Key Chest", FOREST_TEMPLE_BOSS_KEY_CHEST, FOREST_TEMPLE_BOSS_KEY, {Category::cForestTemple, Category::cVanillaBossKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_FLOORMASTER_CHEST] = ItemLocation::Chest (0x03, 0x02, "Forest Temple Floormaster Chest", FOREST_TEMPLE_FLOORMASTER_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_BOW_CHEST] = ItemLocation::Chest (0x03, 0x0C, "Forest Temple Bow Chest", FOREST_TEMPLE_BOW_CHEST, PROGRESSIVE_BOW, {Category::cForestTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_RED_POE_CHEST] = ItemLocation::Chest (0x03, 0x0D, "Forest Temple Red Poe Chest", FOREST_TEMPLE_RED_POE_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_BLUE_POE_CHEST] = ItemLocation::Chest (0x03, 0x0F, "Forest Temple Blue Poe Chest", FOREST_TEMPLE_BLUE_POE_CHEST, FOREST_TEMPLE_COMPASS, {Category::cForestTemple, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_BASEMENT_CHEST] = ItemLocation::Chest (0x03, 0x0B, "Forest Temple Basement Chest", FOREST_TEMPLE_BASEMENT_CHEST, ARROWS_5, {Category::cForestTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_FIRST_ROOM_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_FIRST_ROOM_CHEST, 0x03, 0x03, "Forest Temple First Room Chest", FOREST_TEMPLE_FIRST_ROOM_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_FIRST_STALFOS_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_FIRST_STALFOS_CHEST, 0x03, 0x00, "Forest Temple First Stalfos Chest", FOREST_TEMPLE_FIRST_STALFOS_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_RAISED_ISLAND_COURTYARD_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_RAISED_ISLAND_COURTYARD_CHEST, 0x03, 0x05, "Forest Temple Raised Island Courtyard Chest", FOREST_TEMPLE_RAISED_ISLAND_COURTYARD_CHEST, RECOVERY_HEART, {Category::cForestTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_MAP_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_MAP_CHEST, 0x03, 0x01, "Forest Temple Map Chest", FOREST_TEMPLE_MAP_CHEST, FOREST_TEMPLE_MAP, {Category::cForestTemple, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_WELL_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_WELL_CHEST, 0x03, 0x09, "Forest Temple Well Chest", FOREST_TEMPLE_WELL_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_FALLING_CEILING_ROOM_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_FALLING_CEILING_ROOM_CHEST, 0x03, 0x07, "Forest Temple Falling Ceiling Room Chest", FOREST_TEMPLE_FALLING_CEILING_ROOM_CHEST, ARROWS_10, {Category::cForestTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_EYE_SWITCH_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_EYE_SWITCH_CHEST, 0x03, 0x04, "Forest Temple Eye Switch Chest", FOREST_TEMPLE_EYE_SWITCH_CHEST, ARROWS_30, {Category::cForestTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_BOSS_KEY_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_BOSS_KEY_CHEST, 0x03, 0x0E, "Forest Temple Boss Key Chest", FOREST_TEMPLE_BOSS_KEY_CHEST, FOREST_TEMPLE_BOSS_KEY, {Category::cForestTemple, Category::cVanillaBossKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_FLOORMASTER_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_FLOORMASTER_CHEST, 0x03, 0x02, "Forest Temple Floormaster Chest", FOREST_TEMPLE_FLOORMASTER_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_BOW_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_BOW_CHEST, 0x03, 0x0C, "Forest Temple Bow Chest", FOREST_TEMPLE_BOW_CHEST, PROGRESSIVE_BOW, {Category::cForestTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_RED_POE_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_RED_POE_CHEST, 0x03, 0x0D, "Forest Temple Red Poe Chest", FOREST_TEMPLE_RED_POE_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_BLUE_POE_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_BLUE_POE_CHEST, 0x03, 0x0F, "Forest Temple Blue Poe Chest", FOREST_TEMPLE_BLUE_POE_CHEST, FOREST_TEMPLE_COMPASS, {Category::cForestTemple, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_BASEMENT_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_BASEMENT_CHEST, 0x03, 0x0B, "Forest Temple Basement Chest", FOREST_TEMPLE_BASEMENT_CHEST, ARROWS_5, {Category::cForestTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); //Forest Temple MQ - locationTable[FOREST_TEMPLE_MQ_FIRST_ROOM_CHEST] = ItemLocation::Chest (0x03, 0x03, "Forest Temple MQ First Room Chest", FOREST_TEMPLE_MQ_FIRST_ROOM_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_MQ_WOLFOS_CHEST] = ItemLocation::Chest (0x03, 0x00, "Forest Temple MQ Wolfos Chest", FOREST_TEMPLE_MQ_WOLFOS_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_MQ_BOW_CHEST] = ItemLocation::Chest (0x03, 0x0C, "Forest Temple MQ Bow Chest", FOREST_TEMPLE_MQ_BOW_CHEST, PROGRESSIVE_BOW, {Category::cForestTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_MQ_RAISED_ISLAND_COURTYARD_LOWER_CHEST] = ItemLocation::Chest (0x03, 0x01, "Forest Temple MQ Raised Island Courtyard Lower Chest", FOREST_TEMPLE_MQ_RAISED_ISLAND_COURTYARD_LOWER_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_MQ_RAISED_ISLAND_COURTYARD_UPPER_CHEST] = ItemLocation::Chest (0x03, 0x05, "Forest Temple MQ Raised Island Courtyard Upper Chest", FOREST_TEMPLE_MQ_RAISED_ISLAND_COURTYARD_UPPER_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_MQ_WELL_CHEST] = ItemLocation::Chest (0x03, 0x09, "Forest Temple MQ Well Chest", FOREST_TEMPLE_MQ_WELL_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_MQ_MAP_CHEST] = ItemLocation::Chest (0x03, 0x0D, "Forest Temple MQ Map Chest", FOREST_TEMPLE_MQ_MAP_CHEST, FOREST_TEMPLE_MAP, {Category::cForestTemple, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_MQ_COMPASS_CHEST] = ItemLocation::Chest (0x03, 0x0F, "Forest Temple MQ Compass Chest", FOREST_TEMPLE_MQ_COMPASS_CHEST, FOREST_TEMPLE_COMPASS, {Category::cForestTemple, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_MQ_FALLING_CEILING_ROOM_CHEST] = ItemLocation::Chest (0x03, 0x06, "Forest Temple MQ Falling Ceiling Room Chest", FOREST_TEMPLE_MQ_FALLING_CEILING_ROOM_CHEST, ARROWS_5, {Category::cForestTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_MQ_BASEMENT_CHEST] = ItemLocation::Chest (0x03, 0x0B, "Forest Temple MQ Basement Chest", FOREST_TEMPLE_MQ_BASEMENT_CHEST, ARROWS_5, {Category::cForestTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_MQ_REDEAD_CHEST] = ItemLocation::Chest (0x03, 0x02, "Forest Temple MQ Redead Chest", FOREST_TEMPLE_MQ_REDEAD_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_MQ_BOSS_KEY_CHEST] = ItemLocation::Chest (0x03, 0x0E, "Forest Temple MQ Boss Key Chest", FOREST_TEMPLE_MQ_BOSS_KEY_CHEST, FOREST_TEMPLE_BOSS_KEY, {Category::cForestTemple, Category::cVanillaBossKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_MQ_FIRST_ROOM_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_MQ_FIRST_ROOM_CHEST, 0x03, 0x03, "Forest Temple MQ First Room Chest", FOREST_TEMPLE_MQ_FIRST_ROOM_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_MQ_WOLFOS_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_MQ_WOLFOS_CHEST, 0x03, 0x00, "Forest Temple MQ Wolfos Chest", FOREST_TEMPLE_MQ_WOLFOS_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_MQ_BOW_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_MQ_BOW_CHEST, 0x03, 0x0C, "Forest Temple MQ Bow Chest", FOREST_TEMPLE_MQ_BOW_CHEST, PROGRESSIVE_BOW, {Category::cForestTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_MQ_RAISED_ISLAND_COURTYARD_LOWER_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_MQ_RAISED_ISLAND_COURTYARD_LOWER_CHEST, 0x03, 0x01, "Forest Temple MQ Raised Island Courtyard Lower Chest", FOREST_TEMPLE_MQ_RAISED_ISLAND_COURTYARD_LOWER_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_MQ_RAISED_ISLAND_COURTYARD_UPPER_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_MQ_RAISED_ISLAND_COURTYARD_UPPER_CHEST, 0x03, 0x05, "Forest Temple MQ Raised Island Courtyard Upper Chest", FOREST_TEMPLE_MQ_RAISED_ISLAND_COURTYARD_UPPER_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_MQ_WELL_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_MQ_WELL_CHEST, 0x03, 0x09, "Forest Temple MQ Well Chest", FOREST_TEMPLE_MQ_WELL_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_MQ_MAP_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_MQ_MAP_CHEST, 0x03, 0x0D, "Forest Temple MQ Map Chest", FOREST_TEMPLE_MQ_MAP_CHEST, FOREST_TEMPLE_MAP, {Category::cForestTemple, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_MQ_COMPASS_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_MQ_COMPASS_CHEST, 0x03, 0x0F, "Forest Temple MQ Compass Chest", FOREST_TEMPLE_MQ_COMPASS_CHEST, FOREST_TEMPLE_COMPASS, {Category::cForestTemple, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_MQ_FALLING_CEILING_ROOM_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_MQ_FALLING_CEILING_ROOM_CHEST, 0x03, 0x06, "Forest Temple MQ Falling Ceiling Room Chest", FOREST_TEMPLE_MQ_FALLING_CEILING_ROOM_CHEST, ARROWS_5, {Category::cForestTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_MQ_BASEMENT_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_MQ_BASEMENT_CHEST, 0x03, 0x0B, "Forest Temple MQ Basement Chest", FOREST_TEMPLE_MQ_BASEMENT_CHEST, ARROWS_5, {Category::cForestTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_MQ_REDEAD_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_MQ_REDEAD_CHEST, 0x03, 0x02, "Forest Temple MQ Redead Chest", FOREST_TEMPLE_MQ_REDEAD_CHEST, FOREST_TEMPLE_SMALL_KEY, {Category::cForestTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_MQ_BOSS_KEY_CHEST] = ItemLocation::Chest (RC_FOREST_TEMPLE_MQ_BOSS_KEY_CHEST, 0x03, 0x0E, "Forest Temple MQ Boss Key Chest", FOREST_TEMPLE_MQ_BOSS_KEY_CHEST, FOREST_TEMPLE_BOSS_KEY, {Category::cForestTemple, Category::cVanillaBossKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); //Fire Temple Vanilla - locationTable[FIRE_TEMPLE_NEAR_BOSS_CHEST] = ItemLocation::Chest (0x04, 0x01, "Fire Temple Near Boss Chest", FIRE_TEMPLE_NEAR_BOSS_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_FLARE_DANCER_CHEST] = ItemLocation::Chest (0x04, 0x00, "Fire Temple Flare Dancer Chest", FIRE_TEMPLE_FLARE_DANCER_CHEST, BOMBS_10, {Category::cFireTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_BOSS_KEY_CHEST] = ItemLocation::Chest (0x04, 0x0C, "Fire Temple Boss Key Chest", FIRE_TEMPLE_BOSS_KEY_CHEST, FIRE_TEMPLE_BOSS_KEY, {Category::cFireTemple, Category::cVanillaBossKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_BIG_LAVA_ROOM_BLOCKED_DOOR_CHEST] = ItemLocation::Chest (0x04, 0x02, "Fire Temple Big Lava Room Blocked Door Chest", FIRE_TEMPLE_BIG_LAVA_ROOM_BLOCKED_DOOR_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_BIG_LAVA_ROOM_LOWER_OPEN_DOOR_CHEST] = ItemLocation::Chest (0x04, 0x04, "Fire Temple Big Lava Room Lower Open Door Chest", FIRE_TEMPLE_BIG_LAVA_ROOM_LOWER_OPEN_DOOR_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_BOULDER_MAZE_LOWER_CHEST] = ItemLocation::Chest (0x04, 0x03, "Fire Temple Boulder Maze Lower Chest", FIRE_TEMPLE_BOULDER_MAZE_LOWER_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_BOULDER_MAZE_UPPER_CHEST] = ItemLocation::Chest (0x04, 0x06, "Fire Temple Boulder Maze Upper Chest", FIRE_TEMPLE_BOULDER_MAZE_UPPER_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_BOULDER_MAZE_SIDE_ROOM_CHEST] = ItemLocation::Chest (0x04, 0x08, "Fire Temple Boulder Maze Side Room Chest", FIRE_TEMPLE_BOULDER_MAZE_SIDE_ROOM_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_BOULDER_MAZE_SHORTCUT_CHEST] = ItemLocation::Chest (0x04, 0x0B, "Fire Temple Boulder Maze Shortcut Chest", FIRE_TEMPLE_BOULDER_MAZE_SHORTCUT_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_SCARECROW_CHEST] = ItemLocation::Chest (0x04, 0x0D, "Fire Temple Scarecrow Chest", FIRE_TEMPLE_SCARECROW_CHEST, HUGE_RUPEE, {Category::cFireTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_MAP_CHEST] = ItemLocation::Chest (0x04, 0x0A, "Fire Temple Map Chest", FIRE_TEMPLE_MAP_CHEST, FIRE_TEMPLE_MAP, {Category::cFireTemple, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_COMPASS_CHEST] = ItemLocation::Chest (0x04, 0x07, "Fire Temple Compass Chest", FIRE_TEMPLE_COMPASS_CHEST, FIRE_TEMPLE_COMPASS, {Category::cFireTemple, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_HIGHEST_GORON_CHEST] = ItemLocation::Chest (0x04, 0x09, "Fire Temple Highest Goron Chest", FIRE_TEMPLE_HIGHEST_GORON_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_MEGATON_HAMMER_CHEST] = ItemLocation::Chest (0x04, 0x05, "Fire Temple Megaton Hammer Chest", FIRE_TEMPLE_MEGATON_HAMMER_CHEST, MEGATON_HAMMER, {Category::cFireTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_NEAR_BOSS_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_NEAR_BOSS_CHEST, 0x04, 0x01, "Fire Temple Near Boss Chest", FIRE_TEMPLE_NEAR_BOSS_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_FLARE_DANCER_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_FLARE_DANCER_CHEST, 0x04, 0x00, "Fire Temple Flare Dancer Chest", FIRE_TEMPLE_FLARE_DANCER_CHEST, BOMBS_10, {Category::cFireTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_BOSS_KEY_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_BOSS_KEY_CHEST, 0x04, 0x0C, "Fire Temple Boss Key Chest", FIRE_TEMPLE_BOSS_KEY_CHEST, FIRE_TEMPLE_BOSS_KEY, {Category::cFireTemple, Category::cVanillaBossKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_BIG_LAVA_ROOM_BLOCKED_DOOR_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_BIG_LAVA_ROOM_BLOCKED_DOOR_CHEST, 0x04, 0x02, "Fire Temple Big Lava Room Blocked Door Chest", FIRE_TEMPLE_BIG_LAVA_ROOM_BLOCKED_DOOR_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_BIG_LAVA_ROOM_LOWER_OPEN_DOOR_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_BIG_LAVA_ROOM_LOWER_OPEN_DOOR_CHEST, 0x04, 0x04, "Fire Temple Big Lava Room Lower Open Door Chest", FIRE_TEMPLE_BIG_LAVA_ROOM_LOWER_OPEN_DOOR_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_BOULDER_MAZE_LOWER_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_BOULDER_MAZE_LOWER_CHEST, 0x04, 0x03, "Fire Temple Boulder Maze Lower Chest", FIRE_TEMPLE_BOULDER_MAZE_LOWER_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_BOULDER_MAZE_UPPER_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_BOULDER_MAZE_UPPER_CHEST, 0x04, 0x06, "Fire Temple Boulder Maze Upper Chest", FIRE_TEMPLE_BOULDER_MAZE_UPPER_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_BOULDER_MAZE_SIDE_ROOM_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_BOULDER_MAZE_SIDE_ROOM_CHEST, 0x04, 0x08, "Fire Temple Boulder Maze Side Room Chest", FIRE_TEMPLE_BOULDER_MAZE_SIDE_ROOM_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_BOULDER_MAZE_SHORTCUT_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_BOULDER_MAZE_SHORTCUT_CHEST, 0x04, 0x0B, "Fire Temple Boulder Maze Shortcut Chest", FIRE_TEMPLE_BOULDER_MAZE_SHORTCUT_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_SCARECROW_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_SCARECROW_CHEST, 0x04, 0x0D, "Fire Temple Scarecrow Chest", FIRE_TEMPLE_SCARECROW_CHEST, HUGE_RUPEE, {Category::cFireTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_MAP_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_MAP_CHEST, 0x04, 0x0A, "Fire Temple Map Chest", FIRE_TEMPLE_MAP_CHEST, FIRE_TEMPLE_MAP, {Category::cFireTemple, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_COMPASS_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_COMPASS_CHEST, 0x04, 0x07, "Fire Temple Compass Chest", FIRE_TEMPLE_COMPASS_CHEST, FIRE_TEMPLE_COMPASS, {Category::cFireTemple, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_HIGHEST_GORON_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_HIGHEST_GORON_CHEST, 0x04, 0x09, "Fire Temple Highest Goron Chest", FIRE_TEMPLE_HIGHEST_GORON_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_MEGATON_HAMMER_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_MEGATON_HAMMER_CHEST, 0x04, 0x05, "Fire Temple Megaton Hammer Chest", FIRE_TEMPLE_MEGATON_HAMMER_CHEST, MEGATON_HAMMER, {Category::cFireTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); //Fire Temple MQ - locationTable[FIRE_TEMPLE_MQ_NEAR_BOSS_CHEST] = ItemLocation::Chest (0x04, 0x07, "Fire Temple MQ Near Boss Chest", FIRE_TEMPLE_MQ_NEAR_BOSS_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_MQ_MEGATON_HAMMER_CHEST] = ItemLocation::Chest (0x04, 0x00, "Fire Temple MQ Megaton Hammer Chest", FIRE_TEMPLE_MQ_MEGATON_HAMMER_CHEST, MEGATON_HAMMER, {Category::cFireTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_MQ_COMPASS_CHEST] = ItemLocation::Chest (0x04, 0x0B, "Fire Temple MQ Compass Chest", FIRE_TEMPLE_MQ_COMPASS_CHEST, FIRE_TEMPLE_COMPASS, {Category::cFireTemple, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_MQ_LIZALFOS_MAZE_LOWER_CHEST] = ItemLocation::Chest (0x04, 0x03, "Fire Temple MQ Lizalfos Maze Lower Chest", FIRE_TEMPLE_MQ_LIZALFOS_MAZE_LOWER_CHEST, BOMBS_10, {Category::cFireTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_MQ_LIZALFOS_MAZE_UPPER_CHEST] = ItemLocation::Chest (0x04, 0x06, "Fire Temple MQ Lizalfos Maze Upper Chest", FIRE_TEMPLE_MQ_LIZALFOS_MAZE_UPPER_CHEST, BOMBS_10, {Category::cFireTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_MQ_CHEST_ON_FIRE] = ItemLocation::Chest (0x04, 0x05, "Fire Temple MQ Chest on Fire", FIRE_TEMPLE_MQ_CHEST_ON_FIRE, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_MQ_MAP_ROOM_SIDE_CHEST] = ItemLocation::Chest (0x04, 0x02, "Fire Temple MQ Map Room Side Chest", FIRE_TEMPLE_MQ_MAP_ROOM_SIDE_CHEST, HYLIAN_SHIELD, {Category::cFireTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_MQ_MAP_CHEST] = ItemLocation::Chest (0x04, 0x0C, "Fire Temple MQ Map Chest", FIRE_TEMPLE_MQ_MAP_CHEST, FIRE_TEMPLE_MAP, {Category::cFireTemple, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_MQ_BOSS_KEY_CHEST] = ItemLocation::Chest (0x04, 0x04, "Fire Temple MQ Boss Key Chest", FIRE_TEMPLE_MQ_BOSS_KEY_CHEST, FIRE_TEMPLE_BOSS_KEY, {Category::cFireTemple, Category::cVanillaBossKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_MQ_BIG_LAVA_ROOM_BLOCKED_DOOR_CHEST] = ItemLocation::Chest (0x04, 0x01, "Fire Temple MQ Big Lava Room Blocked Door Chest", FIRE_TEMPLE_MQ_BIG_LAVA_ROOM_BLOCKED_DOOR_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_MQ_LIZALFOS_MAZE_SIDE_ROOM_CHEST] = ItemLocation::Chest (0x04, 0x08, "Fire Temple MQ Lizalfos Maze Side Room Chest", FIRE_TEMPLE_MQ_LIZALFOS_MAZE_SIDE_ROOM_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_MQ_FREESTANDING_KEY] = ItemLocation::Collectable(0x04, 0x1C, "Fire Temple MQ Freestanding Key", FIRE_TEMPLE_MQ_FREESTANDING_KEY, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_MQ_NEAR_BOSS_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_MQ_NEAR_BOSS_CHEST, 0x04, 0x07, "Fire Temple MQ Near Boss Chest", FIRE_TEMPLE_MQ_NEAR_BOSS_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_MQ_MEGATON_HAMMER_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_MQ_MEGATON_HAMMER_CHEST, 0x04, 0x00, "Fire Temple MQ Megaton Hammer Chest", FIRE_TEMPLE_MQ_MEGATON_HAMMER_CHEST, MEGATON_HAMMER, {Category::cFireTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_MQ_COMPASS_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_MQ_COMPASS_CHEST, 0x04, 0x0B, "Fire Temple MQ Compass Chest", FIRE_TEMPLE_MQ_COMPASS_CHEST, FIRE_TEMPLE_COMPASS, {Category::cFireTemple, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_MQ_LIZALFOS_MAZE_LOWER_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_MQ_LIZALFOS_MAZE_LOWER_CHEST, 0x04, 0x03, "Fire Temple MQ Lizalfos Maze Lower Chest", FIRE_TEMPLE_MQ_LIZALFOS_MAZE_LOWER_CHEST, BOMBS_10, {Category::cFireTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_MQ_LIZALFOS_MAZE_UPPER_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_MQ_LIZALFOS_MAZE_UPPER_CHEST, 0x04, 0x06, "Fire Temple MQ Lizalfos Maze Upper Chest", FIRE_TEMPLE_MQ_LIZALFOS_MAZE_UPPER_CHEST, BOMBS_10, {Category::cFireTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_MQ_CHEST_ON_FIRE] = ItemLocation::Chest (RC_FIRE_TEMPLE_MQ_CHEST_ON_FIRE, 0x04, 0x05, "Fire Temple MQ Chest on Fire", FIRE_TEMPLE_MQ_CHEST_ON_FIRE, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_MQ_MAP_ROOM_SIDE_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_MQ_MAP_ROOM_SIDE_CHEST, 0x04, 0x02, "Fire Temple MQ Map Room Side Chest", FIRE_TEMPLE_MQ_MAP_ROOM_SIDE_CHEST, HYLIAN_SHIELD, {Category::cFireTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_MQ_MAP_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_MQ_MAP_CHEST, 0x04, 0x0C, "Fire Temple MQ Map Chest", FIRE_TEMPLE_MQ_MAP_CHEST, FIRE_TEMPLE_MAP, {Category::cFireTemple, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_MQ_BOSS_KEY_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_MQ_BOSS_KEY_CHEST, 0x04, 0x04, "Fire Temple MQ Boss Key Chest", FIRE_TEMPLE_MQ_BOSS_KEY_CHEST, FIRE_TEMPLE_BOSS_KEY, {Category::cFireTemple, Category::cVanillaBossKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_MQ_BIG_LAVA_ROOM_BLOCKED_DOOR_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_MQ_BIG_LAVA_ROOM_BLOCKED_DOOR_CHEST, 0x04, 0x01, "Fire Temple MQ Big Lava Room Blocked Door Chest", FIRE_TEMPLE_MQ_BIG_LAVA_ROOM_BLOCKED_DOOR_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_MQ_LIZALFOS_MAZE_SIDE_ROOM_CHEST] = ItemLocation::Chest (RC_FIRE_TEMPLE_MQ_LIZALFOS_MAZE_SIDE_ROOM_CHEST, 0x04, 0x08, "Fire Temple MQ Lizalfos Maze Side Room Chest", FIRE_TEMPLE_MQ_LIZALFOS_MAZE_SIDE_ROOM_CHEST, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_MQ_FREESTANDING_KEY] = ItemLocation::Collectable(RC_FIRE_TEMPLE_MQ_FREESTANDING_KEY, 0x04, 0x1C, "Fire Temple MQ Freestanding Key", FIRE_TEMPLE_MQ_FREESTANDING_KEY, FIRE_TEMPLE_SMALL_KEY, {Category::cFireTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); //Water Temple Vanilla - locationTable[WATER_TEMPLE_MAP_CHEST] = ItemLocation::Chest (0x05, 0x02, "Water Temple Map Chest", WATER_TEMPLE_MAP_CHEST, WATER_TEMPLE_MAP, {Category::cWaterTemple, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_COMPASS_CHEST] = ItemLocation::Chest (0x05, 0x09, "Water Temple Compass Chest", WATER_TEMPLE_COMPASS_CHEST, WATER_TEMPLE_COMPASS, {Category::cWaterTemple, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_TORCHES_CHEST] = ItemLocation::Chest (0x05, 0x01, "Water Temple Torches Chest", WATER_TEMPLE_TORCHES_CHEST, WATER_TEMPLE_SMALL_KEY, {Category::cWaterTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_DRAGON_CHEST] = ItemLocation::Chest (0x05, 0x0A, "Water Temple Dragon Chest", WATER_TEMPLE_DRAGON_CHEST, WATER_TEMPLE_SMALL_KEY, {Category::cWaterTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_CENTRAL_BOW_TARGET_CHEST] = ItemLocation::Chest (0x05, 0x08, "Water Temple Central Bow Target Chest", WATER_TEMPLE_CENTRAL_BOW_TARGET_CHEST, WATER_TEMPLE_SMALL_KEY, {Category::cWaterTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_CENTRAL_PILLAR_CHEST] = ItemLocation::Chest (0x05, 0x06, "Water Temple Central Pillar Chest", WATER_TEMPLE_CENTRAL_PILLAR_CHEST, WATER_TEMPLE_SMALL_KEY, {Category::cWaterTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_CRACKED_WALL_CHEST] = ItemLocation::Chest (0x05, 0x00, "Water Temple Cracked Wall Chest", WATER_TEMPLE_CRACKED_WALL_CHEST, WATER_TEMPLE_SMALL_KEY, {Category::cWaterTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_BOSS_KEY_CHEST] = ItemLocation::Chest (0x05, 0x05, "Water Temple Boss Key Chest", WATER_TEMPLE_BOSS_KEY_CHEST, WATER_TEMPLE_BOSS_KEY, {Category::cWaterTemple, Category::cVanillaBossKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_LONGSHOT_CHEST] = ItemLocation::Chest (0x05, 0x07, "Water Temple Longshot Chest", WATER_TEMPLE_LONGSHOT_CHEST, PROGRESSIVE_HOOKSHOT, {Category::cWaterTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_RIVER_CHEST] = ItemLocation::Chest (0x05, 0x03, "Water Temple River Chest", WATER_TEMPLE_RIVER_CHEST, WATER_TEMPLE_SMALL_KEY, {Category::cWaterTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_MAP_CHEST] = ItemLocation::Chest (RC_WATER_TEMPLE_MAP_CHEST, 0x05, 0x02, "Water Temple Map Chest", WATER_TEMPLE_MAP_CHEST, WATER_TEMPLE_MAP, {Category::cWaterTemple, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_COMPASS_CHEST] = ItemLocation::Chest (RC_WATER_TEMPLE_COMPASS_CHEST, 0x05, 0x09, "Water Temple Compass Chest", WATER_TEMPLE_COMPASS_CHEST, WATER_TEMPLE_COMPASS, {Category::cWaterTemple, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_TORCHES_CHEST] = ItemLocation::Chest (RC_WATER_TEMPLE_TORCHES_CHEST, 0x05, 0x01, "Water Temple Torches Chest", WATER_TEMPLE_TORCHES_CHEST, WATER_TEMPLE_SMALL_KEY, {Category::cWaterTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_DRAGON_CHEST] = ItemLocation::Chest (RC_WATER_TEMPLE_DRAGON_CHEST, 0x05, 0x0A, "Water Temple Dragon Chest", WATER_TEMPLE_DRAGON_CHEST, WATER_TEMPLE_SMALL_KEY, {Category::cWaterTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_CENTRAL_BOW_TARGET_CHEST] = ItemLocation::Chest (RC_WATER_TEMPLE_CENTRAL_BOW_TARGET_CHEST, 0x05, 0x08, "Water Temple Central Bow Target Chest", WATER_TEMPLE_CENTRAL_BOW_TARGET_CHEST, WATER_TEMPLE_SMALL_KEY, {Category::cWaterTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_CENTRAL_PILLAR_CHEST] = ItemLocation::Chest (RC_WATER_TEMPLE_CENTRAL_PILLAR_CHEST, 0x05, 0x06, "Water Temple Central Pillar Chest", WATER_TEMPLE_CENTRAL_PILLAR_CHEST, WATER_TEMPLE_SMALL_KEY, {Category::cWaterTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_CRACKED_WALL_CHEST] = ItemLocation::Chest (RC_WATER_TEMPLE_CRACKED_WALL_CHEST, 0x05, 0x00, "Water Temple Cracked Wall Chest", WATER_TEMPLE_CRACKED_WALL_CHEST, WATER_TEMPLE_SMALL_KEY, {Category::cWaterTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_BOSS_KEY_CHEST] = ItemLocation::Chest (RC_WATER_TEMPLE_BOSS_KEY_CHEST, 0x05, 0x05, "Water Temple Boss Key Chest", WATER_TEMPLE_BOSS_KEY_CHEST, WATER_TEMPLE_BOSS_KEY, {Category::cWaterTemple, Category::cVanillaBossKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_LONGSHOT_CHEST] = ItemLocation::Chest (RC_WATER_TEMPLE_LONGSHOT_CHEST, 0x05, 0x07, "Water Temple Longshot Chest", WATER_TEMPLE_LONGSHOT_CHEST, PROGRESSIVE_HOOKSHOT, {Category::cWaterTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_RIVER_CHEST] = ItemLocation::Chest (RC_WATER_TEMPLE_RIVER_CHEST, 0x05, 0x03, "Water Temple River Chest", WATER_TEMPLE_RIVER_CHEST, WATER_TEMPLE_SMALL_KEY, {Category::cWaterTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); //Water Temple MQ - locationTable[WATER_TEMPLE_MQ_CENTRAL_PILLAR_CHEST] = ItemLocation::Chest (0x05, 0x06, "Water Temple MQ Central Pillar Chest", WATER_TEMPLE_MQ_CENTRAL_PILLAR_CHEST, WATER_TEMPLE_SMALL_KEY, {Category::cWaterTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_MQ_BOSS_KEY_CHEST] = ItemLocation::Chest (0x05, 0x05, "Water Temple MQ Boss Key Chest", WATER_TEMPLE_MQ_BOSS_KEY_CHEST, WATER_TEMPLE_BOSS_KEY, {Category::cWaterTemple, Category::cVanillaBossKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_MQ_LONGSHOT_CHEST] = ItemLocation::Chest (0x05, 0x00, "Water Temple MQ Longshot Chest", WATER_TEMPLE_MQ_LONGSHOT_CHEST, PROGRESSIVE_HOOKSHOT, {Category::cWaterTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_MQ_COMPASS_CHEST] = ItemLocation::Chest (0x05, 0x01, "Water Temple MQ Compass Chest", WATER_TEMPLE_MQ_COMPASS_CHEST, WATER_TEMPLE_COMPASS, {Category::cWaterTemple, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_MQ_MAP_CHEST] = ItemLocation::Chest (0x05, 0x02, "Water Temple MQ Map Chest", WATER_TEMPLE_MQ_MAP_CHEST, WATER_TEMPLE_MAP, {Category::cWaterTemple, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_MQ_FREESTANDING_KEY] = ItemLocation::Collectable(0x05, 0x01, "Water Temple MQ Freestanding Key", WATER_TEMPLE_MQ_FREESTANDING_KEY, WATER_TEMPLE_SMALL_KEY, {Category::cWaterTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_MQ_CENTRAL_PILLAR_CHEST] = ItemLocation::Chest (RC_WATER_TEMPLE_MQ_CENTRAL_PILLAR_CHEST, 0x05, 0x06, "Water Temple MQ Central Pillar Chest", WATER_TEMPLE_MQ_CENTRAL_PILLAR_CHEST, WATER_TEMPLE_SMALL_KEY, {Category::cWaterTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_MQ_BOSS_KEY_CHEST] = ItemLocation::Chest (RC_WATER_TEMPLE_MQ_BOSS_KEY_CHEST, 0x05, 0x05, "Water Temple MQ Boss Key Chest", WATER_TEMPLE_MQ_BOSS_KEY_CHEST, WATER_TEMPLE_BOSS_KEY, {Category::cWaterTemple, Category::cVanillaBossKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_MQ_LONGSHOT_CHEST] = ItemLocation::Chest (RC_WATER_TEMPLE_MQ_LONGSHOT_CHEST, 0x05, 0x00, "Water Temple MQ Longshot Chest", WATER_TEMPLE_MQ_LONGSHOT_CHEST, PROGRESSIVE_HOOKSHOT, {Category::cWaterTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_MQ_COMPASS_CHEST] = ItemLocation::Chest (RC_WATER_TEMPLE_MQ_COMPASS_CHEST, 0x05, 0x01, "Water Temple MQ Compass Chest", WATER_TEMPLE_MQ_COMPASS_CHEST, WATER_TEMPLE_COMPASS, {Category::cWaterTemple, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_MQ_MAP_CHEST] = ItemLocation::Chest (RC_WATER_TEMPLE_MQ_MAP_CHEST, 0x05, 0x02, "Water Temple MQ Map Chest", WATER_TEMPLE_MQ_MAP_CHEST, WATER_TEMPLE_MAP, {Category::cWaterTemple, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_MQ_FREESTANDING_KEY] = ItemLocation::Collectable(RC_WATER_TEMPLE_MQ_FREESTANDING_KEY, 0x05, 0x01, "Water Temple MQ Freestanding Key", WATER_TEMPLE_MQ_FREESTANDING_KEY, WATER_TEMPLE_SMALL_KEY, {Category::cWaterTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); //Spirit Temple Shared - locationTable[SPIRIT_TEMPLE_SILVER_GAUNTLETS_CHEST] = ItemLocation::Chest (0x5C, 0x0B, "Spirit Temple Silver Gauntlets Chest", SPIRIT_TEMPLE_SILVER_GAUNTLETS_CHEST, PROGRESSIVE_STRENGTH, {Category::cSpiritTemple, Category::cDesertColossus}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MIRROR_SHIELD_CHEST] = ItemLocation::Chest (0x5C, 0x09, "Spirit Temple Mirror Shield Chest", SPIRIT_TEMPLE_MIRROR_SHIELD_CHEST, MIRROR_SHIELD, {Category::cSpiritTemple, Category::cDesertColossus}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_SILVER_GAUNTLETS_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_SILVER_GAUNTLETS_CHEST, 0x5C, 0x0B, "Spirit Temple Silver Gauntlets Chest", SPIRIT_TEMPLE_SILVER_GAUNTLETS_CHEST, PROGRESSIVE_STRENGTH, {Category::cSpiritTemple, Category::cDesertColossus}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MIRROR_SHIELD_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MIRROR_SHIELD_CHEST, 0x5C, 0x09, "Spirit Temple Mirror Shield Chest", SPIRIT_TEMPLE_MIRROR_SHIELD_CHEST, MIRROR_SHIELD, {Category::cSpiritTemple, Category::cDesertColossus}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); //Spirit Temple Vanilla - locationTable[SPIRIT_TEMPLE_CHILD_BRIDGE_CHEST] = ItemLocation::Chest (0x06, 0x08, "Spirit Temple Child Bridge Chest", SPIRIT_TEMPLE_CHILD_BRIDGE_CHEST, DEKU_SHIELD, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_CHILD_EARLY_TORCHES_CHEST] = ItemLocation::Chest (0x06, 0x00, "Spirit Temple Child Early Torches Chest", SPIRIT_TEMPLE_CHILD_EARLY_TORCHES_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_COMPASS_CHEST] = ItemLocation::Chest (0x06, 0x04, "Spirit Temple Compass Chest", SPIRIT_TEMPLE_COMPASS_CHEST, SPIRIT_TEMPLE_COMPASS, {Category::cSpiritTemple, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_EARLY_ADULT_RIGHT_CHEST] = ItemLocation::Chest (0x06, 0x07, "Spirit Temple Early Adult Right Chest", SPIRIT_TEMPLE_EARLY_ADULT_RIGHT_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_FIRST_MIRROR_LEFT_CHEST] = ItemLocation::Chest (0x06, 0x0D, "Spirit Temple First Mirror Left Chest", SPIRIT_TEMPLE_FIRST_MIRROR_LEFT_CHEST, ICE_TRAP, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_FIRST_MIRROR_RIGHT_CHEST] = ItemLocation::Chest (0x06, 0x0E, "Spirit Temple First Mirror Right Chest", SPIRIT_TEMPLE_FIRST_MIRROR_RIGHT_CHEST, RECOVERY_HEART, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MAP_CHEST] = ItemLocation::Chest (0x06, 0x03, "Spirit Temple Map Chest", SPIRIT_TEMPLE_MAP_CHEST, SPIRIT_TEMPLE_MAP, {Category::cSpiritTemple, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_CHILD_CLIMB_NORTH_CHEST] = ItemLocation::Chest (0x06, 0x06, "Spirit Temple Child Climb North Chest", SPIRIT_TEMPLE_CHILD_CLIMB_NORTH_CHEST, BOMBCHU_10, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_CHILD_CLIMB_EAST_CHEST] = ItemLocation::Chest (0x06, 0x0C, "Spirit Temple Child Climb East Chest", SPIRIT_TEMPLE_CHILD_CLIMB_EAST_CHEST, DEKU_SHIELD, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_SUN_BLOCK_ROOM_CHEST] = ItemLocation::Chest (0x06, 0x01, "Spirit Temple Sun Block Room Chest", SPIRIT_TEMPLE_SUN_BLOCK_ROOM_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_STATUE_ROOM_HAND_CHEST] = ItemLocation::Chest (0x06, 0x02, "Spirit Temple Statue Room Hand Chest", SPIRIT_TEMPLE_STATUE_ROOM_HAND_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_STATUE_ROOM_NORTHEAST_CHEST] = ItemLocation::Chest (0x06, 0x0F, "Spirit Temple Statue Room Northeast Chest", SPIRIT_TEMPLE_STATUE_ROOM_NORTHEAST_CHEST, BLUE_RUPEE, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_NEAR_FOUR_ARMOS_CHEST] = ItemLocation::Chest (0x06, 0x05, "Spirit Temple Near Four Armos Chest", SPIRIT_TEMPLE_NEAR_FOUR_ARMOS_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_HALLWAY_RIGHT_INVISIBLE_CHEST] = ItemLocation::Chest (0x06, 0x14, "Spirit Temple Hallway Right Invisible Chest", SPIRIT_TEMPLE_HALLWAY_RIGHT_INVISIBLE_CHEST, RECOVERY_HEART, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_HALLWAY_LEFT_INVISIBLE_CHEST] = ItemLocation::Chest (0x06, 0x15, "Spirit Temple Hallway Left Invisible Chest", SPIRIT_TEMPLE_HALLWAY_LEFT_INVISIBLE_CHEST, RECOVERY_HEART, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_BOSS_KEY_CHEST] = ItemLocation::Chest (0x06, 0x0A, "Spirit Temple Boss Key Chest", SPIRIT_TEMPLE_BOSS_KEY_CHEST, SPIRIT_TEMPLE_BOSS_KEY, {Category::cSpiritTemple, Category::cVanillaBossKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_TOPMOST_CHEST] = ItemLocation::Chest (0x06, 0x12, "Spirit Temple Topmost Chest", SPIRIT_TEMPLE_TOPMOST_CHEST, BOMBS_20, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_CHILD_BRIDGE_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_CHILD_BRIDGE_CHEST, 0x06, 0x08, "Spirit Temple Child Bridge Chest", SPIRIT_TEMPLE_CHILD_BRIDGE_CHEST, DEKU_SHIELD, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_CHILD_EARLY_TORCHES_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_CHILD_EARLY_TORCHES_CHEST, 0x06, 0x00, "Spirit Temple Child Early Torches Chest", SPIRIT_TEMPLE_CHILD_EARLY_TORCHES_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_COMPASS_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_COMPASS_CHEST, 0x06, 0x04, "Spirit Temple Compass Chest", SPIRIT_TEMPLE_COMPASS_CHEST, SPIRIT_TEMPLE_COMPASS, {Category::cSpiritTemple, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_EARLY_ADULT_RIGHT_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_EARLY_ADULT_RIGHT_CHEST, 0x06, 0x07, "Spirit Temple Early Adult Right Chest", SPIRIT_TEMPLE_EARLY_ADULT_RIGHT_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_FIRST_MIRROR_LEFT_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_FIRST_MIRROR_LEFT_CHEST, 0x06, 0x0D, "Spirit Temple First Mirror Left Chest", SPIRIT_TEMPLE_FIRST_MIRROR_LEFT_CHEST, ICE_TRAP, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_FIRST_MIRROR_RIGHT_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_FIRST_MIRROR_RIGHT_CHEST, 0x06, 0x0E, "Spirit Temple First Mirror Right Chest", SPIRIT_TEMPLE_FIRST_MIRROR_RIGHT_CHEST, RECOVERY_HEART, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MAP_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MAP_CHEST, 0x06, 0x03, "Spirit Temple Map Chest", SPIRIT_TEMPLE_MAP_CHEST, SPIRIT_TEMPLE_MAP, {Category::cSpiritTemple, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_CHILD_CLIMB_NORTH_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_CHILD_CLIMB_NORTH_CHEST, 0x06, 0x06, "Spirit Temple Child Climb North Chest", SPIRIT_TEMPLE_CHILD_CLIMB_NORTH_CHEST, BOMBCHU_10, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_CHILD_CLIMB_EAST_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_CHILD_CLIMB_EAST_CHEST, 0x06, 0x0C, "Spirit Temple Child Climb East Chest", SPIRIT_TEMPLE_CHILD_CLIMB_EAST_CHEST, DEKU_SHIELD, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_SUN_BLOCK_ROOM_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_SUN_BLOCK_ROOM_CHEST, 0x06, 0x01, "Spirit Temple Sun Block Room Chest", SPIRIT_TEMPLE_SUN_BLOCK_ROOM_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_STATUE_ROOM_HAND_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_STATUE_ROOM_HAND_CHEST, 0x06, 0x02, "Spirit Temple Statue Room Hand Chest", SPIRIT_TEMPLE_STATUE_ROOM_HAND_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_STATUE_ROOM_NORTHEAST_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_STATUE_ROOM_NORTHEAST_CHEST, 0x06, 0x0F, "Spirit Temple Statue Room Northeast Chest", SPIRIT_TEMPLE_STATUE_ROOM_NORTHEAST_CHEST, BLUE_RUPEE, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_NEAR_FOUR_ARMOS_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_NEAR_FOUR_ARMOS_CHEST, 0x06, 0x05, "Spirit Temple Near Four Armos Chest", SPIRIT_TEMPLE_NEAR_FOUR_ARMOS_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_HALLWAY_RIGHT_INVISIBLE_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_HALLWAY_RIGHT_INVISIBLE_CHEST, 0x06, 0x14, "Spirit Temple Hallway Right Invisible Chest", SPIRIT_TEMPLE_HALLWAY_RIGHT_INVISIBLE_CHEST, RECOVERY_HEART, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_HALLWAY_LEFT_INVISIBLE_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_HALLWAY_LEFT_INVISIBLE_CHEST, 0x06, 0x15, "Spirit Temple Hallway Left Invisible Chest", SPIRIT_TEMPLE_HALLWAY_LEFT_INVISIBLE_CHEST, RECOVERY_HEART, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_BOSS_KEY_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_BOSS_KEY_CHEST, 0x06, 0x0A, "Spirit Temple Boss Key Chest", SPIRIT_TEMPLE_BOSS_KEY_CHEST, SPIRIT_TEMPLE_BOSS_KEY, {Category::cSpiritTemple, Category::cVanillaBossKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_TOPMOST_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_TOPMOST_CHEST, 0x06, 0x12, "Spirit Temple Topmost Chest", SPIRIT_TEMPLE_TOPMOST_CHEST, BOMBS_20, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); //Spirit Temple MQ - locationTable[SPIRIT_TEMPLE_MQ_ENTRANCE_FRONT_LEFT_CHEST] = ItemLocation::Chest (0x06, 0x1A, "Spirit Temple MQ Entrance Front Left Chest", SPIRIT_TEMPLE_MQ_ENTRANCE_FRONT_LEFT_CHEST, BOMBCHU_10, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_ENTRANCE_BACK_RIGHT_CHEST] = ItemLocation::Chest (0x06, 0x1F, "Spirit Temple MQ Entrance Back Right Chest", SPIRIT_TEMPLE_MQ_ENTRANCE_BACK_RIGHT_CHEST, BOMBCHU_10, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_ENTRANCE_FRONT_RIGHT_CHEST] = ItemLocation::Chest (0x06, 0x1B, "Spirit Temple MQ Entrance Front Right Chest", SPIRIT_TEMPLE_MQ_ENTRANCE_FRONT_RIGHT_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_ENTRANCE_BACK_LEFT_CHEST] = ItemLocation::Chest (0x06, 0x1E, "Spirit Temple MQ Entrance Back Left Chest", SPIRIT_TEMPLE_MQ_ENTRANCE_BACK_LEFT_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_CHILD_HAMMER_SWITCH_CHEST] = ItemLocation::Chest (0x06, 0x1D, "Spirit Temple MQ Child Hammer Switch Chest", SPIRIT_TEMPLE_MQ_CHILD_HAMMER_SWITCH_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_MAP_CHEST] = ItemLocation::Chest (0x06, 0x00, "Spirit Temple MQ Map Chest", SPIRIT_TEMPLE_MQ_MAP_CHEST, SPIRIT_TEMPLE_MAP, {Category::cSpiritTemple, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_MAP_ROOM_ENEMY_CHEST] = ItemLocation::Chest (0x06, 0x08, "Spirit Temple MQ Map Room Enemy Chest", SPIRIT_TEMPLE_MQ_MAP_ROOM_ENEMY_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_CHILD_CLIMB_NORTH_CHEST] = ItemLocation::Chest (0x06, 0x06, "Spirit Temple MQ Child Climb North Chest", SPIRIT_TEMPLE_MQ_CHILD_CLIMB_NORTH_CHEST, BOMBCHU_10, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_CHILD_CLIMB_SOUTH_CHEST] = ItemLocation::Chest (0x06, 0x0C, "Spirit Temple MQ Child Climb South Chest", SPIRIT_TEMPLE_MQ_CHILD_CLIMB_SOUTH_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_COMPASS_CHEST] = ItemLocation::Chest (0x06, 0x03, "Spirit Temple MQ Compass Chest", SPIRIT_TEMPLE_MQ_COMPASS_CHEST, SPIRIT_TEMPLE_COMPASS, {Category::cSpiritTemple, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_STATUE_ROOM_LULLABY_CHEST] = ItemLocation::Chest (0x06, 0x0F, "Spirit Temple MQ Statue Room Lullaby Chest", SPIRIT_TEMPLE_MQ_STATUE_ROOM_LULLABY_CHEST, BLUE_RUPEE, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_STATUE_ROOM_INVISIBLE_CHEST] = ItemLocation::Chest (0x06, 0x02, "Spirit Temple MQ Statue Room Invisible Chest", SPIRIT_TEMPLE_MQ_STATUE_ROOM_INVISIBLE_CHEST, RECOVERY_HEART, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_SILVER_BLOCK_HALLWAY_CHEST] = ItemLocation::Chest (0x06, 0x1C, "Spirit Temple MQ Silver Block Hallway Chest", SPIRIT_TEMPLE_MQ_SILVER_BLOCK_HALLWAY_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_SUN_BLOCK_ROOM_CHEST] = ItemLocation::Chest (0x06, 0x01, "Spirit Temple MQ Sun Block Room Chest", SPIRIT_TEMPLE_MQ_SUN_BLOCK_ROOM_CHEST, RECOVERY_HEART, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_SYMPHONY_ROOM_CHEST] = ItemLocation::Chest (0x06, 0x07, "Spirit Temple MQ Symphony Room Chest", SPIRIT_TEMPLE_MQ_SYMPHONY_ROOM_CHEST, PURPLE_RUPEE, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_LEEVER_ROOM_CHEST] = ItemLocation::Chest (0x06, 0x04, "Spirit Temple MQ Leever Room Chest", SPIRIT_TEMPLE_MQ_LEEVER_ROOM_CHEST, PURPLE_RUPEE, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_BEAMOS_ROOM_CHEST] = ItemLocation::Chest (0x06, 0x19, "Spirit Temple MQ Beamos Room Chest", SPIRIT_TEMPLE_MQ_BEAMOS_ROOM_CHEST, RECOVERY_HEART, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_CHEST_SWITCH_CHEST] = ItemLocation::Chest (0x06, 0x18, "Spirit Temple MQ Chest Switch Chest", SPIRIT_TEMPLE_MQ_CHEST_SWITCH_CHEST, ICE_TRAP, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_BOSS_KEY_CHEST] = ItemLocation::Chest (0x06, 0x05, "Spirit Temple MQ Boss Key Chest", SPIRIT_TEMPLE_MQ_BOSS_KEY_CHEST, SPIRIT_TEMPLE_BOSS_KEY, {Category::cSpiritTemple, Category::cVanillaBossKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_MIRROR_PUZZLE_INVISIBLE_CHEST] = ItemLocation::Chest (0x06, 0x12, "Spirit Temple MQ Mirror Puzzle Invisible Chest", SPIRIT_TEMPLE_MQ_MIRROR_PUZZLE_INVISIBLE_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_ENTRANCE_FRONT_LEFT_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MQ_ENTRANCE_FRONT_LEFT_CHEST, 0x06, 0x1A, "Spirit Temple MQ Entrance Front Left Chest", SPIRIT_TEMPLE_MQ_ENTRANCE_FRONT_LEFT_CHEST, BOMBCHU_10, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_ENTRANCE_BACK_RIGHT_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MQ_ENTRANCE_BACK_RIGHT_CHEST, 0x06, 0x1F, "Spirit Temple MQ Entrance Back Right Chest", SPIRIT_TEMPLE_MQ_ENTRANCE_BACK_RIGHT_CHEST, BOMBCHU_10, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_ENTRANCE_FRONT_RIGHT_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MQ_ENTRANCE_FRONT_RIGHT_CHEST, 0x06, 0x1B, "Spirit Temple MQ Entrance Front Right Chest", SPIRIT_TEMPLE_MQ_ENTRANCE_FRONT_RIGHT_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_ENTRANCE_BACK_LEFT_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MQ_ENTRANCE_BACK_LEFT_CHEST, 0x06, 0x1E, "Spirit Temple MQ Entrance Back Left Chest", SPIRIT_TEMPLE_MQ_ENTRANCE_BACK_LEFT_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_CHILD_HAMMER_SWITCH_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MQ_CHILD_HAMMER_SWITCH_CHEST, 0x06, 0x1D, "Spirit Temple MQ Child Hammer Switch Chest", SPIRIT_TEMPLE_MQ_CHILD_HAMMER_SWITCH_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_MAP_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MQ_MAP_CHEST, 0x06, 0x00, "Spirit Temple MQ Map Chest", SPIRIT_TEMPLE_MQ_MAP_CHEST, SPIRIT_TEMPLE_MAP, {Category::cSpiritTemple, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_MAP_ROOM_ENEMY_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MQ_MAP_ROOM_ENEMY_CHEST, 0x06, 0x08, "Spirit Temple MQ Map Room Enemy Chest", SPIRIT_TEMPLE_MQ_MAP_ROOM_ENEMY_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_CHILD_CLIMB_NORTH_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MQ_CHILD_CLIMB_NORTH_CHEST, 0x06, 0x06, "Spirit Temple MQ Child Climb North Chest", SPIRIT_TEMPLE_MQ_CHILD_CLIMB_NORTH_CHEST, BOMBCHU_10, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_CHILD_CLIMB_SOUTH_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MQ_CHILD_CLIMB_SOUTH_CHEST, 0x06, 0x0C, "Spirit Temple MQ Child Climb South Chest", SPIRIT_TEMPLE_MQ_CHILD_CLIMB_SOUTH_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_COMPASS_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MQ_COMPASS_CHEST, 0x06, 0x03, "Spirit Temple MQ Compass Chest", SPIRIT_TEMPLE_MQ_COMPASS_CHEST, SPIRIT_TEMPLE_COMPASS, {Category::cSpiritTemple, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_STATUE_ROOM_LULLABY_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MQ_STATUE_ROOM_LULLABY_CHEST, 0x06, 0x0F, "Spirit Temple MQ Statue Room Lullaby Chest", SPIRIT_TEMPLE_MQ_STATUE_ROOM_LULLABY_CHEST, BLUE_RUPEE, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_STATUE_ROOM_INVISIBLE_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MQ_STATUE_ROOM_INVISIBLE_CHEST, 0x06, 0x02, "Spirit Temple MQ Statue Room Invisible Chest", SPIRIT_TEMPLE_MQ_STATUE_ROOM_INVISIBLE_CHEST, RECOVERY_HEART, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_SILVER_BLOCK_HALLWAY_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MQ_SILVER_BLOCK_HALLWAY_CHEST, 0x06, 0x1C, "Spirit Temple MQ Silver Block Hallway Chest", SPIRIT_TEMPLE_MQ_SILVER_BLOCK_HALLWAY_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_SUN_BLOCK_ROOM_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MQ_SUN_BLOCK_ROOM_CHEST, 0x06, 0x01, "Spirit Temple MQ Sun Block Room Chest", SPIRIT_TEMPLE_MQ_SUN_BLOCK_ROOM_CHEST, RECOVERY_HEART, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_SYMPHONY_ROOM_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MQ_SYMPHONY_ROOM_CHEST, 0x06, 0x07, "Spirit Temple MQ Symphony Room Chest", SPIRIT_TEMPLE_MQ_SYMPHONY_ROOM_CHEST, PURPLE_RUPEE, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_LEEVER_ROOM_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MQ_LEEVER_ROOM_CHEST, 0x06, 0x04, "Spirit Temple MQ Leever Room Chest", SPIRIT_TEMPLE_MQ_LEEVER_ROOM_CHEST, PURPLE_RUPEE, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_BEAMOS_ROOM_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MQ_BEAMOS_ROOM_CHEST, 0x06, 0x19, "Spirit Temple MQ Beamos Room Chest", SPIRIT_TEMPLE_MQ_BEAMOS_ROOM_CHEST, RECOVERY_HEART, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_CHEST_SWITCH_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MQ_CHEST_SWITCH_CHEST, 0x06, 0x18, "Spirit Temple MQ Chest Switch Chest", SPIRIT_TEMPLE_MQ_CHEST_SWITCH_CHEST, ICE_TRAP, {Category::cSpiritTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_BOSS_KEY_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MQ_BOSS_KEY_CHEST, 0x06, 0x05, "Spirit Temple MQ Boss Key Chest", SPIRIT_TEMPLE_MQ_BOSS_KEY_CHEST, SPIRIT_TEMPLE_BOSS_KEY, {Category::cSpiritTemple, Category::cVanillaBossKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_MIRROR_PUZZLE_INVISIBLE_CHEST] = ItemLocation::Chest (RC_SPIRIT_TEMPLE_MQ_MIRROR_PUZZLE_INVISIBLE_CHEST, 0x06, 0x12, "Spirit Temple MQ Mirror Puzzle Invisible Chest", SPIRIT_TEMPLE_MQ_MIRROR_PUZZLE_INVISIBLE_CHEST, SPIRIT_TEMPLE_SMALL_KEY, {Category::cSpiritTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); //Shadow Temple Vanilla - locationTable[SHADOW_TEMPLE_MAP_CHEST] = ItemLocation::Chest (0x07, 0x01, "Shadow Temple Map Chest", SHADOW_TEMPLE_MAP_CHEST, SHADOW_TEMPLE_MAP, {Category::cShadowTemple, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_HOVER_BOOTS_CHEST] = ItemLocation::Chest (0x07, 0x07, "Shadow Temple Hover Boots Chest", SHADOW_TEMPLE_HOVER_BOOTS_CHEST, HOVER_BOOTS, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_COMPASS_CHEST] = ItemLocation::Chest (0x07, 0x03, "Shadow Temple Compass Chest", SHADOW_TEMPLE_COMPASS_CHEST, SHADOW_TEMPLE_COMPASS, {Category::cShadowTemple, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_EARLY_SILVER_RUPEE_CHEST] = ItemLocation::Chest (0x07, 0x02, "Shadow Temple Early Silver Rupee Chest", SHADOW_TEMPLE_EARLY_SILVER_RUPEE_CHEST, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_INVISIBLE_BLADES_VISIBLE_CHEST] = ItemLocation::Chest (0x07, 0x0C, "Shadow Temple Invisible Blades Visible Chest", SHADOW_TEMPLE_INVISIBLE_BLADES_VISIBLE_CHEST, BLUE_RUPEE, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_INVISIBLE_BLADES_INVISIBLE_CHEST] = ItemLocation::Chest (0x07, 0x16, "Shadow Temple Invisible Blades Invisible Chest", SHADOW_TEMPLE_INVISIBLE_BLADES_INVISIBLE_CHEST, ARROWS_30, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_FALLING_SPIKES_LOWER_CHEST] = ItemLocation::Chest (0x07, 0x05, "Shadow Temple Falling Spikes Lower Chest", SHADOW_TEMPLE_FALLING_SPIKES_LOWER_CHEST, ARROWS_10, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_FALLING_SPIKES_UPPER_CHEST] = ItemLocation::Chest (0x07, 0x06, "Shadow Temple Falling Spikes Upper Chest", SHADOW_TEMPLE_FALLING_SPIKES_UPPER_CHEST, BLUE_RUPEE, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_FALLING_SPIKES_SWITCH_CHEST] = ItemLocation::Chest (0x07, 0x04, "Shadow Temple Falling Spikes Switch Chest", SHADOW_TEMPLE_FALLING_SPIKES_SWITCH_CHEST, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_INVISIBLE_SPIKES_CHEST] = ItemLocation::Chest (0x07, 0x09, "Shadow Temple Invisible Spikes Chest", SHADOW_TEMPLE_INVISIBLE_SPIKES_CHEST, BLUE_RUPEE, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_WIND_HINT_CHEST] = ItemLocation::Chest (0x07, 0x15, "Shadow Temple Wind Hint Chest", SHADOW_TEMPLE_WIND_HINT_CHEST, ARROWS_10, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_AFTER_WIND_ENEMY_CHEST] = ItemLocation::Chest (0x07, 0x08, "Shadow Temple After Wind Enemy Chest", SHADOW_TEMPLE_AFTER_WIND_ENEMY_CHEST, BLUE_RUPEE, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_AFTER_WIND_HIDDEN_CHEST] = ItemLocation::Chest (0x07, 0x14, "Shadow Temple After Wind Hidden Chest", SHADOW_TEMPLE_AFTER_WIND_HIDDEN_CHEST, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_SPIKE_WALLS_LEFT_CHEST] = ItemLocation::Chest (0x07, 0x0A, "Shadow Temple Spike Walls Left Chest", SHADOW_TEMPLE_SPIKE_WALLS_LEFT_CHEST, BLUE_RUPEE, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_BOSS_KEY_CHEST] = ItemLocation::Chest (0x07, 0x0B, "Shadow Temple Boss Key Chest", SHADOW_TEMPLE_BOSS_KEY_CHEST, SHADOW_TEMPLE_BOSS_KEY, {Category::cShadowTemple, Category::cVanillaBossKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_INVISIBLE_FLOORMASTER_CHEST] = ItemLocation::Chest (0x07, 0x0D, "Shadow Temple Invisible Floormaster Chest", SHADOW_TEMPLE_INVISIBLE_FLOORMASTER_CHEST, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_FREESTANDING_KEY] = ItemLocation::Collectable(0x07, 0x01, "Shadow Temple Freestanding Key", SHADOW_TEMPLE_FREESTANDING_KEY, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MAP_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_MAP_CHEST, 0x07, 0x01, "Shadow Temple Map Chest", SHADOW_TEMPLE_MAP_CHEST, SHADOW_TEMPLE_MAP, {Category::cShadowTemple, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_HOVER_BOOTS_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_HOVER_BOOTS_CHEST, 0x07, 0x07, "Shadow Temple Hover Boots Chest", SHADOW_TEMPLE_HOVER_BOOTS_CHEST, HOVER_BOOTS, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_COMPASS_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_COMPASS_CHEST, 0x07, 0x03, "Shadow Temple Compass Chest", SHADOW_TEMPLE_COMPASS_CHEST, SHADOW_TEMPLE_COMPASS, {Category::cShadowTemple, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_EARLY_SILVER_RUPEE_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_EARLY_SILVER_RUPEE_CHEST, 0x07, 0x02, "Shadow Temple Early Silver Rupee Chest", SHADOW_TEMPLE_EARLY_SILVER_RUPEE_CHEST, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_INVISIBLE_BLADES_VISIBLE_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_INVISIBLE_BLADES_VISIBLE_CHEST, 0x07, 0x0C, "Shadow Temple Invisible Blades Visible Chest", SHADOW_TEMPLE_INVISIBLE_BLADES_VISIBLE_CHEST, BLUE_RUPEE, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_INVISIBLE_BLADES_INVISIBLE_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_INVISIBLE_BLADES_INVISIBLE_CHEST, 0x07, 0x16, "Shadow Temple Invisible Blades Invisible Chest", SHADOW_TEMPLE_INVISIBLE_BLADES_INVISIBLE_CHEST, ARROWS_30, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_FALLING_SPIKES_LOWER_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_FALLING_SPIKES_LOWER_CHEST, 0x07, 0x05, "Shadow Temple Falling Spikes Lower Chest", SHADOW_TEMPLE_FALLING_SPIKES_LOWER_CHEST, ARROWS_10, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_FALLING_SPIKES_UPPER_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_FALLING_SPIKES_UPPER_CHEST, 0x07, 0x06, "Shadow Temple Falling Spikes Upper Chest", SHADOW_TEMPLE_FALLING_SPIKES_UPPER_CHEST, BLUE_RUPEE, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_FALLING_SPIKES_SWITCH_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_FALLING_SPIKES_SWITCH_CHEST, 0x07, 0x04, "Shadow Temple Falling Spikes Switch Chest", SHADOW_TEMPLE_FALLING_SPIKES_SWITCH_CHEST, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_INVISIBLE_SPIKES_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_INVISIBLE_SPIKES_CHEST, 0x07, 0x09, "Shadow Temple Invisible Spikes Chest", SHADOW_TEMPLE_INVISIBLE_SPIKES_CHEST, BLUE_RUPEE, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_WIND_HINT_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_WIND_HINT_CHEST, 0x07, 0x15, "Shadow Temple Wind Hint Chest", SHADOW_TEMPLE_WIND_HINT_CHEST, ARROWS_10, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_AFTER_WIND_ENEMY_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_AFTER_WIND_ENEMY_CHEST, 0x07, 0x08, "Shadow Temple After Wind Enemy Chest", SHADOW_TEMPLE_AFTER_WIND_ENEMY_CHEST, BLUE_RUPEE, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_AFTER_WIND_HIDDEN_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_AFTER_WIND_HIDDEN_CHEST, 0x07, 0x14, "Shadow Temple After Wind Hidden Chest", SHADOW_TEMPLE_AFTER_WIND_HIDDEN_CHEST, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_SPIKE_WALLS_LEFT_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_SPIKE_WALLS_LEFT_CHEST, 0x07, 0x0A, "Shadow Temple Spike Walls Left Chest", SHADOW_TEMPLE_SPIKE_WALLS_LEFT_CHEST, BLUE_RUPEE, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_BOSS_KEY_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_BOSS_KEY_CHEST, 0x07, 0x0B, "Shadow Temple Boss Key Chest", SHADOW_TEMPLE_BOSS_KEY_CHEST, SHADOW_TEMPLE_BOSS_KEY, {Category::cShadowTemple, Category::cVanillaBossKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_INVISIBLE_FLOORMASTER_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_INVISIBLE_FLOORMASTER_CHEST, 0x07, 0x0D, "Shadow Temple Invisible Floormaster Chest", SHADOW_TEMPLE_INVISIBLE_FLOORMASTER_CHEST, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_FREESTANDING_KEY] = ItemLocation::Collectable(RC_SHADOW_TEMPLE_FREESTANDING_KEY, 0x07, 0x01, "Shadow Temple Freestanding Key", SHADOW_TEMPLE_FREESTANDING_KEY, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); //Shadow Temple MQ - locationTable[SHADOW_TEMPLE_MQ_COMPASS_CHEST] = ItemLocation::Chest (0x07, 0x01, "Shadow Temple MQ Compass Chest", SHADOW_TEMPLE_MQ_COMPASS_CHEST, SHADOW_TEMPLE_COMPASS, {Category::cShadowTemple, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_HOVER_BOOTS_CHEST] = ItemLocation::Chest (0x07, 0x07, "Shadow Temple MQ Hover Boots Chest", SHADOW_TEMPLE_MQ_HOVER_BOOTS_CHEST, HOVER_BOOTS, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_EARLY_GIBDOS_CHEST] = ItemLocation::Chest (0x07, 0x03, "Shadow Temple MQ Early Gibdos Chest", SHADOW_TEMPLE_MQ_EARLY_GIBDOS_CHEST, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_MAP_CHEST] = ItemLocation::Chest (0x07, 0x02, "Shadow Temple MQ Map Chest", SHADOW_TEMPLE_MQ_MAP_CHEST, SHADOW_TEMPLE_MAP, {Category::cShadowTemple, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_BEAMOS_SILVER_RUPEES_CHEST] = ItemLocation::Chest (0x07, 0x0F, "Shadow Temple MQ Beamos Silver Rupees Chest", SHADOW_TEMPLE_MQ_BEAMOS_SILVER_RUPEES_CHEST, ARROWS_5, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_FALLING_SPIKES_SWITCH_CHEST] = ItemLocation::Chest (0x07, 0x04, "Shadow Temple MQ Falling Spikes Switch Chest", SHADOW_TEMPLE_MQ_FALLING_SPIKES_SWITCH_CHEST, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_FALLING_SPIKES_LOWER_CHEST] = ItemLocation::Chest (0x07, 0x05, "Shadow Temple MQ Falling Spikes Lower Chest", SHADOW_TEMPLE_MQ_FALLING_SPIKES_LOWER_CHEST, ARROWS_10, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_FALLING_SPIKES_UPPER_CHEST] = ItemLocation::Chest (0x07, 0x06, "Shadow Temple MQ Falling Spikes Upper Chest", SHADOW_TEMPLE_MQ_FALLING_SPIKES_UPPER_CHEST, ARROWS_5, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_INVISIBLE_SPIKES_CHEST] = ItemLocation::Chest (0x07, 0x09, "Shadow Temple MQ Invisible Spikes Chest", SHADOW_TEMPLE_MQ_INVISIBLE_SPIKES_CHEST, BLUE_RUPEE, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_BOSS_KEY_CHEST] = ItemLocation::Chest (0x07, 0x0B, "Shadow Temple MQ Boss Key Chest", SHADOW_TEMPLE_MQ_BOSS_KEY_CHEST, SHADOW_TEMPLE_BOSS_KEY, {Category::cShadowTemple, Category::cVanillaBossKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_SPIKE_WALLS_LEFT_CHEST] = ItemLocation::Chest (0x07, 0x0A, "Shadow Temple MQ Spike Walls Left Chest", SHADOW_TEMPLE_MQ_SPIKE_WALLS_LEFT_CHEST, BLUE_RUPEE, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_STALFOS_ROOM_CHEST] = ItemLocation::Chest (0x07, 0x10, "Shadow Temple MQ Stalfos Room Chest", SHADOW_TEMPLE_MQ_STALFOS_ROOM_CHEST, RED_RUPEE, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_INVISIBLE_BLADES_INVISIBLE_CHEST] = ItemLocation::Chest (0x07, 0x16, "Shadow Temple MQ Invisible Blades Invisible Chest", SHADOW_TEMPLE_MQ_INVISIBLE_BLADES_INVISIBLE_CHEST, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_INVISIBLE_BLADES_VISIBLE_CHEST] = ItemLocation::Chest (0x07, 0x0C, "Shadow Temple MQ Invisible Blades Visible Chest", SHADOW_TEMPLE_MQ_INVISIBLE_BLADES_VISIBLE_CHEST, BLUE_RUPEE, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_BOMB_FLOWER_CHEST] = ItemLocation::Chest (0x07, 0x0D, "Shadow Temple MQ Bomb Flower Chest", SHADOW_TEMPLE_MQ_BOMB_FLOWER_CHEST, ARROWS_10, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_WIND_HINT_CHEST] = ItemLocation::Chest (0x07, 0x15, "Shadow Temple MQ Wind Hint Chest", SHADOW_TEMPLE_MQ_WIND_HINT_CHEST, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_AFTER_WIND_HIDDEN_CHEST] = ItemLocation::Chest (0x07, 0x14, "Shadow Temple MQ After Wind Hidden Chest", SHADOW_TEMPLE_MQ_AFTER_WIND_HIDDEN_CHEST, ARROWS_5, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_AFTER_WIND_ENEMY_CHEST] = ItemLocation::Chest (0x07, 0x08, "Shadow Temple MQ After Wind Enemy Chest", SHADOW_TEMPLE_MQ_AFTER_WIND_ENEMY_CHEST, BLUE_RUPEE, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_NEAR_SHIP_INVISIBLE_CHEST] = ItemLocation::Chest (0x07, 0x0E, "Shadow Temple MQ Near Ship Invisible Chest", SHADOW_TEMPLE_MQ_NEAR_SHIP_INVISIBLE_CHEST, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_FREESTANDING_KEY] = ItemLocation::Collectable(0x07, 0x06, "Shadow Temple MQ Freestanding Key", SHADOW_TEMPLE_MQ_FREESTANDING_KEY, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_COMPASS_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_MQ_COMPASS_CHEST, 0x07, 0x01, "Shadow Temple MQ Compass Chest", SHADOW_TEMPLE_MQ_COMPASS_CHEST, SHADOW_TEMPLE_COMPASS, {Category::cShadowTemple, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_HOVER_BOOTS_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_MQ_HOVER_BOOTS_CHEST, 0x07, 0x07, "Shadow Temple MQ Hover Boots Chest", SHADOW_TEMPLE_MQ_HOVER_BOOTS_CHEST, HOVER_BOOTS, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_EARLY_GIBDOS_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_MQ_EARLY_GIBDOS_CHEST, 0x07, 0x03, "Shadow Temple MQ Early Gibdos Chest", SHADOW_TEMPLE_MQ_EARLY_GIBDOS_CHEST, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_MAP_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_MQ_MAP_CHEST, 0x07, 0x02, "Shadow Temple MQ Map Chest", SHADOW_TEMPLE_MQ_MAP_CHEST, SHADOW_TEMPLE_MAP, {Category::cShadowTemple, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_BEAMOS_SILVER_RUPEES_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_MQ_BEAMOS_SILVER_RUPEES_CHEST, 0x07, 0x0F, "Shadow Temple MQ Beamos Silver Rupees Chest", SHADOW_TEMPLE_MQ_BEAMOS_SILVER_RUPEES_CHEST, ARROWS_5, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_FALLING_SPIKES_SWITCH_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_MQ_FALLING_SPIKES_SWITCH_CHEST, 0x07, 0x04, "Shadow Temple MQ Falling Spikes Switch Chest", SHADOW_TEMPLE_MQ_FALLING_SPIKES_SWITCH_CHEST, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_FALLING_SPIKES_LOWER_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_MQ_FALLING_SPIKES_LOWER_CHEST, 0x07, 0x05, "Shadow Temple MQ Falling Spikes Lower Chest", SHADOW_TEMPLE_MQ_FALLING_SPIKES_LOWER_CHEST, ARROWS_10, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_FALLING_SPIKES_UPPER_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_MQ_FALLING_SPIKES_UPPER_CHEST, 0x07, 0x06, "Shadow Temple MQ Falling Spikes Upper Chest", SHADOW_TEMPLE_MQ_FALLING_SPIKES_UPPER_CHEST, ARROWS_5, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_INVISIBLE_SPIKES_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_MQ_INVISIBLE_SPIKES_CHEST, 0x07, 0x09, "Shadow Temple MQ Invisible Spikes Chest", SHADOW_TEMPLE_MQ_INVISIBLE_SPIKES_CHEST, BLUE_RUPEE, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_BOSS_KEY_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_MQ_BOSS_KEY_CHEST, 0x07, 0x0B, "Shadow Temple MQ Boss Key Chest", SHADOW_TEMPLE_MQ_BOSS_KEY_CHEST, SHADOW_TEMPLE_BOSS_KEY, {Category::cShadowTemple, Category::cVanillaBossKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_SPIKE_WALLS_LEFT_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_MQ_SPIKE_WALLS_LEFT_CHEST, 0x07, 0x0A, "Shadow Temple MQ Spike Walls Left Chest", SHADOW_TEMPLE_MQ_SPIKE_WALLS_LEFT_CHEST, BLUE_RUPEE, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_STALFOS_ROOM_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_MQ_STALFOS_ROOM_CHEST, 0x07, 0x10, "Shadow Temple MQ Stalfos Room Chest", SHADOW_TEMPLE_MQ_STALFOS_ROOM_CHEST, RED_RUPEE, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_INVISIBLE_BLADES_INVISIBLE_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_MQ_INVISIBLE_BLADES_INVISIBLE_CHEST, 0x07, 0x16, "Shadow Temple MQ Invisible Blades Invisible Chest", SHADOW_TEMPLE_MQ_INVISIBLE_BLADES_INVISIBLE_CHEST, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_INVISIBLE_BLADES_VISIBLE_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_MQ_INVISIBLE_BLADES_VISIBLE_CHEST, 0x07, 0x0C, "Shadow Temple MQ Invisible Blades Visible Chest", SHADOW_TEMPLE_MQ_INVISIBLE_BLADES_VISIBLE_CHEST, BLUE_RUPEE, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_BOMB_FLOWER_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_MQ_BOMB_FLOWER_CHEST, 0x07, 0x0D, "Shadow Temple MQ Bomb Flower Chest", SHADOW_TEMPLE_MQ_BOMB_FLOWER_CHEST, ARROWS_10, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_WIND_HINT_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_MQ_WIND_HINT_CHEST, 0x07, 0x15, "Shadow Temple MQ Wind Hint Chest", SHADOW_TEMPLE_MQ_WIND_HINT_CHEST, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_AFTER_WIND_HIDDEN_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_MQ_AFTER_WIND_HIDDEN_CHEST, 0x07, 0x14, "Shadow Temple MQ After Wind Hidden Chest", SHADOW_TEMPLE_MQ_AFTER_WIND_HIDDEN_CHEST, ARROWS_5, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_AFTER_WIND_ENEMY_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_MQ_AFTER_WIND_ENEMY_CHEST, 0x07, 0x08, "Shadow Temple MQ After Wind Enemy Chest", SHADOW_TEMPLE_MQ_AFTER_WIND_ENEMY_CHEST, BLUE_RUPEE, {Category::cShadowTemple,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_NEAR_SHIP_INVISIBLE_CHEST] = ItemLocation::Chest (RC_SHADOW_TEMPLE_MQ_NEAR_SHIP_INVISIBLE_CHEST, 0x07, 0x0E, "Shadow Temple MQ Near Ship Invisible Chest", SHADOW_TEMPLE_MQ_NEAR_SHIP_INVISIBLE_CHEST, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_FREESTANDING_KEY] = ItemLocation::Collectable(RC_SHADOW_TEMPLE_MQ_FREESTANDING_KEY, 0x07, 0x06, "Shadow Temple MQ Freestanding Key", SHADOW_TEMPLE_MQ_FREESTANDING_KEY, SHADOW_TEMPLE_SMALL_KEY, {Category::cShadowTemple, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); //Bottom of the Well Vanilla - locationTable[BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST] = ItemLocation::Chest (0x08, 0x08, "Bottom of the Well Front Left Fake Wall Chest", BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST, BOTTOM_OF_THE_WELL_SMALL_KEY, {Category::cBottomOfTheWell, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_FRONT_CENTER_BOMBABLE_CHEST] = ItemLocation::Chest (0x08, 0x02, "Bottom of the Well Front Center Bombable Chest", BOTTOM_OF_THE_WELL_FRONT_CENTER_BOMBABLE_CHEST, BOMBCHU_10, {Category::cBottomOfTheWell,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_RIGHT_BOTTOM_FAKE_WALL_CHEST] = ItemLocation::Chest (0x08, 0x05, "Bottom of the Well Right Bottom Fake Wall Chest", BOTTOM_OF_THE_WELL_RIGHT_BOTTOM_FAKE_WALL_CHEST, BOTTOM_OF_THE_WELL_SMALL_KEY, {Category::cBottomOfTheWell, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_COMPASS_CHEST] = ItemLocation::Chest (0x08, 0x01, "Bottom of the Well Compass Chest", BOTTOM_OF_THE_WELL_COMPASS_CHEST, BOTTOM_OF_THE_WELL_COMPASS, {Category::cBottomOfTheWell, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_CENTER_SKULLTULA_CHEST] = ItemLocation::Chest (0x08, 0x0E, "Bottom of the Well Center Skulltula Chest", BOTTOM_OF_THE_WELL_CENTER_SKULLTULA_CHEST, DEKU_NUTS_5, {Category::cBottomOfTheWell,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_BACK_LEFT_BOMBABLE_CHEST] = ItemLocation::Chest (0x08, 0x04, "Bottom of the Well Back Left Bombable Chest", BOTTOM_OF_THE_WELL_BACK_LEFT_BOMBABLE_CHEST, DEKU_NUTS_10, {Category::cBottomOfTheWell,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_LENS_OF_TRUTH_CHEST] = ItemLocation::Chest (0x08, 0x03, "Bottom of the Well Lens of Truth Chest", BOTTOM_OF_THE_WELL_LENS_OF_TRUTH_CHEST, LENS_OF_TRUTH, {Category::cBottomOfTheWell, Category::cSongDungeonReward}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_INVISIBLE_CHEST] = ItemLocation::Chest (0x08, 0x14, "Bottom of the Well Invisible Chest", BOTTOM_OF_THE_WELL_INVISIBLE_CHEST, HUGE_RUPEE, {Category::cBottomOfTheWell,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_UNDERWATER_FRONT_CHEST] = ItemLocation::Chest (0x08, 0x10, "Bottom of the Well Underwater Front Chest", BOTTOM_OF_THE_WELL_UNDERWATER_FRONT_CHEST, BOMBS_10, {Category::cBottomOfTheWell,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_UNDERWATER_LEFT_CHEST] = ItemLocation::Chest (0x08, 0x09, "Bottom of the Well Underwater Left Chest", BOTTOM_OF_THE_WELL_UNDERWATER_LEFT_CHEST, RECOVERY_HEART, {Category::cBottomOfTheWell,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_MAP_CHEST] = ItemLocation::Chest (0x08, 0x07, "Bottom of the Well Map Chest", BOTTOM_OF_THE_WELL_MAP_CHEST, BOTTOM_OF_THE_WELL_MAP, {Category::cBottomOfTheWell, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST] = ItemLocation::Chest (0x08, 0x0A, "Bottom of the Well Fire Keese Chest", BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST, DEKU_SHIELD, {Category::cBottomOfTheWell,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_LIKE_LIKE_CHEST] = ItemLocation::Chest (0x08, 0x0C, "Bottom of the Well Like Like Chest", BOTTOM_OF_THE_WELL_LIKE_LIKE_CHEST, HYLIAN_SHIELD, {Category::cBottomOfTheWell,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_FREESTANDING_KEY] = ItemLocation::Collectable(0x08, 0x01, "Bottom of the Well Freestanding Key", BOTTOM_OF_THE_WELL_FREESTANDING_KEY, BOTTOM_OF_THE_WELL_SMALL_KEY, {Category::cBottomOfTheWell, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST] = ItemLocation::Chest (RC_BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST, 0x08, 0x08, "Bottom of the Well Front Left Fake Wall Chest", BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST, BOTTOM_OF_THE_WELL_SMALL_KEY, {Category::cBottomOfTheWell, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_FRONT_CENTER_BOMBABLE_CHEST] = ItemLocation::Chest (RC_BOTTOM_OF_THE_WELL_FRONT_CENTER_BOMBABLE_CHEST, 0x08, 0x02, "Bottom of the Well Front Center Bombable Chest", BOTTOM_OF_THE_WELL_FRONT_CENTER_BOMBABLE_CHEST, BOMBCHU_10, {Category::cBottomOfTheWell,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_RIGHT_BOTTOM_FAKE_WALL_CHEST] = ItemLocation::Chest (RC_BOTTOM_OF_THE_WELL_RIGHT_BOTTOM_FAKE_WALL_CHEST, 0x08, 0x05, "Bottom of the Well Right Bottom Fake Wall Chest", BOTTOM_OF_THE_WELL_RIGHT_BOTTOM_FAKE_WALL_CHEST, BOTTOM_OF_THE_WELL_SMALL_KEY, {Category::cBottomOfTheWell, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_COMPASS_CHEST] = ItemLocation::Chest (RC_BOTTOM_OF_THE_WELL_COMPASS_CHEST, 0x08, 0x01, "Bottom of the Well Compass Chest", BOTTOM_OF_THE_WELL_COMPASS_CHEST, BOTTOM_OF_THE_WELL_COMPASS, {Category::cBottomOfTheWell, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_CENTER_SKULLTULA_CHEST] = ItemLocation::Chest (RC_BOTTOM_OF_THE_WELL_CENTER_SKULLTULA_CHEST, 0x08, 0x0E, "Bottom of the Well Center Skulltula Chest", BOTTOM_OF_THE_WELL_CENTER_SKULLTULA_CHEST, DEKU_NUTS_5, {Category::cBottomOfTheWell,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_BACK_LEFT_BOMBABLE_CHEST] = ItemLocation::Chest (RC_BOTTOM_OF_THE_WELL_BACK_LEFT_BOMBABLE_CHEST, 0x08, 0x04, "Bottom of the Well Back Left Bombable Chest", BOTTOM_OF_THE_WELL_BACK_LEFT_BOMBABLE_CHEST, DEKU_NUTS_10, {Category::cBottomOfTheWell,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_LENS_OF_TRUTH_CHEST] = ItemLocation::Chest (RC_BOTTOM_OF_THE_WELL_LENS_OF_TRUTH_CHEST, 0x08, 0x03, "Bottom of the Well Lens of Truth Chest", BOTTOM_OF_THE_WELL_LENS_OF_TRUTH_CHEST, LENS_OF_TRUTH, {Category::cBottomOfTheWell, Category::cSongDungeonReward}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_INVISIBLE_CHEST] = ItemLocation::Chest (RC_BOTTOM_OF_THE_WELL_INVISIBLE_CHEST, 0x08, 0x14, "Bottom of the Well Invisible Chest", BOTTOM_OF_THE_WELL_INVISIBLE_CHEST, HUGE_RUPEE, {Category::cBottomOfTheWell,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_UNDERWATER_FRONT_CHEST] = ItemLocation::Chest (RC_BOTTOM_OF_THE_WELL_UNDERWATER_FRONT_CHEST, 0x08, 0x10, "Bottom of the Well Underwater Front Chest", BOTTOM_OF_THE_WELL_UNDERWATER_FRONT_CHEST, BOMBS_10, {Category::cBottomOfTheWell,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_UNDERWATER_LEFT_CHEST] = ItemLocation::Chest (RC_BOTTOM_OF_THE_WELL_UNDERWATER_LEFT_CHEST, 0x08, 0x09, "Bottom of the Well Underwater Left Chest", BOTTOM_OF_THE_WELL_UNDERWATER_LEFT_CHEST, RECOVERY_HEART, {Category::cBottomOfTheWell,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_MAP_CHEST] = ItemLocation::Chest (RC_BOTTOM_OF_THE_WELL_MAP_CHEST, 0x08, 0x07, "Bottom of the Well Map Chest", BOTTOM_OF_THE_WELL_MAP_CHEST, BOTTOM_OF_THE_WELL_MAP, {Category::cBottomOfTheWell, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST] = ItemLocation::Chest (RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST, 0x08, 0x0A, "Bottom of the Well Fire Keese Chest", BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST, DEKU_SHIELD, {Category::cBottomOfTheWell,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_LIKE_LIKE_CHEST] = ItemLocation::Chest (RC_BOTTOM_OF_THE_WELL_LIKE_LIKE_CHEST, 0x08, 0x0C, "Bottom of the Well Like Like Chest", BOTTOM_OF_THE_WELL_LIKE_LIKE_CHEST, HYLIAN_SHIELD, {Category::cBottomOfTheWell,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_FREESTANDING_KEY] = ItemLocation::Collectable(RC_BOTTOM_OF_THE_WELL_FREESTANDING_KEY, 0x08, 0x01, "Bottom of the Well Freestanding Key", BOTTOM_OF_THE_WELL_FREESTANDING_KEY, BOTTOM_OF_THE_WELL_SMALL_KEY, {Category::cBottomOfTheWell, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); //Bottom of the Well MQBottomOfTheWell] - locationTable[BOTTOM_OF_THE_WELL_MQ_MAP_CHEST] = ItemLocation::Chest (0x08, 0x03, "Bottom of the Well MQ Map Chest", BOTTOM_OF_THE_WELL_MQ_MAP_CHEST, BOTTOM_OF_THE_WELL_MAP, {Category::cBottomOfTheWell, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_MQ_LENS_OF_TRUTH_CHEST] = ItemLocation::Chest (0x08, 0x01, "Bottom of the Well MQ Lens of Truth Chest", BOTTOM_OF_THE_WELL_MQ_LENS_OF_TRUTH_CHEST, LENS_OF_TRUTH, {Category::cBottomOfTheWell, Category::cSongDungeonReward}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST] = ItemLocation::Chest (0x08, 0x02, "Bottom of the Well MQ Compass Chest", BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST, BOTTOM_OF_THE_WELL_COMPASS, {Category::cBottomOfTheWell, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_FREESTANDING_KEY] = ItemLocation::Collectable(0x08, 0x02, "Bottom of the Well MQ Dead Hand Freestanding Key", BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_FREESTANDING_KEY, BOTTOM_OF_THE_WELL_SMALL_KEY, {Category::cBottomOfTheWell, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY] = ItemLocation::Collectable(0x08, 0x01, "Bottom of the Well MQ East Inner Room Freestanding Key",BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY, BOTTOM_OF_THE_WELL_SMALL_KEY, {Category::cBottomOfTheWell, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_MQ_MAP_CHEST] = ItemLocation::Chest (RC_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST, 0x08, 0x03, "Bottom of the Well MQ Map Chest", BOTTOM_OF_THE_WELL_MQ_MAP_CHEST, BOTTOM_OF_THE_WELL_MAP, {Category::cBottomOfTheWell, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_MQ_LENS_OF_TRUTH_CHEST] = ItemLocation::Chest (RC_BOTTOM_OF_THE_WELL_MQ_LENS_OF_TRUTH_CHEST, 0x08, 0x01, "Bottom of the Well MQ Lens of Truth Chest", BOTTOM_OF_THE_WELL_MQ_LENS_OF_TRUTH_CHEST, LENS_OF_TRUTH, {Category::cBottomOfTheWell, Category::cSongDungeonReward}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST] = ItemLocation::Chest (RC_BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST, 0x08, 0x02, "Bottom of the Well MQ Compass Chest", BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST, BOTTOM_OF_THE_WELL_COMPASS, {Category::cBottomOfTheWell, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_FREESTANDING_KEY] = ItemLocation::Collectable(RC_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_FREESTANDING_KEY, 0x08, 0x02, "Bottom of the Well MQ Dead Hand Freestanding Key", BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_FREESTANDING_KEY, BOTTOM_OF_THE_WELL_SMALL_KEY, {Category::cBottomOfTheWell, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY] = ItemLocation::Collectable(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY, 0x08, 0x01, "Bottom of the Well MQ East Inner Room Freestanding Key",BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY, BOTTOM_OF_THE_WELL_SMALL_KEY, {Category::cBottomOfTheWell, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); //Ice Cavern Vanilla - locationTable[ICE_CAVERN_MAP_CHEST] = ItemLocation::Chest (0x09, 0x00, "Ice Cavern Map Chest", ICE_CAVERN_MAP_CHEST, ICE_CAVERN_MAP, {Category::cIceCavern, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); - locationTable[ICE_CAVERN_COMPASS_CHEST] = ItemLocation::Chest (0x09, 0x01, "Ice Cavern Compass Chest", ICE_CAVERN_COMPASS_CHEST, ICE_CAVERN_COMPASS, {Category::cIceCavern, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); - locationTable[ICE_CAVERN_IRON_BOOTS_CHEST] = ItemLocation::Chest (0x09, 0x02, "Ice Cavern Iron Boots Chest", ICE_CAVERN_IRON_BOOTS_CHEST, IRON_BOOTS, {Category::cIceCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); - locationTable[ICE_CAVERN_FREESTANDING_POH] = ItemLocation::Collectable(0x09, 0x01, "Ice Cavern Freestanding PoH", ICE_CAVERN_FREESTANDING_POH, PIECE_OF_HEART, {Category::cIceCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); + locationTable[ICE_CAVERN_MAP_CHEST] = ItemLocation::Chest (RC_ICE_CAVERN_MAP_CHEST, 0x09, 0x00, "Ice Cavern Map Chest", ICE_CAVERN_MAP_CHEST, ICE_CAVERN_MAP, {Category::cIceCavern, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); + locationTable[ICE_CAVERN_COMPASS_CHEST] = ItemLocation::Chest (RC_ICE_CAVERN_COMPASS_CHEST, 0x09, 0x01, "Ice Cavern Compass Chest", ICE_CAVERN_COMPASS_CHEST, ICE_CAVERN_COMPASS, {Category::cIceCavern, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); + locationTable[ICE_CAVERN_IRON_BOOTS_CHEST] = ItemLocation::Chest (RC_ICE_CAVERN_IRON_BOOTS_CHEST, 0x09, 0x02, "Ice Cavern Iron Boots Chest", ICE_CAVERN_IRON_BOOTS_CHEST, IRON_BOOTS, {Category::cIceCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); + locationTable[ICE_CAVERN_FREESTANDING_POH] = ItemLocation::Collectable(RC_ICE_CAVERN_FREESTANDING_POH, 0x09, 0x01, "Ice Cavern Freestanding PoH", ICE_CAVERN_FREESTANDING_POH, PIECE_OF_HEART, {Category::cIceCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); //Ice Cavern MQIceCavern] - locationTable[ICE_CAVERN_MQ_IRON_BOOTS_CHEST] = ItemLocation::Chest (0x09, 0x02, "Ice Cavern MQ Iron Boots Chest", ICE_CAVERN_MQ_IRON_BOOTS_CHEST, IRON_BOOTS, {Category::cIceCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); - locationTable[ICE_CAVERN_MQ_COMPASS_CHEST] = ItemLocation::Chest (0x09, 0x00, "Ice Cavern MQ Compass Chest", ICE_CAVERN_MQ_COMPASS_CHEST, ICE_CAVERN_COMPASS, {Category::cIceCavern, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); - locationTable[ICE_CAVERN_MQ_MAP_CHEST] = ItemLocation::Chest (0x09, 0x01, "Ice Cavern MQ Map Chest", ICE_CAVERN_MQ_MAP_CHEST, ICE_CAVERN_MAP, {Category::cIceCavern, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); - locationTable[ICE_CAVERN_MQ_FREESTANDING_POH] = ItemLocation::Collectable(0x09, 0x01, "Ice Cavern MQ Freestanding PoH", ICE_CAVERN_MQ_FREESTANDING_POH, PIECE_OF_HEART, {Category::cIceCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); + locationTable[ICE_CAVERN_MQ_IRON_BOOTS_CHEST] = ItemLocation::Chest (RC_ICE_CAVERN_MQ_IRON_BOOTS_CHEST, 0x09, 0x02, "Ice Cavern MQ Iron Boots Chest", ICE_CAVERN_MQ_IRON_BOOTS_CHEST, IRON_BOOTS, {Category::cIceCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); + locationTable[ICE_CAVERN_MQ_COMPASS_CHEST] = ItemLocation::Chest (RC_ICE_CAVERN_MQ_COMPASS_CHEST, 0x09, 0x00, "Ice Cavern MQ Compass Chest", ICE_CAVERN_MQ_COMPASS_CHEST, ICE_CAVERN_COMPASS, {Category::cIceCavern, Category::cVanillaCompass,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); + locationTable[ICE_CAVERN_MQ_MAP_CHEST] = ItemLocation::Chest (RC_ICE_CAVERN_MQ_MAP_CHEST, 0x09, 0x01, "Ice Cavern MQ Map Chest", ICE_CAVERN_MQ_MAP_CHEST, ICE_CAVERN_MAP, {Category::cIceCavern, Category::cVanillaMap,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); + locationTable[ICE_CAVERN_MQ_FREESTANDING_POH] = ItemLocation::Collectable(RC_ICE_CAVERN_MQ_FREESTANDING_POH, 0x09, 0x01, "Ice Cavern MQ Freestanding PoH", ICE_CAVERN_MQ_FREESTANDING_POH, PIECE_OF_HEART, {Category::cIceCavern,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); //Gerudo Training Ground Vanilla - locationTable[GERUDO_TRAINING_GROUNDS_LOBBY_LEFT_CHEST] = ItemLocation::Chest (0x0B, 0x13, "Gerudo Training Grounds Lobby Left Chest", GERUDO_TRAINING_GROUNDS_LOBBY_LEFT_CHEST, BLUE_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_LOBBY_RIGHT_CHEST] = ItemLocation::Chest (0x0B, 0x07, "Gerudo Training Grounds Lobby Right Chest", GERUDO_TRAINING_GROUNDS_LOBBY_RIGHT_CHEST, ARROWS_10, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_STALFOS_CHEST] = ItemLocation::Chest (0x0B, 0x00, "Gerudo Training Grounds Stalfos Chest", GERUDO_TRAINING_GROUNDS_STALFOS_CHEST, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_BEAMOS_CHEST] = ItemLocation::Chest (0x0B, 0x01, "Gerudo Training Grounds Beamos Chest", GERUDO_TRAINING_GROUNDS_BEAMOS_CHEST, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_HIDDEN_CEILING_CHEST] = ItemLocation::Chest (0x0B, 0x0B, "Gerudo Training Grounds Hidden Ceiling Chest", GERUDO_TRAINING_GROUNDS_HIDDEN_CEILING_CHEST, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MAZE_PATH_FIRST_CHEST] = ItemLocation::Chest (0x0B, 0x06, "Gerudo Training Grounds Maze Path First Chest", GERUDO_TRAINING_GROUNDS_MAZE_PATH_FIRST_CHEST, PURPLE_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MAZE_PATH_SECOND_CHEST] = ItemLocation::Chest (0x0B, 0x0A, "Gerudo Training Grounds Maze Path Second Chest", GERUDO_TRAINING_GROUNDS_MAZE_PATH_SECOND_CHEST, RED_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MAZE_PATH_THIRD_CHEST] = ItemLocation::Chest (0x0B, 0x09, "Gerudo Training Grounds Maze Path Third Chest", GERUDO_TRAINING_GROUNDS_MAZE_PATH_THIRD_CHEST, ARROWS_30, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MAZE_PATH_FINAL_CHEST] = ItemLocation::Chest (0x0B, 0x0C, "Gerudo Training Grounds Maze Path Final Chest", GERUDO_TRAINING_GROUNDS_MAZE_PATH_FINAL_CHEST, ICE_ARROWS, {Category::cGerudoTrainingGrounds, Category::cSongDungeonReward}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MAZE_RIGHT_CENTRAL_CHEST] = ItemLocation::Chest (0x0B, 0x05, "Gerudo Training Grounds Maze Right Central Chest", GERUDO_TRAINING_GROUNDS_MAZE_RIGHT_CENTRAL_CHEST, BOMBCHU_5, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MAZE_RIGHT_SIDE_CHEST] = ItemLocation::Chest (0x0B, 0x08, "Gerudo Training Grounds Maze Right Side Chest", GERUDO_TRAINING_GROUNDS_MAZE_RIGHT_SIDE_CHEST, ARROWS_30, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_UNDERWATER_SILVER_RUPEE_CHEST] = ItemLocation::Chest (0x0B, 0x0D, "Gerudo Training Grounds Underwater Silver Rupee Chest", GERUDO_TRAINING_GROUNDS_UNDERWATER_SILVER_RUPEE_CHEST, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_HAMMER_ROOM_CLEAR_CHEST] = ItemLocation::Chest (0x0B, 0x12, "Gerudo Training Grounds Hammer Room Clear Chest", GERUDO_TRAINING_GROUNDS_HAMMER_ROOM_CLEAR_CHEST, ARROWS_10, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_HAMMER_ROOM_SWITCH_CHEST] = ItemLocation::Chest (0x0B, 0x10, "Gerudo Training Grounds Hammer Room Switch Chest", GERUDO_TRAINING_GROUNDS_HAMMER_ROOM_SWITCH_CHEST, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_EYE_STATUE_CHEST] = ItemLocation::Chest (0x0B, 0x03, "Gerudo Training Grounds Eye Statue Chest", GERUDO_TRAINING_GROUNDS_EYE_STATUE_CHEST, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_NEAR_SCARECROW_CHEST] = ItemLocation::Chest (0x0B, 0x04, "Gerudo Training Grounds Near Scarecrow Chest", GERUDO_TRAINING_GROUNDS_NEAR_SCARECROW_CHEST, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_BEFORE_HEAVY_BLOCK_CHEST] = ItemLocation::Chest (0x0B, 0x11, "Gerudo Training Grounds Before Heavy Block Chest", GERUDO_TRAINING_GROUNDS_BEFORE_HEAVY_BLOCK_CHEST, ARROWS_30, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_HEAVY_BLOCK_FIRST_CHEST] = ItemLocation::Chest (0x0B, 0x0F, "Gerudo Training Grounds Heavy Block First Chest", GERUDO_TRAINING_GROUNDS_HEAVY_BLOCK_FIRST_CHEST, HUGE_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_HEAVY_BLOCK_SECOND_CHEST] = ItemLocation::Chest (0x0B, 0x0E, "Gerudo Training Grounds Heavy Block Second Chest", GERUDO_TRAINING_GROUNDS_HEAVY_BLOCK_SECOND_CHEST, BLUE_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_HEAVY_BLOCK_THIRD_CHEST] = ItemLocation::Chest (0x0B, 0x14, "Gerudo Training Grounds Heavy Block Third Chest", GERUDO_TRAINING_GROUNDS_HEAVY_BLOCK_THIRD_CHEST, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_HEAVY_BLOCK_FOURTH_CHEST] = ItemLocation::Chest (0x0B, 0x02, "Gerudo Training Grounds Heavy Block Fourth Chest", GERUDO_TRAINING_GROUNDS_HEAVY_BLOCK_FOURTH_CHEST, ICE_TRAP, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_FREESTANDING_KEY] = ItemLocation::Collectable(0x0B, 0x01, "Gerudo Training Grounds Freestanding Key", GERUDO_TRAINING_GROUNDS_FREESTANDING_KEY, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_LOBBY_LEFT_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_LOBBY_LEFT_CHEST, 0x0B, 0x13, "Gerudo Training Grounds Lobby Left Chest", GERUDO_TRAINING_GROUNDS_LOBBY_LEFT_CHEST, BLUE_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_LOBBY_RIGHT_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_LOBBY_RIGHT_CHEST, 0x0B, 0x07, "Gerudo Training Grounds Lobby Right Chest", GERUDO_TRAINING_GROUNDS_LOBBY_RIGHT_CHEST, ARROWS_10, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_STALFOS_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_STALFOS_CHEST, 0x0B, 0x00, "Gerudo Training Grounds Stalfos Chest", GERUDO_TRAINING_GROUNDS_STALFOS_CHEST, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_BEAMOS_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_BEAMOS_CHEST, 0x0B, 0x01, "Gerudo Training Grounds Beamos Chest", GERUDO_TRAINING_GROUNDS_BEAMOS_CHEST, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_HIDDEN_CEILING_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_HIDDEN_CEILING_CHEST, 0x0B, 0x0B, "Gerudo Training Grounds Hidden Ceiling Chest", GERUDO_TRAINING_GROUNDS_HIDDEN_CEILING_CHEST, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MAZE_PATH_FIRST_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MAZE_PATH_FIRST_CHEST, 0x0B, 0x06, "Gerudo Training Grounds Maze Path First Chest", GERUDO_TRAINING_GROUNDS_MAZE_PATH_FIRST_CHEST, PURPLE_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MAZE_PATH_SECOND_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MAZE_PATH_SECOND_CHEST, 0x0B, 0x0A, "Gerudo Training Grounds Maze Path Second Chest", GERUDO_TRAINING_GROUNDS_MAZE_PATH_SECOND_CHEST, RED_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MAZE_PATH_THIRD_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MAZE_PATH_THIRD_CHEST, 0x0B, 0x09, "Gerudo Training Grounds Maze Path Third Chest", GERUDO_TRAINING_GROUNDS_MAZE_PATH_THIRD_CHEST, ARROWS_30, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MAZE_PATH_FINAL_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MAZE_PATH_FINAL_CHEST, 0x0B, 0x0C, "Gerudo Training Grounds Maze Path Final Chest", GERUDO_TRAINING_GROUNDS_MAZE_PATH_FINAL_CHEST, ICE_ARROWS, {Category::cGerudoTrainingGrounds, Category::cSongDungeonReward}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MAZE_RIGHT_CENTRAL_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MAZE_RIGHT_CENTRAL_CHEST, 0x0B, 0x05, "Gerudo Training Grounds Maze Right Central Chest", GERUDO_TRAINING_GROUNDS_MAZE_RIGHT_CENTRAL_CHEST, BOMBCHU_5, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MAZE_RIGHT_SIDE_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MAZE_RIGHT_SIDE_CHEST, 0x0B, 0x08, "Gerudo Training Grounds Maze Right Side Chest", GERUDO_TRAINING_GROUNDS_MAZE_RIGHT_SIDE_CHEST, ARROWS_30, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_UNDERWATER_SILVER_RUPEE_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_UNDERWATER_SILVER_RUPEE_CHEST, 0x0B, 0x0D, "Gerudo Training Grounds Underwater Silver Rupee Chest", GERUDO_TRAINING_GROUNDS_UNDERWATER_SILVER_RUPEE_CHEST, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_HAMMER_ROOM_CLEAR_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_HAMMER_ROOM_CLEAR_CHEST, 0x0B, 0x12, "Gerudo Training Grounds Hammer Room Clear Chest", GERUDO_TRAINING_GROUNDS_HAMMER_ROOM_CLEAR_CHEST, ARROWS_10, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_HAMMER_ROOM_SWITCH_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_HAMMER_ROOM_SWITCH_CHEST, 0x0B, 0x10, "Gerudo Training Grounds Hammer Room Switch Chest", GERUDO_TRAINING_GROUNDS_HAMMER_ROOM_SWITCH_CHEST, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_EYE_STATUE_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_EYE_STATUE_CHEST, 0x0B, 0x03, "Gerudo Training Grounds Eye Statue Chest", GERUDO_TRAINING_GROUNDS_EYE_STATUE_CHEST, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_NEAR_SCARECROW_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_NEAR_SCARECROW_CHEST, 0x0B, 0x04, "Gerudo Training Grounds Near Scarecrow Chest", GERUDO_TRAINING_GROUNDS_NEAR_SCARECROW_CHEST, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_BEFORE_HEAVY_BLOCK_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_BEFORE_HEAVY_BLOCK_CHEST, 0x0B, 0x11, "Gerudo Training Grounds Before Heavy Block Chest", GERUDO_TRAINING_GROUNDS_BEFORE_HEAVY_BLOCK_CHEST, ARROWS_30, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_HEAVY_BLOCK_FIRST_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_FIRST_CHEST, 0x0B, 0x0F, "Gerudo Training Grounds Heavy Block First Chest", GERUDO_TRAINING_GROUNDS_HEAVY_BLOCK_FIRST_CHEST, HUGE_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_HEAVY_BLOCK_SECOND_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_SECOND_CHEST, 0x0B, 0x0E, "Gerudo Training Grounds Heavy Block Second Chest", GERUDO_TRAINING_GROUNDS_HEAVY_BLOCK_SECOND_CHEST, BLUE_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_HEAVY_BLOCK_THIRD_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_THIRD_CHEST, 0x0B, 0x14, "Gerudo Training Grounds Heavy Block Third Chest", GERUDO_TRAINING_GROUNDS_HEAVY_BLOCK_THIRD_CHEST, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_HEAVY_BLOCK_FOURTH_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_FOURTH_CHEST, 0x0B, 0x02, "Gerudo Training Grounds Heavy Block Fourth Chest", GERUDO_TRAINING_GROUNDS_HEAVY_BLOCK_FOURTH_CHEST, ICE_TRAP, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_FREESTANDING_KEY] = ItemLocation::Collectable(RC_GERUDO_TRAINING_GROUND_FREESTANDING_KEY, 0x0B, 0x01, "Gerudo Training Grounds Freestanding Key", GERUDO_TRAINING_GROUNDS_FREESTANDING_KEY, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); //Gerudo Training Grounds MQ - locationTable[GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_CHEST] = ItemLocation::Chest (0x0B, 0x07, "Gerudo Training Grounds MQ Lobby Right Chest", GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_CHEST, BOMBCHU_5, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_CHEST] = ItemLocation::Chest (0x0B, 0x13, "Gerudo Training Grounds MQ Lobby Left Chest", GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_CHEST, ARROWS_10, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MQ_FIRST_IRON_KNUCKLE_CHEST] = ItemLocation::Chest (0x0B, 0x00, "Gerudo Training Grounds MQ First Iron Knuckle Chest", GERUDO_TRAINING_GROUNDS_MQ_FIRST_IRON_KNUCKLE_CHEST, BLUE_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MQ_BEFORE_HEAVY_BLOCK_CHEST] = ItemLocation::Chest (0x0B, 0x11, "Gerudo Training Grounds MQ Before Heavy Block Chest", GERUDO_TRAINING_GROUNDS_MQ_BEFORE_HEAVY_BLOCK_CHEST, ARROWS_10, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MQ_EYE_STATUE_CHEST] = ItemLocation::Chest (0x0B, 0x03, "Gerudo Training Grounds MQ Eye Statue Chest", GERUDO_TRAINING_GROUNDS_MQ_EYE_STATUE_CHEST, BOMBCHU_10, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MQ_FLAME_CIRCLE_CHEST] = ItemLocation::Chest (0x0B, 0x0E, "Gerudo Training Grounds MQ Flame Circle Chest", GERUDO_TRAINING_GROUNDS_MQ_FLAME_CIRCLE_CHEST, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MQ_SECOND_IRON_KNUCKLE_CHEST] = ItemLocation::Chest (0x0B, 0x12, "Gerudo Training Grounds MQ Second Iron Knuckle Chest", GERUDO_TRAINING_GROUNDS_MQ_SECOND_IRON_KNUCKLE_CHEST, ARROWS_10, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MQ_DINOLFOS_CHEST] = ItemLocation::Chest (0x0B, 0x01, "Gerudo Training Grounds MQ Dinolfos Chest", GERUDO_TRAINING_GROUNDS_MQ_DINOLFOS_CHEST, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MQ_ICE_ARROWS_CHEST] = ItemLocation::Chest (0x0B, 0x04, "Gerudo Training Grounds MQ Ice Arrows Chest", GERUDO_TRAINING_GROUNDS_MQ_ICE_ARROWS_CHEST, ICE_ARROWS, {Category::cGerudoTrainingGrounds, Category::cSongDungeonReward}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MQ_MAZE_RIGHT_CENTRAL_CHEST] = ItemLocation::Chest (0x0B, 0x05, "Gerudo Training Grounds MQ Maze Right Central Chest", GERUDO_TRAINING_GROUNDS_MQ_MAZE_RIGHT_CENTRAL_CHEST, BLUE_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MQ_MAZE_PATH_FIRST_CHEST] = ItemLocation::Chest (0x0B, 0x06, "Gerudo Training Grounds MQ Maze Path First Chest", GERUDO_TRAINING_GROUNDS_MQ_MAZE_PATH_FIRST_CHEST, GREEN_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MQ_MAZE_RIGHT_SIDE_CHEST] = ItemLocation::Chest (0x0B, 0x08, "Gerudo Training Grounds MQ Maze Right Side Chest", GERUDO_TRAINING_GROUNDS_MQ_MAZE_RIGHT_SIDE_CHEST, TREASURE_GAME_GREEN_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MQ_MAZE_PATH_THIRD_CHEST] = ItemLocation::Chest (0x0B, 0x09, "Gerudo Training Grounds MQ Maze Path Third Chest", GERUDO_TRAINING_GROUNDS_MQ_MAZE_PATH_THIRD_CHEST, TREASURE_GAME_GREEN_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MQ_MAZE_PATH_SECOND_CHEST] = ItemLocation::Chest (0x0B, 0x0A, "Gerudo Training Grounds MQ Maze Path Second Chest", GERUDO_TRAINING_GROUNDS_MQ_MAZE_PATH_SECOND_CHEST, RED_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MQ_HIDDEN_CEILING_CHEST] = ItemLocation::Chest (0x0B, 0x0B, "Gerudo Training Grounds MQ Hidden Ceiling Chest", GERUDO_TRAINING_GROUNDS_MQ_HIDDEN_CEILING_CHEST, PURPLE_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MQ_UNDERWATER_SILVER_RUPEE_CHEST] = ItemLocation::Chest (0x0B, 0x0D, "Gerudo Training Grounds MQ Underwater Silver Rupee Chest",GERUDO_TRAINING_GROUNDS_MQ_UNDERWATER_SILVER_RUPEE_CHEST, TREASURE_GAME_GREEN_RUPEE, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); - locationTable[GERUDO_TRAINING_GROUNDS_MQ_HEAVY_BLOCK_CHEST] = ItemLocation::Chest (0x0B, 0x02, "Gerudo Training Grounds MQ Heavy Block Chest", GERUDO_TRAINING_GROUNDS_MQ_HEAVY_BLOCK_CHEST, PURPLE_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_CHEST, 0x0B, 0x07, "Gerudo Training Grounds MQ Lobby Right Chest", GERUDO_TRAINING_GROUNDS_MQ_LOBBY_RIGHT_CHEST, BOMBCHU_5, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_CHEST, 0x0B, 0x13, "Gerudo Training Grounds MQ Lobby Left Chest", GERUDO_TRAINING_GROUNDS_MQ_LOBBY_LEFT_CHEST, ARROWS_10, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MQ_FIRST_IRON_KNUCKLE_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MQ_FIRST_IRON_KNUCKLE_CHEST, 0x0B, 0x00, "Gerudo Training Grounds MQ First Iron Knuckle Chest", GERUDO_TRAINING_GROUNDS_MQ_FIRST_IRON_KNUCKLE_CHEST, BLUE_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MQ_BEFORE_HEAVY_BLOCK_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MQ_BEFORE_HEAVY_BLOCK_CHEST, 0x0B, 0x11, "Gerudo Training Grounds MQ Before Heavy Block Chest", GERUDO_TRAINING_GROUNDS_MQ_BEFORE_HEAVY_BLOCK_CHEST, ARROWS_10, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MQ_EYE_STATUE_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MQ_EYE_STATUE_CHEST, 0x0B, 0x03, "Gerudo Training Grounds MQ Eye Statue Chest", GERUDO_TRAINING_GROUNDS_MQ_EYE_STATUE_CHEST, BOMBCHU_10, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MQ_FLAME_CIRCLE_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MQ_FLAME_CIRCLE_CHEST, 0x0B, 0x0E, "Gerudo Training Grounds MQ Flame Circle Chest", GERUDO_TRAINING_GROUNDS_MQ_FLAME_CIRCLE_CHEST, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MQ_SECOND_IRON_KNUCKLE_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MQ_SECOND_IRON_KNUCKLE_CHEST, 0x0B, 0x12, "Gerudo Training Grounds MQ Second Iron Knuckle Chest", GERUDO_TRAINING_GROUNDS_MQ_SECOND_IRON_KNUCKLE_CHEST, ARROWS_10, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MQ_DINOLFOS_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MQ_DINOLFOS_CHEST, 0x0B, 0x01, "Gerudo Training Grounds MQ Dinolfos Chest", GERUDO_TRAINING_GROUNDS_MQ_DINOLFOS_CHEST, GERUDO_TRAINING_GROUNDS_SMALL_KEY, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MQ_ICE_ARROWS_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MQ_ICE_ARROWS_CHEST, 0x0B, 0x04, "Gerudo Training Grounds MQ Ice Arrows Chest", GERUDO_TRAINING_GROUNDS_MQ_ICE_ARROWS_CHEST, ICE_ARROWS, {Category::cGerudoTrainingGrounds, Category::cSongDungeonReward}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MQ_MAZE_RIGHT_CENTRAL_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_CENTRAL_CHEST, 0x0B, 0x05, "Gerudo Training Grounds MQ Maze Right Central Chest", GERUDO_TRAINING_GROUNDS_MQ_MAZE_RIGHT_CENTRAL_CHEST, BLUE_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MQ_MAZE_PATH_FIRST_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_FIRST_CHEST, 0x0B, 0x06, "Gerudo Training Grounds MQ Maze Path First Chest", GERUDO_TRAINING_GROUNDS_MQ_MAZE_PATH_FIRST_CHEST, GREEN_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MQ_MAZE_RIGHT_SIDE_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_SIDE_CHEST, 0x0B, 0x08, "Gerudo Training Grounds MQ Maze Right Side Chest", GERUDO_TRAINING_GROUNDS_MQ_MAZE_RIGHT_SIDE_CHEST, TREASURE_GAME_GREEN_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MQ_MAZE_PATH_THIRD_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_THIRD_CHEST, 0x0B, 0x09, "Gerudo Training Grounds MQ Maze Path Third Chest", GERUDO_TRAINING_GROUNDS_MQ_MAZE_PATH_THIRD_CHEST, TREASURE_GAME_GREEN_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MQ_MAZE_PATH_SECOND_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_SECOND_CHEST, 0x0B, 0x0A, "Gerudo Training Grounds MQ Maze Path Second Chest", GERUDO_TRAINING_GROUNDS_MQ_MAZE_PATH_SECOND_CHEST, RED_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MQ_HIDDEN_CEILING_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MQ_HIDDEN_CEILING_CHEST, 0x0B, 0x0B, "Gerudo Training Grounds MQ Hidden Ceiling Chest", GERUDO_TRAINING_GROUNDS_MQ_HIDDEN_CEILING_CHEST, PURPLE_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MQ_UNDERWATER_SILVER_RUPEE_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MQ_UNDERWATER_SILVER_RUPEE_CHEST, 0x0B, 0x0D, "Gerudo Training Grounds MQ Underwater Silver Rupee Chest",GERUDO_TRAINING_GROUNDS_MQ_UNDERWATER_SILVER_RUPEE_CHEST, TREASURE_GAME_GREEN_RUPEE, {Category::cGerudoTrainingGrounds, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); + locationTable[GERUDO_TRAINING_GROUNDS_MQ_HEAVY_BLOCK_CHEST] = ItemLocation::Chest (RC_GERUDO_TRAINING_GROUND_MQ_HEAVY_BLOCK_CHEST, 0x0B, 0x02, "Gerudo Training Grounds MQ Heavy Block Chest", GERUDO_TRAINING_GROUNDS_MQ_HEAVY_BLOCK_CHEST, PURPLE_RUPEE, {Category::cGerudoTrainingGrounds,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_TRAINING_GROUND); //Ganons Castle Shared - locationTable[GANONS_TOWER_BOSS_KEY_CHEST] = ItemLocation::Chest (0x0A, 0x0B, "Ganon's Tower Boss Key Chest", GANONS_TOWER_BOSS_KEY_CHEST, GANONS_CASTLE_BOSS_KEY, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_TOWER_BOSS_KEY_CHEST] = ItemLocation::Chest (RC_GANONS_TOWER_BOSS_KEY_CHEST, 0x0A, 0x0B, "Ganon's Tower Boss Key Chest", GANONS_TOWER_BOSS_KEY_CHEST, GANONS_CASTLE_BOSS_KEY, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); //Ganons Castle Vanilla - locationTable[GANONS_CASTLE_FOREST_TRIAL_CHEST] = ItemLocation::Chest (0x0D, 0x09, "Ganon's Castle Forest Trial Chest", GANONS_CASTLE_FOREST_TRIAL_CHEST, BLUE_RUPEE, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_WATER_TRIAL_LEFT_CHEST] = ItemLocation::Chest (0x0D, 0x07, "Ganon's Castle Water Trial Left Chest", GANONS_CASTLE_WATER_TRIAL_LEFT_CHEST, ICE_TRAP, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_WATER_TRIAL_RIGHT_CHEST] = ItemLocation::Chest (0x0D, 0x06, "Ganon's Castle Water Trial Right Chest", GANONS_CASTLE_WATER_TRIAL_RIGHT_CHEST, RECOVERY_HEART, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_SHADOW_TRIAL_FRONT_CHEST] = ItemLocation::Chest (0x0D, 0x08, "Ganon's Castle Shadow Trial Front Chest", GANONS_CASTLE_SHADOW_TRIAL_FRONT_CHEST, BLUE_RUPEE, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_SHADOW_TRIAL_GOLDEN_GAUNTLETS_CHEST] = ItemLocation::Chest (0x0D, 0x05, "Ganon's Castle Shadow Trial Golden Gauntlets Chest", GANONS_CASTLE_SHADOW_TRIAL_GOLDEN_GAUNTLETS_CHEST, PROGRESSIVE_STRENGTH, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_SPIRIT_TRIAL_CRYSTAL_SWITCH_CHEST] = ItemLocation::Chest (0x0D, 0x12, "Ganon's Castle Spirit Trial Crystal Switch Chest", GANONS_CASTLE_SPIRIT_TRIAL_CRYSTAL_SWITCH_CHEST, BOMBCHU_20, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_SPIRIT_TRIAL_INVISIBLE_CHEST] = ItemLocation::Chest (0x0D, 0x14, "Ganon's Castle Spirit Trial Invisible Chest", GANONS_CASTLE_SPIRIT_TRIAL_INVISIBLE_CHEST, ARROWS_10, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_LIGHT_TRIAL_FIRST_LEFT_CHEST] = ItemLocation::Chest (0x0D, 0x0C, "Ganon's Castle Light Trial First Left Chest", GANONS_CASTLE_LIGHT_TRIAL_FIRST_LEFT_CHEST, BLUE_RUPEE, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_LIGHT_TRIAL_SECOND_LEFT_CHEST] = ItemLocation::Chest (0x0D, 0x0B, "Ganon's Castle Light Trial Second Left Chest", GANONS_CASTLE_LIGHT_TRIAL_SECOND_LEFT_CHEST, ICE_TRAP, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_LIGHT_TRIAL_THIRD_LEFT_CHEST] = ItemLocation::Chest (0x0D, 0x0D, "Ganon's Castle Light Trial Third Left Chest", GANONS_CASTLE_LIGHT_TRIAL_THIRD_LEFT_CHEST, RECOVERY_HEART, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_LIGHT_TRIAL_FIRST_RIGHT_CHEST] = ItemLocation::Chest (0x0D, 0x0E, "Ganon's Castle Light Trial First Right Chest", GANONS_CASTLE_LIGHT_TRIAL_FIRST_RIGHT_CHEST, ICE_TRAP, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_LIGHT_TRIAL_SECOND_RIGHT_CHEST] = ItemLocation::Chest (0x0D, 0x0A, "Ganon's Castle Light Trial Second Right Chest", GANONS_CASTLE_LIGHT_TRIAL_SECOND_RIGHT_CHEST, ARROWS_30, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_LIGHT_TRIAL_THIRD_RIGHT_CHEST] = ItemLocation::Chest (0x0D, 0x0F, "Ganon's Castle Light Trial Third Right Chest", GANONS_CASTLE_LIGHT_TRIAL_THIRD_RIGHT_CHEST, ICE_TRAP, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_LIGHT_TRIAL_INVISIBLE_ENEMIES_CHEST] = ItemLocation::Chest (0x0D, 0x10, "Ganon's Castle Light Trial Invisible Enemies Chest", GANONS_CASTLE_LIGHT_TRIAL_INVISIBLE_ENEMIES_CHEST, GANONS_CASTLE_SMALL_KEY, {Category::cGanonsCastle, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_LIGHT_TRIAL_LULLABY_CHEST] = ItemLocation::Chest (0x0D, 0x11, "Ganon's Castle Light Trial Lullaby Chest", GANONS_CASTLE_LIGHT_TRIAL_LULLABY_CHEST, GANONS_CASTLE_SMALL_KEY, {Category::cGanonsCastle, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_DEKU_SCRUB_CENTER_LEFT] = ItemLocation::Base (0x0D, 0x37, "Ganon's Castle Deku Scrub Center-Left", GANONS_CASTLE_DEKU_SCRUB_CENTER_LEFT, BUY_BOMBS_535, {Category::cGanonsCastle, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x0D, 0x06), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_DEKU_SCRUB_CENTER_RIGHT] = ItemLocation::Base (0x0D, 0x33, "Ganon's Castle Deku Scrub Center-Right", GANONS_CASTLE_DEKU_SCRUB_CENTER_RIGHT, BUY_ARROWS_30, {Category::cGanonsCastle, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x0D, 0x04), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_DEKU_SCRUB_RIGHT] = ItemLocation::Base (0x0D, 0x39, "Ganon's Castle Deku Scrub Right", GANONS_CASTLE_DEKU_SCRUB_RIGHT, BUY_RED_POTION_30, {Category::cGanonsCastle, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x0D, 0x08), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_DEKU_SCRUB_LEFT] = ItemLocation::Base (0x0D, 0x3A, "Ganon's Castle Deku Scrub Left", GANONS_CASTLE_DEKU_SCRUB_LEFT, BUY_GREEN_POTION, {Category::cGanonsCastle, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x0D, 0x09), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_FOREST_TRIAL_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_FOREST_TRIAL_CHEST, 0x0D, 0x09, "Ganon's Castle Forest Trial Chest", GANONS_CASTLE_FOREST_TRIAL_CHEST, BLUE_RUPEE, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_WATER_TRIAL_LEFT_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_WATER_TRIAL_LEFT_CHEST, 0x0D, 0x07, "Ganon's Castle Water Trial Left Chest", GANONS_CASTLE_WATER_TRIAL_LEFT_CHEST, ICE_TRAP, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_WATER_TRIAL_RIGHT_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_WATER_TRIAL_RIGHT_CHEST, 0x0D, 0x06, "Ganon's Castle Water Trial Right Chest", GANONS_CASTLE_WATER_TRIAL_RIGHT_CHEST, RECOVERY_HEART, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_SHADOW_TRIAL_FRONT_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_SHADOW_TRIAL_FRONT_CHEST, 0x0D, 0x08, "Ganon's Castle Shadow Trial Front Chest", GANONS_CASTLE_SHADOW_TRIAL_FRONT_CHEST, BLUE_RUPEE, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_SHADOW_TRIAL_GOLDEN_GAUNTLETS_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_SHADOW_TRIAL_GOLDEN_GAUNTLETS_CHEST, 0x0D, 0x05, "Ganon's Castle Shadow Trial Golden Gauntlets Chest", GANONS_CASTLE_SHADOW_TRIAL_GOLDEN_GAUNTLETS_CHEST, PROGRESSIVE_STRENGTH, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_SPIRIT_TRIAL_CRYSTAL_SWITCH_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_SPIRIT_TRIAL_CRYSTAL_SWITCH_CHEST, 0x0D, 0x12, "Ganon's Castle Spirit Trial Crystal Switch Chest", GANONS_CASTLE_SPIRIT_TRIAL_CRYSTAL_SWITCH_CHEST, BOMBCHU_20, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_SPIRIT_TRIAL_INVISIBLE_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_SPIRIT_TRIAL_INVISIBLE_CHEST, 0x0D, 0x14, "Ganon's Castle Spirit Trial Invisible Chest", GANONS_CASTLE_SPIRIT_TRIAL_INVISIBLE_CHEST, ARROWS_10, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_LIGHT_TRIAL_FIRST_LEFT_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_LIGHT_TRIAL_FIRST_LEFT_CHEST, 0x0D, 0x0C, "Ganon's Castle Light Trial First Left Chest", GANONS_CASTLE_LIGHT_TRIAL_FIRST_LEFT_CHEST, BLUE_RUPEE, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_LIGHT_TRIAL_SECOND_LEFT_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_LIGHT_TRIAL_SECOND_LEFT_CHEST, 0x0D, 0x0B, "Ganon's Castle Light Trial Second Left Chest", GANONS_CASTLE_LIGHT_TRIAL_SECOND_LEFT_CHEST, ICE_TRAP, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_LIGHT_TRIAL_THIRD_LEFT_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_LIGHT_TRIAL_THIRD_LEFT_CHEST, 0x0D, 0x0D, "Ganon's Castle Light Trial Third Left Chest", GANONS_CASTLE_LIGHT_TRIAL_THIRD_LEFT_CHEST, RECOVERY_HEART, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_LIGHT_TRIAL_FIRST_RIGHT_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_LIGHT_TRIAL_FIRST_RIGHT_CHEST, 0x0D, 0x0E, "Ganon's Castle Light Trial First Right Chest", GANONS_CASTLE_LIGHT_TRIAL_FIRST_RIGHT_CHEST, ICE_TRAP, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_LIGHT_TRIAL_SECOND_RIGHT_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_LIGHT_TRIAL_SECOND_RIGHT_CHEST, 0x0D, 0x0A, "Ganon's Castle Light Trial Second Right Chest", GANONS_CASTLE_LIGHT_TRIAL_SECOND_RIGHT_CHEST, ARROWS_30, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_LIGHT_TRIAL_THIRD_RIGHT_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_LIGHT_TRIAL_THIRD_RIGHT_CHEST, 0x0D, 0x0F, "Ganon's Castle Light Trial Third Right Chest", GANONS_CASTLE_LIGHT_TRIAL_THIRD_RIGHT_CHEST, ICE_TRAP, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_LIGHT_TRIAL_INVISIBLE_ENEMIES_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_LIGHT_TRIAL_INVISIBLE_ENEMIES_CHEST, 0x0D, 0x10, "Ganon's Castle Light Trial Invisible Enemies Chest", GANONS_CASTLE_LIGHT_TRIAL_INVISIBLE_ENEMIES_CHEST, GANONS_CASTLE_SMALL_KEY, {Category::cGanonsCastle, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_LIGHT_TRIAL_LULLABY_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_LIGHT_TRIAL_LULLABY_CHEST, 0x0D, 0x11, "Ganon's Castle Light Trial Lullaby Chest", GANONS_CASTLE_LIGHT_TRIAL_LULLABY_CHEST, GANONS_CASTLE_SMALL_KEY, {Category::cGanonsCastle, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_DEKU_SCRUB_CENTER_LEFT] = ItemLocation::Base (RC_GANONS_CASTLE_DEKU_SCRUB_CENTER_LEFT, 0x0D, 0x37, "Ganon's Castle Deku Scrub Center-Left", GANONS_CASTLE_DEKU_SCRUB_CENTER_LEFT, BUY_BOMBS_535, {Category::cGanonsCastle, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x0D, 0x06), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_DEKU_SCRUB_CENTER_RIGHT] = ItemLocation::Base (RC_GANONS_CASTLE_DEKU_SCRUB_CENTER_RIGHT, 0x0D, 0x33, "Ganon's Castle Deku Scrub Center-Right", GANONS_CASTLE_DEKU_SCRUB_CENTER_RIGHT, BUY_ARROWS_30, {Category::cGanonsCastle, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x0D, 0x04), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_DEKU_SCRUB_RIGHT] = ItemLocation::Base (RC_GANONS_CASTLE_DEKU_SCRUB_RIGHT, 0x0D, 0x39, "Ganon's Castle Deku Scrub Right", GANONS_CASTLE_DEKU_SCRUB_RIGHT, BUY_RED_POTION_30, {Category::cGanonsCastle, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x0D, 0x08), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_DEKU_SCRUB_LEFT] = ItemLocation::Base (RC_GANONS_CASTLE_DEKU_SCRUB_LEFT, 0x0D, 0x3A, "Ganon's Castle Deku Scrub Left", GANONS_CASTLE_DEKU_SCRUB_LEFT, BUY_GREEN_POTION, {Category::cGanonsCastle, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x0D, 0x09), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); //Ganons Castle MQ - locationTable[GANONS_CASTLE_MQ_WATER_TRIAL_CHEST] = ItemLocation::Chest (0x0D, 0x01, "Ganon's Castle MQ Water Trial Chest", GANONS_CASTLE_MQ_WATER_TRIAL_CHEST, RED_RUPEE, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_MQ_FOREST_TRIAL_EYE_SWITCH_CHEST] = ItemLocation::Chest (0x0D, 0x02, "Ganon's Castle MQ Forest Trial Eye Switch Chest", GANONS_CASTLE_MQ_FOREST_TRIAL_EYE_SWITCH_CHEST, ARROWS_10, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_MQ_FOREST_TRIAL_FROZEN_EYE_SWITCH_CHEST] = ItemLocation::Chest (0x0D, 0x03, "Ganon's Castle MQ Forest Trial Frozen Eye Switch Chest",GANONS_CASTLE_MQ_FOREST_TRIAL_FROZEN_EYE_SWITCH_CHEST, BOMBS_5, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_MQ_LIGHT_TRIAL_LULLABY_CHEST] = ItemLocation::Chest (0x0D, 0x04, "Ganon's Castle MQ Light Trial Lullaby Chest", GANONS_CASTLE_MQ_LIGHT_TRIAL_LULLABY_CHEST, RECOVERY_HEART, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_MQ_SHADOW_TRIAL_BOMB_FLOWER_CHEST] = ItemLocation::Chest (0x0D, 0x00, "Ganon's Castle MQ Shadow Trial Bomb Flower Chest", GANONS_CASTLE_MQ_SHADOW_TRIAL_BOMB_FLOWER_CHEST, ARROWS_10, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_MQ_SHADOW_TRIAL_EYE_SWITCH_CHEST] = ItemLocation::Chest (0x0D, 0x05, "Ganon's Castle MQ Shadow Trial Eye Switch Chest", GANONS_CASTLE_MQ_SHADOW_TRIAL_EYE_SWITCH_CHEST, GANONS_CASTLE_SMALL_KEY, {Category::cGanonsCastle, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_MQ_SPIRIT_TRIAL_GOLDEN_GAUNTLETS_CHEST] = ItemLocation::Chest (0x0D, 0x06, "Ganon's Castle MQ Spirit Trial Golden Gauntlets Chest", GANONS_CASTLE_MQ_SPIRIT_TRIAL_GOLDEN_GAUNTLETS_CHEST, PROGRESSIVE_STRENGTH, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_MQ_SPIRIT_TRIAL_SUN_BACK_RIGHT_CHEST] = ItemLocation::Chest (0x0D, 0x07, "Ganon's Castle MQ Spirit Trial Sun Back Right Chest", GANONS_CASTLE_MQ_SPIRIT_TRIAL_SUN_BACK_RIGHT_CHEST, RECOVERY_HEART, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_MQ_SPIRIT_TRIAL_SUN_BACK_LEFT_CHEST] = ItemLocation::Chest (0x0D, 0x08, "Ganon's Castle MQ Spirit Trial Sun Back Left Chest", GANONS_CASTLE_MQ_SPIRIT_TRIAL_SUN_BACK_LEFT_CHEST, GANONS_CASTLE_SMALL_KEY, {Category::cGanonsCastle, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_MQ_SPIRIT_TRIAL_SUN_FRONT_LEFT_CHEST] = ItemLocation::Chest (0x0D, 0x09, "Ganon's Castle MQ Spirit Trial Sun Front Left Chest", GANONS_CASTLE_MQ_SPIRIT_TRIAL_SUN_FRONT_LEFT_CHEST, RECOVERY_HEART, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_MQ_SPIRIT_TRIAL_FIRST_CHEST] = ItemLocation::Chest (0x0D, 0x0A, "Ganon's Castle MQ Spirit Trial First Chest", GANONS_CASTLE_MQ_SPIRIT_TRIAL_FIRST_CHEST, BOMBCHU_10, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_MQ_SPIRIT_TRIAL_INVISIBLE_CHEST] = ItemLocation::Chest (0x0D, 0x14, "Ganon's Castle MQ Spirit Trial Invisible Chest", GANONS_CASTLE_MQ_SPIRIT_TRIAL_INVISIBLE_CHEST, ARROWS_10, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_MQ_FOREST_TRIAL_FREESTANDING_KEY] = ItemLocation::Collectable(0x0D, 0x01, "Ganon's Castle MQ Forest Trial Freestanding Key", GANONS_CASTLE_MQ_FOREST_TRIAL_FREESTANDING_KEY, GANONS_CASTLE_SMALL_KEY, {Category::cGanonsCastle, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_MQ_DEKU_SCRUB_RIGHT] = ItemLocation::Base (0x0D, 0x30, "Ganon's Castle MQ Deku Scrub Right", GANONS_CASTLE_MQ_DEKU_SCRUB_RIGHT, BUY_DEKU_NUT_5, {Category::cGanonsCastle, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x0D, 0x01), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_LEFT] = ItemLocation::Base (0x0D, 0x37, "Ganon's Castle MQ Deku Scrub Center-Left", GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_LEFT, BUY_BOMBS_535, {Category::cGanonsCastle, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x0D, 0x06), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER] = ItemLocation::Base (0x0D, 0x33, "Ganon's Castle MQ Deku Scrub Center", GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER, BUY_ARROWS_30, {Category::cGanonsCastle, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x0D, 0x04), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_RIGHT] = ItemLocation::Base (0x0D, 0x39, "Ganon's Castle MQ Deku Scrub Center-Right", GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_RIGHT, BUY_RED_POTION_30, {Category::cGanonsCastle, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x0D, 0x08), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[GANONS_CASTLE_MQ_DEKU_SCRUB_LEFT] = ItemLocation::Base (0x0D, 0x3A, "Ganon's Castle MQ Deku Scrub Left", GANONS_CASTLE_MQ_DEKU_SCRUB_LEFT, BUY_GREEN_POTION, {Category::cGanonsCastle, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x0D, 0x09), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_MQ_WATER_TRIAL_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_MQ_WATER_TRIAL_CHEST, 0x0D, 0x01, "Ganon's Castle MQ Water Trial Chest", GANONS_CASTLE_MQ_WATER_TRIAL_CHEST, RED_RUPEE, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_MQ_FOREST_TRIAL_EYE_SWITCH_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_MQ_FOREST_TRIAL_EYE_SWITCH_CHEST, 0x0D, 0x02, "Ganon's Castle MQ Forest Trial Eye Switch Chest", GANONS_CASTLE_MQ_FOREST_TRIAL_EYE_SWITCH_CHEST, ARROWS_10, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_MQ_FOREST_TRIAL_FROZEN_EYE_SWITCH_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_MQ_FOREST_TRIAL_FROZEN_EYE_SWITCH_CHEST, 0x0D, 0x03, "Ganon's Castle MQ Forest Trial Frozen Eye Switch Chest",GANONS_CASTLE_MQ_FOREST_TRIAL_FROZEN_EYE_SWITCH_CHEST, BOMBS_5, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_MQ_LIGHT_TRIAL_LULLABY_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_LULLABY_CHEST, 0x0D, 0x04, "Ganon's Castle MQ Light Trial Lullaby Chest", GANONS_CASTLE_MQ_LIGHT_TRIAL_LULLABY_CHEST, RECOVERY_HEART, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_MQ_SHADOW_TRIAL_BOMB_FLOWER_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_BOMB_FLOWER_CHEST, 0x0D, 0x00, "Ganon's Castle MQ Shadow Trial Bomb Flower Chest", GANONS_CASTLE_MQ_SHADOW_TRIAL_BOMB_FLOWER_CHEST, ARROWS_10, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_MQ_SHADOW_TRIAL_EYE_SWITCH_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_EYE_SWITCH_CHEST, 0x0D, 0x05, "Ganon's Castle MQ Shadow Trial Eye Switch Chest", GANONS_CASTLE_MQ_SHADOW_TRIAL_EYE_SWITCH_CHEST, GANONS_CASTLE_SMALL_KEY, {Category::cGanonsCastle, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_MQ_SPIRIT_TRIAL_GOLDEN_GAUNTLETS_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_GOLDEN_GAUNTLETS_CHEST, 0x0D, 0x06, "Ganon's Castle MQ Spirit Trial Golden Gauntlets Chest", GANONS_CASTLE_MQ_SPIRIT_TRIAL_GOLDEN_GAUNTLETS_CHEST, PROGRESSIVE_STRENGTH, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_MQ_SPIRIT_TRIAL_SUN_BACK_RIGHT_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_SUN_BACK_RIGHT_CHEST, 0x0D, 0x07, "Ganon's Castle MQ Spirit Trial Sun Back Right Chest", GANONS_CASTLE_MQ_SPIRIT_TRIAL_SUN_BACK_RIGHT_CHEST, RECOVERY_HEART, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_MQ_SPIRIT_TRIAL_SUN_BACK_LEFT_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_SUN_BACK_LEFT_CHEST, 0x0D, 0x08, "Ganon's Castle MQ Spirit Trial Sun Back Left Chest", GANONS_CASTLE_MQ_SPIRIT_TRIAL_SUN_BACK_LEFT_CHEST, GANONS_CASTLE_SMALL_KEY, {Category::cGanonsCastle, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_MQ_SPIRIT_TRIAL_SUN_FRONT_LEFT_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_SUN_FRONT_LEFT_CHEST, 0x0D, 0x09, "Ganon's Castle MQ Spirit Trial Sun Front Left Chest", GANONS_CASTLE_MQ_SPIRIT_TRIAL_SUN_FRONT_LEFT_CHEST, RECOVERY_HEART, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_MQ_SPIRIT_TRIAL_FIRST_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_FIRST_CHEST, 0x0D, 0x0A, "Ganon's Castle MQ Spirit Trial First Chest", GANONS_CASTLE_MQ_SPIRIT_TRIAL_FIRST_CHEST, BOMBCHU_10, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_MQ_SPIRIT_TRIAL_INVISIBLE_CHEST] = ItemLocation::Chest (RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_INVISIBLE_CHEST, 0x0D, 0x14, "Ganon's Castle MQ Spirit Trial Invisible Chest", GANONS_CASTLE_MQ_SPIRIT_TRIAL_INVISIBLE_CHEST, ARROWS_10, {Category::cGanonsCastle,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_MQ_FOREST_TRIAL_FREESTANDING_KEY] = ItemLocation::Collectable(RC_GANONS_CASTLE_MQ_FOREST_TRIAL_FREESTANDING_KEY, 0x0D, 0x01, "Ganon's Castle MQ Forest Trial Freestanding Key", GANONS_CASTLE_MQ_FOREST_TRIAL_FREESTANDING_KEY, GANONS_CASTLE_SMALL_KEY, {Category::cGanonsCastle, Category::cVanillaSmallKey}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_MQ_DEKU_SCRUB_RIGHT] = ItemLocation::Base (RC_GANONS_CASTLE_MQ_DEKU_SCRUB_RIGHT, 0x0D, 0x30, "Ganon's Castle MQ Deku Scrub Right", GANONS_CASTLE_MQ_DEKU_SCRUB_RIGHT, BUY_DEKU_NUT_5, {Category::cGanonsCastle, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x0D, 0x01), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_LEFT] = ItemLocation::Base (RC_GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_LEFT, 0x0D, 0x37, "Ganon's Castle MQ Deku Scrub Center-Left", GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_LEFT, BUY_BOMBS_535, {Category::cGanonsCastle, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x0D, 0x06), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER] = ItemLocation::Base (RC_GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER, 0x0D, 0x33, "Ganon's Castle MQ Deku Scrub Center", GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER, BUY_ARROWS_30, {Category::cGanonsCastle, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x0D, 0x04), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_RIGHT] = ItemLocation::Base (RC_GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_RIGHT, 0x0D, 0x39, "Ganon's Castle MQ Deku Scrub Center-Right", GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_RIGHT, BUY_RED_POTION_30, {Category::cGanonsCastle, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x0D, 0x08), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[GANONS_CASTLE_MQ_DEKU_SCRUB_LEFT] = ItemLocation::Base (RC_GANONS_CASTLE_MQ_DEKU_SCRUB_LEFT, 0x0D, 0x3A, "Ganon's Castle MQ Deku Scrub Left", GANONS_CASTLE_MQ_DEKU_SCRUB_LEFT, BUY_GREEN_POTION, {Category::cGanonsCastle, Category::cDekuScrub,}, SpoilerCollectionCheck::Scrub(0x0D, 0x09), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); /*------------------------------- --- GOLD SKULLTULA TOKENS --- -------------------------------*/ //Dungeons - locationTable[DEKU_TREE_GS_BASEMENT_BACK_ROOM] = ItemLocation::GSToken(0x00, 0x01, "Deku Tree GS Basement Back Room", DEKU_TREE_GS_BASEMENT_BACK_ROOM, {Category::cDekuTree, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[DEKU_TREE_GS_BASEMENT_GATE] = ItemLocation::GSToken(0x00, 0x02, "Deku Tree GS Basement Gate", DEKU_TREE_GS_BASEMENT_GATE, {Category::cDekuTree, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[DEKU_TREE_GS_BASEMENT_VINES] = ItemLocation::GSToken(0x00, 0x04, "Deku Tree GS Basement Vines", DEKU_TREE_GS_BASEMENT_VINES, {Category::cDekuTree, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[DEKU_TREE_GS_COMPASS_ROOM] = ItemLocation::GSToken(0x00, 0x08, "Deku Tree GS Compass Room", DEKU_TREE_GS_COMPASS_ROOM, {Category::cDekuTree, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_GS_BASEMENT_BACK_ROOM] = ItemLocation::GSToken(RC_DEKU_TREE_GS_BASEMENT_BACK_ROOM, 0x00, 0x01, "Deku Tree GS Basement Back Room", DEKU_TREE_GS_BASEMENT_BACK_ROOM, {Category::cDekuTree, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_GS_BASEMENT_GATE] = ItemLocation::GSToken(RC_DEKU_TREE_GS_BASEMENT_GATE, 0x00, 0x02, "Deku Tree GS Basement Gate", DEKU_TREE_GS_BASEMENT_GATE, {Category::cDekuTree, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_GS_BASEMENT_VINES] = ItemLocation::GSToken(RC_DEKU_TREE_GS_BASEMENT_VINES, 0x00, 0x04, "Deku Tree GS Basement Vines", DEKU_TREE_GS_BASEMENT_VINES, {Category::cDekuTree, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_GS_COMPASS_ROOM] = ItemLocation::GSToken(RC_DEKU_TREE_GS_COMPASS_ROOM, 0x00, 0x08, "Deku Tree GS Compass Room", DEKU_TREE_GS_COMPASS_ROOM, {Category::cDekuTree, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[DEKU_TREE_MQ_GS_LOBBY] = ItemLocation::GSToken(0x00, 0x02, "Deku Tree MQ GS Lobby", DEKU_TREE_MQ_GS_LOBBY, {Category::cDekuTree, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[DEKU_TREE_MQ_GS_COMPASS_ROOM] = ItemLocation::GSToken(0x00, 0x08, "Deku Tree MQ GS Compass Room", DEKU_TREE_MQ_GS_COMPASS_ROOM, {Category::cDekuTree, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[DEKU_TREE_MQ_GS_BASEMENT_GRAVES_ROOM] = ItemLocation::GSToken(0x00, 0x04, "Deku Tree MQ GS Basement Graves Room", DEKU_TREE_MQ_GS_BASEMENT_GRAVES_ROOM, {Category::cDekuTree, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[DEKU_TREE_MQ_GS_BASEMENT_BACK_ROOM] = ItemLocation::GSToken(0x00, 0x01, "Deku Tree MQ GS Basement Back Room", DEKU_TREE_MQ_GS_BASEMENT_BACK_ROOM, {Category::cDekuTree, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_MQ_GS_LOBBY] = ItemLocation::GSToken(RC_DEKU_TREE_MQ_GS_LOBBY, 0x00, 0x02, "Deku Tree MQ GS Lobby", DEKU_TREE_MQ_GS_LOBBY, {Category::cDekuTree, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_MQ_GS_COMPASS_ROOM] = ItemLocation::GSToken(RC_DEKU_TREE_MQ_GS_COMPASS_ROOM, 0x00, 0x08, "Deku Tree MQ GS Compass Room", DEKU_TREE_MQ_GS_COMPASS_ROOM, {Category::cDekuTree, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_MQ_GS_BASEMENT_GRAVES_ROOM] = ItemLocation::GSToken(RC_DEKU_TREE_MQ_GS_BASEMENT_GRAVES_ROOM, 0x00, 0x04, "Deku Tree MQ GS Basement Graves Room", DEKU_TREE_MQ_GS_BASEMENT_GRAVES_ROOM, {Category::cDekuTree, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DEKU_TREE_MQ_GS_BASEMENT_BACK_ROOM] = ItemLocation::GSToken(RC_DEKU_TREE_MQ_GS_BASEMENT_BACK_ROOM, 0x00, 0x01, "Deku Tree MQ GS Basement Back Room", DEKU_TREE_MQ_GS_BASEMENT_BACK_ROOM, {Category::cDekuTree, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[DODONGOS_CAVERN_GS_VINES_ABOVE_STAIRS] = ItemLocation::GSToken(0x01, 0x01, "Dodongos Cavern GS Vines Above Stairs", DODONGOS_CAVERN_GS_VINES_ABOVE_STAIRS, {Category::cDodongosCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_GS_SCARECROW] = ItemLocation::GSToken(0x01, 0x02, "Dodongos Cavern GS Scarecrow", DODONGOS_CAVERN_GS_SCARECROW, {Category::cDodongosCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_GS_ALCOVE_ABOVE_STAIRS] = ItemLocation::GSToken(0x01, 0x04, "Dodongos Cavern GS Alcove Above Stairs", DODONGOS_CAVERN_GS_ALCOVE_ABOVE_STAIRS, {Category::cDodongosCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_GS_BACK_ROOM] = ItemLocation::GSToken(0x01, 0x08, "Dodongos Cavern GS Back Room", DODONGOS_CAVERN_GS_BACK_ROOM, {Category::cDodongosCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_GS_SIDE_ROOM_NEAR_LOWER_LIZALFOS] = ItemLocation::GSToken(0x01, 0x10, "Dodongos Cavern GS Side Room Near Lower Lizalfos", DODONGOS_CAVERN_GS_SIDE_ROOM_NEAR_LOWER_LIZALFOS, {Category::cDodongosCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_GS_VINES_ABOVE_STAIRS] = ItemLocation::GSToken(RC_DODONGOS_CAVERN_GS_VINES_ABOVE_STAIRS, 0x01, 0x01, "Dodongos Cavern GS Vines Above Stairs", DODONGOS_CAVERN_GS_VINES_ABOVE_STAIRS, {Category::cDodongosCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_GS_SCARECROW] = ItemLocation::GSToken(RC_DODONGOS_CAVERN_GS_SCARECROW, 0x01, 0x02, "Dodongos Cavern GS Scarecrow", DODONGOS_CAVERN_GS_SCARECROW, {Category::cDodongosCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_GS_ALCOVE_ABOVE_STAIRS] = ItemLocation::GSToken(RC_DODONGOS_CAVERN_GS_ALCOVE_ABOVE_STAIRS, 0x01, 0x04, "Dodongos Cavern GS Alcove Above Stairs", DODONGOS_CAVERN_GS_ALCOVE_ABOVE_STAIRS, {Category::cDodongosCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_GS_BACK_ROOM] = ItemLocation::GSToken(RC_DODONGOS_CAVERN_GS_BACK_ROOM, 0x01, 0x08, "Dodongos Cavern GS Back Room", DODONGOS_CAVERN_GS_BACK_ROOM, {Category::cDodongosCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_GS_SIDE_ROOM_NEAR_LOWER_LIZALFOS] = ItemLocation::GSToken(RC_DODONGOS_CAVERN_GS_SIDE_ROOM_NEAR_LOWER_LIZALFOS, 0x01, 0x10, "Dodongos Cavern GS Side Room Near Lower Lizalfos", DODONGOS_CAVERN_GS_SIDE_ROOM_NEAR_LOWER_LIZALFOS, {Category::cDodongosCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_MQ_GS_SCRUB_ROOM] = ItemLocation::GSToken(0x01, 0x02, "Dodongos Cavern MQ GS Scrub Room", DODONGOS_CAVERN_MQ_GS_SCRUB_ROOM, {Category::cDodongosCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_MQ_GS_SONG_OF_TIME_BLOCK_ROOM] = ItemLocation::GSToken(0x01, 0x08, "Dodongos Cavern MQ GS Song of Time Block Room", DODONGOS_CAVERN_MQ_GS_SONG_OF_TIME_BLOCK_ROOM, {Category::cDodongosCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_MQ_GS_LIZALFOS_ROOM] = ItemLocation::GSToken(0x01, 0x04, "Dodongos Cavern MQ GS Lizalfos Room", DODONGOS_CAVERN_MQ_GS_LIZALFOS_ROOM, {Category::cDodongosCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_MQ_GS_LARVAE_ROOM] = ItemLocation::GSToken(0x01, 0x10, "Dodongos Cavern MQ GS Larvae Room", DODONGOS_CAVERN_MQ_GS_LARVAE_ROOM, {Category::cDodongosCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[DODONGOS_CAVERN_MQ_GS_BACK_AREA] = ItemLocation::GSToken(0x01, 0x01, "Dodongos Cavern MQ GS Back Room", DODONGOS_CAVERN_MQ_GS_BACK_AREA, {Category::cDodongosCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_MQ_GS_SCRUB_ROOM] = ItemLocation::GSToken(RC_DODONGOS_CAVERN_MQ_GS_SCRUB_ROOM, 0x01, 0x02, "Dodongos Cavern MQ GS Scrub Room", DODONGOS_CAVERN_MQ_GS_SCRUB_ROOM, {Category::cDodongosCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_MQ_GS_SONG_OF_TIME_BLOCK_ROOM] = ItemLocation::GSToken(RC_DODONGOS_CAVERN_MQ_GS_SONG_OF_TIME_BLOCK_ROOM, 0x01, 0x08, "Dodongos Cavern MQ GS Song of Time Block Room", DODONGOS_CAVERN_MQ_GS_SONG_OF_TIME_BLOCK_ROOM, {Category::cDodongosCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_MQ_GS_LIZALFOS_ROOM] = ItemLocation::GSToken(RC_DODONGOS_CAVERN_MQ_GS_LIZALFOS_ROOM, 0x01, 0x04, "Dodongos Cavern MQ GS Lizalfos Room", DODONGOS_CAVERN_MQ_GS_LIZALFOS_ROOM, {Category::cDodongosCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_MQ_GS_LARVAE_ROOM] = ItemLocation::GSToken(RC_DODONGOS_CAVERN_MQ_GS_LARVAE_ROOM, 0x01, 0x10, "Dodongos Cavern MQ GS Larvae Room", DODONGOS_CAVERN_MQ_GS_LARVAE_ROOM, {Category::cDodongosCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[DODONGOS_CAVERN_MQ_GS_BACK_AREA] = ItemLocation::GSToken(RC_DODONGOS_CAVERN_MQ_GS_BACK_AREA, 0x01, 0x01, "Dodongos Cavern MQ GS Back Room", DODONGOS_CAVERN_MQ_GS_BACK_AREA, {Category::cDodongosCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[JABU_JABUS_BELLY_GS_LOBBY_BASEMENT_LOWER] = ItemLocation::GSToken(0x02, 0x01, "Jabu Jabus Belly GS Lobby Basement Lower", JABU_JABUS_BELLY_GS_LOBBY_BASEMENT_LOWER, {Category::cJabuJabusBelly, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[JABU_JABUS_BELLY_GS_LOBBY_BASEMENT_UPPER] = ItemLocation::GSToken(0x02, 0x02, "Jabu Jabus Belly GS Lobby Basement Upper", JABU_JABUS_BELLY_GS_LOBBY_BASEMENT_UPPER, {Category::cJabuJabusBelly, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[JABU_JABUS_BELLY_GS_NEAR_BOSS] = ItemLocation::GSToken(0x02, 0x04, "Jabu Jabus Belly GS Near Boss", JABU_JABUS_BELLY_GS_NEAR_BOSS, {Category::cJabuJabusBelly, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[JABU_JABUS_BELLY_GS_WATER_SWITCH_ROOM] = ItemLocation::GSToken(0x02, 0x08, "Jabu Jabus Belly GS Water Switch Room", JABU_JABUS_BELLY_GS_WATER_SWITCH_ROOM, {Category::cJabuJabusBelly, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_GS_LOBBY_BASEMENT_LOWER] = ItemLocation::GSToken(RC_JABU_JABUS_BELLY_GS_LOBBY_BASEMENT_LOWER, 0x02, 0x01, "Jabu Jabus Belly GS Lobby Basement Lower", JABU_JABUS_BELLY_GS_LOBBY_BASEMENT_LOWER, {Category::cJabuJabusBelly, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_GS_LOBBY_BASEMENT_UPPER] = ItemLocation::GSToken(RC_JABU_JABUS_BELLY_GS_LOBBY_BASEMENT_UPPER, 0x02, 0x02, "Jabu Jabus Belly GS Lobby Basement Upper", JABU_JABUS_BELLY_GS_LOBBY_BASEMENT_UPPER, {Category::cJabuJabusBelly, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_GS_NEAR_BOSS] = ItemLocation::GSToken(RC_JABU_JABUS_BELLY_GS_NEAR_BOSS, 0x02, 0x04, "Jabu Jabus Belly GS Near Boss", JABU_JABUS_BELLY_GS_NEAR_BOSS, {Category::cJabuJabusBelly, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_GS_WATER_SWITCH_ROOM] = ItemLocation::GSToken(RC_JABU_JABUS_BELLY_GS_WATER_SWITCH_ROOM, 0x02, 0x08, "Jabu Jabus Belly GS Water Switch Room", JABU_JABUS_BELLY_GS_WATER_SWITCH_ROOM, {Category::cJabuJabusBelly, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[JABU_JABUS_BELLY_MQ_GS_TAILPASARAN_ROOM] = ItemLocation::GSToken(0x02, 0x04, "Jabu Jabus Belly MQ GS Tail Parasan Room", JABU_JABUS_BELLY_MQ_GS_TAILPASARAN_ROOM, {Category::cJabuJabusBelly, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[JABU_JABUS_BELLY_MQ_GS_INVISIBLE_ENEMIES_ROOM] = ItemLocation::GSToken(0x02, 0x08, "Jabu Jabus Belly MQ GS Invisible Enemies Room", JABU_JABUS_BELLY_MQ_GS_INVISIBLE_ENEMIES_ROOM, {Category::cJabuJabusBelly, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[JABU_JABUS_BELLY_MQ_GS_BOOMERANG_CHEST_ROOM] = ItemLocation::GSToken(0x02, 0x01, "Jabu Jabus Belly MQ GS Boomerang Chest Room", JABU_JABUS_BELLY_MQ_GS_BOOMERANG_CHEST_ROOM, {Category::cJabuJabusBelly, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[JABU_JABUS_BELLY_MQ_GS_NEAR_BOSS] = ItemLocation::GSToken(0x02, 0x02, "Jabu Jabus Belly MQ GS Near Boss", JABU_JABUS_BELLY_MQ_GS_NEAR_BOSS, {Category::cJabuJabusBelly, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_MQ_GS_TAILPASARAN_ROOM] = ItemLocation::GSToken(RC_JABU_JABUS_BELLY_MQ_GS_TAILPASARAN_ROOM, 0x02, 0x04, "Jabu Jabus Belly MQ GS Tail Parasan Room", JABU_JABUS_BELLY_MQ_GS_TAILPASARAN_ROOM, {Category::cJabuJabusBelly, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_MQ_GS_INVISIBLE_ENEMIES_ROOM] = ItemLocation::GSToken(RC_JABU_JABUS_BELLY_MQ_GS_INVISIBLE_ENEMIES_ROOM, 0x02, 0x08, "Jabu Jabus Belly MQ GS Invisible Enemies Room", JABU_JABUS_BELLY_MQ_GS_INVISIBLE_ENEMIES_ROOM, {Category::cJabuJabusBelly, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_MQ_GS_BOOMERANG_CHEST_ROOM] = ItemLocation::GSToken(RC_JABU_JABUS_BELLY_MQ_GS_BOOMERANG_CHEST_ROOM, 0x02, 0x01, "Jabu Jabus Belly MQ GS Boomerang Chest Room", JABU_JABUS_BELLY_MQ_GS_BOOMERANG_CHEST_ROOM, {Category::cJabuJabusBelly, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[JABU_JABUS_BELLY_MQ_GS_NEAR_BOSS] = ItemLocation::GSToken(RC_JABU_JABUS_BELLY_MQ_GS_NEAR_BOSS, 0x02, 0x02, "Jabu Jabus Belly MQ GS Near Boss", JABU_JABUS_BELLY_MQ_GS_NEAR_BOSS, {Category::cJabuJabusBelly, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[FOREST_TEMPLE_GS_RAISED_ISLAND_COURTYARD] = ItemLocation::GSToken(0x03, 0x01, "Forest Temple GS Raised Island Courtyard", FOREST_TEMPLE_GS_RAISED_ISLAND_COURTYARD, {Category::cForestTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_GS_FIRST_ROOM] = ItemLocation::GSToken(0x03, 0x02, "Forest Temple GS First Room", FOREST_TEMPLE_GS_FIRST_ROOM, {Category::cForestTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_GS_LEVEL_ISLAND_COURTYARD] = ItemLocation::GSToken(0x03, 0x04, "Forest Temple GS Level Island Courtyard", FOREST_TEMPLE_GS_LEVEL_ISLAND_COURTYARD, {Category::cForestTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_GS_LOBBY] = ItemLocation::GSToken(0x03, 0x08, "Forest Temple GS Lobby", FOREST_TEMPLE_GS_LOBBY, {Category::cForestTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_GS_BASEMENT] = ItemLocation::GSToken(0x03, 0x10, "Forest Temple GS Basement", FOREST_TEMPLE_GS_BASEMENT, {Category::cForestTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_GS_RAISED_ISLAND_COURTYARD] = ItemLocation::GSToken(RC_FOREST_TEMPLE_GS_RAISED_ISLAND_COURTYARD, 0x03, 0x01, "Forest Temple GS Raised Island Courtyard", FOREST_TEMPLE_GS_RAISED_ISLAND_COURTYARD, {Category::cForestTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_GS_FIRST_ROOM] = ItemLocation::GSToken(RC_FOREST_TEMPLE_GS_FIRST_ROOM, 0x03, 0x02, "Forest Temple GS First Room", FOREST_TEMPLE_GS_FIRST_ROOM, {Category::cForestTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_GS_LEVEL_ISLAND_COURTYARD] = ItemLocation::GSToken(RC_FOREST_TEMPLE_GS_LEVEL_ISLAND_COURTYARD, 0x03, 0x04, "Forest Temple GS Level Island Courtyard", FOREST_TEMPLE_GS_LEVEL_ISLAND_COURTYARD, {Category::cForestTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_GS_LOBBY] = ItemLocation::GSToken(RC_FOREST_TEMPLE_GS_LOBBY, 0x03, 0x08, "Forest Temple GS Lobby", FOREST_TEMPLE_GS_LOBBY, {Category::cForestTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_GS_BASEMENT] = ItemLocation::GSToken(RC_FOREST_TEMPLE_GS_BASEMENT, 0x03, 0x10, "Forest Temple GS Basement", FOREST_TEMPLE_GS_BASEMENT, {Category::cForestTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_MQ_GS_FIRST_HALLWAY] = ItemLocation::GSToken(0x03, 0x02, "Forest Temple MQ GS First Hallway", FOREST_TEMPLE_MQ_GS_FIRST_HALLWAY, {Category::cForestTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_MQ_GS_BLOCK_PUSH_ROOM] = ItemLocation::GSToken(0x03, 0x10, "Forest Temple MQ GS Block Push Room", FOREST_TEMPLE_MQ_GS_BLOCK_PUSH_ROOM, {Category::cForestTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_MQ_GS_RAISED_ISLAND_COURTYARD] = ItemLocation::GSToken(0x03, 0x01, "Forest Temple MQ GS Raised Island Courtyard", FOREST_TEMPLE_MQ_GS_RAISED_ISLAND_COURTYARD, {Category::cForestTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_MQ_GS_LEVEL_ISLAND_COURTYARD] = ItemLocation::GSToken(0x03, 0x04, "Forest Temple MQ GS Level Island Courtyard", FOREST_TEMPLE_MQ_GS_LEVEL_ISLAND_COURTYARD, {Category::cForestTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FOREST_TEMPLE_MQ_GS_WELL] = ItemLocation::GSToken(0x03, 0x08, "Forest Temple MQ GS Well", FOREST_TEMPLE_MQ_GS_WELL, {Category::cForestTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_MQ_GS_FIRST_HALLWAY] = ItemLocation::GSToken(RC_FOREST_TEMPLE_MQ_GS_FIRST_HALLWAY, 0x03, 0x02, "Forest Temple MQ GS First Hallway", FOREST_TEMPLE_MQ_GS_FIRST_HALLWAY, {Category::cForestTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_MQ_GS_BLOCK_PUSH_ROOM] = ItemLocation::GSToken(RC_FOREST_TEMPLE_MQ_GS_BLOCK_PUSH_ROOM, 0x03, 0x10, "Forest Temple MQ GS Block Push Room", FOREST_TEMPLE_MQ_GS_BLOCK_PUSH_ROOM, {Category::cForestTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_MQ_GS_RAISED_ISLAND_COURTYARD] = ItemLocation::GSToken(RC_FOREST_TEMPLE_MQ_GS_RAISED_ISLAND_COURTYARD, 0x03, 0x01, "Forest Temple MQ GS Raised Island Courtyard", FOREST_TEMPLE_MQ_GS_RAISED_ISLAND_COURTYARD, {Category::cForestTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_MQ_GS_LEVEL_ISLAND_COURTYARD] = ItemLocation::GSToken(RC_FOREST_TEMPLE_MQ_GS_LEVEL_ISLAND_COURTYARD, 0x03, 0x04, "Forest Temple MQ GS Level Island Courtyard", FOREST_TEMPLE_MQ_GS_LEVEL_ISLAND_COURTYARD, {Category::cForestTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FOREST_TEMPLE_MQ_GS_WELL] = ItemLocation::GSToken(RC_FOREST_TEMPLE_MQ_GS_WELL, 0x03, 0x08, "Forest Temple MQ GS Well", FOREST_TEMPLE_MQ_GS_WELL, {Category::cForestTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FIRE_TEMPLE_GS_SONG_OF_TIME_ROOM] = ItemLocation::GSToken(0x04, 0x01, "Fire Temple GS Song of Time Room", FIRE_TEMPLE_GS_SONG_OF_TIME_ROOM, {Category::cFireTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_GS_BOSS_KEY_LOOP] = ItemLocation::GSToken(0x04, 0x02, "Fire Temple GS Boss Key Loop", FIRE_TEMPLE_GS_BOSS_KEY_LOOP, {Category::cFireTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_GS_BOULDER_MAZE] = ItemLocation::GSToken(0x04, 0x04, "Fire Temple GS Boulder Maze", FIRE_TEMPLE_GS_BOULDER_MAZE, {Category::cFireTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_GS_SCARECROW_TOP] = ItemLocation::GSToken(0x04, 0x08, "Fire Temple GS Scarecrow Top", FIRE_TEMPLE_GS_SCARECROW_TOP, {Category::cFireTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_GS_SCARECROW_CLIMB] = ItemLocation::GSToken(0x04, 0x10, "Fire Temple GS Scarecrow Climb", FIRE_TEMPLE_GS_SCARECROW_CLIMB, {Category::cFireTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_GS_SONG_OF_TIME_ROOM] = ItemLocation::GSToken(RC_FIRE_TEMPLE_GS_SONG_OF_TIME_ROOM, 0x04, 0x01, "Fire Temple GS Song of Time Room", FIRE_TEMPLE_GS_SONG_OF_TIME_ROOM, {Category::cFireTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_GS_BOSS_KEY_LOOP] = ItemLocation::GSToken(RC_FIRE_TEMPLE_GS_BOSS_KEY_LOOP, 0x04, 0x02, "Fire Temple GS Boss Key Loop", FIRE_TEMPLE_GS_BOSS_KEY_LOOP, {Category::cFireTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_GS_BOULDER_MAZE] = ItemLocation::GSToken(RC_FIRE_TEMPLE_GS_BOULDER_MAZE, 0x04, 0x04, "Fire Temple GS Boulder Maze", FIRE_TEMPLE_GS_BOULDER_MAZE, {Category::cFireTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_GS_SCARECROW_TOP] = ItemLocation::GSToken(RC_FIRE_TEMPLE_GS_SCARECROW_TOP, 0x04, 0x08, "Fire Temple GS Scarecrow Top", FIRE_TEMPLE_GS_SCARECROW_TOP, {Category::cFireTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_GS_SCARECROW_CLIMB] = ItemLocation::GSToken(RC_FIRE_TEMPLE_GS_SCARECROW_CLIMB, 0x04, 0x10, "Fire Temple GS Scarecrow Climb", FIRE_TEMPLE_GS_SCARECROW_CLIMB, {Category::cFireTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_MQ_GS_ABOVE_FIRE_WALL_MAZE] = ItemLocation::GSToken(0x04, 0x02, "Fire Temple MQ GS Above Fire Wall Maze", FIRE_TEMPLE_MQ_GS_ABOVE_FIRE_WALL_MAZE, {Category::cFireTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_CENTER] = ItemLocation::GSToken(0x04, 0x08, "Fire Temple MQ GS Fire Wall Maze Center", FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_CENTER, {Category::cFireTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_MQ_GS_BIG_LAVA_ROOM_OPEN_DOOR] = ItemLocation::GSToken(0x04, 0x01, "Fire Temple MQ GS Big Lava Room Open Door", FIRE_TEMPLE_MQ_GS_BIG_LAVA_ROOM_OPEN_DOOR, {Category::cFireTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_SIDE_ROOM] = ItemLocation::GSToken(0x04, 0x10, "Fire Temple MQ GS Fire Wall Maze Side Room", FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_SIDE_ROOM, {Category::cFireTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[FIRE_TEMPLE_MQ_GS_SKULL_ON_FIRE] = ItemLocation::GSToken(0x04, 0x04, "Fire Temple MQ GS Skull on Fire", FIRE_TEMPLE_MQ_GS_SKULL_ON_FIRE, {Category::cFireTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_MQ_GS_ABOVE_FIRE_WALL_MAZE] = ItemLocation::GSToken(RC_FIRE_TEMPLE_MQ_GS_ABOVE_FIRE_WALL_MAZE, 0x04, 0x02, "Fire Temple MQ GS Above Fire Wall Maze", FIRE_TEMPLE_MQ_GS_ABOVE_FIRE_WALL_MAZE, {Category::cFireTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_CENTER] = ItemLocation::GSToken(RC_FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_CENTER, 0x04, 0x08, "Fire Temple MQ GS Fire Wall Maze Center", FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_CENTER, {Category::cFireTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_MQ_GS_BIG_LAVA_ROOM_OPEN_DOOR] = ItemLocation::GSToken(RC_FIRE_TEMPLE_MQ_GS_BIG_LAVA_ROOM_OPEN_DOOR, 0x04, 0x01, "Fire Temple MQ GS Big Lava Room Open Door", FIRE_TEMPLE_MQ_GS_BIG_LAVA_ROOM_OPEN_DOOR, {Category::cFireTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_SIDE_ROOM] = ItemLocation::GSToken(RC_FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_SIDE_ROOM, 0x04, 0x10, "Fire Temple MQ GS Fire Wall Maze Side Room", FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_SIDE_ROOM, {Category::cFireTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[FIRE_TEMPLE_MQ_GS_SKULL_ON_FIRE] = ItemLocation::GSToken(RC_FIRE_TEMPLE_MQ_GS_SKULL_ON_FIRE, 0x04, 0x04, "Fire Temple MQ GS Skull on Fire", FIRE_TEMPLE_MQ_GS_SKULL_ON_FIRE, {Category::cFireTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[WATER_TEMPLE_GS_BEHIND_GATE] = ItemLocation::GSToken(0x05, 0x01, "Water Temple GS Behind Gate", WATER_TEMPLE_GS_BEHIND_GATE, {Category::cWaterTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_GS_FALLING_PLATFORM_ROOM] = ItemLocation::GSToken(0x05, 0x02, "Water Temple GS Falling Platform Room", WATER_TEMPLE_GS_FALLING_PLATFORM_ROOM, {Category::cWaterTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_GS_CENTRAL_PILLAR] = ItemLocation::GSToken(0x05, 0x04, "Water Temple GS Central Pillar", WATER_TEMPLE_GS_CENTRAL_PILLAR, {Category::cWaterTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_GS_NEAR_BOSS_KEY_CHEST] = ItemLocation::GSToken(0x05, 0x08, "Water Temple GS Near Boss Key Chest", WATER_TEMPLE_GS_NEAR_BOSS_KEY_CHEST, {Category::cWaterTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_GS_RIVER] = ItemLocation::GSToken(0x05, 0x10, "Water Temple GS River", WATER_TEMPLE_GS_RIVER, {Category::cWaterTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_GS_BEHIND_GATE] = ItemLocation::GSToken(RC_WATER_TEMPLE_GS_BEHIND_GATE, 0x05, 0x01, "Water Temple GS Behind Gate", WATER_TEMPLE_GS_BEHIND_GATE, {Category::cWaterTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_GS_FALLING_PLATFORM_ROOM] = ItemLocation::GSToken(RC_WATER_TEMPLE_GS_FALLING_PLATFORM_ROOM, 0x05, 0x02, "Water Temple GS Falling Platform Room", WATER_TEMPLE_GS_FALLING_PLATFORM_ROOM, {Category::cWaterTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_GS_CENTRAL_PILLAR] = ItemLocation::GSToken(RC_WATER_TEMPLE_GS_CENTRAL_PILLAR, 0x05, 0x04, "Water Temple GS Central Pillar", WATER_TEMPLE_GS_CENTRAL_PILLAR, {Category::cWaterTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_GS_NEAR_BOSS_KEY_CHEST] = ItemLocation::GSToken(RC_WATER_TEMPLE_GS_NEAR_BOSS_KEY_CHEST, 0x05, 0x08, "Water Temple GS Near Boss Key Chest", WATER_TEMPLE_GS_NEAR_BOSS_KEY_CHEST, {Category::cWaterTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_GS_RIVER] = ItemLocation::GSToken(RC_WATER_TEMPLE_GS_RIVER, 0x05, 0x10, "Water Temple GS River", WATER_TEMPLE_GS_RIVER, {Category::cWaterTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_MQ_GS_BEFORE_UPPER_WATER_SWITCH] = ItemLocation::GSToken(0x05, 0x04, "Water Temple MQ GS Before Upper Water Switch", WATER_TEMPLE_MQ_GS_BEFORE_UPPER_WATER_SWITCH, {Category::cWaterTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_MQ_GS_FREESTANDING_KEY_AREA] = ItemLocation::GSToken(0x05, 0x08, "Water Temple MQ GS Freestanding Key Area", WATER_TEMPLE_MQ_GS_FREESTANDING_KEY_AREA, {Category::cWaterTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_MQ_GS_LIZALFOS_HALLWAY] = ItemLocation::GSToken(0x05, 0x01, "Water Temple MQ GS Lizalfos Hallway", WATER_TEMPLE_MQ_GS_LIZALFOS_HALLWAY, {Category::cWaterTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_MQ_GS_RIVER] = ItemLocation::GSToken(0x05, 0x02, "Water Temple MQ GS River", WATER_TEMPLE_MQ_GS_RIVER, {Category::cWaterTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[WATER_TEMPLE_MQ_GS_TRIPLE_WALL_TORCH] = ItemLocation::GSToken(0x05, 0x10, "Water Temple MQ GS Triple Wall Torch", WATER_TEMPLE_MQ_GS_TRIPLE_WALL_TORCH, {Category::cWaterTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_MQ_GS_BEFORE_UPPER_WATER_SWITCH] = ItemLocation::GSToken(RC_WATER_TEMPLE_MQ_GS_BEFORE_UPPER_WATER_SWITCH, 0x05, 0x04, "Water Temple MQ GS Before Upper Water Switch", WATER_TEMPLE_MQ_GS_BEFORE_UPPER_WATER_SWITCH, {Category::cWaterTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_MQ_GS_FREESTANDING_KEY_AREA] = ItemLocation::GSToken(RC_WATER_TEMPLE_MQ_GS_FREESTANDING_KEY_AREA, 0x05, 0x08, "Water Temple MQ GS Freestanding Key Area", WATER_TEMPLE_MQ_GS_FREESTANDING_KEY_AREA, {Category::cWaterTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_MQ_GS_LIZALFOS_HALLWAY] = ItemLocation::GSToken(RC_WATER_TEMPLE_MQ_GS_LIZALFOS_HALLWAY, 0x05, 0x01, "Water Temple MQ GS Lizalfos Hallway", WATER_TEMPLE_MQ_GS_LIZALFOS_HALLWAY, {Category::cWaterTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_MQ_GS_RIVER] = ItemLocation::GSToken(RC_WATER_TEMPLE_MQ_GS_RIVER, 0x05, 0x02, "Water Temple MQ GS River", WATER_TEMPLE_MQ_GS_RIVER, {Category::cWaterTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[WATER_TEMPLE_MQ_GS_TRIPLE_WALL_TORCH] = ItemLocation::GSToken(RC_WATER_TEMPLE_MQ_GS_TRIPLE_WALL_TORCH, 0x05, 0x10, "Water Temple MQ GS Triple Wall Torch", WATER_TEMPLE_MQ_GS_TRIPLE_WALL_TORCH, {Category::cWaterTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[SPIRIT_TEMPLE_GS_HALL_AFTER_SUN_BLOCK_ROOM] = ItemLocation::GSToken(0x06, 0x01, "Spirit Temple GS Hall After Sun Block Room", SPIRIT_TEMPLE_GS_HALL_AFTER_SUN_BLOCK_ROOM, {Category::cSpiritTemple, Category::cSkulltula}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_GS_BOULDER_ROOM] = ItemLocation::GSToken(0x06, 0x02, "Spirit Temple GS Boulder Room", SPIRIT_TEMPLE_GS_BOULDER_ROOM, {Category::cSpiritTemple, Category::cSkulltula}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_GS_LOBBY] = ItemLocation::GSToken(0x06, 0x04, "Spirit Temple GS Lobby", SPIRIT_TEMPLE_GS_LOBBY, {Category::cSpiritTemple, Category::cSkulltula}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_GS_SUN_ON_FLOOR_ROOM] = ItemLocation::GSToken(0x06, 0x08, "Spirit Temple GS Sun on Floor Room", SPIRIT_TEMPLE_GS_SUN_ON_FLOOR_ROOM, {Category::cSpiritTemple, Category::cSkulltula}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_GS_METAL_FENCE] = ItemLocation::GSToken(0x06, 0x10, "Spirit Temple GS Metal Fence", SPIRIT_TEMPLE_GS_METAL_FENCE, {Category::cSpiritTemple, Category::cSkulltula}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_GS_HALL_AFTER_SUN_BLOCK_ROOM] = ItemLocation::GSToken(RC_SPIRIT_TEMPLE_GS_HALL_AFTER_SUN_BLOCK_ROOM, 0x06, 0x01, "Spirit Temple GS Hall After Sun Block Room", SPIRIT_TEMPLE_GS_HALL_AFTER_SUN_BLOCK_ROOM, {Category::cSpiritTemple, Category::cSkulltula}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_GS_BOULDER_ROOM] = ItemLocation::GSToken(RC_SPIRIT_TEMPLE_GS_BOULDER_ROOM, 0x06, 0x02, "Spirit Temple GS Boulder Room", SPIRIT_TEMPLE_GS_BOULDER_ROOM, {Category::cSpiritTemple, Category::cSkulltula}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_GS_LOBBY] = ItemLocation::GSToken(RC_SPIRIT_TEMPLE_GS_LOBBY, 0x06, 0x04, "Spirit Temple GS Lobby", SPIRIT_TEMPLE_GS_LOBBY, {Category::cSpiritTemple, Category::cSkulltula}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_GS_SUN_ON_FLOOR_ROOM] = ItemLocation::GSToken(RC_SPIRIT_TEMPLE_GS_SUN_ON_FLOOR_ROOM, 0x06, 0x08, "Spirit Temple GS Sun on Floor Room", SPIRIT_TEMPLE_GS_SUN_ON_FLOOR_ROOM, {Category::cSpiritTemple, Category::cSkulltula}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_GS_METAL_FENCE] = ItemLocation::GSToken(RC_SPIRIT_TEMPLE_GS_METAL_FENCE, 0x06, 0x10, "Spirit Temple GS Metal Fence", SPIRIT_TEMPLE_GS_METAL_FENCE, {Category::cSpiritTemple, Category::cSkulltula}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_GS_SYMPHONY_ROOM] = ItemLocation::GSToken(0x06, 0x08, "Spirit Temple MQ GS Symphony Room", SPIRIT_TEMPLE_MQ_GS_SYMPHONY_ROOM, {Category::cSpiritTemple, Category::cSkulltula}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_GS_LEEVER_ROOM] = ItemLocation::GSToken(0x06, 0x02, "Spirit Temple MQ GS Leever Room", SPIRIT_TEMPLE_MQ_GS_LEEVER_ROOM, {Category::cSpiritTemple, Category::cSkulltula}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_GS_NINE_THRONES_ROOM_WEST] = ItemLocation::GSToken(0x06, 0x04, "Spirit Temple MQ GS Nine Thrones Room West", SPIRIT_TEMPLE_MQ_GS_NINE_THRONES_ROOM_WEST, {Category::cSpiritTemple, Category::cSkulltula}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_GS_NINE_THRONES_ROOM_NORTH] = ItemLocation::GSToken(0x06, 0x10, "Spirit Temple MQ GS Nine Thrones Room North", SPIRIT_TEMPLE_MQ_GS_NINE_THRONES_ROOM_NORTH, {Category::cSpiritTemple, Category::cSkulltula}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SPIRIT_TEMPLE_MQ_GS_SUN_BLOCK_ROOM] = ItemLocation::GSToken(0x06, 0x01, "Spirit Temple MQ GS Sun Block Room", SPIRIT_TEMPLE_MQ_GS_SUN_BLOCK_ROOM, {Category::cSpiritTemple, Category::cSkulltula}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_GS_SYMPHONY_ROOM] = ItemLocation::GSToken(RC_SPIRIT_TEMPLE_MQ_GS_SYMPHONY_ROOM, 0x06, 0x08, "Spirit Temple MQ GS Symphony Room", SPIRIT_TEMPLE_MQ_GS_SYMPHONY_ROOM, {Category::cSpiritTemple, Category::cSkulltula}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_GS_LEEVER_ROOM] = ItemLocation::GSToken(RC_SPIRIT_TEMPLE_MQ_GS_LEEVER_ROOM, 0x06, 0x02, "Spirit Temple MQ GS Leever Room", SPIRIT_TEMPLE_MQ_GS_LEEVER_ROOM, {Category::cSpiritTemple, Category::cSkulltula}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_GS_NINE_THRONES_ROOM_WEST] = ItemLocation::GSToken(RC_SPIRIT_TEMPLE_MQ_GS_NINE_THRONES_ROOM_WEST, 0x06, 0x04, "Spirit Temple MQ GS Nine Thrones Room West", SPIRIT_TEMPLE_MQ_GS_NINE_THRONES_ROOM_WEST, {Category::cSpiritTemple, Category::cSkulltula}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_GS_NINE_THRONES_ROOM_NORTH] = ItemLocation::GSToken(RC_SPIRIT_TEMPLE_MQ_GS_NINE_THRONES_ROOM_NORTH, 0x06, 0x10, "Spirit Temple MQ GS Nine Thrones Room North", SPIRIT_TEMPLE_MQ_GS_NINE_THRONES_ROOM_NORTH, {Category::cSpiritTemple, Category::cSkulltula}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SPIRIT_TEMPLE_MQ_GS_SUN_BLOCK_ROOM] = ItemLocation::GSToken(RC_SPIRIT_TEMPLE_MQ_GS_SUN_BLOCK_ROOM, 0x06, 0x01, "Spirit Temple MQ GS Sun Block Room", SPIRIT_TEMPLE_MQ_GS_SUN_BLOCK_ROOM, {Category::cSpiritTemple, Category::cSkulltula}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SHADOW_TEMPLE_GS_SINGLE_GIANT_POT] = ItemLocation::GSToken(0x07, 0x01, "Shadow Temple GS Single Giant Pot", SHADOW_TEMPLE_GS_SINGLE_GIANT_POT, {Category::cShadowTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_GS_FALLING_SPIKES_ROOM] = ItemLocation::GSToken(0x07, 0x02, "Shadow Temple GS Falling Spikes Room", SHADOW_TEMPLE_GS_FALLING_SPIKES_ROOM, {Category::cShadowTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_GS_TRIPLE_GIANT_POT] = ItemLocation::GSToken(0x07, 0x04, "Shadow Temple GS Triple Giant Pot", SHADOW_TEMPLE_GS_TRIPLE_GIANT_POT, {Category::cShadowTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_GS_LIKE_LIKE_ROOM] = ItemLocation::GSToken(0x07, 0x08, "Shadow Temple GS Like Like Room", SHADOW_TEMPLE_GS_LIKE_LIKE_ROOM, {Category::cShadowTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_GS_NEAR_SHIP] = ItemLocation::GSToken(0x07, 0x10, "Shadow Temple GS Near Ship", SHADOW_TEMPLE_GS_NEAR_SHIP, {Category::cShadowTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_GS_SINGLE_GIANT_POT] = ItemLocation::GSToken(RC_SHADOW_TEMPLE_GS_SINGLE_GIANT_POT, 0x07, 0x01, "Shadow Temple GS Single Giant Pot", SHADOW_TEMPLE_GS_SINGLE_GIANT_POT, {Category::cShadowTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_GS_FALLING_SPIKES_ROOM] = ItemLocation::GSToken(RC_SHADOW_TEMPLE_GS_FALLING_SPIKES_ROOM, 0x07, 0x02, "Shadow Temple GS Falling Spikes Room", SHADOW_TEMPLE_GS_FALLING_SPIKES_ROOM, {Category::cShadowTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_GS_TRIPLE_GIANT_POT] = ItemLocation::GSToken(RC_SHADOW_TEMPLE_GS_TRIPLE_GIANT_POT, 0x07, 0x04, "Shadow Temple GS Triple Giant Pot", SHADOW_TEMPLE_GS_TRIPLE_GIANT_POT, {Category::cShadowTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_GS_LIKE_LIKE_ROOM] = ItemLocation::GSToken(RC_SHADOW_TEMPLE_GS_LIKE_LIKE_ROOM, 0x07, 0x08, "Shadow Temple GS Like Like Room", SHADOW_TEMPLE_GS_LIKE_LIKE_ROOM, {Category::cShadowTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_GS_NEAR_SHIP] = ItemLocation::GSToken(RC_SHADOW_TEMPLE_GS_NEAR_SHIP, 0x07, 0x10, "Shadow Temple GS Near Ship", SHADOW_TEMPLE_GS_NEAR_SHIP, {Category::cShadowTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_GS_FALLING_SPIKES_ROOM] = ItemLocation::GSToken(0x07, 0x02, "Shadow Temple MQ GS Falling Spikes Room", SHADOW_TEMPLE_MQ_GS_FALLING_SPIKES_ROOM, {Category::cShadowTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_GS_WIND_HINT_ROOM] = ItemLocation::GSToken(0x07, 0x01, "Shadow Temple MQ GS Wind Hint Room", SHADOW_TEMPLE_MQ_GS_WIND_HINT_ROOM, {Category::cShadowTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_GS_AFTER_WIND] = ItemLocation::GSToken(0x07, 0x08, "Shadow Temple MQ GS After Wind", SHADOW_TEMPLE_MQ_GS_AFTER_WIND, {Category::cShadowTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_GS_AFTER_SHIP] = ItemLocation::GSToken(0x07, 0x10, "Shadow Temple MQ GS After Ship", SHADOW_TEMPLE_MQ_GS_AFTER_SHIP, {Category::cShadowTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[SHADOW_TEMPLE_MQ_GS_NEAR_BOSS] = ItemLocation::GSToken(0x07, 0x04, "Shadow Temple MQ GS Near Boss", SHADOW_TEMPLE_MQ_GS_NEAR_BOSS, {Category::cShadowTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_GS_FALLING_SPIKES_ROOM] = ItemLocation::GSToken(RC_SHADOW_TEMPLE_MQ_GS_FALLING_SPIKES_ROOM, 0x07, 0x02, "Shadow Temple MQ GS Falling Spikes Room", SHADOW_TEMPLE_MQ_GS_FALLING_SPIKES_ROOM, {Category::cShadowTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_GS_WIND_HINT_ROOM] = ItemLocation::GSToken(RC_SHADOW_TEMPLE_MQ_GS_WIND_HINT_ROOM, 0x07, 0x01, "Shadow Temple MQ GS Wind Hint Room", SHADOW_TEMPLE_MQ_GS_WIND_HINT_ROOM, {Category::cShadowTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_GS_AFTER_WIND] = ItemLocation::GSToken(RC_SHADOW_TEMPLE_MQ_GS_AFTER_WIND, 0x07, 0x08, "Shadow Temple MQ GS After Wind", SHADOW_TEMPLE_MQ_GS_AFTER_WIND, {Category::cShadowTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_GS_AFTER_SHIP] = ItemLocation::GSToken(RC_SHADOW_TEMPLE_MQ_GS_AFTER_SHIP, 0x07, 0x10, "Shadow Temple MQ GS After Ship", SHADOW_TEMPLE_MQ_GS_AFTER_SHIP, {Category::cShadowTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[SHADOW_TEMPLE_MQ_GS_NEAR_BOSS] = ItemLocation::GSToken(RC_SHADOW_TEMPLE_MQ_GS_NEAR_BOSS, 0x07, 0x04, "Shadow Temple MQ GS Near Boss", SHADOW_TEMPLE_MQ_GS_NEAR_BOSS, {Category::cShadowTemple, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[BOTTOM_OF_THE_WELL_GS_LIKE_LIKE_CAGE] = ItemLocation::GSToken(0x08, 0x01, "Bottom of the Well GS Like Like Cage", BOTTOM_OF_THE_WELL_GS_LIKE_LIKE_CAGE, {Category::cBottomOfTheWell, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_GS_EAST_INNER_ROOM] = ItemLocation::GSToken(0x08, 0x02, "Bottom of the Well GS East Inner Room", BOTTOM_OF_THE_WELL_GS_EAST_INNER_ROOM, {Category::cBottomOfTheWell, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM] = ItemLocation::GSToken(0x08, 0x04, "Bottom of the Well GS West Inner Room", BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM, {Category::cBottomOfTheWell, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_GS_LIKE_LIKE_CAGE] = ItemLocation::GSToken(RC_BOTTOM_OF_THE_WELL_GS_LIKE_LIKE_CAGE, 0x08, 0x01, "Bottom of the Well GS Like Like Cage", BOTTOM_OF_THE_WELL_GS_LIKE_LIKE_CAGE, {Category::cBottomOfTheWell, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_GS_EAST_INNER_ROOM] = ItemLocation::GSToken(RC_BOTTOM_OF_THE_WELL_GS_EAST_INNER_ROOM, 0x08, 0x02, "Bottom of the Well GS East Inner Room", BOTTOM_OF_THE_WELL_GS_EAST_INNER_ROOM, {Category::cBottomOfTheWell, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM] = ItemLocation::GSToken(RC_BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM, 0x08, 0x04, "Bottom of the Well GS West Inner Room", BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM, {Category::cBottomOfTheWell, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT] = ItemLocation::GSToken(0x08, 0x01, "Bottom of the Well MQ GS Basement", BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT, {Category::cBottomOfTheWell, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM] = ItemLocation::GSToken(0x08, 0x04, "Bottom of the Well MQ GS Coffin Room", BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM, {Category::cBottomOfTheWell, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM] = ItemLocation::GSToken(0x08, 0x02, "Bottom of the Well MQ GS West Inner Room", BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM, {Category::cBottomOfTheWell, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT] = ItemLocation::GSToken(RC_BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT, 0x08, 0x01, "Bottom of the Well MQ GS Basement", BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT, {Category::cBottomOfTheWell, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM] = ItemLocation::GSToken(RC_BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM, 0x08, 0x04, "Bottom of the Well MQ GS Coffin Room", BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM, {Category::cBottomOfTheWell, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); + locationTable[BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM] = ItemLocation::GSToken(RC_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM, 0x08, 0x02, "Bottom of the Well MQ GS West Inner Room", BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM, {Category::cBottomOfTheWell, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_BOTTOM_OF_THE_WELL); - locationTable[ICE_CAVERN_GS_PUSH_BLOCK_ROOM] = ItemLocation::GSToken(0x09, 0x01, "Ice Cavern GS Push Block Room", ICE_CAVERN_GS_PUSH_BLOCK_ROOM, {Category::cIceCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); - locationTable[ICE_CAVERN_GS_SPINNING_SCYTHE_ROOM] = ItemLocation::GSToken(0x09, 0x02, "Ice Cavern GS Spinning Scythe Room", ICE_CAVERN_GS_SPINNING_SCYTHE_ROOM, {Category::cIceCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); - locationTable[ICE_CAVERN_GS_HEART_PIECE_ROOM] = ItemLocation::GSToken(0x09, 0x04, "Ice Cavern GS Heart Piece Room", ICE_CAVERN_GS_HEART_PIECE_ROOM, {Category::cIceCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); + locationTable[ICE_CAVERN_GS_PUSH_BLOCK_ROOM] = ItemLocation::GSToken(RC_ICE_CAVERN_GS_PUSH_BLOCK_ROOM, 0x09, 0x01, "Ice Cavern GS Push Block Room", ICE_CAVERN_GS_PUSH_BLOCK_ROOM, {Category::cIceCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); + locationTable[ICE_CAVERN_GS_SPINNING_SCYTHE_ROOM] = ItemLocation::GSToken(RC_ICE_CAVERN_GS_SPINNING_SCYTHE_ROOM, 0x09, 0x02, "Ice Cavern GS Spinning Scythe Room", ICE_CAVERN_GS_SPINNING_SCYTHE_ROOM, {Category::cIceCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); + locationTable[ICE_CAVERN_GS_HEART_PIECE_ROOM] = ItemLocation::GSToken(RC_ICE_CAVERN_GS_HEART_PIECE_ROOM, 0x09, 0x04, "Ice Cavern GS Heart Piece Room", ICE_CAVERN_GS_HEART_PIECE_ROOM, {Category::cIceCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); - locationTable[ICE_CAVERN_MQ_GS_SCARECROW] = ItemLocation::GSToken(0x09, 0x01, "Ice Cavern MQ GS Scarecrow", ICE_CAVERN_MQ_GS_SCARECROW, {Category::cIceCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); - locationTable[ICE_CAVERN_MQ_GS_ICE_BLOCK] = ItemLocation::GSToken(0x09, 0x04, "Ice Cavern MQ GS Ice Block", ICE_CAVERN_MQ_GS_ICE_BLOCK, {Category::cIceCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); - locationTable[ICE_CAVERN_MQ_GS_RED_ICE] = ItemLocation::GSToken(0x09, 0x02, "Ice Cavern MQ GS Red Ice", ICE_CAVERN_MQ_GS_RED_ICE, {Category::cIceCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); + locationTable[ICE_CAVERN_MQ_GS_SCARECROW] = ItemLocation::GSToken(RC_ICE_CAVERN_MQ_GS_SCARECROW, 0x09, 0x01, "Ice Cavern MQ GS Scarecrow", ICE_CAVERN_MQ_GS_SCARECROW, {Category::cIceCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); + locationTable[ICE_CAVERN_MQ_GS_ICE_BLOCK] = ItemLocation::GSToken(RC_ICE_CAVERN_MQ_GS_ICE_BLOCK, 0x09, 0x04, "Ice Cavern MQ GS Ice Block", ICE_CAVERN_MQ_GS_ICE_BLOCK, {Category::cIceCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); + locationTable[ICE_CAVERN_MQ_GS_RED_ICE] = ItemLocation::GSToken(RC_ICE_CAVERN_MQ_GS_RED_ICE, 0x09, 0x02, "Ice Cavern MQ GS Red Ice", ICE_CAVERN_MQ_GS_RED_ICE, {Category::cIceCavern, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); //Overworld - locationTable[KF_GS_BEAN_PATCH] = ItemLocation::GSToken(0x0C, 0x01, "KF GS Bean Patch", KF_GS_BEAN_PATCH, {Category::cKokiriForest, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); - locationTable[KF_GS_KNOW_IT_ALL_HOUSE] = ItemLocation::GSToken(0x0C, 0x02, "KF GS Know It All House", KF_GS_KNOW_IT_ALL_HOUSE, {Category::cKokiriForest, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); - locationTable[KF_GS_HOUSE_OF_TWINS] = ItemLocation::GSToken(0x0C, 0x04, "KF GS House of Twins", KF_GS_HOUSE_OF_TWINS, {Category::cKokiriForest, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); + locationTable[KF_GS_BEAN_PATCH] = ItemLocation::GSToken(RC_KF_GS_BEAN_PATCH, 0x0C, 0x01, "KF GS Bean Patch", KF_GS_BEAN_PATCH, {Category::cKokiriForest, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); + locationTable[KF_GS_KNOW_IT_ALL_HOUSE] = ItemLocation::GSToken(RC_KF_GS_KNOW_IT_ALL_HOUSE, 0x0C, 0x02, "KF GS Know It All House", KF_GS_KNOW_IT_ALL_HOUSE, {Category::cKokiriForest, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); + locationTable[KF_GS_HOUSE_OF_TWINS] = ItemLocation::GSToken(RC_KF_GS_HOUSE_OF_TWINS, 0x0C, 0x04, "KF GS House of Twins", KF_GS_HOUSE_OF_TWINS, {Category::cKokiriForest, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); - locationTable[LW_GS_BEAN_PATCH_NEAR_BRIDGE] = ItemLocation::GSToken(0x0D, 0x01, "LW GS Bean Patch Near Bridge", LW_GS_BEAN_PATCH_NEAR_BRIDGE, {Category::cLostWoods, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); - locationTable[LW_GS_BEAN_PATCH_NEAR_THEATER] = ItemLocation::GSToken(0x0D, 0x02, "LW GS Bean Patch Near Theater", LW_GS_BEAN_PATCH_NEAR_THEATER, {Category::cLostWoods, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); - locationTable[LW_GS_ABOVE_THEATER] = ItemLocation::GSToken(0x0D, 0x04, "LW GS Above Theater", LW_GS_ABOVE_THEATER, {Category::cLostWoods, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); - locationTable[SFM_GS] = ItemLocation::GSToken(0x0D, 0x08, "SFM GS", SFM_GS, {Category::cSacredForestMeadow, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[LW_GS_BEAN_PATCH_NEAR_BRIDGE] = ItemLocation::GSToken(RC_LW_GS_BEAN_PATCH_NEAR_BRIDGE, 0x0D, 0x01, "LW GS Bean Patch Near Bridge", LW_GS_BEAN_PATCH_NEAR_BRIDGE, {Category::cLostWoods, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[LW_GS_BEAN_PATCH_NEAR_THEATER] = ItemLocation::GSToken(RC_LW_GS_BEAN_PATCH_NEAR_THEATER, 0x0D, 0x02, "LW GS Bean Patch Near Theater", LW_GS_BEAN_PATCH_NEAR_THEATER, {Category::cLostWoods, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[LW_GS_ABOVE_THEATER] = ItemLocation::GSToken(RC_LW_GS_ABOVE_THEATER, 0x0D, 0x04, "LW GS Above Theater", LW_GS_ABOVE_THEATER, {Category::cLostWoods, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[SFM_GS] = ItemLocation::GSToken(RC_SFM_GS, 0x0D, 0x08, "SFM GS", SFM_GS, {Category::cSacredForestMeadow, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); - locationTable[HF_GS_COW_GROTTO] = ItemLocation::GSToken(0x0A, 0x01, "HF GS Cow Grotto", HF_GS_COW_GROTTO, {Category::cHyruleField, Category::cSkulltula, Category::cGrotto}, SpoilerCollectionCheckGroup::GROUP_HYRULE_FIELD); - locationTable[HF_GS_NEAR_KAK_GROTTO] = ItemLocation::GSToken(0x0A, 0x02, "HF GS Near Kak Grotto", HF_GS_NEAR_KAK_GROTTO, {Category::cHyruleField, Category::cSkulltula, Category::cGrotto}, SpoilerCollectionCheckGroup::GROUP_HYRULE_FIELD); + locationTable[HF_GS_COW_GROTTO] = ItemLocation::GSToken(RC_HF_GS_COW_GROTTO, 0x0A, 0x01, "HF GS Cow Grotto", HF_GS_COW_GROTTO, {Category::cHyruleField, Category::cSkulltula, Category::cGrotto}, SpoilerCollectionCheckGroup::GROUP_HYRULE_FIELD); + locationTable[HF_GS_NEAR_KAK_GROTTO] = ItemLocation::GSToken(RC_HF_GS_NEAR_KAK_GROTTO, 0x0A, 0x02, "HF GS Near Kak Grotto", HF_GS_NEAR_KAK_GROTTO, {Category::cHyruleField, Category::cSkulltula, Category::cGrotto}, SpoilerCollectionCheckGroup::GROUP_HYRULE_FIELD); - locationTable[LH_GS_BEAN_PATCH] = ItemLocation::GSToken(0x12, 0x01, "LH GS Bean Patch", LH_GS_BEAN_PATCH, {Category::cLakeHylia, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); - locationTable[LH_GS_SMALL_ISLAND] = ItemLocation::GSToken(0x12, 0x02, "LH GS Small Island", LH_GS_SMALL_ISLAND, {Category::cLakeHylia, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); - locationTable[LH_GS_LAB_WALL] = ItemLocation::GSToken(0x12, 0x04, "LH GS Lab Wall", LH_GS_LAB_WALL, {Category::cLakeHylia, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); - locationTable[LH_GS_LAB_CRATE] = ItemLocation::GSToken(0x12, 0x08, "LH GS Lab Crate", LH_GS_LAB_CRATE, {Category::cLakeHylia, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); - locationTable[LH_GS_TREE] = ItemLocation::GSToken(0x12, 0x10, "LH GS Tree", LH_GS_TREE, {Category::cLakeHylia, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); + locationTable[LH_GS_BEAN_PATCH] = ItemLocation::GSToken(RC_LH_GS_BEAN_PATCH, 0x12, 0x01, "LH GS Bean Patch", LH_GS_BEAN_PATCH, {Category::cLakeHylia, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); + locationTable[LH_GS_SMALL_ISLAND] = ItemLocation::GSToken(RC_LH_GS_SMALL_ISLAND, 0x12, 0x02, "LH GS Small Island", LH_GS_SMALL_ISLAND, {Category::cLakeHylia, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); + locationTable[LH_GS_LAB_WALL] = ItemLocation::GSToken(RC_LH_GS_LAB_WALL, 0x12, 0x04, "LH GS Lab Wall", LH_GS_LAB_WALL, {Category::cLakeHylia, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); + locationTable[LH_GS_LAB_CRATE] = ItemLocation::GSToken(RC_LH_GS_LAB_CRATE, 0x12, 0x08, "LH GS Lab Crate", LH_GS_LAB_CRATE, {Category::cLakeHylia, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); + locationTable[LH_GS_TREE] = ItemLocation::GSToken(RC_LH_GS_TREE, 0x12, 0x10, "LH GS Tree", LH_GS_TREE, {Category::cLakeHylia, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LAKE_HYLIA); - locationTable[GV_GS_BEAN_PATCH] = ItemLocation::GSToken(0x13, 0x01, "GV GS Bean Patch", GV_GS_BEAN_PATCH, {Category::cGerudoValley, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[GV_GS_SMALL_BRIDGE] = ItemLocation::GSToken(0x13, 0x02, "GV GS Small Bridge", GV_GS_SMALL_BRIDGE, {Category::cGerudoValley, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[GV_GS_PILLAR] = ItemLocation::GSToken(0x13, 0x04, "GV GS Pillar", GV_GS_PILLAR, {Category::cGerudoValley, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[GV_GS_BEHIND_TENT] = ItemLocation::GSToken(0x13, 0x08, "GV GS Behind Tent", GV_GS_BEHIND_TENT, {Category::cGerudoValley, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[GV_GS_BEAN_PATCH] = ItemLocation::GSToken(RC_GV_GS_BEAN_PATCH, 0x13, 0x01, "GV GS Bean Patch", GV_GS_BEAN_PATCH, {Category::cGerudoValley, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[GV_GS_SMALL_BRIDGE] = ItemLocation::GSToken(RC_GV_GS_SMALL_BRIDGE, 0x13, 0x02, "GV GS Small Bridge", GV_GS_SMALL_BRIDGE, {Category::cGerudoValley, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[GV_GS_PILLAR] = ItemLocation::GSToken(RC_GV_GS_PILLAR, 0x13, 0x04, "GV GS Pillar", GV_GS_PILLAR, {Category::cGerudoValley, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[GV_GS_BEHIND_TENT] = ItemLocation::GSToken(RC_GV_GS_BEHIND_TENT, 0x13, 0x08, "GV GS Behind Tent", GV_GS_BEHIND_TENT, {Category::cGerudoValley, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[GF_GS_ARCHERY_RANGE] = ItemLocation::GSToken(0x14, 0x01, "GF GS Archery Range", GF_GS_ARCHERY_RANGE, {Category::cGerudoFortress, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[GF_GS_TOP_FLOOR] = ItemLocation::GSToken(0x14, 0x02, "GF GS Top Floor", GF_GS_TOP_FLOOR, {Category::cGerudoFortress, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[GF_GS_ARCHERY_RANGE] = ItemLocation::GSToken(RC_GF_GS_ARCHERY_RANGE, 0x14, 0x01, "GF GS Archery Range", GF_GS_ARCHERY_RANGE, {Category::cGerudoFortress, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[GF_GS_TOP_FLOOR] = ItemLocation::GSToken(RC_GF_GS_TOP_FLOOR, 0x14, 0x02, "GF GS Top Floor", GF_GS_TOP_FLOOR, {Category::cGerudoFortress, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[WASTELAND_GS] = ItemLocation::GSToken(0x15, 0x02, "Wasteland GS", WASTELAND_GS, {Category::cHauntedWasteland, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[COLOSSUS_GS_BEAN_PATCH] = ItemLocation::GSToken(0x15, 0x01, "Colossus GS Bean Patch", COLOSSUS_GS_BEAN_PATCH, {Category::cDesertColossus, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[COLOSSUS_GS_HILL] = ItemLocation::GSToken(0x15, 0x04, "Colossus GS Hill", COLOSSUS_GS_HILL, {Category::cDesertColossus, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[COLOSSUS_GS_TREE] = ItemLocation::GSToken(0x15, 0x08, "Colossus GS Tree", COLOSSUS_GS_TREE, {Category::cDesertColossus, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[WASTELAND_GS] = ItemLocation::GSToken(RC_WASTELAND_GS, 0x15, 0x02, "Wasteland GS", WASTELAND_GS, {Category::cHauntedWasteland, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[COLOSSUS_GS_BEAN_PATCH] = ItemLocation::GSToken(RC_COLOSSUS_GS_BEAN_PATCH, 0x15, 0x01, "Colossus GS Bean Patch", COLOSSUS_GS_BEAN_PATCH, {Category::cDesertColossus, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[COLOSSUS_GS_HILL] = ItemLocation::GSToken(RC_COLOSSUS_GS_HILL, 0x15, 0x04, "Colossus GS Hill", COLOSSUS_GS_HILL, {Category::cDesertColossus, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[COLOSSUS_GS_TREE] = ItemLocation::GSToken(RC_COLOSSUS_GS_TREE, 0x15, 0x08, "Colossus GS Tree", COLOSSUS_GS_TREE, {Category::cDesertColossus, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[OGC_GS] = ItemLocation::GSToken(0x0E, 0x01, "OGC GS", OGC_GS, {Category::cOutsideGanonsCastle, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[HC_GS_STORMS_GROTTO] = ItemLocation::GSToken(0x0E, 0x02, "HC GS Storms Grotto", HC_GS_STORMS_GROTTO, {Category::cHyruleCastle, Category::cSkulltula, Category::cGrotto}, SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[HC_GS_TREE] = ItemLocation::GSToken(0x0E, 0x04, "HC GS Tree", HC_GS_TREE, {Category::cHyruleCastle, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_GS_GUARD_HOUSE] = ItemLocation::GSToken(0x0E, 0x08, "Market GS Guard House", MARKET_GS_GUARD_HOUSE, {Category::cInnerMarket, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[OGC_GS] = ItemLocation::GSToken(RC_OGC_GS, 0x0E, 0x01, "OGC GS", OGC_GS, {Category::cOutsideGanonsCastle, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[HC_GS_STORMS_GROTTO] = ItemLocation::GSToken(RC_HC_GS_STORMS_GROTTO, 0x0E, 0x02, "HC GS Storms Grotto", HC_GS_STORMS_GROTTO, {Category::cHyruleCastle, Category::cSkulltula, Category::cGrotto}, SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[HC_GS_TREE] = ItemLocation::GSToken(RC_HC_GS_TREE, 0x0E, 0x04, "HC GS Tree", HC_GS_TREE, {Category::cHyruleCastle, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_GS_GUARD_HOUSE] = ItemLocation::GSToken(RC_MARKET_GS_GUARD_HOUSE, 0x0E, 0x08, "Market GS Guard House", MARKET_GS_GUARD_HOUSE, {Category::cInnerMarket, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[KAK_GS_HOUSE_UNDER_CONSTRUCTION] = ItemLocation::GSToken(0x10, 0x08, "Kak GS House Under Construction", KAK_GS_HOUSE_UNDER_CONSTRUCTION, {Category::cKakarikoVillage, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_GS_SKULLTULA_HOUSE] = ItemLocation::GSToken(0x10, 0x10, "Kak GS Skulltula House", KAK_GS_SKULLTULA_HOUSE, {Category::cKakarikoVillage, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_GS_GUARDS_HOUSE] = ItemLocation::GSToken(0x10, 0x02, "Kak GS Guards House", KAK_GS_GUARDS_HOUSE, {Category::cKakarikoVillage, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_GS_TREE] = ItemLocation::GSToken(0x10, 0x20, "Kak GS Tree", KAK_GS_TREE, {Category::cKakarikoVillage, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_GS_WATCHTOWER] = ItemLocation::GSToken(0x10, 0x04, "Kak GS Watchtower", KAK_GS_WATCHTOWER, {Category::cKakarikoVillage, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_GS_ABOVE_IMPAS_HOUSE] = ItemLocation::GSToken(0x10, 0x40, "Kak GS Above Impas House", KAK_GS_ABOVE_IMPAS_HOUSE, {Category::cKakarikoVillage, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_GS_HOUSE_UNDER_CONSTRUCTION] = ItemLocation::GSToken(RC_KAK_GS_HOUSE_UNDER_CONSTRUCTION, 0x10, 0x08, "Kak GS House Under Construction", KAK_GS_HOUSE_UNDER_CONSTRUCTION, {Category::cKakarikoVillage, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_GS_SKULLTULA_HOUSE] = ItemLocation::GSToken(RC_KAK_GS_SKULLTULA_HOUSE, 0x10, 0x10, "Kak GS Skulltula House", KAK_GS_SKULLTULA_HOUSE, {Category::cKakarikoVillage, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_GS_GUARDS_HOUSE] = ItemLocation::GSToken(RC_KAK_GS_GUARDS_HOUSE, 0x10, 0x02, "Kak GS Guards House", KAK_GS_GUARDS_HOUSE, {Category::cKakarikoVillage, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_GS_TREE] = ItemLocation::GSToken(RC_KAK_GS_TREE, 0x10, 0x20, "Kak GS Tree", KAK_GS_TREE, {Category::cKakarikoVillage, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_GS_WATCHTOWER] = ItemLocation::GSToken(RC_KAK_GS_WATCHTOWER, 0x10, 0x04, "Kak GS Watchtower", KAK_GS_WATCHTOWER, {Category::cKakarikoVillage, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_GS_ABOVE_IMPAS_HOUSE] = ItemLocation::GSToken(RC_KAK_GS_ABOVE_IMPAS_HOUSE, 0x10, 0x40, "Kak GS Above Impas House", KAK_GS_ABOVE_IMPAS_HOUSE, {Category::cKakarikoVillage, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[GRAVEYARD_GS_WALL] = ItemLocation::GSToken(0x10, 0x80, "Graveyard GS Wall", GRAVEYARD_GS_WALL, {Category::cGraveyard, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[GRAVEYARD_GS_BEAN_PATCH] = ItemLocation::GSToken(0x10, 0x01, "Graveyard GS Bean Patch", GRAVEYARD_GS_BEAN_PATCH, {Category::cGraveyard, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[GRAVEYARD_GS_WALL] = ItemLocation::GSToken(RC_GRAVEYARD_GS_WALL, 0x10, 0x80, "Graveyard GS Wall", GRAVEYARD_GS_WALL, {Category::cGraveyard, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[GRAVEYARD_GS_BEAN_PATCH] = ItemLocation::GSToken(RC_GRAVEYARD_GS_BEAN_PATCH, 0x10, 0x01, "Graveyard GS Bean Patch", GRAVEYARD_GS_BEAN_PATCH, {Category::cGraveyard, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[DMC_GS_BEAN_PATCH] = ItemLocation::GSToken(0x0F, 0x01, "DMC GS Bean Patch", DMC_GS_BEAN_PATCH, {Category::cDeathMountainCrater, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); - locationTable[DMC_GS_CRATE] = ItemLocation::GSToken(0x0F, 0x80, "DMC GS Crate", DMC_GS_CRATE, {Category::cDeathMountainCrater, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[DMC_GS_BEAN_PATCH] = ItemLocation::GSToken(RC_DMC_GS_BEAN_PATCH, 0x0F, 0x01, "DMC GS Bean Patch", DMC_GS_BEAN_PATCH, {Category::cDeathMountainCrater, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[DMC_GS_CRATE] = ItemLocation::GSToken(RC_DMC_GS_CRATE, 0x0F, 0x80, "DMC GS Crate", DMC_GS_CRATE, {Category::cDeathMountainCrater, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); - locationTable[DMT_GS_BEAN_PATCH] = ItemLocation::GSToken(0x0F, 0x02, "DMT GS Bean Patch", DMT_GS_BEAN_PATCH, {Category::cDeathMountainTrail, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); - locationTable[DMT_GS_NEAR_KAK] = ItemLocation::GSToken(0x0F, 0x04, "DMT GS Near Kak", DMT_GS_NEAR_KAK, {Category::cDeathMountainTrail, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); - locationTable[DMT_GS_ABOVE_DODONGOS_CAVERN] = ItemLocation::GSToken(0x0F, 0x08, "DMT GS Above Dodongos Cavern", DMT_GS_ABOVE_DODONGOS_CAVERN, {Category::cDeathMountainTrail, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); - locationTable[DMT_GS_FALLING_ROCKS_PATH] = ItemLocation::GSToken(0x0F, 0x10, "DMT GS Falling Rocks Path", DMT_GS_FALLING_ROCKS_PATH, {Category::cDeathMountainTrail, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[DMT_GS_BEAN_PATCH] = ItemLocation::GSToken(RC_DMT_GS_BEAN_PATCH, 0x0F, 0x02, "DMT GS Bean Patch", DMT_GS_BEAN_PATCH, {Category::cDeathMountainTrail, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[DMT_GS_NEAR_KAK] = ItemLocation::GSToken(RC_DMT_GS_NEAR_KAK, 0x0F, 0x04, "DMT GS Near Kak", DMT_GS_NEAR_KAK, {Category::cDeathMountainTrail, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[DMT_GS_ABOVE_DODONGOS_CAVERN] = ItemLocation::GSToken(RC_DMT_GS_ABOVE_DODONGOS_CAVERN, 0x0F, 0x08, "DMT GS Above Dodongos Cavern", DMT_GS_ABOVE_DODONGOS_CAVERN, {Category::cDeathMountainTrail, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[DMT_GS_FALLING_ROCKS_PATH] = ItemLocation::GSToken(RC_DMT_GS_FALLING_ROCKS_PATH, 0x0F, 0x10, "DMT GS Falling Rocks Path", DMT_GS_FALLING_ROCKS_PATH, {Category::cDeathMountainTrail, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); - locationTable[GC_GS_CENTER_PLATFORM] = ItemLocation::GSToken(0x0F, 0x20, "GC GS Center Platform", GC_GS_CENTER_PLATFORM, {Category::cGoronCity, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GORON_CITY); - locationTable[GC_GS_BOULDER_MAZE] = ItemLocation::GSToken(0x0F, 0x40, "GC GS Boulder Maze", GC_GS_BOULDER_MAZE, {Category::cGoronCity, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GORON_CITY); + locationTable[GC_GS_CENTER_PLATFORM] = ItemLocation::GSToken(RC_GC_GS_CENTER_PLATFORM, 0x0F, 0x20, "GC GS Center Platform", GC_GS_CENTER_PLATFORM, {Category::cGoronCity, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GORON_CITY); + locationTable[GC_GS_BOULDER_MAZE] = ItemLocation::GSToken(RC_GC_GS_BOULDER_MAZE, 0x0F, 0x40, "GC GS Boulder Maze", GC_GS_BOULDER_MAZE, {Category::cGoronCity, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_GORON_CITY); - locationTable[ZR_GS_LADDER] = ItemLocation::GSToken(0x11, 0x01, "ZR GS Ladder", ZR_GS_LADDER, {Category::cZorasRiver, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); - locationTable[ZR_GS_TREE] = ItemLocation::GSToken(0x11, 0x02, "ZR GS Tree", ZR_GS_TREE, {Category::cZorasRiver, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); - locationTable[ZR_GS_ABOVE_BRIDGE] = ItemLocation::GSToken(0x11, 0x08, "ZR GS Above Bridge", ZR_GS_ABOVE_BRIDGE, {Category::cZorasRiver, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); - locationTable[ZR_GS_NEAR_RAISED_GROTTOS] = ItemLocation::GSToken(0x11, 0x10, "ZR GS Near Raised Grottos", ZR_GS_NEAR_RAISED_GROTTOS, {Category::cZorasRiver, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); + locationTable[ZR_GS_LADDER] = ItemLocation::GSToken(RC_ZR_GS_LADDER, 0x11, 0x01, "ZR GS Ladder", ZR_GS_LADDER, {Category::cZorasRiver, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); + locationTable[ZR_GS_TREE] = ItemLocation::GSToken(RC_ZR_GS_TREE, 0x11, 0x02, "ZR GS Tree", ZR_GS_TREE, {Category::cZorasRiver, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); + locationTable[ZR_GS_ABOVE_BRIDGE] = ItemLocation::GSToken(RC_ZR_GS_ABOVE_BRIDGE, 0x11, 0x08, "ZR GS Above Bridge", ZR_GS_ABOVE_BRIDGE, {Category::cZorasRiver, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); + locationTable[ZR_GS_NEAR_RAISED_GROTTOS] = ItemLocation::GSToken(RC_ZR_GS_NEAR_RAISED_GROTTOS, 0x11, 0x10, "ZR GS Near Raised Grottos", ZR_GS_NEAR_RAISED_GROTTOS, {Category::cZorasRiver, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_RIVER); - locationTable[ZD_GS_FROZEN_WATERFALL] = ItemLocation::GSToken(0x11, 0x40, "ZD GS Frozen Waterfall", ZD_GS_FROZEN_WATERFALL, {Category::cZorasDomain, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); - locationTable[ZF_GS_ABOVE_THE_LOG] = ItemLocation::GSToken(0x11, 0x04, "ZF GS Above The Log", ZF_GS_ABOVE_THE_LOG, {Category::cZorasFountain, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); - locationTable[ZF_GS_HIDDEN_CAVE] = ItemLocation::GSToken(0x11, 0x20, "ZF GS Hidden Cave", ZF_GS_HIDDEN_CAVE, {Category::cZorasFountain, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); - locationTable[ZF_GS_TREE] = ItemLocation::GSToken(0x11, 0x80, "ZF GS Tree", ZF_GS_TREE, {Category::cZorasFountain, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); + locationTable[ZD_GS_FROZEN_WATERFALL] = ItemLocation::GSToken(RC_ZD_GS_FROZEN_WATERFALL, 0x11, 0x40, "ZD GS Frozen Waterfall", ZD_GS_FROZEN_WATERFALL, {Category::cZorasDomain, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); + locationTable[ZF_GS_ABOVE_THE_LOG] = ItemLocation::GSToken(RC_ZF_GS_ABOVE_THE_LOG, 0x11, 0x04, "ZF GS Above The Log", ZF_GS_ABOVE_THE_LOG, {Category::cZorasFountain, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); + locationTable[ZF_GS_HIDDEN_CAVE] = ItemLocation::GSToken(RC_ZF_GS_HIDDEN_CAVE, 0x11, 0x20, "ZF GS Hidden Cave", ZF_GS_HIDDEN_CAVE, {Category::cZorasFountain, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); + locationTable[ZF_GS_TREE] = ItemLocation::GSToken(RC_ZF_GS_TREE, 0x11, 0x80, "ZF GS Tree", ZF_GS_TREE, {Category::cZorasFountain, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); - locationTable[LLR_GS_BACK_WALL] = ItemLocation::GSToken(0x0B, 0x01, "LLR GS Back Wall", LLR_GS_BACK_WALL, {Category::cLonLonRanch, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); - locationTable[LLR_GS_RAIN_SHED] = ItemLocation::GSToken(0x0B, 0x02, "LLR GS Rain Shed", LLR_GS_RAIN_SHED, {Category::cLonLonRanch, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); - locationTable[LLR_GS_HOUSE_WINDOW] = ItemLocation::GSToken(0x0B, 0x04, "LLR GS House Window", LLR_GS_HOUSE_WINDOW, {Category::cLonLonRanch, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); - locationTable[LLR_GS_TREE] = ItemLocation::GSToken(0x0B, 0x08, "LLR GS Tree", LLR_GS_TREE, {Category::cLonLonRanch, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); + locationTable[LLR_GS_BACK_WALL] = ItemLocation::GSToken(RC_LLR_GS_BACK_WALL, 0x0B, 0x01, "LLR GS Back Wall", LLR_GS_BACK_WALL, {Category::cLonLonRanch, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); + locationTable[LLR_GS_RAIN_SHED] = ItemLocation::GSToken(RC_LLR_GS_RAIN_SHED, 0x0B, 0x02, "LLR GS Rain Shed", LLR_GS_RAIN_SHED, {Category::cLonLonRanch, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); + locationTable[LLR_GS_HOUSE_WINDOW] = ItemLocation::GSToken(RC_LLR_GS_HOUSE_WINDOW, 0x0B, 0x04, "LLR GS House Window", LLR_GS_HOUSE_WINDOW, {Category::cLonLonRanch, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); + locationTable[LLR_GS_TREE] = ItemLocation::GSToken(RC_LLR_GS_TREE, 0x0B, 0x08, "LLR GS Tree", LLR_GS_TREE, {Category::cLonLonRanch, Category::cSkulltula,}, SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); /*------------------------------- --- BOSSES --- -------------------------------*/ - locationTable[LINKS_POCKET] = ItemLocation::Reward (0xFF, 0xFF, "Link's Pocket", LINKS_POCKET, LIGHT_MEDALLION, {}, SpoilerCollectionCheck::AlwaysCollected(), SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); - locationTable[QUEEN_GOHMA] = ItemLocation::Reward (0xFF, DUNGEON_DEKU_TREE, "Queen Gohma", QUEEN_GOHMA, KOKIRI_EMERALD, {}, SpoilerCollectionCheck::EventChkInf(0x09), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[KING_DODONGO] = ItemLocation::Reward (0xFF, DUNGEON_DODONGOS_CAVERN, "King Dodongo", KING_DODONGO, GORON_RUBY, {}, SpoilerCollectionCheck::EventChkInf(0x25), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[BARINADE] = ItemLocation::Reward (0xFF, DUNGEON_JABUJABUS_BELLY, "Barinade", BARINADE, ZORA_SAPPHIRE, {}, SpoilerCollectionCheck::EventChkInf(0x37), SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[PHANTOM_GANON] = ItemLocation::Reward (0xFF, DUNGEON_FOREST_TEMPLE, "Phantom Ganon", PHANTOM_GANON, FOREST_MEDALLION, {}, SpoilerCollectionCheck::EventChkInf(0x48), SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[VOLVAGIA] = ItemLocation::Reward (0xFF, DUNGEON_FIRE_TEMPLE, "Volvagia", VOLVAGIA, FIRE_MEDALLION, {}, SpoilerCollectionCheck::EventChkInf(0x49), SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[MORPHA] = ItemLocation::Reward (0xFF, DUNGEON_WATER_TEMPLE, "Morpha", MORPHA, WATER_MEDALLION, {}, SpoilerCollectionCheck::EventChkInf(0x4A), SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[TWINROVA] = ItemLocation::Reward (0xFF, DUNGEON_SPIRIT_TEMPLE, "Twinrova", TWINROVA, SPIRIT_MEDALLION, {}, SpoilerCollectionCheck::EventChkInf(0x47), SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[BONGO_BONGO] = ItemLocation::Reward (0xFF, DUNGEON_SHADOW_TEMPLE, "Bongo Bongo", BONGO_BONGO, SHADOW_MEDALLION, {}, SpoilerCollectionCheck::EventChkInf(0x46), SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); - locationTable[GANON] = ItemLocation::Reward (0xFF, 0xF0, "Ganon", NONE, TRIFORCE, {}, SpoilerCollectionCheck::None(), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[LINKS_POCKET] = ItemLocation::Reward (RC_LINKS_POCKET, 0xFF, 0xFF, "Link's Pocket", LINKS_POCKET, LIGHT_MEDALLION, {}, SpoilerCollectionCheck::AlwaysCollected(), SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); + locationTable[QUEEN_GOHMA] = ItemLocation::Reward (RC_QUEEN_GOHMA, 0xFF, DUNGEON_DEKU_TREE, "Queen Gohma", QUEEN_GOHMA, KOKIRI_EMERALD, {}, SpoilerCollectionCheck::EventChkInf(0x09), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[KING_DODONGO] = ItemLocation::Reward (RC_KING_DODONGO, 0xFF, DUNGEON_DODONGOS_CAVERN, "King Dodongo", KING_DODONGO, GORON_RUBY, {}, SpoilerCollectionCheck::EventChkInf(0x25), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[BARINADE] = ItemLocation::Reward (RC_BARINADE, 0xFF, DUNGEON_JABUJABUS_BELLY, "Barinade", BARINADE, ZORA_SAPPHIRE, {}, SpoilerCollectionCheck::EventChkInf(0x37), SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[PHANTOM_GANON] = ItemLocation::Reward (RC_PHANTOM_GANON, 0xFF, DUNGEON_FOREST_TEMPLE, "Phantom Ganon", PHANTOM_GANON, FOREST_MEDALLION, {}, SpoilerCollectionCheck::EventChkInf(0x48), SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[VOLVAGIA] = ItemLocation::Reward (RC_VOLVAGIA, 0xFF, DUNGEON_FIRE_TEMPLE, "Volvagia", VOLVAGIA, FIRE_MEDALLION, {}, SpoilerCollectionCheck::EventChkInf(0x49), SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[MORPHA] = ItemLocation::Reward (RC_MORPHA, 0xFF, DUNGEON_WATER_TEMPLE, "Morpha", MORPHA, WATER_MEDALLION, {}, SpoilerCollectionCheck::EventChkInf(0x4A), SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[TWINROVA] = ItemLocation::Reward (RC_TWINROVA, 0xFF, DUNGEON_SPIRIT_TEMPLE, "Twinrova", TWINROVA, SPIRIT_MEDALLION, {}, SpoilerCollectionCheck::EventChkInf(0x47), SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[BONGO_BONGO] = ItemLocation::Reward (RC_BONGO_BONGO, 0xFF, DUNGEON_SHADOW_TEMPLE, "Bongo Bongo", BONGO_BONGO, SHADOW_MEDALLION, {}, SpoilerCollectionCheck::EventChkInf(0x46), SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[GANON] = ItemLocation::Reward (RC_GANON, 0xFF, 0xF0, "Ganon", NONE, TRIFORCE, {}, SpoilerCollectionCheck::None(), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); /*------------------------------- ---HEART CONTAINERS --- -------------------------------*/ - locationTable[DEKU_TREE_QUEEN_GOHMA_HEART] = ItemLocation::Base (0x11, 0x4F, "Deku Tree Queen Gohma Heart Container", DEKU_TREE_QUEEN_GOHMA_HEART, HEART_CONTAINER, {Category::cDekuTree, Category::cBossHeart, Category::cSongDungeonReward}, SpoilerCollectionCheck::Collectable(0x11, 0x1F), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); - locationTable[DODONGOS_CAVERN_KING_DODONGO_HEART] = ItemLocation::Base (0x12, 0x4F, "Dodongos Cavern King Dodongo Heart Container", DODONGOS_CAVERN_KING_DODONGO_HEART, HEART_CONTAINER, {Category::cDodongosCavern, Category::cBossHeart, Category::cSongDungeonReward}, SpoilerCollectionCheck::Collectable(0x12, 0x1F), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); - locationTable[JABU_JABUS_BELLY_BARINADE_HEART] = ItemLocation::Base (0x13, 0x4F, "Jabu Jabus Belly Barinade Heart Container", JABU_JABUS_BELLY_BARINADE_HEART, HEART_CONTAINER, {Category::cJabuJabusBelly, Category::cBossHeart, Category::cSongDungeonReward}, SpoilerCollectionCheck::Collectable(0x13, 0x1F), SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); - locationTable[FOREST_TEMPLE_PHANTOM_GANON_HEART] = ItemLocation::Base (0x14, 0x4F, "Forest Temple Phantom Ganon Heart Container", FOREST_TEMPLE_PHANTOM_GANON_HEART, HEART_CONTAINER, {Category::cForestTemple, Category::cBossHeart, Category::cSongDungeonReward}, SpoilerCollectionCheck::Collectable(0x14, 0x1F), SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); - locationTable[FIRE_TEMPLE_VOLVAGIA_HEART] = ItemLocation::Base (0x15, 0x4F, "Fire Temple Volvagia Heart Container", FIRE_TEMPLE_VOLVAGIA_HEART, HEART_CONTAINER, {Category::cFireTemple, Category::cBossHeart, Category::cSongDungeonReward}, SpoilerCollectionCheck::Collectable(0x15, 0x1F), SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); - locationTable[WATER_TEMPLE_MORPHA_HEART] = ItemLocation::Base (0x16, 0x4F, "Water Temple Morpha Heart Container", WATER_TEMPLE_MORPHA_HEART, HEART_CONTAINER, {Category::cWaterTemple, Category::cBossHeart, Category::cSongDungeonReward}, SpoilerCollectionCheck::Collectable(0x16, 0x1F), SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); - locationTable[SPIRIT_TEMPLE_TWINROVA_HEART] = ItemLocation::Base (0x17, 0x4F, "Spirit Temple Twinrova Heart Container", SPIRIT_TEMPLE_TWINROVA_HEART, HEART_CONTAINER, {Category::cSpiritTemple, Category::cBossHeart, Category::cSongDungeonReward}, SpoilerCollectionCheck::Collectable(0x17, 0x1F), SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); - locationTable[SHADOW_TEMPLE_BONGO_BONGO_HEART] = ItemLocation::Base (0x18, 0x4F, "Shadow Temple Bongo Bongo Heart Container", SHADOW_TEMPLE_BONGO_BONGO_HEART, HEART_CONTAINER, {Category::cShadowTemple, Category::cBossHeart, Category::cSongDungeonReward}, SpoilerCollectionCheck::Collectable(0x18, 0x1F), SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); + locationTable[DEKU_TREE_QUEEN_GOHMA_HEART] = ItemLocation::Base (RC_DEKU_TREE_QUEEN_GOHMA_HEART, 0x11, 0x4F, "Deku Tree Queen Gohma Heart Container", DEKU_TREE_QUEEN_GOHMA_HEART, HEART_CONTAINER, {Category::cDekuTree, Category::cBossHeart, Category::cSongDungeonReward}, SpoilerCollectionCheck::Collectable(0x11, 0x1F), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DEKU_TREE); + locationTable[DODONGOS_CAVERN_KING_DODONGO_HEART] = ItemLocation::Base (RC_DODONGOS_CAVERN_KING_DODONGO_HEART, 0x12, 0x4F, "Dodongos Cavern King Dodongo Heart Container", DODONGOS_CAVERN_KING_DODONGO_HEART, HEART_CONTAINER, {Category::cDodongosCavern, Category::cBossHeart, Category::cSongDungeonReward}, SpoilerCollectionCheck::Collectable(0x12, 0x1F), SpoilerCollectionCheckGroup::GROUP_DUNGEON_DODONGOS_CAVERN); + locationTable[JABU_JABUS_BELLY_BARINADE_HEART] = ItemLocation::Base (RC_JABU_JABUS_BELLY_BARINADE_HEART, 0x13, 0x4F, "Jabu Jabus Belly Barinade Heart Container", JABU_JABUS_BELLY_BARINADE_HEART, HEART_CONTAINER, {Category::cJabuJabusBelly, Category::cBossHeart, Category::cSongDungeonReward}, SpoilerCollectionCheck::Collectable(0x13, 0x1F), SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[FOREST_TEMPLE_PHANTOM_GANON_HEART] = ItemLocation::Base (RC_FOREST_TEMPLE_PHANTOM_GANON_HEART, 0x14, 0x4F, "Forest Temple Phantom Ganon Heart Container", FOREST_TEMPLE_PHANTOM_GANON_HEART, HEART_CONTAINER, {Category::cForestTemple, Category::cBossHeart, Category::cSongDungeonReward}, SpoilerCollectionCheck::Collectable(0x14, 0x1F), SpoilerCollectionCheckGroup::GROUP_DUNGEON_FOREST_TEMPLE); + locationTable[FIRE_TEMPLE_VOLVAGIA_HEART] = ItemLocation::Base (RC_FIRE_TEMPLE_VOLVAGIA_HEART, 0x15, 0x4F, "Fire Temple Volvagia Heart Container", FIRE_TEMPLE_VOLVAGIA_HEART, HEART_CONTAINER, {Category::cFireTemple, Category::cBossHeart, Category::cSongDungeonReward}, SpoilerCollectionCheck::Collectable(0x15, 0x1F), SpoilerCollectionCheckGroup::GROUP_DUNGEON_FIRE_TEMPLE); + locationTable[WATER_TEMPLE_MORPHA_HEART] = ItemLocation::Base (RC_WATER_TEMPLE_MORPHA_HEART, 0x16, 0x4F, "Water Temple Morpha Heart Container", WATER_TEMPLE_MORPHA_HEART, HEART_CONTAINER, {Category::cWaterTemple, Category::cBossHeart, Category::cSongDungeonReward}, SpoilerCollectionCheck::Collectable(0x16, 0x1F), SpoilerCollectionCheckGroup::GROUP_DUNGEON_WATER_TEMPLE); + locationTable[SPIRIT_TEMPLE_TWINROVA_HEART] = ItemLocation::Base (RC_SPIRIT_TEMPLE_TWINROVA_HEART, 0x17, 0x4F, "Spirit Temple Twinrova Heart Container", SPIRIT_TEMPLE_TWINROVA_HEART, HEART_CONTAINER, {Category::cSpiritTemple, Category::cBossHeart, Category::cSongDungeonReward}, SpoilerCollectionCheck::Collectable(0x17, 0x1F), SpoilerCollectionCheckGroup::GROUP_DUNGEON_SPIRIT_TEMPLE); + locationTable[SHADOW_TEMPLE_BONGO_BONGO_HEART] = ItemLocation::Base (RC_SHADOW_TEMPLE_BONGO_BONGO_HEART, 0x18, 0x4F, "Shadow Temple Bongo Bongo Heart Container", SHADOW_TEMPLE_BONGO_BONGO_HEART, HEART_CONTAINER, {Category::cShadowTemple, Category::cBossHeart, Category::cSongDungeonReward}, SpoilerCollectionCheck::Collectable(0x18, 0x1F), SpoilerCollectionCheckGroup::GROUP_DUNGEON_SHADOW_TEMPLE); /*------------------------------- --- CUTSCENES --- -------------------------------*/ - locationTable[TOT_LIGHT_ARROWS_CUTSCENE] = ItemLocation::Delayed(0xFF, 0x01, "ToT Light Arrow Cutscene", TOT_LIGHT_ARROWS_CUTSCENE, LIGHT_ARROWS, {Category::cTempleOfTime, Category::cMarket}, SpoilerCollectionCheck::EventChkInf(0xC4), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[LW_GIFT_FROM_SARIA] = ItemLocation::Delayed(0xFF, 0x02, "LW Gift From Saria", LW_GIFT_FROM_SARIA, PROGRESSIVE_OCARINA, {Category::cLostWoods, Category::cForest}, SpoilerCollectionCheck::EventChkInf(0xC1), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); - locationTable[ZF_GREAT_FAIRY_REWARD] = ItemLocation::Delayed(0xFF, 0x10, "ZF Great Fairy Reward", ZF_GREAT_FAIRY_REWARD, FARORES_WIND, {Category::cZorasFountain, Category::cFairies}, SpoilerCollectionCheck::ItemGetInf(16), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); - locationTable[HC_GREAT_FAIRY_REWARD] = ItemLocation::Delayed(0xFF, 0x11, "HC Great Fairy Reward", HC_GREAT_FAIRY_REWARD, DINS_FIRE, {Category::cHyruleCastle, Category::cMarket, Category::cFairies}, SpoilerCollectionCheck::ItemGetInf(17), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[COLOSSUS_GREAT_FAIRY_REWARD] = ItemLocation::Delayed(0xFF, 0x12, "Colossus Great Fairy Reward", COLOSSUS_GREAT_FAIRY_REWARD, NAYRUS_LOVE, {Category::cDesertColossus, Category::cFairies}, SpoilerCollectionCheck::ItemGetInf(18), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[DMT_GREAT_FAIRY_REWARD] = ItemLocation::Delayed(0xFF, 0x13, "DMT Great Fairy Reward", DMT_GREAT_FAIRY_REWARD, PROGRESSIVE_MAGIC_METER, {Category::cDeathMountainTrail, Category::cDeathMountain, Category::cFairies}, SpoilerCollectionCheck::Chest(0x3B, 0x00), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); - locationTable[DMC_GREAT_FAIRY_REWARD] = ItemLocation::Delayed(0xFF, 0x14, "DMC Great Fairy Reward", DMC_GREAT_FAIRY_REWARD, PROGRESSIVE_MAGIC_METER, {Category::cDeathMountainCrater, Category::cDeathMountain, Category::cFairies}, SpoilerCollectionCheck::Chest(0x3B, 0x01), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); - locationTable[OGC_GREAT_FAIRY_REWARD] = ItemLocation::Delayed(0xFF, 0x15, "OGC Great Fairy Reward", OGC_GREAT_FAIRY_REWARD, DOUBLE_DEFENSE, {Category::cOutsideGanonsCastle, Category::cFairies}, SpoilerCollectionCheck::Chest(0x3B, 0x02), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); + locationTable[TOT_LIGHT_ARROWS_CUTSCENE] = ItemLocation::Delayed(RC_TOT_LIGHT_ARROWS_CUTSCENE, 0xFF, 0x01, "ToT Light Arrow Cutscene", TOT_LIGHT_ARROWS_CUTSCENE, LIGHT_ARROWS, {Category::cTempleOfTime, Category::cMarket}, SpoilerCollectionCheck::EventChkInf(0xC4), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[LW_GIFT_FROM_SARIA] = ItemLocation::Delayed(RC_LW_GIFT_FROM_SARIA, 0xFF, 0x02, "LW Gift From Saria", LW_GIFT_FROM_SARIA, PROGRESSIVE_OCARINA, {Category::cLostWoods, Category::cForest}, SpoilerCollectionCheck::EventChkInf(0xC1), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[ZF_GREAT_FAIRY_REWARD] = ItemLocation::Delayed(RC_ZF_GREAT_FAIRY_REWARD, 0xFF, 0x10, "ZF Great Fairy Reward", ZF_GREAT_FAIRY_REWARD, FARORES_WIND, {Category::cZorasFountain, Category::cFairies}, SpoilerCollectionCheck::ItemGetInf(16), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); + locationTable[HC_GREAT_FAIRY_REWARD] = ItemLocation::Delayed(RC_HC_GREAT_FAIRY_REWARD, 0xFF, 0x11, "HC Great Fairy Reward", HC_GREAT_FAIRY_REWARD, DINS_FIRE, {Category::cHyruleCastle, Category::cMarket, Category::cFairies}, SpoilerCollectionCheck::ItemGetInf(17), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[COLOSSUS_GREAT_FAIRY_REWARD] = ItemLocation::Delayed(RC_COLOSSUS_GREAT_FAIRY_REWARD, 0xFF, 0x12, "Colossus Great Fairy Reward", COLOSSUS_GREAT_FAIRY_REWARD, NAYRUS_LOVE, {Category::cDesertColossus, Category::cFairies}, SpoilerCollectionCheck::ItemGetInf(18), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[DMT_GREAT_FAIRY_REWARD] = ItemLocation::Delayed(RC_DMT_GREAT_FAIRY_REWARD, 0xFF, 0x13, "DMT Great Fairy Reward", DMT_GREAT_FAIRY_REWARD, PROGRESSIVE_MAGIC_METER, {Category::cDeathMountainTrail, Category::cDeathMountain, Category::cFairies}, SpoilerCollectionCheck::Chest(0x3B, 0x00), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[DMC_GREAT_FAIRY_REWARD] = ItemLocation::Delayed(RC_DMC_GREAT_FAIRY_REWARD, 0xFF, 0x14, "DMC Great Fairy Reward", DMC_GREAT_FAIRY_REWARD, PROGRESSIVE_MAGIC_METER, {Category::cDeathMountainCrater, Category::cDeathMountain, Category::cFairies}, SpoilerCollectionCheck::Chest(0x3B, 0x01), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[OGC_GREAT_FAIRY_REWARD] = ItemLocation::Delayed(RC_OGC_GREAT_FAIRY_REWARD, 0xFF, 0x15, "OGC Great Fairy Reward", OGC_GREAT_FAIRY_REWARD, DOUBLE_DEFENSE, {Category::cOutsideGanonsCastle, Category::cFairies}, SpoilerCollectionCheck::Chest(0x3B, 0x02), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GANONS_CASTLE); - locationTable[SHEIK_IN_FOREST] = ItemLocation::Delayed(0xFF, 0x20, "Sheik in Forest", SHEIK_IN_FOREST, MINUET_OF_FOREST, {Category::cSacredForestMeadow, Category::cForest, Category::cSong,}, SpoilerCollectionCheck::EventChkInf(0x50), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); - locationTable[SHEIK_IN_CRATER] = ItemLocation::Delayed(0xFF, 0x21, "Sheik in Crater", SHEIK_IN_CRATER, BOLERO_OF_FIRE, {Category::cDeathMountainCrater, Category::cDeathMountain, Category::cSong,}, SpoilerCollectionCheck::EventChkInf(0x51), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); - locationTable[SHEIK_IN_ICE_CAVERN] = ItemLocation::Delayed(0xFF, 0x22, "Sheik in Ice Cavern", SHEIK_IN_ICE_CAVERN, SERENADE_OF_WATER, {Category::cIceCavern, Category::cSong, Category::cSongDungeonReward}, SpoilerCollectionCheck::EventChkInf(0x52), SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); - locationTable[SHEIK_AT_COLOSSUS] = ItemLocation::Delayed(0xFF, 0x23, "Sheik at Colossus", SHEIK_AT_COLOSSUS, REQUIEM_OF_SPIRIT, {Category::cDesertColossus, Category::cSong,}, SpoilerCollectionCheck::EventChkInf(0xAC), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[SHEIK_IN_KAKARIKO] = ItemLocation::Delayed(0xFF, 0x24, "Sheik in Kakariko", SHEIK_IN_KAKARIKO, NOCTURNE_OF_SHADOW, {Category::cKakarikoVillage, Category::cKakariko, Category::cSong,}, SpoilerCollectionCheck::EventChkInf(0xAA), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[SHEIK_AT_TEMPLE] = ItemLocation::Delayed(0xFF, 0x25, "Sheik at Temple", SHEIK_AT_TEMPLE, PRELUDE_OF_LIGHT, {Category::cTempleOfTime, Category::cMarket, Category::cSong,}, SpoilerCollectionCheck::EventChkInf(0x55), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[SONG_FROM_IMPA] = ItemLocation::Delayed(0xFF, 0x26, "Song from Impa", SONG_FROM_IMPA, ZELDAS_LULLABY, {Category::cHyruleCastle, Category::cMarket, Category::cSong, Category::cSongDungeonReward}, SpoilerCollectionCheck::EventChkInf(0x59), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[SONG_FROM_MALON] = ItemLocation::Delayed(0xFF, 0x27, "Song from Malon", SONG_FROM_MALON, EPONAS_SONG, {Category::cLonLonRanch, Category::cSong,}, SpoilerCollectionCheck::EventChkInf(0x58), SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); - locationTable[SONG_FROM_SARIA] = ItemLocation::Delayed(0xFF, 0x28, "Song from Saria", SONG_FROM_SARIA, SARIAS_SONG, {Category::cSacredForestMeadow, Category::cForest, Category::cSong,}, SpoilerCollectionCheck::EventChkInf(0x57), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); - locationTable[SONG_FROM_COMPOSERS_GRAVE] = ItemLocation::Delayed(0xFF, 0x29, "Song from Composers Grave", SONG_FROM_COMPOSERS_GRAVE, SUNS_SONG, {Category::cGraveyard, Category::cKakariko, Category::cSong,}, SpoilerCollectionCheck::EventChkInf(0x5A), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[SONG_FROM_OCARINA_OF_TIME] = ItemLocation::Delayed(0xFF, 0x2A, "Song from Ocarina of Time", SONG_FROM_OCARINA_OF_TIME, SONG_OF_TIME, {Category::cHyruleField, Category::cSong, Category::cNeedSpiritualStones,}, SpoilerCollectionCheck::EventChkInf(0xA9), SpoilerCollectionCheckGroup::GROUP_HYRULE_FIELD); - locationTable[SONG_FROM_WINDMILL] = ItemLocation::Delayed(0xFF, 0x2B, "Song from Windmill", SONG_FROM_WINDMILL, SONG_OF_STORMS, {Category::cKakarikoVillage, Category::cKakariko, Category::cSong,}, SpoilerCollectionCheck::EventChkInf(0x5B), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[SHEIK_IN_FOREST] = ItemLocation::Delayed(RC_SHEIK_IN_FOREST, 0xFF, 0x20, "Sheik in Forest", SHEIK_IN_FOREST, MINUET_OF_FOREST, {Category::cSacredForestMeadow, Category::cForest, Category::cSong,}, SpoilerCollectionCheck::EventChkInf(0x50), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[SHEIK_IN_CRATER] = ItemLocation::Delayed(RC_SHEIK_IN_CRATER, 0xFF, 0x21, "Sheik in Crater", SHEIK_IN_CRATER, BOLERO_OF_FIRE, {Category::cDeathMountainCrater, Category::cDeathMountain, Category::cSong,}, SpoilerCollectionCheck::EventChkInf(0x51), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[SHEIK_IN_ICE_CAVERN] = ItemLocation::Delayed(RC_SHEIK_IN_ICE_CAVERN, 0xFF, 0x22, "Sheik in Ice Cavern", SHEIK_IN_ICE_CAVERN, SERENADE_OF_WATER, {Category::cIceCavern, Category::cSong, Category::cSongDungeonReward}, SpoilerCollectionCheck::EventChkInf(0x52), SpoilerCollectionCheckGroup::GROUP_DUNGEON_ICE_CAVERN); + locationTable[SHEIK_AT_COLOSSUS] = ItemLocation::Delayed(RC_SHEIK_AT_COLOSSUS, 0xFF, 0x23, "Sheik at Colossus", SHEIK_AT_COLOSSUS, REQUIEM_OF_SPIRIT, {Category::cDesertColossus, Category::cSong,}, SpoilerCollectionCheck::EventChkInf(0xAC), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[SHEIK_IN_KAKARIKO] = ItemLocation::Delayed(RC_SHEIK_IN_KAKARIKO, 0xFF, 0x24, "Sheik in Kakariko", SHEIK_IN_KAKARIKO, NOCTURNE_OF_SHADOW, {Category::cKakarikoVillage, Category::cKakariko, Category::cSong,}, SpoilerCollectionCheck::EventChkInf(0xAA), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[SHEIK_AT_TEMPLE] = ItemLocation::Delayed(RC_SHEIK_AT_TEMPLE, 0xFF, 0x25, "Sheik at Temple", SHEIK_AT_TEMPLE, PRELUDE_OF_LIGHT, {Category::cTempleOfTime, Category::cMarket, Category::cSong,}, SpoilerCollectionCheck::EventChkInf(0x55), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[SONG_FROM_IMPA] = ItemLocation::Delayed(RC_SONG_FROM_IMPA, 0xFF, 0x26, "Song from Impa", SONG_FROM_IMPA, ZELDAS_LULLABY, {Category::cHyruleCastle, Category::cMarket, Category::cSong, Category::cSongDungeonReward}, SpoilerCollectionCheck::EventChkInf(0x59), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[SONG_FROM_MALON] = ItemLocation::Delayed(RC_SONG_FROM_MALON, 0xFF, 0x27, "Song from Malon", SONG_FROM_MALON, EPONAS_SONG, {Category::cLonLonRanch, Category::cSong,}, SpoilerCollectionCheck::EventChkInf(0x58), SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); + locationTable[SONG_FROM_SARIA] = ItemLocation::Delayed(RC_SONG_FROM_SARIA, 0xFF, 0x28, "Song from Saria", SONG_FROM_SARIA, SARIAS_SONG, {Category::cSacredForestMeadow, Category::cForest, Category::cSong,}, SpoilerCollectionCheck::EventChkInf(0x57), SpoilerCollectionCheckGroup::GROUP_LOST_WOODS); + locationTable[SONG_FROM_COMPOSERS_GRAVE] = ItemLocation::Delayed(RC_SONG_FROM_ROYAL_FAMILYS_TOMB, 0xFF, 0x29, "Song from Composers Grave", SONG_FROM_COMPOSERS_GRAVE, SUNS_SONG, {Category::cGraveyard, Category::cKakariko, Category::cSong,}, SpoilerCollectionCheck::EventChkInf(0x5A), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[SONG_FROM_OCARINA_OF_TIME] = ItemLocation::Delayed(RC_SONG_FROM_OCARINA_OF_TIME, 0xFF, 0x2A, "Song from Ocarina of Time", SONG_FROM_OCARINA_OF_TIME, SONG_OF_TIME, {Category::cHyruleField, Category::cSong, Category::cNeedSpiritualStones,}, SpoilerCollectionCheck::EventChkInf(0xA9), SpoilerCollectionCheckGroup::GROUP_HYRULE_FIELD); + locationTable[SONG_FROM_WINDMILL] = ItemLocation::Delayed(RC_SONG_FROM_WINDMILL, 0xFF, 0x2B, "Song from Windmill", SONG_FROM_WINDMILL, SONG_OF_STORMS, {Category::cKakarikoVillage, Category::cKakariko, Category::cSong,}, SpoilerCollectionCheck::EventChkInf(0x5B), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); /*------------------------------- --- COWS --- -------------------------------*/ - locationTable[KF_LINKS_HOUSE_COW] = ItemLocation::Base (0x34, 0x15, "KF Links House Cow", KF_LINKS_HOUSE_COW, MILK, {Category::cForest, Category::cCow, Category::cMinigame}, SpoilerCollectionCheck::Cow(0x34, 0x15), SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); - locationTable[HF_COW_GROTTO_COW] = ItemLocation::Base (0x3E, 0x16, "HF Cow Grotto Cow", HF_COW_GROTTO_COW, MILK, {Category::cHyruleField, Category::cCow, Category::cGrotto}, SpoilerCollectionCheck::Cow(0x3E, 0x16), SpoilerCollectionCheckGroup::GROUP_HYRULE_FIELD); - locationTable[LLR_STABLES_LEFT_COW] = ItemLocation::Base (0x36, 0x16, "LLR Stables Left Cow", LLR_STABLES_LEFT_COW, MILK, {Category::cLonLonRanch, Category::cCow}, SpoilerCollectionCheck::Cow(0x36, 0x16), SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); - locationTable[LLR_STABLES_RIGHT_COW] = ItemLocation::Base (0x36, 0x15, "LLR Stables Right Cow", LLR_STABLES_RIGHT_COW, MILK, {Category::cLonLonRanch, Category::cCow}, SpoilerCollectionCheck::Cow(0x36, 0x15), SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); - locationTable[LLR_TOWER_LEFT_COW] = ItemLocation::Base (0x4C, 0x15, "LLR Tower Left Cow", LLR_TOWER_LEFT_COW, MILK, {Category::cLonLonRanch, Category::cCow}, SpoilerCollectionCheck::Cow(0x4C, 0x16), SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); - locationTable[LLR_TOWER_RIGHT_COW] = ItemLocation::Base (0x4C, 0x16, "LLR Tower Right Cow", LLR_TOWER_RIGHT_COW, MILK, {Category::cLonLonRanch, Category::cCow}, SpoilerCollectionCheck::Cow(0x4C, 0x15), SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); - locationTable[KAK_IMPAS_HOUSE_COW] = ItemLocation::Base (0x37, 0x15, "Kak Impas House Cow", KAK_IMPAS_HOUSE_COW, MILK, {Category::cKakarikoVillage, Category::cKakariko, Category::cCow}, SpoilerCollectionCheck::Cow(0x37, 0x15), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[DMT_COW_GROTTO_COW] = ItemLocation::Base (0x3E, 0x15, "DMT Cow Grotto Cow", DMT_COW_GROTTO_COW, MILK, {Category::cDeathMountainTrail, Category::cDeathMountain, Category::cCow, Category::cGrotto}, SpoilerCollectionCheck::Cow(0x3E, 0x15), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); - locationTable[GV_COW] = ItemLocation::Base (0x5A, 0x15, "GV Cow", GV_COW, MILK, {Category::cGerudoValley, Category::cGerudo, Category::cCow}, SpoilerCollectionCheck::Cow(0x5A, 0x15), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); - locationTable[JABU_JABUS_BELLY_MQ_COW] = ItemLocation::Base (0x02, 0x15, "Jabu Jabus Belly MQ Cow", JABU_JABUS_BELLY_MQ_COW, MILK, {Category::cJabuJabusBelly, Category::cCow}, SpoilerCollectionCheck::Cow(0x02, 0x15), SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); + locationTable[KF_LINKS_HOUSE_COW] = ItemLocation::Base (RC_KF_LINKS_HOUSE_COW, 0x34, 0x15, "KF Links House Cow", KF_LINKS_HOUSE_COW, MILK, {Category::cForest, Category::cCow, Category::cMinigame}, SpoilerCollectionCheck::Cow(0x34, 0x15), SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); + locationTable[HF_COW_GROTTO_COW] = ItemLocation::Base (RC_HF_COW_GROTTO_COW, 0x3E, 0x16, "HF Cow Grotto Cow", HF_COW_GROTTO_COW, MILK, {Category::cHyruleField, Category::cCow, Category::cGrotto}, SpoilerCollectionCheck::Cow(0x3E, 0x16), SpoilerCollectionCheckGroup::GROUP_HYRULE_FIELD); + locationTable[LLR_STABLES_LEFT_COW] = ItemLocation::Base (RC_LLR_STABLES_LEFT_COW, 0x36, 0x16, "LLR Stables Left Cow", LLR_STABLES_LEFT_COW, MILK, {Category::cLonLonRanch, Category::cCow}, SpoilerCollectionCheck::Cow(0x36, 0x16), SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); + locationTable[LLR_STABLES_RIGHT_COW] = ItemLocation::Base (RC_LLR_STABLES_RIGHT_COW, 0x36, 0x15, "LLR Stables Right Cow", LLR_STABLES_RIGHT_COW, MILK, {Category::cLonLonRanch, Category::cCow}, SpoilerCollectionCheck::Cow(0x36, 0x15), SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); + locationTable[LLR_TOWER_LEFT_COW] = ItemLocation::Base (RC_LLR_TOWER_LEFT_COW, 0x4C, 0x15, "LLR Tower Left Cow", LLR_TOWER_LEFT_COW, MILK, {Category::cLonLonRanch, Category::cCow}, SpoilerCollectionCheck::Cow(0x4C, 0x16), SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); + locationTable[LLR_TOWER_RIGHT_COW] = ItemLocation::Base (RC_LLR_TOWER_RIGHT_COW, 0x4C, 0x16, "LLR Tower Right Cow", LLR_TOWER_RIGHT_COW, MILK, {Category::cLonLonRanch, Category::cCow}, SpoilerCollectionCheck::Cow(0x4C, 0x15), SpoilerCollectionCheckGroup::GROUP_LON_LON_RANCH); + locationTable[KAK_IMPAS_HOUSE_COW] = ItemLocation::Base (RC_KAK_IMPAS_HOUSE_COW, 0x37, 0x15, "Kak Impas House Cow", KAK_IMPAS_HOUSE_COW, MILK, {Category::cKakarikoVillage, Category::cKakariko, Category::cCow}, SpoilerCollectionCheck::Cow(0x37, 0x15), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[DMT_COW_GROTTO_COW] = ItemLocation::Base (RC_DMT_COW_GROTTO_COW, 0x3E, 0x15, "DMT Cow Grotto Cow", DMT_COW_GROTTO_COW, MILK, {Category::cDeathMountainTrail, Category::cDeathMountain, Category::cCow, Category::cGrotto}, SpoilerCollectionCheck::Cow(0x3E, 0x15), SpoilerCollectionCheckGroup::GROUP_DEATH_MOUNTAIN); + locationTable[GV_COW] = ItemLocation::Base (RC_GV_COW, 0x5A, 0x15, "GV Cow", GV_COW, MILK, {Category::cGerudoValley, Category::cGerudo, Category::cCow}, SpoilerCollectionCheck::Cow(0x5A, 0x15), SpoilerCollectionCheckGroup::GROUP_GERUDO_VALLEY); + locationTable[JABU_JABUS_BELLY_MQ_COW] = ItemLocation::Base (RC_JABU_JABUS_BELLY_MQ_COW, 0x02, 0x15, "Jabu Jabus Belly MQ Cow", JABU_JABUS_BELLY_MQ_COW, MILK, {Category::cJabuJabusBelly, Category::cCow}, SpoilerCollectionCheck::Cow(0x02, 0x15), SpoilerCollectionCheckGroup::GROUP_DUNGEON_JABUJABUS_BELLY); /*------------------------------- --- SHOPS --- @@ -796,126 +797,126 @@ void LocationTable_Init() { 7 5 1 3 -------------------------------*/ - locationTable[KF_SHOP_ITEM_1] = ItemLocation::Base(0x2D, 0x30, "KF Shop Item 1", KF_SHOP_ITEM_1, BUY_DEKU_SHIELD, {Category::cKokiriForest, Category::cForest, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2D, 0), SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); - locationTable[KF_SHOP_ITEM_2] = ItemLocation::Base(0x2D, 0x31, "KF Shop Item 2", KF_SHOP_ITEM_2, BUY_DEKU_NUT_5, {Category::cKokiriForest, Category::cForest, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2D, 1), SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); - locationTable[KF_SHOP_ITEM_3] = ItemLocation::Base(0x2D, 0x32, "KF Shop Item 3", KF_SHOP_ITEM_3, BUY_DEKU_NUT_10, {Category::cKokiriForest, Category::cForest, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2D, 2), SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); - locationTable[KF_SHOP_ITEM_4] = ItemLocation::Base(0x2D, 0x33, "KF Shop Item 4", KF_SHOP_ITEM_4, BUY_DEKU_STICK_1, {Category::cKokiriForest, Category::cForest, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2D, 3), SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); - locationTable[KF_SHOP_ITEM_5] = ItemLocation::Base(0x2D, 0x34, "KF Shop Item 5", KF_SHOP_ITEM_5, BUY_DEKU_SEEDS_30, {Category::cKokiriForest, Category::cForest, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2D, 4), SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); - locationTable[KF_SHOP_ITEM_6] = ItemLocation::Base(0x2D, 0x35, "KF Shop Item 6", KF_SHOP_ITEM_6, BUY_ARROWS_10, {Category::cKokiriForest, Category::cForest, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2D, 5), SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); - locationTable[KF_SHOP_ITEM_7] = ItemLocation::Base(0x2D, 0x36, "KF Shop Item 7", KF_SHOP_ITEM_7, BUY_ARROWS_30, {Category::cKokiriForest, Category::cForest, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2D, 6), SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); - locationTable[KF_SHOP_ITEM_8] = ItemLocation::Base(0x2D, 0x37, "KF Shop Item 8", KF_SHOP_ITEM_8, BUY_HEART, {Category::cKokiriForest, Category::cForest, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2D, 7), SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); + locationTable[KF_SHOP_ITEM_1] = ItemLocation::Base(RC_KF_SHOP_ITEM_1, 0x2D, 0x30, "KF Shop Item 1", KF_SHOP_ITEM_1, BUY_DEKU_SHIELD, {Category::cKokiriForest, Category::cForest, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2D, 0), SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); + locationTable[KF_SHOP_ITEM_2] = ItemLocation::Base(RC_KF_SHOP_ITEM_2, 0x2D, 0x31, "KF Shop Item 2", KF_SHOP_ITEM_2, BUY_DEKU_NUT_5, {Category::cKokiriForest, Category::cForest, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2D, 1), SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); + locationTable[KF_SHOP_ITEM_3] = ItemLocation::Base(RC_KF_SHOP_ITEM_3, 0x2D, 0x32, "KF Shop Item 3", KF_SHOP_ITEM_3, BUY_DEKU_NUT_10, {Category::cKokiriForest, Category::cForest, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2D, 2), SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); + locationTable[KF_SHOP_ITEM_4] = ItemLocation::Base(RC_KF_SHOP_ITEM_4, 0x2D, 0x33, "KF Shop Item 4", KF_SHOP_ITEM_4, BUY_DEKU_STICK_1, {Category::cKokiriForest, Category::cForest, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2D, 3), SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); + locationTable[KF_SHOP_ITEM_5] = ItemLocation::Base(RC_KF_SHOP_ITEM_5, 0x2D, 0x34, "KF Shop Item 5", KF_SHOP_ITEM_5, BUY_DEKU_SEEDS_30, {Category::cKokiriForest, Category::cForest, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2D, 4), SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); + locationTable[KF_SHOP_ITEM_6] = ItemLocation::Base(RC_KF_SHOP_ITEM_6, 0x2D, 0x35, "KF Shop Item 6", KF_SHOP_ITEM_6, BUY_ARROWS_10, {Category::cKokiriForest, Category::cForest, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2D, 5), SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); + locationTable[KF_SHOP_ITEM_7] = ItemLocation::Base(RC_KF_SHOP_ITEM_7, 0x2D, 0x36, "KF Shop Item 7", KF_SHOP_ITEM_7, BUY_ARROWS_30, {Category::cKokiriForest, Category::cForest, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2D, 6), SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); + locationTable[KF_SHOP_ITEM_8] = ItemLocation::Base(RC_KF_SHOP_ITEM_8, 0x2D, 0x37, "KF Shop Item 8", KF_SHOP_ITEM_8, BUY_HEART, {Category::cKokiriForest, Category::cForest, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2D, 7), SpoilerCollectionCheckGroup::GROUP_KOKIRI_FOREST); - locationTable[KAK_POTION_SHOP_ITEM_1] = ItemLocation::Base(0x30, 0x30, "Kak Potion Shop Item 1", KAK_POTION_SHOP_ITEM_1, BUY_DEKU_NUT_5, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x30, 0), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_POTION_SHOP_ITEM_2] = ItemLocation::Base(0x30, 0x31, "Kak Potion Shop Item 2", KAK_POTION_SHOP_ITEM_2, BUY_FISH, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x30, 1), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_POTION_SHOP_ITEM_3] = ItemLocation::Base(0x30, 0x32, "Kak Potion Shop Item 3", KAK_POTION_SHOP_ITEM_3, BUY_RED_POTION_30, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x30, 2), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_POTION_SHOP_ITEM_4] = ItemLocation::Base(0x30, 0x33, "Kak Potion Shop Item 4", KAK_POTION_SHOP_ITEM_4, BUY_GREEN_POTION, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x30, 3), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_POTION_SHOP_ITEM_5] = ItemLocation::Base(0x30, 0x34, "Kak Potion Shop Item 5", KAK_POTION_SHOP_ITEM_5, BUY_BLUE_FIRE, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x30, 4), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_POTION_SHOP_ITEM_6] = ItemLocation::Base(0x30, 0x35, "Kak Potion Shop Item 6", KAK_POTION_SHOP_ITEM_6, BUY_BOTTLE_BUG, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x30, 5), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_POTION_SHOP_ITEM_7] = ItemLocation::Base(0x30, 0x36, "Kak Potion Shop Item 7", KAK_POTION_SHOP_ITEM_7, BUY_POE, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x30, 6), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_POTION_SHOP_ITEM_8] = ItemLocation::Base(0x30, 0x37, "Kak Potion Shop Item 8", KAK_POTION_SHOP_ITEM_8, BUY_FAIRYS_SPIRIT, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x30, 7), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_POTION_SHOP_ITEM_1] = ItemLocation::Base(RC_KAK_POTION_SHOP_ITEM_1, 0x30, 0x30, "Kak Potion Shop Item 1", KAK_POTION_SHOP_ITEM_1, BUY_DEKU_NUT_5, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x30, 0), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_POTION_SHOP_ITEM_2] = ItemLocation::Base(RC_KAK_POTION_SHOP_ITEM_2, 0x30, 0x31, "Kak Potion Shop Item 2", KAK_POTION_SHOP_ITEM_2, BUY_FISH, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x30, 1), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_POTION_SHOP_ITEM_3] = ItemLocation::Base(RC_KAK_POTION_SHOP_ITEM_3, 0x30, 0x32, "Kak Potion Shop Item 3", KAK_POTION_SHOP_ITEM_3, BUY_RED_POTION_30, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x30, 2), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_POTION_SHOP_ITEM_4] = ItemLocation::Base(RC_KAK_POTION_SHOP_ITEM_4, 0x30, 0x33, "Kak Potion Shop Item 4", KAK_POTION_SHOP_ITEM_4, BUY_GREEN_POTION, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x30, 3), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_POTION_SHOP_ITEM_5] = ItemLocation::Base(RC_KAK_POTION_SHOP_ITEM_5, 0x30, 0x34, "Kak Potion Shop Item 5", KAK_POTION_SHOP_ITEM_5, BUY_BLUE_FIRE, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x30, 4), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_POTION_SHOP_ITEM_6] = ItemLocation::Base(RC_KAK_POTION_SHOP_ITEM_6, 0x30, 0x35, "Kak Potion Shop Item 6", KAK_POTION_SHOP_ITEM_6, BUY_BOTTLE_BUG, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x30, 5), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_POTION_SHOP_ITEM_7] = ItemLocation::Base(RC_KAK_POTION_SHOP_ITEM_7, 0x30, 0x36, "Kak Potion Shop Item 7", KAK_POTION_SHOP_ITEM_7, BUY_POE, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x30, 6), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_POTION_SHOP_ITEM_8] = ItemLocation::Base(RC_KAK_POTION_SHOP_ITEM_8, 0x30, 0x37, "Kak Potion Shop Item 8", KAK_POTION_SHOP_ITEM_8, BUY_FAIRYS_SPIRIT, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x30, 7), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[MARKET_BOMBCHU_SHOP_ITEM_1] = ItemLocation::Base(0x32, 0x30, "MK Bombchu Shop Item 1", MARKET_BOMBCHU_SHOP_ITEM_1, BUY_BOMBCHU_5, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x32, 0), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_BOMBCHU_SHOP_ITEM_2] = ItemLocation::Base(0x32, 0x31, "MK Bombchu Shop Item 2", MARKET_BOMBCHU_SHOP_ITEM_2, BUY_BOMBCHU_10, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x32, 1), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_BOMBCHU_SHOP_ITEM_3] = ItemLocation::Base(0x32, 0x32, "MK Bombchu Shop Item 3", MARKET_BOMBCHU_SHOP_ITEM_3, BUY_BOMBCHU_10, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x32, 2), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_BOMBCHU_SHOP_ITEM_4] = ItemLocation::Base(0x32, 0x33, "MK Bombchu Shop Item 4", MARKET_BOMBCHU_SHOP_ITEM_4, BUY_BOMBCHU_10, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x32, 3), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_BOMBCHU_SHOP_ITEM_5] = ItemLocation::Base(0x32, 0x34, "MK Bombchu Shop Item 5", MARKET_BOMBCHU_SHOP_ITEM_5, BUY_BOMBCHU_20, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x32, 4), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_BOMBCHU_SHOP_ITEM_6] = ItemLocation::Base(0x32, 0x35, "MK Bombchu Shop Item 6", MARKET_BOMBCHU_SHOP_ITEM_6, BUY_BOMBCHU_20, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x32, 5), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_BOMBCHU_SHOP_ITEM_7] = ItemLocation::Base(0x32, 0x36, "MK Bombchu Shop Item 7", MARKET_BOMBCHU_SHOP_ITEM_7, BUY_BOMBCHU_20, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x32, 6), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_BOMBCHU_SHOP_ITEM_8] = ItemLocation::Base(0x32, 0x37, "MK Bombchu Shop Item 8", MARKET_BOMBCHU_SHOP_ITEM_8, BUY_BOMBCHU_20, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x32, 7), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_BOMBCHU_SHOP_ITEM_1] = ItemLocation::Base(RC_MARKET_BOMBCHU_SHOP_ITEM_1, 0x32, 0x30, "MK Bombchu Shop Item 1", MARKET_BOMBCHU_SHOP_ITEM_1, BUY_BOMBCHU_5, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x32, 0), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_BOMBCHU_SHOP_ITEM_2] = ItemLocation::Base(RC_MARKET_BOMBCHU_SHOP_ITEM_2, 0x32, 0x31, "MK Bombchu Shop Item 2", MARKET_BOMBCHU_SHOP_ITEM_2, BUY_BOMBCHU_10, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x32, 1), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_BOMBCHU_SHOP_ITEM_3] = ItemLocation::Base(RC_MARKET_BOMBCHU_SHOP_ITEM_3, 0x32, 0x32, "MK Bombchu Shop Item 3", MARKET_BOMBCHU_SHOP_ITEM_3, BUY_BOMBCHU_10, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x32, 2), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_BOMBCHU_SHOP_ITEM_4] = ItemLocation::Base(RC_MARKET_BOMBCHU_SHOP_ITEM_4, 0x32, 0x33, "MK Bombchu Shop Item 4", MARKET_BOMBCHU_SHOP_ITEM_4, BUY_BOMBCHU_10, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x32, 3), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_BOMBCHU_SHOP_ITEM_5] = ItemLocation::Base(RC_MARKET_BOMBCHU_SHOP_ITEM_5, 0x32, 0x34, "MK Bombchu Shop Item 5", MARKET_BOMBCHU_SHOP_ITEM_5, BUY_BOMBCHU_20, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x32, 4), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_BOMBCHU_SHOP_ITEM_6] = ItemLocation::Base(RC_MARKET_BOMBCHU_SHOP_ITEM_6, 0x32, 0x35, "MK Bombchu Shop Item 6", MARKET_BOMBCHU_SHOP_ITEM_6, BUY_BOMBCHU_20, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x32, 5), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_BOMBCHU_SHOP_ITEM_7] = ItemLocation::Base(RC_MARKET_BOMBCHU_SHOP_ITEM_7, 0x32, 0x36, "MK Bombchu Shop Item 7", MARKET_BOMBCHU_SHOP_ITEM_7, BUY_BOMBCHU_20, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x32, 6), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_BOMBCHU_SHOP_ITEM_8] = ItemLocation::Base(RC_MARKET_BOMBCHU_SHOP_ITEM_8, 0x32, 0x37, "MK Bombchu Shop Item 8", MARKET_BOMBCHU_SHOP_ITEM_8, BUY_BOMBCHU_20, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x32, 7), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_POTION_SHOP_ITEM_1] = ItemLocation::Base(0x31, 0x30, "MK Potion Shop Item 1", MARKET_POTION_SHOP_ITEM_1, BUY_GREEN_POTION, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x31, 0), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_POTION_SHOP_ITEM_2] = ItemLocation::Base(0x31, 0x31, "MK Potion Shop Item 2", MARKET_POTION_SHOP_ITEM_2, BUY_BLUE_FIRE, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x31, 1), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_POTION_SHOP_ITEM_3] = ItemLocation::Base(0x31, 0x32, "MK Potion Shop Item 3", MARKET_POTION_SHOP_ITEM_3, BUY_RED_POTION_30, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x31, 2), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_POTION_SHOP_ITEM_4] = ItemLocation::Base(0x31, 0x33, "MK Potion Shop Item 4", MARKET_POTION_SHOP_ITEM_4, BUY_FAIRYS_SPIRIT, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x31, 3), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_POTION_SHOP_ITEM_5] = ItemLocation::Base(0x31, 0x34, "MK Potion Shop Item 5", MARKET_POTION_SHOP_ITEM_5, BUY_DEKU_NUT_5, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x31, 4), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_POTION_SHOP_ITEM_6] = ItemLocation::Base(0x31, 0x35, "MK Potion Shop Item 6", MARKET_POTION_SHOP_ITEM_6, BUY_BOTTLE_BUG, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x31, 5), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_POTION_SHOP_ITEM_7] = ItemLocation::Base(0x31, 0x36, "MK Potion Shop Item 7", MARKET_POTION_SHOP_ITEM_7, BUY_POE, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x31, 6), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_POTION_SHOP_ITEM_8] = ItemLocation::Base(0x31, 0x37, "MK Potion Shop Item 8", MARKET_POTION_SHOP_ITEM_8, BUY_FISH, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x31, 7), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_POTION_SHOP_ITEM_1] = ItemLocation::Base(RC_MARKET_POTION_SHOP_ITEM_1, 0x31, 0x30, "MK Potion Shop Item 1", MARKET_POTION_SHOP_ITEM_1, BUY_GREEN_POTION, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x31, 0), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_POTION_SHOP_ITEM_2] = ItemLocation::Base(RC_MARKET_POTION_SHOP_ITEM_2, 0x31, 0x31, "MK Potion Shop Item 2", MARKET_POTION_SHOP_ITEM_2, BUY_BLUE_FIRE, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x31, 1), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_POTION_SHOP_ITEM_3] = ItemLocation::Base(RC_MARKET_POTION_SHOP_ITEM_3, 0x31, 0x32, "MK Potion Shop Item 3", MARKET_POTION_SHOP_ITEM_3, BUY_RED_POTION_30, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x31, 2), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_POTION_SHOP_ITEM_4] = ItemLocation::Base(RC_MARKET_POTION_SHOP_ITEM_4, 0x31, 0x33, "MK Potion Shop Item 4", MARKET_POTION_SHOP_ITEM_4, BUY_FAIRYS_SPIRIT, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x31, 3), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_POTION_SHOP_ITEM_5] = ItemLocation::Base(RC_MARKET_POTION_SHOP_ITEM_5, 0x31, 0x34, "MK Potion Shop Item 5", MARKET_POTION_SHOP_ITEM_5, BUY_DEKU_NUT_5, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x31, 4), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_POTION_SHOP_ITEM_6] = ItemLocation::Base(RC_MARKET_POTION_SHOP_ITEM_6, 0x31, 0x35, "MK Potion Shop Item 6", MARKET_POTION_SHOP_ITEM_6, BUY_BOTTLE_BUG, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x31, 5), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_POTION_SHOP_ITEM_7] = ItemLocation::Base(RC_MARKET_POTION_SHOP_ITEM_7, 0x31, 0x36, "MK Potion Shop Item 7", MARKET_POTION_SHOP_ITEM_7, BUY_POE, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x31, 6), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_POTION_SHOP_ITEM_8] = ItemLocation::Base(RC_MARKET_POTION_SHOP_ITEM_8, 0x31, 0x37, "MK Potion Shop Item 8", MARKET_POTION_SHOP_ITEM_8, BUY_FISH, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x31, 7), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_BAZAAR_ITEM_1] = ItemLocation::Base(0x2C, 0x30, "MK Bazaar Item 1", MARKET_BAZAAR_ITEM_1, BUY_HYLIAN_SHIELD, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2C, 0), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_BAZAAR_ITEM_2] = ItemLocation::Base(0x2C, 0x31, "MK Bazaar Item 2", MARKET_BAZAAR_ITEM_2, BUY_BOMBS_535, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2C, 1), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_BAZAAR_ITEM_3] = ItemLocation::Base(0x2C, 0x32, "MK Bazaar Item 3", MARKET_BAZAAR_ITEM_3, BUY_DEKU_NUT_5, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2C, 2), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_BAZAAR_ITEM_4] = ItemLocation::Base(0x2C, 0x33, "MK Bazaar Item 4", MARKET_BAZAAR_ITEM_4, BUY_HEART, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2C, 3), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_BAZAAR_ITEM_5] = ItemLocation::Base(0x2C, 0x34, "MK Bazaar Item 5", MARKET_BAZAAR_ITEM_5, BUY_ARROWS_10, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2C, 4), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_BAZAAR_ITEM_6] = ItemLocation::Base(0x2C, 0x35, "MK Bazaar Item 6", MARKET_BAZAAR_ITEM_6, BUY_ARROWS_50, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2C, 5), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_BAZAAR_ITEM_7] = ItemLocation::Base(0x2C, 0x36, "MK Bazaar Item 7", MARKET_BAZAAR_ITEM_7, BUY_DEKU_STICK_1, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2C, 6), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[MARKET_BAZAAR_ITEM_8] = ItemLocation::Base(0x2C, 0x37, "MK Bazaar Item 8", MARKET_BAZAAR_ITEM_8, BUY_ARROWS_30, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2C, 7), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_BAZAAR_ITEM_1] = ItemLocation::Base(RC_MARKET_BAZAAR_ITEM_1, 0x2C, 0x30, "MK Bazaar Item 1", MARKET_BAZAAR_ITEM_1, BUY_HYLIAN_SHIELD, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2C, 0), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_BAZAAR_ITEM_2] = ItemLocation::Base(RC_MARKET_BAZAAR_ITEM_2, 0x2C, 0x31, "MK Bazaar Item 2", MARKET_BAZAAR_ITEM_2, BUY_BOMBS_535, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2C, 1), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_BAZAAR_ITEM_3] = ItemLocation::Base(RC_MARKET_BAZAAR_ITEM_3, 0x2C, 0x32, "MK Bazaar Item 3", MARKET_BAZAAR_ITEM_3, BUY_DEKU_NUT_5, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2C, 2), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_BAZAAR_ITEM_4] = ItemLocation::Base(RC_MARKET_BAZAAR_ITEM_4, 0x2C, 0x33, "MK Bazaar Item 4", MARKET_BAZAAR_ITEM_4, BUY_HEART, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2C, 3), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_BAZAAR_ITEM_5] = ItemLocation::Base(RC_MARKET_BAZAAR_ITEM_5, 0x2C, 0x34, "MK Bazaar Item 5", MARKET_BAZAAR_ITEM_5, BUY_ARROWS_10, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2C, 4), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_BAZAAR_ITEM_6] = ItemLocation::Base(RC_MARKET_BAZAAR_ITEM_6, 0x2C, 0x35, "MK Bazaar Item 6", MARKET_BAZAAR_ITEM_6, BUY_ARROWS_50, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2C, 5), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_BAZAAR_ITEM_7] = ItemLocation::Base(RC_MARKET_BAZAAR_ITEM_7, 0x2C, 0x36, "MK Bazaar Item 7", MARKET_BAZAAR_ITEM_7, BUY_DEKU_STICK_1, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2C, 6), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); + locationTable[MARKET_BAZAAR_ITEM_8] = ItemLocation::Base(RC_MARKET_BAZAAR_ITEM_8, 0x2C, 0x37, "MK Bazaar Item 8", MARKET_BAZAAR_ITEM_8, BUY_ARROWS_30, {Category::cInnerMarket, Category::cMarket, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2C, 7), SpoilerCollectionCheckGroup::GROUP_HYRULE_CASTLE); - locationTable[KAK_BAZAAR_ITEM_1] = ItemLocation::Base(0x2C, 0x38, "Kak Bazaar Item 1", KAK_BAZAAR_ITEM_1, BUY_HYLIAN_SHIELD, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x33, 0), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_BAZAAR_ITEM_2] = ItemLocation::Base(0x2C, 0x39, "Kak Bazaar Item 2", KAK_BAZAAR_ITEM_2, BUY_BOMBS_535, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x33, 1), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_BAZAAR_ITEM_3] = ItemLocation::Base(0x2C, 0x3A, "Kak Bazaar Item 3", KAK_BAZAAR_ITEM_3, BUY_DEKU_NUT_5, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x33, 2), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_BAZAAR_ITEM_4] = ItemLocation::Base(0x2C, 0x3B, "Kak Bazaar Item 4", KAK_BAZAAR_ITEM_4, BUY_HEART, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x33, 3), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_BAZAAR_ITEM_5] = ItemLocation::Base(0x2C, 0x3C, "Kak Bazaar Item 5", KAK_BAZAAR_ITEM_5, BUY_ARROWS_10, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x33, 4), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_BAZAAR_ITEM_6] = ItemLocation::Base(0x2C, 0x3D, "Kak Bazaar Item 6", KAK_BAZAAR_ITEM_6, BUY_ARROWS_50, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x33, 5), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_BAZAAR_ITEM_7] = ItemLocation::Base(0x2C, 0x3E, "Kak Bazaar Item 7", KAK_BAZAAR_ITEM_7, BUY_DEKU_STICK_1, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x33, 6), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[KAK_BAZAAR_ITEM_8] = ItemLocation::Base(0x2C, 0x3F, "Kak Bazaar Item 8", KAK_BAZAAR_ITEM_8, BUY_ARROWS_30, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x33, 7), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_BAZAAR_ITEM_1] = ItemLocation::Base(RC_KAK_BAZAAR_ITEM_1, 0x2C, 0x38, "Kak Bazaar Item 1", KAK_BAZAAR_ITEM_1, BUY_HYLIAN_SHIELD, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x33, 0), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_BAZAAR_ITEM_2] = ItemLocation::Base(RC_KAK_BAZAAR_ITEM_2, 0x2C, 0x39, "Kak Bazaar Item 2", KAK_BAZAAR_ITEM_2, BUY_BOMBS_535, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x33, 1), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_BAZAAR_ITEM_3] = ItemLocation::Base(RC_KAK_BAZAAR_ITEM_3, 0x2C, 0x3A, "Kak Bazaar Item 3", KAK_BAZAAR_ITEM_3, BUY_DEKU_NUT_5, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x33, 2), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_BAZAAR_ITEM_4] = ItemLocation::Base(RC_KAK_BAZAAR_ITEM_4, 0x2C, 0x3B, "Kak Bazaar Item 4", KAK_BAZAAR_ITEM_4, BUY_HEART, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x33, 3), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_BAZAAR_ITEM_5] = ItemLocation::Base(RC_KAK_BAZAAR_ITEM_5, 0x2C, 0x3C, "Kak Bazaar Item 5", KAK_BAZAAR_ITEM_5, BUY_ARROWS_10, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x33, 4), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_BAZAAR_ITEM_6] = ItemLocation::Base(RC_KAK_BAZAAR_ITEM_6, 0x2C, 0x3D, "Kak Bazaar Item 6", KAK_BAZAAR_ITEM_6, BUY_ARROWS_50, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x33, 5), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_BAZAAR_ITEM_7] = ItemLocation::Base(RC_KAK_BAZAAR_ITEM_7, 0x2C, 0x3E, "Kak Bazaar Item 7", KAK_BAZAAR_ITEM_7, BUY_DEKU_STICK_1, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x33, 6), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); + locationTable[KAK_BAZAAR_ITEM_8] = ItemLocation::Base(RC_KAK_BAZAAR_ITEM_8, 0x2C, 0x3F, "Kak Bazaar Item 8", KAK_BAZAAR_ITEM_8, BUY_ARROWS_30, {Category::cKakarikoVillage, Category::cKakariko, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x33, 7), SpoilerCollectionCheckGroup::GROUP_KAKARIKO); - locationTable[ZD_SHOP_ITEM_1] = ItemLocation::Base(0x2F, 0x30, "ZD Shop Item 1", ZD_SHOP_ITEM_1, BUY_ZORA_TUNIC, {Category::cZorasDomain, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2F, 0), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); - locationTable[ZD_SHOP_ITEM_2] = ItemLocation::Base(0x2F, 0x31, "ZD Shop Item 2", ZD_SHOP_ITEM_2, BUY_ARROWS_10, {Category::cZorasDomain, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2F, 1), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); - locationTable[ZD_SHOP_ITEM_3] = ItemLocation::Base(0x2F, 0x32, "ZD Shop Item 3", ZD_SHOP_ITEM_3, BUY_HEART, {Category::cZorasDomain, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2F, 2), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); - locationTable[ZD_SHOP_ITEM_4] = ItemLocation::Base(0x2F, 0x33, "ZD Shop Item 4", ZD_SHOP_ITEM_4, BUY_ARROWS_30, {Category::cZorasDomain, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2F, 3), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); - locationTable[ZD_SHOP_ITEM_5] = ItemLocation::Base(0x2F, 0x34, "ZD Shop Item 5", ZD_SHOP_ITEM_5, BUY_DEKU_NUT_5, {Category::cZorasDomain, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2F, 4), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); - locationTable[ZD_SHOP_ITEM_6] = ItemLocation::Base(0x2F, 0x35, "ZD Shop Item 6", ZD_SHOP_ITEM_6, BUY_ARROWS_50, {Category::cZorasDomain, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2F, 5), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); - locationTable[ZD_SHOP_ITEM_7] = ItemLocation::Base(0x2F, 0x36, "ZD Shop Item 7", ZD_SHOP_ITEM_7, BUY_FISH, {Category::cZorasDomain, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2F, 6), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); - locationTable[ZD_SHOP_ITEM_8] = ItemLocation::Base(0x2F, 0x37, "ZD Shop Item 8", ZD_SHOP_ITEM_8, BUY_RED_POTION_50, {Category::cZorasDomain, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2F, 7), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); + locationTable[ZD_SHOP_ITEM_1] = ItemLocation::Base(RC_ZD_SHOP_ITEM_1, 0x2F, 0x30, "ZD Shop Item 1", ZD_SHOP_ITEM_1, BUY_ZORA_TUNIC, {Category::cZorasDomain, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2F, 0), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); + locationTable[ZD_SHOP_ITEM_2] = ItemLocation::Base(RC_ZD_SHOP_ITEM_2, 0x2F, 0x31, "ZD Shop Item 2", ZD_SHOP_ITEM_2, BUY_ARROWS_10, {Category::cZorasDomain, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2F, 1), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); + locationTable[ZD_SHOP_ITEM_3] = ItemLocation::Base(RC_ZD_SHOP_ITEM_3, 0x2F, 0x32, "ZD Shop Item 3", ZD_SHOP_ITEM_3, BUY_HEART, {Category::cZorasDomain, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2F, 2), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); + locationTable[ZD_SHOP_ITEM_4] = ItemLocation::Base(RC_ZD_SHOP_ITEM_4, 0x2F, 0x33, "ZD Shop Item 4", ZD_SHOP_ITEM_4, BUY_ARROWS_30, {Category::cZorasDomain, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2F, 3), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); + locationTable[ZD_SHOP_ITEM_5] = ItemLocation::Base(RC_ZD_SHOP_ITEM_5, 0x2F, 0x34, "ZD Shop Item 5", ZD_SHOP_ITEM_5, BUY_DEKU_NUT_5, {Category::cZorasDomain, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2F, 4), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); + locationTable[ZD_SHOP_ITEM_6] = ItemLocation::Base(RC_ZD_SHOP_ITEM_6, 0x2F, 0x35, "ZD Shop Item 6", ZD_SHOP_ITEM_6, BUY_ARROWS_50, {Category::cZorasDomain, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2F, 5), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); + locationTable[ZD_SHOP_ITEM_7] = ItemLocation::Base(RC_ZD_SHOP_ITEM_7, 0x2F, 0x36, "ZD Shop Item 7", ZD_SHOP_ITEM_7, BUY_FISH, {Category::cZorasDomain, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2F, 6), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); + locationTable[ZD_SHOP_ITEM_8] = ItemLocation::Base(RC_ZD_SHOP_ITEM_8, 0x2F, 0x37, "ZD Shop Item 8", ZD_SHOP_ITEM_8, BUY_RED_POTION_50, {Category::cZorasDomain, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2F, 7), SpoilerCollectionCheckGroup::GROUP_ZORAS_DOMAIN); - locationTable[GC_SHOP_ITEM_1] = ItemLocation::Base(0x2E, 0x30, "GC Shop Item 1", GC_SHOP_ITEM_1, BUY_BOMBS_525, {Category::cGoronCity, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2E, 0), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); - locationTable[GC_SHOP_ITEM_2] = ItemLocation::Base(0x2E, 0x31, "GC Shop Item 2", GC_SHOP_ITEM_2, BUY_BOMBS_10, {Category::cGoronCity, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2E, 1), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); - locationTable[GC_SHOP_ITEM_3] = ItemLocation::Base(0x2E, 0x32, "GC Shop Item 3", GC_SHOP_ITEM_3, BUY_BOMBS_20, {Category::cGoronCity, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2E, 2), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); - locationTable[GC_SHOP_ITEM_4] = ItemLocation::Base(0x2E, 0x33, "GC Shop Item 4", GC_SHOP_ITEM_4, BUY_BOMBS_30, {Category::cGoronCity, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2E, 3), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); - locationTable[GC_SHOP_ITEM_5] = ItemLocation::Base(0x2E, 0x34, "GC Shop Item 5", GC_SHOP_ITEM_5, BUY_GORON_TUNIC, {Category::cGoronCity, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2E, 4), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); - locationTable[GC_SHOP_ITEM_6] = ItemLocation::Base(0x2E, 0x35, "GC Shop Item 6", GC_SHOP_ITEM_6, BUY_HEART, {Category::cGoronCity, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2E, 5), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); - locationTable[GC_SHOP_ITEM_7] = ItemLocation::Base(0x2E, 0x36, "GC Shop Item 7", GC_SHOP_ITEM_7, BUY_RED_POTION_40, {Category::cGoronCity, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2E, 6), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); - locationTable[GC_SHOP_ITEM_8] = ItemLocation::Base(0x2E, 0x37, "GC Shop Item 8", GC_SHOP_ITEM_8, BUY_HEART, {Category::cGoronCity, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2E, 7), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); + locationTable[GC_SHOP_ITEM_1] = ItemLocation::Base(RC_GC_SHOP_ITEM_1, 0x2E, 0x30, "GC Shop Item 1", GC_SHOP_ITEM_1, BUY_BOMBS_525, {Category::cGoronCity, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2E, 0), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); + locationTable[GC_SHOP_ITEM_2] = ItemLocation::Base(RC_GC_SHOP_ITEM_2, 0x2E, 0x31, "GC Shop Item 2", GC_SHOP_ITEM_2, BUY_BOMBS_10, {Category::cGoronCity, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2E, 1), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); + locationTable[GC_SHOP_ITEM_3] = ItemLocation::Base(RC_GC_SHOP_ITEM_3, 0x2E, 0x32, "GC Shop Item 3", GC_SHOP_ITEM_3, BUY_BOMBS_20, {Category::cGoronCity, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2E, 2), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); + locationTable[GC_SHOP_ITEM_4] = ItemLocation::Base(RC_GC_SHOP_ITEM_4, 0x2E, 0x33, "GC Shop Item 4", GC_SHOP_ITEM_4, BUY_BOMBS_30, {Category::cGoronCity, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2E, 3), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); + locationTable[GC_SHOP_ITEM_5] = ItemLocation::Base(RC_GC_SHOP_ITEM_5, 0x2E, 0x34, "GC Shop Item 5", GC_SHOP_ITEM_5, BUY_GORON_TUNIC, {Category::cGoronCity, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2E, 4), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); + locationTable[GC_SHOP_ITEM_6] = ItemLocation::Base(RC_GC_SHOP_ITEM_6, 0x2E, 0x35, "GC Shop Item 6", GC_SHOP_ITEM_6, BUY_HEART, {Category::cGoronCity, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2E, 5), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); + locationTable[GC_SHOP_ITEM_7] = ItemLocation::Base(RC_GC_SHOP_ITEM_7, 0x2E, 0x36, "GC Shop Item 7", GC_SHOP_ITEM_7, BUY_RED_POTION_40, {Category::cGoronCity, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2E, 6), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); + locationTable[GC_SHOP_ITEM_8] = ItemLocation::Base(RC_GC_SHOP_ITEM_8, 0x2E, 0x37, "GC Shop Item 8", GC_SHOP_ITEM_8, BUY_HEART, {Category::cGoronCity, Category::cShop}, SpoilerCollectionCheck::ShopItem(0x2E, 7), SpoilerCollectionCheckGroup::GROUP_GORON_CITY); /*------------------------------- --- GOSSIP STONES --- -------------------------------*/ // These are not actual locations, but are filler spots used for hint reachability. - OoT Randomizer // flag + 0x400 = message ID - locationTable[DMC_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x05, "DMC Gossip Stone", {}); - locationTable[DMT_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x04, "DMT Gossip Stone", {}); - locationTable[COLOSSUS_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x1A, "Colossus Gossip Stone", {}); - locationTable[DODONGOS_CAVERN_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x14, "Dodongo's Cavern Gossip Stone", {}); - locationTable[GV_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x11, "GV Gossip Stone", {}); - locationTable[GC_MAZE_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x15, "GC Maze Gossip Stone", {}); - locationTable[GC_MEDIGORON_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x19, "GC Medigoron Gossip Stone", {}); - locationTable[GRAVEYARD_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x0A, "GY Gossip Stone", {}); - locationTable[HC_MALON_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x12, "HC Malon Gossip Stone", {}); - locationTable[HC_ROCK_WALL_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x0B, "HC Rock Wall Gossip Stone", {}); - locationTable[HC_STORMS_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x13, "HC Storms Grotto Gossip Stone", {}); - locationTable[KF_DEKU_TREE_GOSSIP_STONE_LEFT] = ItemLocation::HintStone(0x00, 0x1F, "KF Deku Tree Left Gossip Stone", {}); - locationTable[KF_DEKU_TREE_GOSSIP_STONE_RIGHT] = ItemLocation::HintStone(0x00, 0x20, "KF Deku Tree Right Gossip Stone", {}); - locationTable[KF_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x1E, "KF Gossip Stone", {}); - locationTable[LH_LAB_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x03, "LH Lab Gossip Stone", {}); - locationTable[LH_GOSSIP_STONE_SOUTHEAST] = ItemLocation::HintStone(0x00, 0x0F, "LH Southeast Gossip Stone", {}); - locationTable[LH_GOSSIP_STONE_SOUTHWEST] = ItemLocation::HintStone(0x00, 0x08, "LH Southwest Gossip Stone", {}); - locationTable[LW_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x1D, "LW Gossip Stone", {}); - locationTable[SFM_MAZE_GOSSIP_STONE_LOWER] = ItemLocation::HintStone(0x00, 0x16, "SFM Maze Lower Gossip Stone", {}); - locationTable[SFM_MAZE_GOSSIP_STONE_UPPER] = ItemLocation::HintStone(0x00, 0x17, "SFM Maze Upper Gossip Stone", {}); - locationTable[SFM_SARIA_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x1C, "SFM Saria Gossip Stone", {}); - locationTable[TOT_GOSSIP_STONE_LEFT] = ItemLocation::HintStone(0x00, 0x06, "ToT Left Gossip Stone", {}); - locationTable[TOT_GOSSIP_STONE_RIGHT] = ItemLocation::HintStone(0x00, 0x07, "ToT Left Center Gossip Stone", {}); - locationTable[TOT_GOSSIP_STONE_RIGHT_CENTER] = ItemLocation::HintStone(0x00, 0x10, "ToT Right Center Gossip Stone", {}); - locationTable[TOT_GOSSIP_STONE_LEFT_CENTER] = ItemLocation::HintStone(0x00, 0x0E, "ToT Right Gossip Stone", {}); - locationTable[ZD_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x09, "ZD Gossip Stone", {}); - locationTable[ZF_FAIRY_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x01, "Fairy Gossip Stone", {}); - locationTable[ZF_JABU_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x02, "Jabu Gossip Stone", {}); - locationTable[ZR_NEAR_GROTTOS_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x0D, "ZR Near Grottos Gossip Stone", {}); - locationTable[ZR_NEAR_DOMAIN_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x0C, "ZR Near Domain Gossip Stone", {}); - locationTable[HF_COW_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x1B, "HF Cow Grotto Gossip Stone", {}); + locationTable[DMC_GOSSIP_STONE] = ItemLocation::HintStone(RC_DMC_GOSSIP_STONE, 0x00, 0x05, "DMC Gossip Stone", {}); + locationTable[DMT_GOSSIP_STONE] = ItemLocation::HintStone(RC_DMT_GOSSIP_STONE, 0x00, 0x04, "DMT Gossip Stone", {}); + locationTable[COLOSSUS_GOSSIP_STONE] = ItemLocation::HintStone(RC_COLOSSUS_GOSSIP_STONE, 0x00, 0x1A, "Colossus Gossip Stone", {}); + locationTable[DODONGOS_CAVERN_GOSSIP_STONE] = ItemLocation::HintStone(RC_DODONGOS_CAVERN_GOSSIP_STONE, 0x00, 0x14, "Dodongo's Cavern Gossip Stone", {}); + locationTable[GV_GOSSIP_STONE] = ItemLocation::HintStone(RC_GV_GOSSIP_STONE, 0x00, 0x11, "GV Gossip Stone", {}); + locationTable[GC_MAZE_GOSSIP_STONE] = ItemLocation::HintStone(RC_GC_MAZE_GOSSIP_STONE, 0x00, 0x15, "GC Maze Gossip Stone", {}); + locationTable[GC_MEDIGORON_GOSSIP_STONE] = ItemLocation::HintStone(RC_GC_MEDIGORON_GOSSIP_STONE, 0x00, 0x19, "GC Medigoron Gossip Stone", {}); + locationTable[GRAVEYARD_GOSSIP_STONE] = ItemLocation::HintStone(RC_GY_GOSSIP_STONE, 0x00, 0x0A, "GY Gossip Stone", {}); + locationTable[HC_MALON_GOSSIP_STONE] = ItemLocation::HintStone(RC_HC_MALON_GOSSIP_STONE, 0x00, 0x12, "HC Malon Gossip Stone", {}); + locationTable[HC_ROCK_WALL_GOSSIP_STONE] = ItemLocation::HintStone(RC_HC_ROCK_WALL_GOSSIP_STONE, 0x00, 0x0B, "HC Rock Wall Gossip Stone", {}); + locationTable[HC_STORMS_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(RC_HC_STORMS_GROTTO_GOSSIP_STONE, 0x00, 0x13, "HC Storms Grotto Gossip Stone", {}); + locationTable[KF_DEKU_TREE_GOSSIP_STONE_LEFT] = ItemLocation::HintStone(RC_KF_DEKU_TREE_LEFT_GOSSIP_STONE, 0x00, 0x1F, "KF Deku Tree Left Gossip Stone", {}); + locationTable[KF_DEKU_TREE_GOSSIP_STONE_RIGHT] = ItemLocation::HintStone(RC_KF_DEKU_TREE_RIGHT_GOSSIP_STONE, 0x00, 0x20, "KF Deku Tree Right Gossip Stone", {}); + locationTable[KF_GOSSIP_STONE] = ItemLocation::HintStone(RC_KF_GOSSIP_STONE, 0x00, 0x1E, "KF Gossip Stone", {}); + locationTable[LH_LAB_GOSSIP_STONE] = ItemLocation::HintStone(RC_LH_LAB_GOSSIP_STONE, 0x00, 0x03, "LH Lab Gossip Stone", {}); + locationTable[LH_GOSSIP_STONE_SOUTHEAST] = ItemLocation::HintStone(RC_LH_SOUTHEAST_GOSSIP_STONE, 0x00, 0x0F, "LH Southeast Gossip Stone", {}); + locationTable[LH_GOSSIP_STONE_SOUTHWEST] = ItemLocation::HintStone(RC_LH_SOUTHWEST_GOSSIP_STONE, 0x00, 0x08, "LH Southwest Gossip Stone", {}); + locationTable[LW_GOSSIP_STONE] = ItemLocation::HintStone(RC_LW_GOSSIP_STONE, 0x00, 0x1D, "LW Gossip Stone", {}); + locationTable[SFM_MAZE_GOSSIP_STONE_LOWER] = ItemLocation::HintStone(RC_SFM_MAZE_LOWER_GOSSIP_STONE, 0x00, 0x16, "SFM Maze Lower Gossip Stone", {}); + locationTable[SFM_MAZE_GOSSIP_STONE_UPPER] = ItemLocation::HintStone(RC_SFM_MAZE_UPPER_GOSSIP_STONE, 0x00, 0x17, "SFM Maze Upper Gossip Stone", {}); + locationTable[SFM_SARIA_GOSSIP_STONE] = ItemLocation::HintStone(RC_SFM_SARIA_GOSSIP_STONE, 0x00, 0x1C, "SFM Saria Gossip Stone", {}); + locationTable[TOT_GOSSIP_STONE_LEFT] = ItemLocation::HintStone(RC_TOT_LEFT_GOSSIP_STONE, 0x00, 0x06, "ToT Left Gossip Stone", {}); + locationTable[TOT_GOSSIP_STONE_RIGHT] = ItemLocation::HintStone(RC_TOT_RIGHT_GOSSIP_STONE, 0x00, 0x07, "ToT Left Center Gossip Stone", {}); + locationTable[TOT_GOSSIP_STONE_RIGHT_CENTER] = ItemLocation::HintStone(RC_TOT_RIGHT_CENTER_GOSSIP_STONE, 0x00, 0x10, "ToT Right Center Gossip Stone", {}); + locationTable[TOT_GOSSIP_STONE_LEFT_CENTER] = ItemLocation::HintStone(RC_TOT_LEFT_CENTER_GOSSIP_STONE, 0x00, 0x0E, "ToT Right Gossip Stone", {}); + locationTable[ZD_GOSSIP_STONE] = ItemLocation::HintStone(RC_ZD_GOSSIP_STONE, 0x00, 0x09, "ZD Gossip Stone", {}); + locationTable[ZF_FAIRY_GOSSIP_STONE] = ItemLocation::HintStone(RC_FAIRY_GOSSIP_STONE, 0x00, 0x01, "Fairy Gossip Stone", {}); + locationTable[ZF_JABU_GOSSIP_STONE] = ItemLocation::HintStone(RC_JABU_GOSSIP_STONE, 0x00, 0x02, "Jabu Gossip Stone", {}); + locationTable[ZR_NEAR_GROTTOS_GOSSIP_STONE] = ItemLocation::HintStone(RC_ZR_NEAR_GROTTOS_GOSSIP_STONE, 0x00, 0x0D, "ZR Near Grottos Gossip Stone", {}); + locationTable[ZR_NEAR_DOMAIN_GOSSIP_STONE] = ItemLocation::HintStone(RC_ZR_NEAR_DOMAIN_GOSSIP_STONE, 0x00, 0x0C, "ZR Near Domain Gossip Stone", {}); + locationTable[HF_COW_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(RC_HF_COW_GROTTO_GOSSIP_STONE, 0x00, 0x1B, "HF Cow Grotto Gossip Stone", {}); - locationTable[HF_NEAR_MARKET_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x30, "HF Near Market Gossip Stone", {}); - locationTable[HF_SOUTHEAST_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x32, "HF Southeast Gossip Stone", {}); - locationTable[HF_OPEN_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x33, "HF Open Grotto Gossip Stone", {}); - locationTable[KAK_OPEN_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x38, "Kak Open Grotto Gossip Stone", {}); - locationTable[ZR_OPEN_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x39, "ZR Open Grotto Gossip Stone", {}); - locationTable[KF_STORMS_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x3C, "KF Storms Gossip Stone", {}); - locationTable[LW_NEAR_SHORTCUTS_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x34, "LW Near Shortcuts Gossip Stone", {}); - locationTable[DMT_STORMS_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x37, "DMT Storms Grotto Gossip Stone", {}); - locationTable[DMC_UPPER_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(0x00, 0x3A, "DMC Upper Grotto Gossip Stone", {}); + locationTable[HF_NEAR_MARKET_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(RC_HF_NEAR_MARKET_GOSSIP_STONE, 0x00, 0x30, "HF Near Market Gossip Stone", {}); + locationTable[HF_SOUTHEAST_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(RC_HF_SOUTHEAST_GOSSIP_STONE, 0x00, 0x32, "HF Southeast Gossip Stone", {}); + locationTable[HF_OPEN_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(RC_HF_OPEN_GROTTO_GOSSIP_STONE, 0x00, 0x33, "HF Open Grotto Gossip Stone", {}); + locationTable[KAK_OPEN_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(RC_KAK_OPEN_GROTTO_GOSSIP_STONE, 0x00, 0x38, "Kak Open Grotto Gossip Stone", {}); + locationTable[ZR_OPEN_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(RC_ZR_OPEN_GROTTO_GOSSIP_STONE, 0x00, 0x39, "ZR Open Grotto Gossip Stone", {}); + locationTable[KF_STORMS_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(RC_KF_STORMS_GOSSIP_STONE, 0x00, 0x3C, "KF Storms Gossip Stone", {}); + locationTable[LW_NEAR_SHORTCUTS_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(RC_LW_NEAR_SHORTCUTS_GOSSIP_STONE, 0x00, 0x34, "LW Near Shortcuts Gossip Stone", {}); + locationTable[DMT_STORMS_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(RC_DMT_STORMS_GROTTO_GOSSIP_STONE, 0x00, 0x37, "DMT Storms Grotto Gossip Stone", {}); + locationTable[DMC_UPPER_GROTTO_GOSSIP_STONE] = ItemLocation::HintStone(RC_DMC_UPPER_GROTTO_GOSSIP_STONE, 0x00, 0x3A, "DMC Upper Grotto Gossip Stone", {}); - locationTable[GANONDORF_HINT] = ItemLocation::OtherHint(0x00, 0x00, "Ganondorf Hint", {}); + locationTable[GANONDORF_HINT] = ItemLocation::OtherHint(RC_GANONDORF_HINT, 0x00, 0x00, "Ganondorf Hint", {}); } std::vector KF_ShopLocations = { diff --git a/soh/soh/Enhancements/randomizer/3drando/item_location.hpp b/soh/soh/Enhancements/randomizer/3drando/item_location.hpp index 2f6bdc52d..823cd88ef 100644 --- a/soh/soh/Enhancements/randomizer/3drando/item_location.hpp +++ b/soh/soh/Enhancements/randomizer/3drando/item_location.hpp @@ -9,6 +9,7 @@ #include #include "spoiler_log.hpp" #include "item_list.hpp" +#include "../randomizerTypes.h" enum ItemOverride_Type { OVR_BASE_ITEM = 0, @@ -154,8 +155,8 @@ public: class ItemLocation { public: ItemLocation() = default; - ItemLocation(uint8_t scene_, ItemLocationType type_, uint8_t flag_, std::string name_, uint32_t hintKey_, uint32_t vanillaItem_, std::vector categories_, uint16_t price_ = 0, SpoilerCollectionCheck collectionCheck_ = SpoilerCollectionCheck(), SpoilerCollectionCheckGroup collectionCheckGroup_ = SpoilerCollectionCheckGroup::GROUP_NO_GROUP) - : scene(scene_), type(type_), flag(flag_), name(std::move(name_)), hintKey(hintKey_), vanillaItem(vanillaItem_), categories(std::move(categories_)), price(price_), collectionCheck(collectionCheck_), collectionCheckGroup(collectionCheckGroup_) {} + ItemLocation(RandomizerCheck rc_, uint8_t scene_, ItemLocationType type_, uint8_t flag_, std::string name_, uint32_t hintKey_, uint32_t vanillaItem_, std::vector categories_, uint16_t price_ = 0, SpoilerCollectionCheck collectionCheck_ = SpoilerCollectionCheck(), SpoilerCollectionCheckGroup collectionCheckGroup_ = SpoilerCollectionCheckGroup::GROUP_NO_GROUP) + : rc(rc_), scene(scene_), type(type_), flag(flag_), name(std::move(name_)), hintKey(hintKey_), vanillaItem(vanillaItem_), categories(std::move(categories_)), price(price_), collectionCheck(collectionCheck_), collectionCheckGroup(collectionCheckGroup_) {} ItemOverride_Key Key() const { ItemOverride_Key key; @@ -167,6 +168,10 @@ public: return key; } + RandomizerCheck GetRandomizerCheck() const { + return rc; + } + SpoilerCollectionCheck GetCollectionCheck() const { return collectionCheck; } @@ -368,48 +373,48 @@ public: } } - static auto Base(uint8_t scene, uint8_t flag, std::string&& name, const uint32_t hintKey, const uint32_t vanillaItem, std::vector&& categories, SpoilerCollectionCheck collectionCheck = SpoilerCollectionCheck(), SpoilerCollectionCheckGroup collectionCheckGroup = SpoilerCollectionCheckGroup::GROUP_NO_GROUP) { - return ItemLocation{scene, ItemLocationType::Base, flag, std::move(name), hintKey, vanillaItem, std::move(categories), 0, collectionCheck, collectionCheckGroup}; + static auto Base(RandomizerCheck rc, uint8_t scene, uint8_t flag, std::string&& name, const uint32_t hintKey, const uint32_t vanillaItem, std::vector&& categories, SpoilerCollectionCheck collectionCheck = SpoilerCollectionCheck(), SpoilerCollectionCheckGroup collectionCheckGroup = SpoilerCollectionCheckGroup::GROUP_NO_GROUP) { + return ItemLocation{rc, scene, ItemLocationType::Base, flag, std::move(name), hintKey, vanillaItem, std::move(categories), 0, collectionCheck, collectionCheckGroup}; } - static auto Chest(uint8_t scene, uint8_t flag, std::string&& name, const uint32_t hintKey, const uint32_t vanillaItem, std::vector&& categories, SpoilerCollectionCheckGroup collectionCheckGroup = SpoilerCollectionCheckGroup::GROUP_NO_GROUP) { - return ItemLocation{scene, ItemLocationType::Chest, flag, std::move(name), hintKey, vanillaItem, std::move(categories), 0, SpoilerCollectionCheck(SpoilerCollectionCheckType::SPOILER_CHK_CHEST, scene, flag), collectionCheckGroup}; + static auto Chest(RandomizerCheck rc, uint8_t scene, uint8_t flag, std::string&& name, const uint32_t hintKey, const uint32_t vanillaItem, std::vector&& categories, SpoilerCollectionCheckGroup collectionCheckGroup = SpoilerCollectionCheckGroup::GROUP_NO_GROUP) { + return ItemLocation{rc, scene, ItemLocationType::Chest, flag, std::move(name), hintKey, vanillaItem, std::move(categories), 0, SpoilerCollectionCheck(SpoilerCollectionCheckType::SPOILER_CHK_CHEST, scene, flag), collectionCheckGroup}; } - static auto Chest(uint8_t scene, uint8_t flag, std::string&& name, const uint32_t hintKey, const uint32_t vanillaItem, std::vector&& categories, SpoilerCollectionCheck collectionCheck, SpoilerCollectionCheckGroup collectionCheckGroup = SpoilerCollectionCheckGroup::GROUP_NO_GROUP) { - return ItemLocation{scene, ItemLocationType::Chest, flag, std::move(name), hintKey, vanillaItem, std::move(categories), 0, collectionCheck, collectionCheckGroup}; + static auto Chest(RandomizerCheck rc, uint8_t scene, uint8_t flag, std::string&& name, const uint32_t hintKey, const uint32_t vanillaItem, std::vector&& categories, SpoilerCollectionCheck collectionCheck, SpoilerCollectionCheckGroup collectionCheckGroup = SpoilerCollectionCheckGroup::GROUP_NO_GROUP) { + return ItemLocation{rc, scene, ItemLocationType::Chest, flag, std::move(name), hintKey, vanillaItem, std::move(categories), 0, collectionCheck, collectionCheckGroup}; } - static auto Collectable(uint8_t scene, uint8_t flag, std::string&& name, const uint32_t hintKey, const uint32_t vanillaItem, std::vector&& categories, SpoilerCollectionCheckGroup collectionCheckGroup = SpoilerCollectionCheckGroup::GROUP_NO_GROUP) { - return ItemLocation{scene, ItemLocationType::Collectable, flag, std::move(name), hintKey, vanillaItem, std::move(categories), 0, SpoilerCollectionCheck(SpoilerCollectionCheckType::SPOILER_CHK_COLLECTABLE, scene, flag), collectionCheckGroup}; + static auto Collectable(RandomizerCheck rc, uint8_t scene, uint8_t flag, std::string&& name, const uint32_t hintKey, const uint32_t vanillaItem, std::vector&& categories, SpoilerCollectionCheckGroup collectionCheckGroup = SpoilerCollectionCheckGroup::GROUP_NO_GROUP) { + return ItemLocation{rc, scene, ItemLocationType::Collectable, flag, std::move(name), hintKey, vanillaItem, std::move(categories), 0, SpoilerCollectionCheck(SpoilerCollectionCheckType::SPOILER_CHK_COLLECTABLE, scene, flag), collectionCheckGroup}; } - static auto Collectable(uint8_t scene, uint8_t flag, std::string&& name, const uint32_t hintKey, const uint32_t vanillaItem, std::vector&& categories, SpoilerCollectionCheck collectionCheck, SpoilerCollectionCheckGroup collectionCheckGroup = SpoilerCollectionCheckGroup::GROUP_NO_GROUP) { - return ItemLocation{scene, ItemLocationType::Collectable, flag, std::move(name), hintKey, vanillaItem, std::move(categories), 0, collectionCheck, collectionCheckGroup}; + static auto Collectable(RandomizerCheck rc, uint8_t scene, uint8_t flag, std::string&& name, const uint32_t hintKey, const uint32_t vanillaItem, std::vector&& categories, SpoilerCollectionCheck collectionCheck, SpoilerCollectionCheckGroup collectionCheckGroup = SpoilerCollectionCheckGroup::GROUP_NO_GROUP) { + return ItemLocation{rc, scene, ItemLocationType::Collectable, flag, std::move(name), hintKey, vanillaItem, std::move(categories), 0, collectionCheck, collectionCheckGroup}; } - static auto GSToken(uint8_t scene, uint8_t flag, std::string&& name, const uint32_t hintKey, std::vector&& categories, SpoilerCollectionCheckGroup collectionCheckGroup = SpoilerCollectionCheckGroup::GROUP_NO_GROUP) { - return ItemLocation{scene, ItemLocationType::GSToken, flag, std::move(name), hintKey, GOLD_SKULLTULA_TOKEN, std::move(categories), 0, SpoilerCollectionCheck(SpoilerCollectionCheckType::SPOILER_CHK_GOLD_SKULLTULA, scene, flag), collectionCheckGroup}; + static auto GSToken(RandomizerCheck rc, uint8_t scene, uint8_t flag, std::string&& name, const uint32_t hintKey, std::vector&& categories, SpoilerCollectionCheckGroup collectionCheckGroup = SpoilerCollectionCheckGroup::GROUP_NO_GROUP) { + return ItemLocation{rc, scene, ItemLocationType::GSToken, flag, std::move(name), hintKey, GOLD_SKULLTULA_TOKEN, std::move(categories), 0, SpoilerCollectionCheck(SpoilerCollectionCheckType::SPOILER_CHK_GOLD_SKULLTULA, scene, flag), collectionCheckGroup}; } - static auto GrottoScrub(uint8_t scene, uint8_t flag, std::string&& name, const uint32_t hintKey, const uint32_t vanillaItem, std::vector&& categories, SpoilerCollectionCheck collectionCheck = SpoilerCollectionCheck(), SpoilerCollectionCheckGroup collectionCheckGroup = SpoilerCollectionCheckGroup::GROUP_NO_GROUP) { - return ItemLocation{scene, ItemLocationType::GrottoScrub, flag, std::move(name), hintKey, vanillaItem, std::move(categories), 0, collectionCheck, collectionCheckGroup}; + static auto GrottoScrub(RandomizerCheck rc, uint8_t scene, uint8_t flag, std::string&& name, const uint32_t hintKey, const uint32_t vanillaItem, std::vector&& categories, SpoilerCollectionCheck collectionCheck = SpoilerCollectionCheck(), SpoilerCollectionCheckGroup collectionCheckGroup = SpoilerCollectionCheckGroup::GROUP_NO_GROUP) { + return ItemLocation{rc, scene, ItemLocationType::GrottoScrub, flag, std::move(name), hintKey, vanillaItem, std::move(categories), 0, collectionCheck, collectionCheckGroup}; } - static auto Delayed(uint8_t scene, uint8_t flag, std::string&& name, const uint32_t hintKey, const uint32_t vanillaItem, std::vector&& categories, SpoilerCollectionCheck collectionCheck = SpoilerCollectionCheck(), SpoilerCollectionCheckGroup collectionCheckGroup = SpoilerCollectionCheckGroup::GROUP_NO_GROUP) { - return ItemLocation{scene, ItemLocationType::Delayed, flag, std::move(name), hintKey, vanillaItem, std::move(categories), 0, collectionCheck, collectionCheckGroup}; + static auto Delayed(RandomizerCheck rc, uint8_t scene, uint8_t flag, std::string&& name, const uint32_t hintKey, const uint32_t vanillaItem, std::vector&& categories, SpoilerCollectionCheck collectionCheck = SpoilerCollectionCheck(), SpoilerCollectionCheckGroup collectionCheckGroup = SpoilerCollectionCheckGroup::GROUP_NO_GROUP) { + return ItemLocation{rc, scene, ItemLocationType::Delayed, flag, std::move(name), hintKey, vanillaItem, std::move(categories), 0, collectionCheck, collectionCheckGroup}; } - static auto Reward(uint8_t scene, uint8_t flag, std::string&& name, const uint32_t hintKey, const uint32_t vanillaItem, std::vector&& categories, SpoilerCollectionCheck collectionCheck = SpoilerCollectionCheck(), SpoilerCollectionCheckGroup collectionCheckGroup = SpoilerCollectionCheckGroup::GROUP_NO_GROUP) { - return ItemLocation{scene, ItemLocationType::TempleReward, flag, std::move(name), hintKey, vanillaItem, std::move(categories), 0, collectionCheck, collectionCheckGroup}; + static auto Reward(RandomizerCheck rc, uint8_t scene, uint8_t flag, std::string&& name, const uint32_t hintKey, const uint32_t vanillaItem, std::vector&& categories, SpoilerCollectionCheck collectionCheck = SpoilerCollectionCheck(), SpoilerCollectionCheckGroup collectionCheckGroup = SpoilerCollectionCheckGroup::GROUP_NO_GROUP) { + return ItemLocation{rc, scene, ItemLocationType::TempleReward, flag, std::move(name), hintKey, vanillaItem, std::move(categories), 0, collectionCheck, collectionCheckGroup}; } - static auto OtherHint(uint8_t scene, uint8_t flag, std::string&& name, std::vector&& categories) { - return ItemLocation{scene, ItemLocationType::OtherHint, flag, std::move(name), NONE, NONE, std::move(categories)}; + static auto OtherHint(RandomizerCheck rc, uint8_t scene, uint8_t flag, std::string&& name, std::vector&& categories) { + return ItemLocation{rc, scene, ItemLocationType::OtherHint, flag, std::move(name), NONE, NONE, std::move(categories)}; } - static auto HintStone(uint8_t scene, uint8_t flag, std::string&& name, std::vector&& categories) { - return ItemLocation{scene, ItemLocationType::HintStone, flag, std::move(name), NONE, NONE, std::move(categories)}; + static auto HintStone(RandomizerCheck rc, uint8_t scene, uint8_t flag, std::string&& name, std::vector&& categories) { + return ItemLocation{rc, scene, ItemLocationType::HintStone, flag, std::move(name), NONE, NONE, std::move(categories)}; } void ResetVariables() { @@ -425,6 +430,7 @@ public: } private: + RandomizerCheck rc; uint8_t scene; ItemLocationType type; uint8_t flag; diff --git a/soh/soh/Enhancements/randomizer/3drando/menu.cpp b/soh/soh/Enhancements/randomizer/3drando/menu.cpp index f7699b754..4f0d7b7d5 100644 --- a/soh/soh/Enhancements/randomizer/3drando/menu.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/menu.cpp @@ -516,12 +516,12 @@ void PrintOptionDescription() { printf("\x1b[22;0H%s", description.data()); } -std::string GenerateRandomizer(std::unordered_map cvarSettings) { +std::string GenerateRandomizer(std::unordered_map cvarSettings, std::set excludedLocations) { // if a blank seed was entered, make a random one srand(time(NULL)); Settings::seed = std::to_string(rand()); - int ret = Playthrough::Playthrough_Init(std::hash{}(Settings::seed), cvarSettings); + int ret = Playthrough::Playthrough_Init(std::hash{}(Settings::seed), cvarSettings, excludedLocations); if (ret < 0) { if (ret == -1) { // Failed to generate after 5 tries printf("\n\nFailed to generate after 5 tries.\nPress B to go back to the menu.\nA different seed might be " diff --git a/soh/soh/Enhancements/randomizer/3drando/menu.hpp b/soh/soh/Enhancements/randomizer/3drando/menu.hpp index 737c1d3cf..6be641f03 100644 --- a/soh/soh/Enhancements/randomizer/3drando/menu.hpp +++ b/soh/soh/Enhancements/randomizer/3drando/menu.hpp @@ -2,6 +2,7 @@ #include #include +#include #include "soh/Enhancements/randomizer/randomizerTypes.h" #define MAIN_MENU 0 @@ -45,7 +46,7 @@ void PrintResetToDefaultsMenu(); void PrintGenerateMenu(); void ClearDescription(); void PrintOptionDescription(); -std::string GenerateRandomizer(std::unordered_map cvarSettings); +std::string GenerateRandomizer(std::unordered_map cvarSetting, std::set excludedLocations); std::string GetInput(const char* hintText); extern void MenuInit(); diff --git a/soh/soh/Enhancements/randomizer/3drando/playthrough.cpp b/soh/soh/Enhancements/randomizer/3drando/playthrough.cpp index cfcbdfa91..ee1a86424 100644 --- a/soh/soh/Enhancements/randomizer/3drando/playthrough.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/playthrough.cpp @@ -10,7 +10,7 @@ namespace Playthrough { -int Playthrough_Init(uint32_t seed, std::unordered_map cvarSettings) { +int Playthrough_Init(uint32_t seed, std::unordered_map cvarSettings, std::set excludedLocations) { // initialize the RNG with just the seed incase any settings need to be // resolved to something random Random_Init(seed); @@ -21,7 +21,7 @@ int Playthrough_Init(uint32_t seed, std::unordered_map cvarSettings); +int Playthrough_Init(uint32_t seed, std::unordered_map cvarSettings, std::set excludedLocations); int Playthrough_Repeat(int count = 1); } diff --git a/soh/soh/Enhancements/randomizer/3drando/rando_main.cpp b/soh/soh/Enhancements/randomizer/3drando/rando_main.cpp index 5fb1b34c5..56e84dd1e 100644 --- a/soh/soh/Enhancements/randomizer/3drando/rando_main.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/rando_main.cpp @@ -13,7 +13,7 @@ #define TICKS_PER_SEC 268123480.0 -void RandoMain::GenerateRando(std::unordered_map cvarSettings) { +void RandoMain::GenerateRando(std::unordered_map cvarSettings, std::set excludedLocations) { HintTable_Init(); ItemTable_Init(); LocationTable_Init(); @@ -21,7 +21,7 @@ void RandoMain::GenerateRando(std::unordered_map cvarS // std::string settingsFileName = "./randomizer/latest_settings.json"; // CVar_SetString("gLoadedPreset", settingsFileName.c_str()); - std::string fileName = Ship::GlobalCtx2::GetPathRelativeToAppDirectory(GenerateRandomizer(cvarSettings).c_str()); + std::string fileName = Ship::GlobalCtx2::GetPathRelativeToAppDirectory(GenerateRandomizer(cvarSettings, excludedLocations).c_str()); CVar_SetString("gSpoilerLog", fileName.c_str()); CVar_Save(); diff --git a/soh/soh/Enhancements/randomizer/3drando/rando_main.hpp b/soh/soh/Enhancements/randomizer/3drando/rando_main.hpp index 523620d1e..b70762cf7 100644 --- a/soh/soh/Enhancements/randomizer/3drando/rando_main.hpp +++ b/soh/soh/Enhancements/randomizer/3drando/rando_main.hpp @@ -1,5 +1,5 @@ #pragma once namespace RandoMain { -void GenerateRando(std::unordered_map cvarSettings); +void GenerateRando(std::unordered_map cvarSettings, std::set excludedLocations); } diff --git a/soh/soh/Enhancements/randomizer/3drando/settings.cpp b/soh/soh/Enhancements/randomizer/3drando/settings.cpp index 71aa70b32..51eaff18b 100644 --- a/soh/soh/Enhancements/randomizer/3drando/settings.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/settings.cpp @@ -2483,7 +2483,7 @@ namespace Settings { } //Function to set flags depending on settings - void UpdateSettings(std::unordered_map cvarSettings) { + void UpdateSettings(std::unordered_map cvarSettings, std::set excludedLocations) { // RANDTODO: Switch this back once all logic options are implemented // Logic.SetSelectedIndex(cvarSettings[RSK_LOGIC_RULES]); @@ -2496,6 +2496,16 @@ namespace Settings { break; } + AddExcludedOptions(); + for (auto locationKey : everyPossibleLocation) { + auto location = Location(locationKey); + if (excludedLocations.count(location->GetRandomizerCheck())) { + location->GetExcludedOption()->SetSelectedIndex(1); + } else { + location->GetExcludedOption()->SetSelectedIndex(0); + } + } + OpenForest.SetSelectedIndex(cvarSettings[RSK_FOREST]); OpenKakariko.SetSelectedIndex(cvarSettings[RSK_KAK_GATE]); ZorasFountain.SetSelectedIndex(cvarSettings[RSK_ZORAS_FOUNTAIN]); @@ -2581,31 +2591,6 @@ namespace Settings { // RANDOTODO implement chest shuffle with keysanity // ShuffleChestMinigame.SetSelectedIndex(cvarSettings[RSK_SHUFFLE_CHEST_MINIGAME]); - - AddExcludedOptions(); - for (size_t i = 1; i < Settings::excludeLocationsOptionsVector.size(); i++) { - for (const auto& location : Settings::excludeLocationsOptionsVector[i]) { - // RANDOTODO implement the ability to exclude any location - if (location->GetName() == "Deku Theater Mask of\n Truth") { - location->SetSelectedIndex(cvarSettings[RSK_EXCLUDE_DEKU_THEATER_MASK_OF_TRUTH]); - } - if (location->GetName() == "Kak 10 Gold Skulltula\n Reward") { - location->SetSelectedIndex(cvarSettings[RSK_EXCLUDE_KAK_10_GOLD_SKULLTULA_REWARD]); - } - if (location->GetName() == "Kak 20 Gold Skulltula\n Reward") { - location->SetSelectedIndex(cvarSettings[RSK_EXCLUDE_KAK_20_GOLD_SKULLTULA_REWARD]); - } - if (location->GetName() == "Kak 30 Gold Skulltula\n Reward") { - location->SetSelectedIndex(cvarSettings[RSK_EXCLUDE_KAK_30_GOLD_SKULLTULA_REWARD]); - } - if (location->GetName() == "Kak 40 Gold Skulltula\n Reward") { - location->SetSelectedIndex(cvarSettings[RSK_EXCLUDE_KAK_40_GOLD_SKULLTULA_REWARD]); - } - if (location->GetName() == "Kak 50 Gold Skulltula\n Reward") { - location->SetSelectedIndex(cvarSettings[RSK_EXCLUDE_KAK_50_GOLD_SKULLTULA_REWARD]); - } - } - } RandomizeAllSettings(true); //now select any random options instead of just hiding them diff --git a/soh/soh/Enhancements/randomizer/3drando/settings.hpp b/soh/soh/Enhancements/randomizer/3drando/settings.hpp index 06ec9da1c..2daf1fa7f 100644 --- a/soh/soh/Enhancements/randomizer/3drando/settings.hpp +++ b/soh/soh/Enhancements/randomizer/3drando/settings.hpp @@ -850,7 +850,7 @@ class Menu { }; namespace Settings { -void UpdateSettings(std::unordered_map cvarSettings); +void UpdateSettings(std::unordered_map cvarSettings, std::set excludedLocations); SettingsContext FillContext(); void InitSettings(); void SetDefaultSettings(); diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index ca86793cc..2891bea1e 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -16,11 +16,15 @@ #include "Lib/ImGui/imgui_internal.h" #include #include +#include "randomizer_check_objects.h" +#include using json = nlohmann::json; using namespace std::literals::string_literals; std::unordered_map gSeedTextures; +std::unordered_map SpoilerfileCheckNameToEnum; +std::set excludedLocations; u8 generated; @@ -58,6 +62,14 @@ Randomizer::Randomizer() { Sprite ootOcarinaSprite = { dgOcarinaofTimeIconTex, 32, 32, G_IM_FMT_RGBA, G_IM_SIZ_32b, 9 }; gSeedTextures[9] = ootOcarinaSprite; + + for (auto areaIt : RandomizerCheckObjects::GetAllRCObjects()) { + for (auto locationIt : areaIt.second) { + SpoilerfileCheckNameToEnum[locationIt.rcSpoilerName] = locationIt.rc; + } + SpoilerfileCheckNameToEnum["Invalid Location"] = RC_UNKNOWN_CHECK; + SpoilerfileCheckNameToEnum["Link's Pocket"] = RC_LINKS_POCKET; + } } Sprite* Randomizer::GetSeedTexture(uint8_t index) { @@ -69,749 +81,6 @@ Randomizer::~Randomizer() { this->itemLocations.clear(); } -std::unordered_map SpoilerfileCheckNameToEnum = { - { "Invalid Location", RC_UNKNOWN_CHECK }, - { "KF Kokiri Sword Chest", RC_KF_KOKIRI_SWORD_CHEST }, - { "KF Mido Top Left Chest", RC_KF_MIDOS_TOP_LEFT_CHEST }, - { "KF Mido Top Right Chest", RC_KF_MIDOS_TOP_RIGHT_CHEST }, - { "KF Mido Bottom Left Chest", RC_KF_MIDOS_BOTTOM_LEFT_CHEST }, - { "KF Mido Bottom Right Chest", RC_KF_MIDOS_BOTTOM_RIGHT_CHEST }, - { "KF Storms Grotto Chest", RC_KF_STORMS_GROTTO_CHEST }, - { "LW Near Shortcuts Grotto Chest", RC_LW_NEAR_SHORTCUTS_GROTTO_CHEST }, - { "LW Skull Kid", RC_LW_SKULL_KID }, - { "LW Trade Cojiro", RC_LW_TRADE_COJIRO }, - { "LW Trade Odd Potion", RC_LW_TRADE_ODD_POTION }, - { "LW Ocarina Memory Game", RC_LW_OCARINA_MEMORY_GAME }, - { "LW Target in Woods", RC_LW_TARGET_IN_WOODS }, - { "LW Deku Scrub Near Deku Theater Right", RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_RIGHT }, - { "LW Deku Scrub Near Deku Theater Left", RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_LEFT }, - { "LW Deku Scrub Near Bridge", RC_LW_DEKU_SCRUB_NEAR_BRIDGE }, - { "LW Deku Scrub Grotto Rear", RC_LW_DEKU_SCRUB_GROTTO_REAR }, - { "LW Deku Scrub Grotto Front", RC_LW_DEKU_SCRUB_GROTTO_FRONT }, - { "Deku Theater Skull Mask", RC_DEKU_THEATER_SKULL_MASK }, - { "Deku Theater Mask of Truth", RC_DEKU_THEATER_MASK_OF_TRUTH }, - { "SFM Wolfos Grotto Chest", RC_SFM_WOLFOS_GROTTO_CHEST }, - { "SFM Deku Scrub Grotto Rear", RC_SFM_DEKU_SCRUB_GROTTO_REAR }, - { "SFM Deku Scrub Grotto Front", RC_SFM_DEKU_SCRUB_GROTTO_FRONT }, - { "HF Southeast Grotto Chest", RC_HF_SOUTHEAST_GROTTO_CHEST }, - { "HF Open Grotto Chest", RC_HF_OPEN_GROTTO_CHEST }, - { "HF Near Market Grotto Chest", RC_HF_NEAR_MARKET_GROTTO_CHEST }, - { "HF Ocarina of Time Item", RC_HF_OCARINA_OF_TIME_ITEM }, - { "HF Tektite Grotto Freestanding PoH", RC_HF_TEKTITE_GROTTO_FREESTANDING_POH }, - { "HF Deku Scrub Grotto", RC_HF_DEKU_SCRUB_GROTTO }, - { "LH Child Fishing", RC_LH_CHILD_FISHING }, - { "LH Adult Fishing", RC_LH_ADULT_FISHING }, - { "LH Lab Dive", RC_LH_LAB_DIVE }, - { "LH Lab Trade Eyeball Frog", RC_LH_TRADE_FROG }, - { "LH Underwater Item", RC_LH_UNDERWATER_ITEM }, - { "LH Sun", RC_LH_SUN }, - { "LH Freestanding PoH", RC_LH_FREESTANDING_POH }, - { "LH Deku Scrub Grotto Left", RC_LH_DEKU_SCRUB_GROTTO_LEFT }, - { "LH Deku Scrub Grotto Right", RC_LH_DEKU_SCRUB_GROTTO_RIGHT }, - { "LH Deku Scrub Grotto Center", RC_LH_DEKU_SCRUB_GROTTO_CENTER }, - { "GV Chest", RC_GV_CHEST }, - { "GV Trade Saw", RC_GV_TRADE_SAW }, - { "GV Waterfall Freestanding PoH", RC_GV_WATERFALL_FREESTANDING_POH }, - { "GV Crate Freestanding PoH", RC_GV_CRATE_FREESTANDING_POH }, - { "GV Deku Scrub Grotto Rear", RC_GV_DEKU_SCRUB_GROTTO_REAR }, - { "GV Deku Scrub Grotto Front", RC_GV_DEKU_SCRUB_GROTTO_FRONT }, - { "GF Chest", RC_GF_CHEST }, - { "GF HBA 1000 Points", RC_GF_HBA_1000_POINTS }, - { "GF HBA 1500 Points", RC_GF_HBA_1500_POINTS }, - { "GF Gerudo Membership Card", RC_GF_GERUDO_MEMBERSHIP_CARD }, - { "GF North F1 Carpenter", RC_GF_NORTH_F1_CARPENTER }, - { "GF North F2 Carpenter", RC_GF_NORTH_F2_CARPENTER }, - { "GF South F1 Carpenter", RC_GF_SOUTH_F1_CARPENTER }, - { "GF South F2 Carpenter", RC_GF_SOUTH_F2_CARPENTER }, - { "Wasteland Chest", RC_WASTELAND_CHEST }, - { "Wasteland Carpet Salesman", RC_WASTELAND_BOMBCHU_SALESMAN }, - { "Colossus Freestanding PoH", RC_COLOSSUS_FREESTANDING_POH }, - { "Colossus Deku Scrub Grotto Rear", RC_COLOSSUS_DEKU_SCRUB_GROTTO_REAR }, - { "Colossus Deku Scrub Grotto Front", RC_COLOSSUS_DEKU_SCRUB_GROTTO_FRONT }, - { "MK Treasure Chest Game Reward", RC_MARKET_TREASURE_CHEST_GAME_REWARD }, - { "MK Bombchu Bowling First Prize", RC_MARKET_BOMBCHU_BOWLING_FIRST_PRIZE }, - { "MK Bombchu Bowling Second Prize", RC_MARKET_BOMBCHU_BOWLING_SECOND_PRIZE }, - { "MK Bombchu Bowling Bombchus", RC_UNKNOWN_CHECK }, - { "MK Lost Dog", RC_MARKET_LOST_DOG }, - { "MK Shooting Gallery", RC_MARKET_SHOOTING_GALLERY_REWARD }, - { "MK 10 Big Poes", RC_MARKET_10_BIG_POES }, - { "MK Chest Game First Room Chest", RC_MARKET_TREASURE_CHEST_GAME_ITEM_1 }, - { "MK Chest Game Second Room Chest", RC_MARKET_TREASURE_CHEST_GAME_ITEM_2 }, - { "MK Chest Game Third Room Chest", RC_MARKET_TREASURE_CHEST_GAME_ITEM_3 }, - { "MK Chest Game Fourth Room Chest", RC_MARKET_TREASURE_CHEST_GAME_ITEM_4 }, - { "MK Chest Game Fifth Room Chest", RC_MARKET_TREASURE_CHEST_GAME_ITEM_5 }, - { "HC Malon Egg", RC_HC_MALON_EGG }, - { "HC Zeldas Letter", RC_HC_ZELDAS_LETTER }, - { "Kak Redead Grotto Chest", RC_KAK_REDEAD_GROTTO_CHEST }, - { "Kak Open Grotto Chest", RC_KAK_OPEN_GROTTO_CHEST }, - { "Kak 10 Gold Skulltula Reward", RC_KAK_10_GOLD_SKULLTULA_REWARD }, - { "Kak 20 Gold Skulltula Reward", RC_KAK_20_GOLD_SKULLTULA_REWARD }, - { "Kak 30 Gold Skulltula Reward", RC_KAK_30_GOLD_SKULLTULA_REWARD }, - { "Kak 40 Gold Skulltula Reward", RC_KAK_40_GOLD_SKULLTULA_REWARD }, - { "Kak 50 Gold Skulltula Reward", RC_KAK_50_GOLD_SKULLTULA_REWARD }, - { "Kak Man on Roof", RC_KAK_MAN_ON_ROOF }, - { "Kak Shooting Gallery Reward", RC_KAK_SHOOTING_GALLERY_REWARD }, - { "Kak Trade Odd Mushroom", RC_KAK_TRADE_ODD_MUSHROOM }, - { "Kak Anju as Adult", RC_KAK_ANJU_AS_ADULT }, - { "Kak Anju as Child", RC_KAK_ANJU_AS_CHILD }, - { "Kak Trade Pocket Cucco", RC_KAK_TRADE_POCKET_CUCCO }, - { "Kak Impas House Freestanding PoH", RC_KAK_IMPAS_HOUSE_FREESTANDING_POH }, - { "Kak Windmill Freestanding PoH", RC_KAK_WINDMILL_FREESTANDING_POH }, - { "GY Shield Grave Chest", RC_GRAVEYARD_SHIELD_GRAVE_CHEST }, - { "GY Heart Piece Grave Chest", RC_GRAVEYARD_HEART_PIECE_GRAVE_CHEST }, - { "GY Composers Grave Chest", RC_GRAVEYARD_ROYAL_FAMILYS_TOMB_CHEST }, - { "GY Hookshot Chest", RC_GRAVEYARD_HOOKSHOT_CHEST }, - { "GY Dampe Race Freestanding PoH", RC_GRAVEYARD_DAMPE_RACE_FREESTANDING_POH }, - { "GY Freestanding PoH", RC_GRAVEYARD_FREESTANDING_POH }, - { "GY Dampe Gravedigging Tour", RC_GRAVEYARD_DAMPE_GRAVEDIGGING_TOUR }, - { "DMT Chest", RC_DMT_CHEST }, - { "DMT Storms Grotto Chest", RC_DMT_STORMS_GROTTO_CHEST }, - { "DMT Trade Broken Sword", RC_DMT_TRADE_BROKEN_SWORD }, - { "DMT Trade Eyedrops", RC_DMT_TRADE_EYEDROPS }, - { "DMT Trade Claim Check", RC_DMT_TRADE_CLAIM_CHECK }, - { "DMT Freestanding PoH", RC_DMT_FREESTANDING_POH }, - { "GC Maze Left Chest", RC_GC_MAZE_LEFT_CHEST }, - { "GC Maze Right Chest", RC_GC_MAZE_RIGHT_CHEST }, - { "GC Maze Center Chest", RC_GC_MAZE_CENTER_CHEST }, - { "GC Rolling Goron as Child", RC_GC_ROLLING_GORON_AS_CHILD }, - { "GC Rolling Goron as Adult", RC_GC_ROLLING_GORON_AS_ADULT }, - { "GC Darunias Joy", RC_GC_DARUNIAS_JOY }, - { "GC Pot Freestanding PoH", RC_GC_POT_FREESTANDING_POH }, - { "GC Deku Scrub Grotto Left", RC_GC_DEKU_SCRUB_GROTTO_LEFT }, - { "GC Deku Scrub Grotto Right", RC_GC_DEKU_SCRUB_GROTTO_RIGHT }, - { "GC Deku Scrub Grotto Center", RC_GC_DEKU_SCRUB_GROTTO_CENTER }, - { "GC Medigoron", RC_GC_MEDIGORON }, - { "DMC Upper Grotto Chest", RC_DMC_UPPER_GROTTO_CHEST }, - { "DMC Wall Freestanding PoH", RC_DMC_WALL_FREESTANDING_POH }, - { "DMC Volcano Freestanding PoH", RC_DMC_VOLCANO_FREESTANDING_POH }, - { "DMC Deku Scrub", RC_DMC_DEKU_SCRUB }, - { "DMC Deku Scrub Grotto Left", RC_DMC_DEKU_SCRUB_GROTTO_LEFT }, - { "DMC Deku Scrub Grotto Right", RC_DMC_DEKU_SCRUB_GROTTO_RIGHT }, - { "DMC Deku Scrub Grotto Center", RC_DMC_DEKU_SCRUB_GROTTO_CENTER }, - { "ZR Open Grotto Chest", RC_ZR_OPEN_GROTTO_CHEST }, - { "ZR Magic Bean Salesman", RC_ZR_MAGIC_BEAN_SALESMAN }, - { "ZR Frogs Zelda's Lullaby", RC_ZR_FROGS_ZELDAS_LULLABY }, - { "ZR Frogs Epona's Song", RC_ZR_FROGS_EPONAS_SONG }, - { "ZR Frogs Saria's Song", RC_ZR_FROGS_SARIAS_SONG }, - { "ZR Frogs Sun's Song", RC_ZR_FROGS_SUNS_SONG }, - { "ZR Frogs Song of Time", RC_ZR_FROGS_SONG_OF_TIME }, - { "ZR Frogs in the Rain", RC_ZR_FROGS_IN_THE_RAIN }, - { "ZR Frogs Ocarina Game", RC_ZR_FROGS_OCARINA_GAME }, - { "ZR Near Open Grotto Freestanding PoH", RC_ZR_NEAR_OPEN_GROTTO_FREESTANDING_POH }, - { "ZR Near Domain Freestanding PoH", RC_ZR_NEAR_DOMAIN_FREESTANDING_POH }, - { "ZR Deku Scrub Grotto Rear", RC_ZR_DEKU_SCRUB_GROTTO_REAR }, - { "ZR Deku Scrub Grotto Front", RC_ZR_DEKU_SCRUB_GROTTO_FRONT }, - { "ZD Chest", RC_ZD_CHEST }, - { "ZD Diving Minigame", RC_ZD_DIVING_MINIGAME }, - { "ZD King Zora Thawed", RC_ZD_KING_ZORA_THAWED }, - { "ZD Trade Prescription", RC_ZD_TRADE_PRESCRIPTION }, - { "ZF Iceberg Freestanding PoH", RC_ZF_ICEBERC_FREESTANDING_POH }, - { "ZF Bottom Freestanding PoH", RC_ZF_BOTTOM_FREESTANDING_POH }, - { "LLR Talons Chickens", RC_LLR_TALONS_CHICKENS }, - { "LLR Freestanding PoH", RC_LLR_FREESTANDING_POH }, - { "LLR Deku Scrub Grotto Left", RC_LLR_DEKU_SCRUB_GROTTO_LEFT }, - { "LLR Deku Scrub Grotto Right", RC_LLR_DEKU_SCRUB_GROTTO_RIGHT }, - { "LLR Deku Scrub Grotto Center", RC_LLR_DEKU_SCRUB_GROTTO_CENTER }, - { "Deku Tree Map Chest", RC_DEKU_TREE_MAP_CHEST }, - { "Deku Tree Compass Chest", RC_DEKU_TREE_COMPASS_CHEST }, - { "Deku Tree Compass Room Side Chest", RC_DEKU_TREE_COMPASS_ROOM_SIDE_CHEST }, - { "Deku Tree Basement Chest", RC_DEKU_TREE_BASEMENT_CHEST }, - { "Deku Tree Slingshot Chest", RC_DEKU_TREE_SLINGSHOT_CHEST }, - { "Deku Tree Slingshot Room Side Chest", RC_DEKU_TREE_SLINGSHOT_ROOM_SIDE_CHEST }, - { "Deku Tree MQ Map Chest", RC_DEKU_TREE_MQ_MAP_CHEST }, - { "Deku Tree MQ Compass Chest", RC_DEKU_TREE_MQ_COMPASS_CHEST }, - { "Deku Tree MQ Slingshot Chest", RC_DEKU_TREE_MQ_SLINGSHOT_CHEST }, - { "Deku Tree MQ Slingshot Room Back Chest", RC_DEKU_TREE_MQ_SLINGSHOT_ROOM_BACK_CHEST }, - { "Deku Tree MQ Basement Chest", RC_DEKU_TREE_MQ_BASEMENT_CHEST }, - { "Deku Tree MQ Before Spinning Log Chest", RC_DEKU_TREE_MQ_BEFORE_SPINNING_LOG_CHEST }, - { "Deku Tree MQ After Spinning Log Chest", RC_DEKU_TREE_MQ_AFTER_SPINNING_LOG_CHEST }, - { "Deku Tree MQ Deku Scrub", RC_DEKU_TREE_MQ_DEKU_SCRUB }, - { "Dodongos Cavern Boss Room Chest", RC_DODONGOS_CAVERN_BOSS_ROOM_CHEST }, - { "Dodongos Cavern Map Chest", RC_DODONGOS_CAVERN_MAP_CHEST }, - { "Dodongos Cavern Compass Chest", RC_DODONGOS_CAVERN_COMPASS_CHEST }, - { "Dodongos Cavern Bomb Flower Platform Chest", RC_DODONGOS_CAVERN_BOMB_FLOWER_PLATFORM_CHEST }, - { "Dodongos Cavern Bomb Bag Chest", RC_DODONGOS_CAVERN_BOMB_BAG_CHEST }, - { "Dodongos Cavern End Of Bridge Chest", RC_DODONGOS_CAVERN_END_OF_BRIDGE_CHEST }, - { "Dodongos Cavern Deku Scrub Near Bomb Bag Left", RC_DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_LEFT }, - { "Dodongos Cavern Deku Scrub Side Room Near Dodongos", RC_DODONGOS_CAVERN_DEKU_SCRUB_SIDE_ROOM_NEAR_DODONGOS }, - { "Dodongos Cavern Deku Scrub Near Bomb Bag Right", RC_DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_RIGHT }, - { "Dodongos Cavern Deku Scrub Lobby", RC_DODONGOS_CAVERN_DEKU_SCRUB_LOBBY }, - { "Dodongos Cavern MQ Map Chest", RC_DODONGOS_CAVERN_MQ_MAP_CHEST }, - { "Dodongos Cavern MQ Bomb Bag Chest", RC_DODONGOS_CAVERN_MQ_BOMB_BAG_CHEST }, - { "Dodongos Cavern MQ Compass Chest", RC_DODONGOS_CAVERN_MQ_COMPASS_CHEST }, - { "Dodongos Cavern MQ Larvae Room Chest", RC_DODONGOS_CAVERN_MQ_LARVAE_ROOM_CHEST }, - { "Dodongos Cavern MQ Torch Puzzle Room Chest", RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_ROOM_CHEST }, - { "Dodongos Cavern MQ Under Grave Chest", RC_DODONGOS_CAVERN_MQ_UNDER_GRAVE_CHEST }, - { "Dodongos Cavern Deku Scrub Lobby Rear", RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_LOBBY_REAR }, - { "Dodongos Cavern Deku Scrub Lobby Front", RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_LOBBY_FRONT }, - { "Dodongos Cavern Deku Scrub Staircase", RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_STAIRCASE }, - { "Dodongos Cavern Deku Scrub Side Room Near Lower Lizalfos", - RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_SIDE_ROOM_NEAR_LOWER_LIZALFOS }, - { "Jabu Jabus Belly Map Chest", RC_JABU_JABUS_BELLY_MAP_CHEST }, - { "Jabu Jabus Belly Compass Chest", RC_JABU_JABUS_BELLY_COMPASS_CHEST }, - { "Jabu Jabus Belly Boomerang Chest", RC_JABU_JABUS_BELLY_BOOMERANG_CHEST }, - { "Jabu Jabus Belly Deku Scrub", RC_JABU_JABUS_BELLY_DEKU_SCRUB }, - { "Jabu Jabus Belly MQ First Room Side Chest", RC_JABU_JABUS_BELLY_MQ_FIRST_ROOM_SIDE_CHEST }, - { "Jabu Jabus Belly MQ Map Chest", RC_JABU_JABUS_BELLY_MQ_MAP_CHEST }, - { "Jabu Jabus Belly MQ Second Room Lower Chest", RC_JABU_JABUS_BELLY_MQ_SECOND_ROOM_LOWER_CHEST }, - { "Jabu Jabus Belly MQ Compass Chest", RC_JABU_JABUS_BELLY_MQ_COMPASS_CHEST }, - { "Jabu Jabus Belly MQ Second Room Upper Chest", RC_JABU_JABUS_BELLY_MQ_SECOND_ROOM_UPPER_CHEST }, - { "Jabu Jabus Belly MQ Basement Near Switches Chest", RC_JABU_JABUS_BELLY_MQ_BASEMENT_NEAR_SWITCHES_CHEST }, - { "Jabu Jabus Belly MQ Basement Near Vines Chest", RC_JABU_JABUS_BELLY_MQ_BASEMENT_NEAR_VINES_CHEST }, - { "Jabu Jabus Belly MQ Near Boss Chest", RC_JABU_JABUS_BELLY_MQ_NEAR_BOSS_CHEST }, - { "Jabu Jabus Belly MQ Falling Like Like Room Chest", RC_JABU_JABUS_BELLY_MQ_FALLING_LIKE_LIKE_ROOM_CHEST }, - { "Jabu Jabus Belly MQ Boomerang Room Small Chest", RC_JABU_JABUS_BELLY_MQ_BOOMERANG_ROOM_SMALL_CHEST }, - { "Jabu Jabus Belly MQ Boomerang Chest", RC_JABU_JABUS_BELLY_MQ_BOOMERANG_CHEST }, - { "Forest Temple First Room Chest", RC_FOREST_TEMPLE_FIRST_ROOM_CHEST }, - { "Forest Temple First Stalfos Chest", RC_FOREST_TEMPLE_FIRST_STALFOS_CHEST }, - { "Forest Temple Raised Island Courtyard Chest", RC_FOREST_TEMPLE_RAISED_ISLAND_COURTYARD_CHEST }, - { "Forest Temple Map Chest", RC_FOREST_TEMPLE_MAP_CHEST }, - { "Forest Temple Well Chest", RC_FOREST_TEMPLE_WELL_CHEST }, - { "Forest Temple Falling Ceiling Room Chest", RC_FOREST_TEMPLE_FALLING_CEILING_ROOM_CHEST }, - { "Forest Temple Eye Switch Chest", RC_FOREST_TEMPLE_EYE_SWITCH_CHEST }, - { "Forest Temple Boss Key Chest", RC_FOREST_TEMPLE_BOSS_KEY_CHEST }, - { "Forest Temple Floormaster Chest", RC_FOREST_TEMPLE_FLOORMASTER_CHEST }, - { "Forest Temple Bow Chest", RC_FOREST_TEMPLE_BOW_CHEST }, - { "Forest Temple Red Poe Chest", RC_FOREST_TEMPLE_RED_POE_CHEST }, - { "Forest Temple Blue Poe Chest", RC_FOREST_TEMPLE_BLUE_POE_CHEST }, - { "Forest Temple Basement Chest", RC_FOREST_TEMPLE_BASEMENT_CHEST }, - { "Forest Temple MQ First Room Chest", RC_FOREST_TEMPLE_MQ_FIRST_ROOM_CHEST }, - { "Forest Temple MQ Wolfos Chest", RC_FOREST_TEMPLE_MQ_WOLFOS_CHEST }, - { "Forest Temple MQ Bow Chest", RC_FOREST_TEMPLE_MQ_BOW_CHEST }, - { "Forest Temple MQ Raised Island Courtyard Lower Chest", RC_FOREST_TEMPLE_MQ_RAISED_ISLAND_COURTYARD_LOWER_CHEST }, - { "Forest Temple MQ Raised Island Courtyard Upper Chest", RC_FOREST_TEMPLE_MQ_RAISED_ISLAND_COURTYARD_UPPER_CHEST }, - { "Forest Temple MQ Well Chest", RC_FOREST_TEMPLE_MQ_WELL_CHEST }, - { "Forest Temple MQ Map Chest", RC_FOREST_TEMPLE_MQ_MAP_CHEST }, - { "Forest Temple MQ Compass Chest", RC_FOREST_TEMPLE_MQ_COMPASS_CHEST }, - { "Forest Temple MQ Falling Ceiling Room Chest", RC_FOREST_TEMPLE_MQ_FALLING_CEILING_ROOM_CHEST }, - { "Forest Temple MQ Basement Chest", RC_FOREST_TEMPLE_MQ_BASEMENT_CHEST }, - { "Forest Temple MQ Redead Chest", RC_FOREST_TEMPLE_MQ_REDEAD_CHEST }, - { "Forest Temple MQ Boss Key Chest", RC_FOREST_TEMPLE_MQ_BOSS_KEY_CHEST }, - { "Fire Temple Near Boss Chest", RC_FIRE_TEMPLE_NEAR_BOSS_CHEST }, - { "Fire Temple Flare Dancer Chest", RC_FIRE_TEMPLE_FLARE_DANCER_CHEST }, - { "Fire Temple Boss Key Chest", RC_FIRE_TEMPLE_BOSS_KEY_CHEST }, - { "Fire Temple Big Lava Room Blocked Door Chest", RC_FIRE_TEMPLE_BIG_LAVA_ROOM_BLOCKED_DOOR_CHEST }, - { "Fire Temple Big Lava Room Lower Open Door Chest", RC_FIRE_TEMPLE_BIG_LAVA_ROOM_LOWER_OPEN_DOOR_CHEST }, - { "Fire Temple Boulder Maze Lower Chest", RC_FIRE_TEMPLE_BOULDER_MAZE_LOWER_CHEST }, - { "Fire Temple Boulder Maze Upper Chest", RC_FIRE_TEMPLE_BOULDER_MAZE_UPPER_CHEST }, - { "Fire Temple Boulder Maze Side Room Chest", RC_FIRE_TEMPLE_BOULDER_MAZE_SIDE_ROOM_CHEST }, - { "Fire Temple Boulder Maze Shortcut Chest", RC_FIRE_TEMPLE_BOULDER_MAZE_SHORTCUT_CHEST }, - { "Fire Temple Scarecrow Chest", RC_FIRE_TEMPLE_SCARECROW_CHEST }, - { "Fire Temple Map Chest", RC_FIRE_TEMPLE_MAP_CHEST }, - { "Fire Temple Compass Chest", RC_FIRE_TEMPLE_COMPASS_CHEST }, - { "Fire Temple Highest Goron Chest", RC_FIRE_TEMPLE_HIGHEST_GORON_CHEST }, - { "Fire Temple Megaton Hammer Chest", RC_FIRE_TEMPLE_MEGATON_HAMMER_CHEST }, - { "Fire Temple MQ Near Boss Chest", RC_FIRE_TEMPLE_MQ_NEAR_BOSS_CHEST }, - { "Fire Temple MQ Megaton Hammer Chest", RC_FIRE_TEMPLE_MQ_MEGATON_HAMMER_CHEST }, - { "Fire Temple MQ Compass Chest", RC_FIRE_TEMPLE_MQ_COMPASS_CHEST }, - { "Fire Temple MQ Lizalfos Maze Lower Chest", RC_FIRE_TEMPLE_MQ_LIZALFOS_MAZE_LOWER_CHEST }, - { "Fire Temple MQ Lizalfos Maze Upper Chest", RC_FIRE_TEMPLE_MQ_LIZALFOS_MAZE_UPPER_CHEST }, - { "Fire Temple MQ Chest on Fire", RC_FIRE_TEMPLE_MQ_CHEST_ON_FIRE }, - { "Fire Temple MQ Map Room Side Chest", RC_FIRE_TEMPLE_MQ_MAP_ROOM_SIDE_CHEST }, - { "Fire Temple MQ Map Chest", RC_FIRE_TEMPLE_MQ_MAP_CHEST }, - { "Fire Temple MQ Boss Key Chest", RC_FIRE_TEMPLE_MQ_BOSS_KEY_CHEST }, - { "Fire Temple MQ Big Lava Room Blocked Door Chest", RC_FIRE_TEMPLE_MQ_BIG_LAVA_ROOM_BLOCKED_DOOR_CHEST }, - { "Fire Temple MQ Lizalfos Maze Side Room Chest", RC_FIRE_TEMPLE_MQ_LIZALFOS_MAZE_SIDE_ROOM_CHEST }, - { "Fire Temple MQ Freestanding Key", RC_FIRE_TEMPLE_MQ_FREESTANDING_KEY }, - { "Water Temple Map Chest", RC_WATER_TEMPLE_MAP_CHEST }, - { "Water Temple Compass Chest", RC_WATER_TEMPLE_COMPASS_CHEST }, - { "Water Temple Torches Chest", RC_WATER_TEMPLE_TORCHES_CHEST }, - { "Water Temple Dragon Chest", RC_WATER_TEMPLE_DRAGON_CHEST }, - { "Water Temple Central Bow Target Chest", RC_WATER_TEMPLE_CENTRAL_BOW_TARGET_CHEST }, - { "Water Temple Central Pillar Chest", RC_WATER_TEMPLE_CENTRAL_PILLAR_CHEST }, - { "Water Temple Cracked Wall Chest", RC_WATER_TEMPLE_CRACKED_WALL_CHEST }, - { "Water Temple Boss Key Chest", RC_WATER_TEMPLE_BOSS_KEY_CHEST }, - { "Water Temple Longshot Chest", RC_WATER_TEMPLE_LONGSHOT_CHEST }, - { "Water Temple River Chest", RC_WATER_TEMPLE_RIVER_CHEST }, - { "Water Temple MQ Central Pillar Chest", RC_WATER_TEMPLE_MQ_CENTRAL_PILLAR_CHEST }, - { "Water Temple MQ Boss Key Chest", RC_WATER_TEMPLE_MQ_BOSS_KEY_CHEST }, - { "Water Temple MQ Longshot Chest", RC_WATER_TEMPLE_MQ_LONGSHOT_CHEST }, - { "Water Temple MQ Compass Chest", RC_WATER_TEMPLE_MQ_COMPASS_CHEST }, - { "Water Temple MQ Map Chest", RC_WATER_TEMPLE_MQ_MAP_CHEST }, - { "Water Temple MQ Freestanding Key", RC_WATER_TEMPLE_MQ_FREESTANDING_KEY }, - { "Spirit Temple Silver Gauntlets Chest", RC_SPIRIT_TEMPLE_SILVER_GAUNTLETS_CHEST }, - { "Spirit Temple Mirror Shield Chest", RC_SPIRIT_TEMPLE_MIRROR_SHIELD_CHEST }, - { "Spirit Temple Child Bridge Chest", RC_SPIRIT_TEMPLE_CHILD_BRIDGE_CHEST }, - { "Spirit Temple Child Early Torches Chest", RC_SPIRIT_TEMPLE_CHILD_EARLY_TORCHES_CHEST }, - { "Spirit Temple Compass Chest", RC_SPIRIT_TEMPLE_COMPASS_CHEST }, - { "Spirit Temple Early Adult Right Chest", RC_SPIRIT_TEMPLE_EARLY_ADULT_RIGHT_CHEST }, - { "Spirit Temple First Mirror Left Chest", RC_SPIRIT_TEMPLE_FIRST_MIRROR_LEFT_CHEST }, - { "Spirit Temple First Mirror Right Chest", RC_SPIRIT_TEMPLE_FIRST_MIRROR_RIGHT_CHEST }, - { "Spirit Temple Map Chest", RC_SPIRIT_TEMPLE_MAP_CHEST }, - { "Spirit Temple Child Climb North Chest", RC_SPIRIT_TEMPLE_CHILD_CLIMB_NORTH_CHEST }, - { "Spirit Temple Child Climb East Chest", RC_SPIRIT_TEMPLE_CHILD_CLIMB_EAST_CHEST }, - { "Spirit Temple Sun Block Room Chest", RC_SPIRIT_TEMPLE_SUN_BLOCK_ROOM_CHEST }, - { "Spirit Temple Statue Room Hand Chest", RC_SPIRIT_TEMPLE_STATUE_ROOM_HAND_CHEST }, - { "Spirit Temple Statue Room Northeast Chest", RC_SPIRIT_TEMPLE_STATUE_ROOM_NORTHEAST_CHEST }, - { "Spirit Temple Near Four Armos Chest", RC_SPIRIT_TEMPLE_NEAR_FOUR_ARMOS_CHEST }, - { "Spirit Temple Hallway Right Invisible Chest", RC_SPIRIT_TEMPLE_HALLWAY_RIGHT_INVISIBLE_CHEST }, - { "Spirit Temple Hallway Left Invisible Chest", RC_SPIRIT_TEMPLE_HALLWAY_LEFT_INVISIBLE_CHEST }, - { "Spirit Temple Boss Key Chest", RC_SPIRIT_TEMPLE_BOSS_KEY_CHEST }, - { "Spirit Temple Topmost Chest", RC_SPIRIT_TEMPLE_TOPMOST_CHEST }, - { "Spirit Temple MQ Entrance Front Left Chest", RC_SPIRIT_TEMPLE_MQ_ENTRANCE_FRONT_LEFT_CHEST }, - { "Spirit Temple MQ Entrance Back Right Chest", RC_SPIRIT_TEMPLE_MQ_ENTRANCE_BACK_RIGHT_CHEST }, - { "Spirit Temple MQ Entrance Front Right Chest", RC_SPIRIT_TEMPLE_MQ_ENTRANCE_FRONT_RIGHT_CHEST }, - { "Spirit Temple MQ Entrance Back Left Chest", RC_SPIRIT_TEMPLE_MQ_ENTRANCE_BACK_LEFT_CHEST }, - { "Spirit Temple MQ Child Hammer Switch Chest", RC_SPIRIT_TEMPLE_MQ_CHILD_HAMMER_SWITCH_CHEST }, - { "Spirit Temple MQ Map Chest", RC_SPIRIT_TEMPLE_MQ_MAP_CHEST }, - { "Spirit Temple MQ Map Room Enemy Chest", RC_SPIRIT_TEMPLE_MQ_MAP_ROOM_ENEMY_CHEST }, - { "Spirit Temple MQ Child Climb North Chest", RC_SPIRIT_TEMPLE_MQ_CHILD_CLIMB_NORTH_CHEST }, - { "Spirit Temple MQ Child Climb South Chest", RC_SPIRIT_TEMPLE_MQ_CHILD_CLIMB_SOUTH_CHEST }, - { "Spirit Temple MQ Compass Chest", RC_SPIRIT_TEMPLE_MQ_COMPASS_CHEST }, - { "Spirit Temple MQ Statue Room Lullaby Chest", RC_SPIRIT_TEMPLE_MQ_STATUE_ROOM_LULLABY_CHEST }, - { "Spirit Temple MQ Statue Room Invisible Chest", RC_SPIRIT_TEMPLE_MQ_STATUE_ROOM_INVISIBLE_CHEST }, - { "Spirit Temple MQ Silver Block Hallway Chest", RC_SPIRIT_TEMPLE_MQ_SILVER_BLOCK_HALLWAY_CHEST }, - { "Spirit Temple MQ Sun Block Room Chest", RC_SPIRIT_TEMPLE_MQ_SUN_BLOCK_ROOM_CHEST }, - { "Spirit Temple MQ Symphony Room Chest", RC_SPIRIT_TEMPLE_MQ_SYMPHONY_ROOM_CHEST }, - { "Spirit Temple MQ Leever Room Chest", RC_SPIRIT_TEMPLE_MQ_LEEVER_ROOM_CHEST }, - { "Spirit Temple MQ Beamos Room Chest", RC_SPIRIT_TEMPLE_MQ_BEAMOS_ROOM_CHEST }, - { "Spirit Temple MQ Chest Switch Chest", RC_SPIRIT_TEMPLE_MQ_CHEST_SWITCH_CHEST }, - { "Spirit Temple MQ Boss Key Chest", RC_SPIRIT_TEMPLE_MQ_BOSS_KEY_CHEST }, - { "Spirit Temple MQ Mirror Puzzle Invisible Chest", RC_SPIRIT_TEMPLE_MQ_MIRROR_PUZZLE_INVISIBLE_CHEST }, - { "Shadow Temple Map Chest", RC_SHADOW_TEMPLE_MAP_CHEST }, - { "Shadow Temple Hover Boots Chest", RC_SHADOW_TEMPLE_HOVER_BOOTS_CHEST }, - { "Shadow Temple Compass Chest", RC_SHADOW_TEMPLE_COMPASS_CHEST }, - { "Shadow Temple Early Silver Rupee Chest", RC_SHADOW_TEMPLE_EARLY_SILVER_RUPEE_CHEST }, - { "Shadow Temple Invisible Blades Visible Chest", RC_SHADOW_TEMPLE_INVISIBLE_BLADES_VISIBLE_CHEST }, - { "Shadow Temple Invisible Blades Invisible Chest", RC_SHADOW_TEMPLE_INVISIBLE_BLADES_INVISIBLE_CHEST }, - { "Shadow Temple Falling Spikes Lower Chest", RC_SHADOW_TEMPLE_FALLING_SPIKES_LOWER_CHEST }, - { "Shadow Temple Falling Spikes Upper Chest", RC_SHADOW_TEMPLE_FALLING_SPIKES_UPPER_CHEST }, - { "Shadow Temple Falling Spikes Switch Chest", RC_SHADOW_TEMPLE_FALLING_SPIKES_SWITCH_CHEST }, - { "Shadow Temple Invisible Spikes Chest", RC_SHADOW_TEMPLE_INVISIBLE_SPIKES_CHEST }, - { "Shadow Temple Wind Hint Chest", RC_SHADOW_TEMPLE_WIND_HINT_CHEST }, - { "Shadow Temple After Wind Enemy Chest", RC_SHADOW_TEMPLE_AFTER_WIND_ENEMY_CHEST }, - { "Shadow Temple After Wind Hidden Chest", RC_SHADOW_TEMPLE_AFTER_WIND_HIDDEN_CHEST }, - { "Shadow Temple Spike Walls Left Chest", RC_SHADOW_TEMPLE_SPIKE_WALLS_LEFT_CHEST }, - { "Shadow Temple Boss Key Chest", RC_SHADOW_TEMPLE_BOSS_KEY_CHEST }, - { "Shadow Temple Invisible Floormaster Chest", RC_SHADOW_TEMPLE_INVISIBLE_FLOORMASTER_CHEST }, - { "Shadow Temple Freestanding Key", RC_SHADOW_TEMPLE_FREESTANDING_KEY }, - { "Shadow Temple MQ Compass Chest", RC_SHADOW_TEMPLE_MQ_COMPASS_CHEST }, - { "Shadow Temple MQ Hover Boots Chest", RC_SHADOW_TEMPLE_MQ_HOVER_BOOTS_CHEST }, - { "Shadow Temple MQ Early Gibdos Chest", RC_SHADOW_TEMPLE_MQ_EARLY_GIBDOS_CHEST }, - { "Shadow Temple MQ Map Chest", RC_SHADOW_TEMPLE_MQ_MAP_CHEST }, - { "Shadow Temple MQ Beamos Silver Rupees Chest", RC_SHADOW_TEMPLE_MQ_BEAMOS_SILVER_RUPEES_CHEST }, - { "Shadow Temple MQ Falling Spikes Switch Chest", RC_SHADOW_TEMPLE_MQ_FALLING_SPIKES_SWITCH_CHEST }, - { "Shadow Temple MQ Falling Spikes Lower Chest", RC_SHADOW_TEMPLE_MQ_FALLING_SPIKES_LOWER_CHEST }, - { "Shadow Temple MQ Falling Spikes Upper Chest", RC_SHADOW_TEMPLE_MQ_FALLING_SPIKES_UPPER_CHEST }, - { "Shadow Temple MQ Invisible Spikes Chest", RC_SHADOW_TEMPLE_MQ_INVISIBLE_SPIKES_CHEST }, - { "Shadow Temple MQ Boss Key Chest", RC_SHADOW_TEMPLE_MQ_BOSS_KEY_CHEST }, - { "Shadow Temple MQ Spike Walls Left Chest", RC_SHADOW_TEMPLE_MQ_SPIKE_WALLS_LEFT_CHEST }, - { "Shadow Temple MQ Stalfos Room Chest", RC_SHADOW_TEMPLE_MQ_STALFOS_ROOM_CHEST }, - { "Shadow Temple MQ Invisible Blades Invisible Chest", RC_SHADOW_TEMPLE_MQ_INVISIBLE_BLADES_INVISIBLE_CHEST }, - { "Shadow Temple MQ Invisible Blades Visible Chest", RC_SHADOW_TEMPLE_MQ_INVISIBLE_BLADES_VISIBLE_CHEST }, - { "Shadow Temple MQ Bomb Flower Chest", RC_SHADOW_TEMPLE_MQ_BOMB_FLOWER_CHEST }, - { "Shadow Temple MQ Wind Hint Chest", RC_SHADOW_TEMPLE_MQ_WIND_HINT_CHEST }, - { "Shadow Temple MQ After Wind Hidden Chest", RC_SHADOW_TEMPLE_MQ_AFTER_WIND_HIDDEN_CHEST }, - { "Shadow Temple MQ After Wind Enemy Chest", RC_SHADOW_TEMPLE_MQ_AFTER_WIND_ENEMY_CHEST }, - { "Shadow Temple MQ Near Ship Invisible Chest", RC_SHADOW_TEMPLE_MQ_NEAR_SHIP_INVISIBLE_CHEST }, - { "Shadow Temple MQ Freestanding Key", RC_SHADOW_TEMPLE_MQ_FREESTANDING_KEY }, - { "Bottom of the Well Front Left Fake Wall Chest", RC_BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST }, - { "Bottom of the Well Front Center Bombable Chest", RC_BOTTOM_OF_THE_WELL_FRONT_CENTER_BOMBABLE_CHEST }, - { "Bottom of the Well Right Bottom Fake Wall Chest", RC_BOTTOM_OF_THE_WELL_RIGHT_BOTTOM_FAKE_WALL_CHEST }, - { "Bottom of the Well Compass Chest", RC_BOTTOM_OF_THE_WELL_COMPASS_CHEST }, - { "Bottom of the Well Center Skulltula Chest", RC_BOTTOM_OF_THE_WELL_CENTER_SKULLTULA_CHEST }, - { "Bottom of the Well Back Left Bombable Chest", RC_BOTTOM_OF_THE_WELL_BACK_LEFT_BOMBABLE_CHEST }, - { "Bottom of the Well Lens of Truth Chest", RC_BOTTOM_OF_THE_WELL_LENS_OF_TRUTH_CHEST }, - { "Bottom of the Well Invisible Chest", RC_BOTTOM_OF_THE_WELL_INVISIBLE_CHEST }, - { "Bottom of the Well Underwater Front Chest", RC_BOTTOM_OF_THE_WELL_UNDERWATER_FRONT_CHEST }, - { "Bottom of the Well Underwater Left Chest", RC_BOTTOM_OF_THE_WELL_UNDERWATER_LEFT_CHEST }, - { "Bottom of the Well Map Chest", RC_BOTTOM_OF_THE_WELL_MAP_CHEST }, - { "Bottom of the Well Fire Keese Chest", RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST }, - { "Bottom of the Well Like Like Chest", RC_BOTTOM_OF_THE_WELL_LIKE_LIKE_CHEST }, - { "Bottom of the Well Freestanding Key", RC_BOTTOM_OF_THE_WELL_FREESTANDING_KEY }, - { "Bottom of the Well MQ Map Chest", RC_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST }, - { "Bottom of the Well MQ Lens of Truth Chest", RC_BOTTOM_OF_THE_WELL_MQ_LENS_OF_TRUTH_CHEST }, - { "Bottom of the Well MQ Compass Chest", RC_BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST }, - { "Bottom of the Well MQ Dead Hand Freestanding Key", RC_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_FREESTANDING_KEY }, - { "Bottom of the Well MQ East Inner Room Freestanding Key", - RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY }, - { "Ice Cavern Map Chest", RC_ICE_CAVERN_MAP_CHEST }, - { "Ice Cavern Compass Chest", RC_ICE_CAVERN_COMPASS_CHEST }, - { "Ice Cavern Iron Boots Chest", RC_ICE_CAVERN_IRON_BOOTS_CHEST }, - { "Ice Cavern Freestanding PoH", RC_ICE_CAVERN_FREESTANDING_POH }, - { "Ice Cavern MQ Iron Boots Chest", RC_ICE_CAVERN_MQ_IRON_BOOTS_CHEST }, - { "Ice Cavern MQ Compass Chest", RC_ICE_CAVERN_MQ_COMPASS_CHEST }, - { "Ice Cavern MQ Map Chest", RC_ICE_CAVERN_MQ_MAP_CHEST }, - { "Ice Cavern MQ Freestanding PoH", RC_ICE_CAVERN_MQ_FREESTANDING_POH }, - { "Gerudo Training Grounds Lobby Left Chest", RC_GERUDO_TRAINING_GROUND_LOBBY_LEFT_CHEST }, - { "Gerudo Training Grounds Lobby Right Chest", RC_GERUDO_TRAINING_GROUND_LOBBY_RIGHT_CHEST }, - { "Gerudo Training Grounds Stalfos Chest", RC_GERUDO_TRAINING_GROUND_STALFOS_CHEST }, - { "Gerudo Training Grounds Beamos Chest", RC_GERUDO_TRAINING_GROUND_BEAMOS_CHEST }, - { "Gerudo Training Grounds Hidden Ceiling Chest", RC_GERUDO_TRAINING_GROUND_HIDDEN_CEILING_CHEST }, - { "Gerudo Training Grounds Maze Path First Chest", RC_GERUDO_TRAINING_GROUND_MAZE_PATH_FIRST_CHEST }, - { "Gerudo Training Grounds Maze Path Second Chest", RC_GERUDO_TRAINING_GROUND_MAZE_PATH_SECOND_CHEST }, - { "Gerudo Training Grounds Maze Path Third Chest", RC_GERUDO_TRAINING_GROUND_MAZE_PATH_THIRD_CHEST }, - { "Gerudo Training Grounds Maze Path Final Chest", RC_GERUDO_TRAINING_GROUND_MAZE_PATH_FINAL_CHEST }, - { "Gerudo Training Grounds Maze Right Central Chest", RC_GERUDO_TRAINING_GROUND_MAZE_RIGHT_CENTRAL_CHEST }, - { "Gerudo Training Grounds Maze Right Side Chest", RC_GERUDO_TRAINING_GROUND_MAZE_RIGHT_SIDE_CHEST }, - { "Gerudo Training Grounds Underwater Silver Rupee Chest", - RC_GERUDO_TRAINING_GROUND_UNDERWATER_SILVER_RUPEE_CHEST }, - { "Gerudo Training Grounds Hammer Room Clear Chest", RC_GERUDO_TRAINING_GROUND_HAMMER_ROOM_CLEAR_CHEST }, - { "Gerudo Training Grounds Hammer Room Switch Chest", RC_GERUDO_TRAINING_GROUND_HAMMER_ROOM_SWITCH_CHEST }, - { "Gerudo Training Grounds Eye Statue Chest", RC_GERUDO_TRAINING_GROUND_EYE_STATUE_CHEST }, - { "Gerudo Training Grounds Near Scarecrow Chest", RC_GERUDO_TRAINING_GROUND_NEAR_SCARECROW_CHEST }, - { "Gerudo Training Grounds Before Heavy Block Chest", RC_GERUDO_TRAINING_GROUND_BEFORE_HEAVY_BLOCK_CHEST }, - { "Gerudo Training Grounds Heavy Block First Chest", RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_FIRST_CHEST }, - { "Gerudo Training Grounds Heavy Block Second Chest", RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_SECOND_CHEST }, - { "Gerudo Training Grounds Heavy Block Third Chest", RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_THIRD_CHEST }, - { "Gerudo Training Grounds Heavy Block Fourth Chest", RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_FOURTH_CHEST }, - { "Gerudo Training Grounds Freestanding Key", RC_GERUDO_TRAINING_GROUND_FREESTANDING_KEY }, - { "Gerudo Training Grounds MQ Lobby Right Chest", RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_CHEST }, - { "Gerudo Training Grounds MQ Lobby Left Chest", RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_CHEST }, - { "Gerudo Training Grounds MQ First Iron Knuckle Chest", RC_GERUDO_TRAINING_GROUND_MQ_FIRST_IRON_KNUCKLE_CHEST }, - { "Gerudo Training Grounds MQ Before Heavy Block Chest", RC_GERUDO_TRAINING_GROUND_MQ_BEFORE_HEAVY_BLOCK_CHEST }, - { "Gerudo Training Grounds MQ Eye Statue Chest", RC_GERUDO_TRAINING_GROUND_MQ_EYE_STATUE_CHEST }, - { "Gerudo Training Grounds MQ Flame Circle Chest", RC_GERUDO_TRAINING_GROUND_MQ_FLAME_CIRCLE_CHEST }, - { "Gerudo Training Grounds MQ Second Iron Knuckle Chest", RC_GERUDO_TRAINING_GROUND_MQ_SECOND_IRON_KNUCKLE_CHEST }, - { "Gerudo Training Grounds MQ Dinolfos Chest", RC_GERUDO_TRAINING_GROUND_MQ_DINOLFOS_CHEST }, - { "Gerudo Training Grounds MQ Ice Arrows Chest", RC_GERUDO_TRAINING_GROUND_MQ_ICE_ARROWS_CHEST }, - { "Gerudo Training Grounds MQ Maze Right Central Chest", RC_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_CENTRAL_CHEST }, - { "Gerudo Training Grounds MQ Maze Path First Chest", RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_FIRST_CHEST }, - { "Gerudo Training Grounds MQ Maze Right Side Chest", RC_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_SIDE_CHEST }, - { "Gerudo Training Grounds MQ Maze Path Third Chest", RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_THIRD_CHEST }, - { "Gerudo Training Grounds MQ Maze Path Second Chest", RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_SECOND_CHEST }, - { "Gerudo Training Grounds MQ Hidden Ceiling Chest", RC_GERUDO_TRAINING_GROUND_MQ_HIDDEN_CEILING_CHEST }, - { "Gerudo Training Grounds MQ Underwater Silver Rupee Chest", - RC_GERUDO_TRAINING_GROUND_MQ_UNDERWATER_SILVER_RUPEE_CHEST }, - { "Gerudo Training Grounds MQ Heavy Block Chest", RC_GERUDO_TRAINING_GROUND_MQ_HEAVY_BLOCK_CHEST }, - { "Ganon's Tower Boss Key Chest", RC_GANONS_TOWER_BOSS_KEY_CHEST }, - { "Ganon's Castle Forest Trial Chest", RC_GANONS_CASTLE_FOREST_TRIAL_CHEST }, - { "Ganon's Castle Water Trial Left Chest", RC_GANONS_CASTLE_WATER_TRIAL_LEFT_CHEST }, - { "Ganon's Castle Water Trial Right Chest", RC_GANONS_CASTLE_WATER_TRIAL_RIGHT_CHEST }, - { "Ganon's Castle Shadow Trial Front Chest", RC_GANONS_CASTLE_SHADOW_TRIAL_FRONT_CHEST }, - { "Ganon's Castle Shadow Trial Golden Gauntlets Chest", RC_GANONS_CASTLE_SHADOW_TRIAL_GOLDEN_GAUNTLETS_CHEST }, - { "Ganon's Castle Spirit Trial Crystal Switch Chest", RC_GANONS_CASTLE_SPIRIT_TRIAL_CRYSTAL_SWITCH_CHEST }, - { "Ganon's Castle Spirit Trial Invisible Chest", RC_GANONS_CASTLE_SPIRIT_TRIAL_INVISIBLE_CHEST }, - { "Ganon's Castle Light Trial First Left Chest", RC_GANONS_CASTLE_LIGHT_TRIAL_FIRST_LEFT_CHEST }, - { "Ganon's Castle Light Trial Second Left Chest", RC_GANONS_CASTLE_LIGHT_TRIAL_SECOND_LEFT_CHEST }, - { "Ganon's Castle Light Trial Third Left Chest", RC_GANONS_CASTLE_LIGHT_TRIAL_THIRD_LEFT_CHEST }, - { "Ganon's Castle Light Trial First Right Chest", RC_GANONS_CASTLE_LIGHT_TRIAL_FIRST_RIGHT_CHEST }, - { "Ganon's Castle Light Trial Second Right Chest", RC_GANONS_CASTLE_LIGHT_TRIAL_SECOND_RIGHT_CHEST }, - { "Ganon's Castle Light Trial Third Right Chest", RC_GANONS_CASTLE_LIGHT_TRIAL_THIRD_RIGHT_CHEST }, - { "Ganon's Castle Light Trial Invisible Enemies Chest", RC_GANONS_CASTLE_LIGHT_TRIAL_INVISIBLE_ENEMIES_CHEST }, - { "Ganon's Castle Light Trial Lullaby Chest", RC_GANONS_CASTLE_LIGHT_TRIAL_LULLABY_CHEST }, - { "Ganon's Castle Deku Scrub Center-Left", RC_GANONS_CASTLE_DEKU_SCRUB_CENTER_LEFT }, - { "Ganon's Castle Deku Scrub Center-Right", RC_GANONS_CASTLE_DEKU_SCRUB_CENTER_RIGHT }, - { "Ganon's Castle Deku Scrub Right", RC_GANONS_CASTLE_DEKU_SCRUB_RIGHT }, - { "Ganon's Castle Deku Scrub Left", RC_GANONS_CASTLE_DEKU_SCRUB_LEFT }, - { "Ganon's Castle MQ Water Trial Chest", RC_GANONS_CASTLE_MQ_WATER_TRIAL_CHEST }, - { "Ganon's Castle MQ Forest Trial Eye Switch Chest", RC_GANONS_CASTLE_MQ_FOREST_TRIAL_EYE_SWITCH_CHEST }, - { "Ganon's Castle MQ Forest Trial Frozen Eye Switch Chest", - RC_GANONS_CASTLE_MQ_FOREST_TRIAL_FROZEN_EYE_SWITCH_CHEST }, - { "Ganon's Castle MQ Light Trial Lullaby Chest", RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_LULLABY_CHEST }, - { "Ganon's Castle MQ Shadow Trial Bomb Flower Chest", RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_BOMB_FLOWER_CHEST }, - { "Ganon's Castle MQ Shadow Trial Eye Switch Chest", RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_EYE_SWITCH_CHEST }, - { "Ganon's Castle MQ Spirit Trial Golden Gauntlets Chest", - RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_GOLDEN_GAUNTLETS_CHEST }, - { "Ganon's Castle MQ Spirit Trial Sun Back Right Chest", RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_SUN_BACK_RIGHT_CHEST }, - { "Ganon's Castle MQ Spirit Trial Sun Back Left Chest", RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_SUN_BACK_LEFT_CHEST }, - { "Ganon's Castle MQ Spirit Trial Sun Front Left Chest", RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_SUN_FRONT_LEFT_CHEST }, - { "Ganon's Castle MQ Spirit Trial First Chest", RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_FIRST_CHEST }, - { "Ganon's Castle MQ Spirit Trial Invisible Chest", RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_INVISIBLE_CHEST }, - { "Ganon's Castle MQ Forest Trial Freestanding Key", RC_GANONS_CASTLE_MQ_FOREST_TRIAL_FREESTANDING_KEY }, - { "Ganon's Castle MQ Deku Scrub Right", RC_GANONS_CASTLE_MQ_DEKU_SCRUB_RIGHT }, - { "Ganon's Castle MQ Deku Scrub Center-Left", RC_GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_LEFT }, - { "Ganon's Castle MQ Deku Scrub Center", RC_GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER }, - { "Ganon's Castle MQ Deku Scrub Center-Right", RC_GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_RIGHT }, - { "Ganon's Castle MQ Deku Scrub Left", RC_GANONS_CASTLE_MQ_DEKU_SCRUB_LEFT }, - { "Deku Tree GS Basement Back Room", RC_DEKU_TREE_GS_BASEMENT_BACK_ROOM }, - { "Deku Tree GS Basement Gate", RC_DEKU_TREE_GS_BASEMENT_GATE }, - { "Deku Tree GS Basement Vines", RC_DEKU_TREE_GS_BASEMENT_VINES }, - { "Deku Tree GS Compass Room", RC_DEKU_TREE_GS_COMPASS_ROOM }, - { "Deku Tree MQ GS Lobby", RC_DEKU_TREE_MQ_GS_LOBBY }, - { "Deku Tree MQ GS Compass Room", RC_DEKU_TREE_MQ_GS_COMPASS_ROOM }, - { "Deku Tree MQ GS Basement Graves Room", RC_DEKU_TREE_MQ_GS_BASEMENT_GRAVES_ROOM }, - { "Deku Tree MQ GS Basement Back Room", RC_DEKU_TREE_MQ_GS_BASEMENT_BACK_ROOM }, - { "Dodongos Cavern GS Vines Above Stairs", RC_DODONGOS_CAVERN_GS_VINES_ABOVE_STAIRS }, - { "Dodongos Cavern GS Scarecrow", RC_DODONGOS_CAVERN_GS_SCARECROW }, - { "Dodongos Cavern GS Alcove Above Stairs", RC_DODONGOS_CAVERN_GS_ALCOVE_ABOVE_STAIRS }, - { "Dodongos Cavern GS Back Room", RC_DODONGOS_CAVERN_GS_BACK_ROOM }, - { "Dodongos Cavern GS Side Room Near Lower Lizalfos", RC_DODONGOS_CAVERN_GS_SIDE_ROOM_NEAR_LOWER_LIZALFOS }, - { "Dodongos Cavern MQ GS Scrub Room", RC_DODONGOS_CAVERN_MQ_GS_SCRUB_ROOM }, - { "Dodongos Cavern MQ GS Song of Time Block Room", RC_DODONGOS_CAVERN_MQ_GS_SONG_OF_TIME_BLOCK_ROOM }, - { "Dodongos Cavern MQ GS Lizalfos Room", RC_DODONGOS_CAVERN_MQ_GS_LIZALFOS_ROOM }, - { "Dodongos Cavern MQ GS Larvae Room", RC_DODONGOS_CAVERN_MQ_GS_LARVAE_ROOM }, - { "Dodongos Cavern MQ GS Back Room", RC_DODONGOS_CAVERN_MQ_GS_BACK_AREA }, - { "Jabu Jabus Belly GS Lobby Basement Lower", RC_JABU_JABUS_BELLY_GS_LOBBY_BASEMENT_LOWER }, - { "Jabu Jabus Belly GS Lobby Basement Upper", RC_JABU_JABUS_BELLY_GS_LOBBY_BASEMENT_UPPER }, - { "Jabu Jabus Belly GS Near Boss", RC_JABU_JABUS_BELLY_GS_NEAR_BOSS }, - { "Jabu Jabus Belly GS Water Switch Room", RC_JABU_JABUS_BELLY_GS_WATER_SWITCH_ROOM }, - { "Jabu Jabus Belly MQ GS Tail Parasan Room", RC_JABU_JABUS_BELLY_MQ_GS_TAILPASARAN_ROOM }, - { "Jabu Jabus Belly MQ GS Invisible Enemies Room", RC_JABU_JABUS_BELLY_MQ_GS_INVISIBLE_ENEMIES_ROOM }, - { "Jabu Jabus Belly MQ GS Boomerang Chest Room", RC_JABU_JABUS_BELLY_MQ_GS_BOOMERANG_CHEST_ROOM }, - { "Jabu Jabus Belly MQ GS Near Boss", RC_JABU_JABUS_BELLY_MQ_GS_NEAR_BOSS }, - { "Forest Temple GS Raised Island Courtyard", RC_FOREST_TEMPLE_GS_RAISED_ISLAND_COURTYARD }, - { "Forest Temple GS First Room", RC_FOREST_TEMPLE_GS_FIRST_ROOM }, - { "Forest Temple GS Level Island Courtyard", RC_FOREST_TEMPLE_GS_LEVEL_ISLAND_COURTYARD }, - { "Forest Temple GS Lobby", RC_FOREST_TEMPLE_GS_LOBBY }, - { "Forest Temple GS Basement", RC_FOREST_TEMPLE_GS_BASEMENT }, - { "Forest Temple MQ GS First Hallway", RC_FOREST_TEMPLE_MQ_GS_FIRST_HALLWAY }, - { "Forest Temple MQ GS Block Push Room", RC_FOREST_TEMPLE_MQ_GS_BLOCK_PUSH_ROOM }, - { "Forest Temple MQ GS Raised Island Courtyard", RC_FOREST_TEMPLE_MQ_GS_RAISED_ISLAND_COURTYARD }, - { "Forest Temple MQ GS Level Island Courtyard", RC_FOREST_TEMPLE_MQ_GS_LEVEL_ISLAND_COURTYARD }, - { "Forest Temple MQ GS Well", RC_FOREST_TEMPLE_MQ_GS_WELL }, - { "Fire Temple GS Song of Time Room", RC_FIRE_TEMPLE_GS_SONG_OF_TIME_ROOM }, - { "Fire Temple GS Boss Key Loop", RC_FIRE_TEMPLE_GS_BOSS_KEY_LOOP }, - { "Fire Temple GS Boulder Maze", RC_FIRE_TEMPLE_GS_BOULDER_MAZE }, - { "Fire Temple GS Scarecrow Top", RC_FIRE_TEMPLE_GS_SCARECROW_TOP }, - { "Fire Temple GS Scarecrow Climb", RC_FIRE_TEMPLE_GS_SCARECROW_CLIMB }, - { "Fire Temple MQ GS Above Fire Wall Maze", RC_FIRE_TEMPLE_MQ_GS_ABOVE_FIRE_WALL_MAZE }, - { "Fire Temple MQ GS Fire Wall Maze Center", RC_FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_CENTER }, - { "Fire Temple MQ GS Big Lava Room Open Door", RC_FIRE_TEMPLE_MQ_GS_BIG_LAVA_ROOM_OPEN_DOOR }, - { "Fire Temple MQ GS Fire Wall Maze Side Room", RC_FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_SIDE_ROOM }, - { "Fire Temple MQ GS Skull on Fire", RC_FIRE_TEMPLE_MQ_GS_SKULL_ON_FIRE }, - { "Water Temple GS Behind Gate", RC_WATER_TEMPLE_GS_BEHIND_GATE }, - { "Water Temple GS Falling Platform Room", RC_WATER_TEMPLE_GS_FALLING_PLATFORM_ROOM }, - { "Water Temple GS Central Pillar", RC_WATER_TEMPLE_GS_CENTRAL_PILLAR }, - { "Water Temple GS Near Boss Key Chest", RC_WATER_TEMPLE_GS_NEAR_BOSS_KEY_CHEST }, - { "Water Temple GS River", RC_WATER_TEMPLE_GS_RIVER }, - { "Water Temple MQ GS Before Upper Water Switch", RC_WATER_TEMPLE_MQ_GS_BEFORE_UPPER_WATER_SWITCH }, - { "Water Temple MQ GS Freestanding Key Area", RC_WATER_TEMPLE_MQ_GS_FREESTANDING_KEY_AREA }, - { "Water Temple MQ GS Lizalfos Hallway", RC_WATER_TEMPLE_MQ_GS_LIZALFOS_HALLWAY }, - { "Water Temple MQ GS River", RC_WATER_TEMPLE_MQ_GS_RIVER }, - { "Water Temple MQ GS Triple Wall Torch", RC_WATER_TEMPLE_MQ_GS_TRIPLE_WALL_TORCH }, - { "Spirit Temple GS Hall After Sun Block Room", RC_SPIRIT_TEMPLE_GS_HALL_AFTER_SUN_BLOCK_ROOM }, - { "Spirit Temple GS Boulder Room", RC_SPIRIT_TEMPLE_GS_BOULDER_ROOM }, - { "Spirit Temple GS Lobby", RC_SPIRIT_TEMPLE_GS_LOBBY }, - { "Spirit Temple GS Sun on Floor Room", RC_SPIRIT_TEMPLE_GS_SUN_ON_FLOOR_ROOM }, - { "Spirit Temple GS Metal Fence", RC_SPIRIT_TEMPLE_GS_METAL_FENCE }, - { "Spirit Temple MQ GS Symphony Room", RC_SPIRIT_TEMPLE_MQ_GS_SYMPHONY_ROOM }, - { "Spirit Temple MQ GS Leever Room", RC_SPIRIT_TEMPLE_MQ_GS_LEEVER_ROOM }, - { "Spirit Temple MQ GS Nine Thrones Room West", RC_SPIRIT_TEMPLE_MQ_GS_NINE_THRONES_ROOM_WEST }, - { "Spirit Temple MQ GS Nine Thrones Room North", RC_SPIRIT_TEMPLE_MQ_GS_NINE_THRONES_ROOM_NORTH }, - { "Spirit Temple MQ GS Sun Block Room", RC_SPIRIT_TEMPLE_MQ_GS_SUN_BLOCK_ROOM }, - { "Shadow Temple GS Single Giant Pot", RC_SHADOW_TEMPLE_GS_SINGLE_GIANT_POT }, - { "Shadow Temple GS Falling Spikes Room", RC_SHADOW_TEMPLE_GS_FALLING_SPIKES_ROOM }, - { "Shadow Temple GS Triple Giant Pot", RC_SHADOW_TEMPLE_GS_TRIPLE_GIANT_POT }, - { "Shadow Temple GS Like Like Room", RC_SHADOW_TEMPLE_GS_LIKE_LIKE_ROOM }, - { "Shadow Temple GS Near Ship", RC_SHADOW_TEMPLE_GS_NEAR_SHIP }, - { "Shadow Temple MQ GS Falling Spikes Room", RC_SHADOW_TEMPLE_MQ_GS_FALLING_SPIKES_ROOM }, - { "Shadow Temple MQ GS Wind Hint Room", RC_SHADOW_TEMPLE_MQ_GS_WIND_HINT_ROOM }, - { "Shadow Temple MQ GS After Wind", RC_SHADOW_TEMPLE_MQ_GS_AFTER_WIND }, - { "Shadow Temple MQ GS After Ship", RC_SHADOW_TEMPLE_MQ_GS_AFTER_SHIP }, - { "Shadow Temple MQ GS Near Boss", RC_SHADOW_TEMPLE_MQ_GS_NEAR_BOSS }, - { "Bottom of the Well GS Like Like Cage", RC_BOTTOM_OF_THE_WELL_GS_LIKE_LIKE_CAGE }, - { "Bottom of the Well GS East Inner Room", RC_BOTTOM_OF_THE_WELL_GS_EAST_INNER_ROOM }, - { "Bottom of the Well GS West Inner Room", RC_BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM }, - { "Bottom of the Well MQ GS Basement", RC_BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT }, - { "Bottom of the Well MQ GS Coffin Room", RC_BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM }, - { "Bottom of the Well MQ GS West Inner Room", RC_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM }, - { "Ice Cavern GS Push Block Room", RC_ICE_CAVERN_GS_PUSH_BLOCK_ROOM }, - { "Ice Cavern GS Spinning Scythe Room", RC_ICE_CAVERN_GS_SPINNING_SCYTHE_ROOM }, - { "Ice Cavern GS Heart Piece Room", RC_ICE_CAVERN_GS_HEART_PIECE_ROOM }, - { "Ice Cavern MQ GS Scarecrow", RC_ICE_CAVERN_MQ_GS_SCARECROW }, - { "Ice Cavern MQ GS Ice Block", RC_ICE_CAVERN_MQ_GS_ICE_BLOCK }, - { "Ice Cavern MQ GS Red Ice", RC_ICE_CAVERN_MQ_GS_RED_ICE }, - { "KF GS Bean Patch", RC_KF_GS_BEAN_PATCH }, - { "KF GS Know It All House", RC_KF_GS_KNOW_IT_ALL_HOUSE }, - { "KF GS House of Twins", RC_KF_GS_HOUSE_OF_TWINS }, - { "LW GS Bean Patch Near Bridge", RC_LW_GS_BEAN_PATCH_NEAR_BRIDGE }, - { "LW GS Bean Patch Near Theater", RC_LW_GS_BEAN_PATCH_NEAR_THEATER }, - { "LW GS Above Theater", RC_LW_GS_ABOVE_THEATER }, - { "SFM GS", RC_SFM_GS }, - { "HF GS Cow Grotto", RC_HF_GS_COW_GROTTO }, - { "HF GS Near Kak Grotto", RC_HF_GS_NEAR_KAK_GROTTO }, - { "LH GS Bean Patch", RC_LH_GS_BEAN_PATCH }, - { "LH GS Small Island", RC_LH_GS_SMALL_ISLAND }, - { "LH GS Lab Wall", RC_LH_GS_LAB_WALL }, - { "LH GS Lab Crate", RC_LH_GS_LAB_CRATE }, - { "LH GS Tree", RC_LH_GS_TREE }, - { "GV GS Bean Patch", RC_GV_GS_BEAN_PATCH }, - { "GV GS Small Bridge", RC_GV_GS_SMALL_BRIDGE }, - { "GV GS Pillar", RC_GV_GS_PILLAR }, - { "GV GS Behind Tent", RC_GV_GS_BEHIND_TENT }, - { "GF GS Archery Range", RC_GF_GS_ARCHERY_RANGE }, - { "GF GS Top Floor", RC_GF_GS_TOP_FLOOR }, - { "Wasteland GS", RC_WASTELAND_GS }, - { "Colossus GS Bean Patch", RC_COLOSSUS_GS_BEAN_PATCH }, - { "Colossus GS Hill", RC_COLOSSUS_GS_HILL }, - { "Colossus GS Tree", RC_COLOSSUS_GS_TREE }, - { "OGC GS", RC_OGC_GS }, - { "HC GS Storms Grotto", RC_HC_GS_STORMS_GROTTO }, - { "HC GS Tree", RC_HC_GS_TREE }, - { "Market GS Guard House", RC_MARKET_GS_GUARD_HOUSE }, - { "Kak GS House Under Construction", RC_KAK_GS_HOUSE_UNDER_CONSTRUCTION }, - { "Kak GS Skulltula House", RC_KAK_GS_SKULLTULA_HOUSE }, - { "Kak GS Guards House", RC_KAK_GS_GUARDS_HOUSE }, - { "Kak GS Tree", RC_KAK_GS_TREE }, - { "Kak GS Watchtower", RC_KAK_GS_WATCHTOWER }, - { "Kak GS Above Impas House", RC_KAK_GS_ABOVE_IMPAS_HOUSE }, - { "Graveyard GS Wall", RC_GRAVEYARD_GS_WALL }, - { "Graveyard GS Bean Patch", RC_GRAVEYARD_GS_BEAN_PATCH }, - { "DMC GS Bean Patch", RC_DMC_GS_BEAN_PATCH }, - { "DMC GS Crate", RC_DMC_GS_CRATE }, - { "DMT GS Bean Patch", RC_DMT_GS_BEAN_PATCH }, - { "DMT GS Near Kak", RC_DMT_GS_NEAR_KAK }, - { "DMT GS Above Dodongos Cavern", RC_DMT_GS_ABOVE_DODONGOS_CAVERN }, - { "DMT GS Falling Rocks Path", RC_DMT_GS_FALLING_ROCKS_PATH }, - { "GC GS Center Platform", RC_GC_GS_CENTER_PLATFORM }, - { "GC GS Boulder Maze", RC_GC_GS_BOULDER_MAZE }, - { "ZR GS Ladder", RC_ZR_GS_LADDER }, - { "ZR GS Tree", RC_ZR_GS_TREE }, - { "ZR GS Above Bridge", RC_ZR_GS_ABOVE_BRIDGE }, - { "ZR GS Near Raised Grottos", RC_ZR_GS_NEAR_RAISED_GROTTOS }, - { "ZD GS Frozen Waterfall", RC_ZD_GS_FROZEN_WATERFALL }, - { "ZF GS Above The Log", RC_ZF_GS_ABOVE_THE_LOG }, - { "ZF GS Hidden Cave", RC_ZF_GS_HIDDEN_CAVE }, - { "ZF GS Tree", RC_ZF_GS_TREE }, - { "LLR GS Back Wall", RC_LLR_GS_BACK_WALL }, - { "LLR GS Rain Shed", RC_LLR_GS_RAIN_SHED }, - { "LLR GS House Window", RC_LLR_GS_HOUSE_WINDOW }, - { "LLR GS Tree", RC_LLR_GS_TREE }, - { "Link's Pocket", RC_LINKS_POCKET }, - { "Queen Gohma", RC_QUEEN_GOHMA }, - { "King Dodongo", RC_KING_DODONGO }, - { "Barinade", RC_BARINADE }, - { "Phantom Ganon", RC_PHANTOM_GANON }, - { "Volvagia", RC_VOLVAGIA }, - { "Morpha", RC_MORPHA }, - { "Twinrova", RC_TWINROVA }, - { "Bongo Bongo", RC_BONGO_BONGO }, - { "Ganon", RC_UNKNOWN_CHECK }, - { "Deku Tree Queen Gohma Heart Container", RC_DEKU_TREE_QUEEN_GOHMA_HEART }, - { "Dodongos Cavern King Dodongo Heart Container", RC_DODONGOS_CAVERN_KING_DODONGO_HEART }, - { "Jabu Jabus Belly Barinade Heart Container", RC_JABU_JABUS_BELLY_BARINADE_HEART }, - { "Forest Temple Phantom Ganon Heart Container", RC_FOREST_TEMPLE_PHANTOM_GANON_HEART }, - { "Fire Temple Volvagia Heart Container", RC_FIRE_TEMPLE_VOLVAGIA_HEART }, - { "Water Temple Morpha Heart Container", RC_WATER_TEMPLE_MORPHA_HEART }, - { "Spirit Temple Twinrova Heart Container", RC_SPIRIT_TEMPLE_TWINROVA_HEART }, - { "Shadow Temple Bongo Bongo Heart Container", RC_SHADOW_TEMPLE_BONGO_BONGO_HEART }, - { "ToT Light Arrow Cutscene", RC_TOT_LIGHT_ARROWS_CUTSCENE }, - { "LW Gift From Saria", RC_LW_GIFT_FROM_SARIA }, - { "ZF Great Fairy Reward", RC_ZF_GREAT_FAIRY_REWARD }, - { "HC Great Fairy Reward", RC_HC_GREAT_FAIRY_REWARD }, - { "Colossus Great Fairy Reward", RC_COLOSSUS_GREAT_FAIRY_REWARD }, - { "DMT Great Fairy Reward", RC_DMT_GREAT_FAIRY_REWARD }, - { "DMC Great Fairy Reward", RC_DMC_GREAT_FAIRY_REWARD }, - { "OGC Great Fairy Reward", RC_OGC_GREAT_FAIRY_REWARD }, - { "Sheik in Forest", RC_SHEIK_IN_FOREST }, - { "Sheik in Crater", RC_SHEIK_IN_CRATER }, - { "Sheik in Ice Cavern", RC_SHEIK_IN_ICE_CAVERN }, - { "Sheik at Colossus", RC_SHEIK_AT_COLOSSUS }, - { "Sheik in Kakariko", RC_SHEIK_IN_KAKARIKO }, - { "Sheik at Temple", RC_SHEIK_AT_TEMPLE }, - { "Song from Impa", RC_SONG_FROM_IMPA }, - { "Song from Malon", RC_SONG_FROM_MALON }, - { "Song from Saria", RC_SONG_FROM_SARIA }, - { "Song from Composers Grave", RC_SONG_FROM_ROYAL_FAMILYS_TOMB }, - { "Song from Ocarina of Time", RC_SONG_FROM_OCARINA_OF_TIME }, - { "Song from Windmill", RC_SONG_FROM_WINDMILL }, - { "KF Links House Cow", RC_KF_LINKS_HOUSE_COW }, - { "HF Cow Grotto Cow", RC_HF_COW_GROTTO_COW }, - { "LLR Stables Left Cow", RC_LLR_STABLES_LEFT_COW }, - { "LLR Stables Right Cow", RC_LLR_STABLES_RIGHT_COW }, - { "LLR Tower Left Cow", RC_LLR_TOWER_LEFT_COW }, - { "LLR Tower Right Cow", RC_LLR_TOWER_RIGHT_COW }, - { "Kak Impas House Cow", RC_KAK_IMPAS_HOUSE_COW }, - { "DMT Cow Grotto Cow", RC_DMT_COW_GROTTO_COW }, - { "GV Cow", RC_GV_COW }, - { "Jabu Jabus Belly MQ Cow", RC_JABU_JABUS_BELLY_MQ_COW }, - { "KF Shop Item 1", RC_KF_SHOP_ITEM_1 }, - { "KF Shop Item 2", RC_KF_SHOP_ITEM_2 }, - { "KF Shop Item 3", RC_KF_SHOP_ITEM_3 }, - { "KF Shop Item 4", RC_KF_SHOP_ITEM_4 }, - { "KF Shop Item 5", RC_KF_SHOP_ITEM_5 }, - { "KF Shop Item 6", RC_KF_SHOP_ITEM_6 }, - { "KF Shop Item 7", RC_KF_SHOP_ITEM_7 }, - { "KF Shop Item 8", RC_KF_SHOP_ITEM_8 }, - { "Kak Potion Shop Item 1", RC_KAK_POTION_SHOP_ITEM_1 }, - { "Kak Potion Shop Item 2", RC_KAK_POTION_SHOP_ITEM_2 }, - { "Kak Potion Shop Item 3", RC_KAK_POTION_SHOP_ITEM_3 }, - { "Kak Potion Shop Item 4", RC_KAK_POTION_SHOP_ITEM_4 }, - { "Kak Potion Shop Item 5", RC_KAK_POTION_SHOP_ITEM_5 }, - { "Kak Potion Shop Item 6", RC_KAK_POTION_SHOP_ITEM_6 }, - { "Kak Potion Shop Item 7", RC_KAK_POTION_SHOP_ITEM_7 }, - { "Kak Potion Shop Item 8", RC_KAK_POTION_SHOP_ITEM_8 }, - { "MK Bombchu Shop Item 1", RC_MARKET_BOMBCHU_SHOP_ITEM_1 }, - { "MK Bombchu Shop Item 2", RC_MARKET_BOMBCHU_SHOP_ITEM_2 }, - { "MK Bombchu Shop Item 3", RC_MARKET_BOMBCHU_SHOP_ITEM_3 }, - { "MK Bombchu Shop Item 4", RC_MARKET_BOMBCHU_SHOP_ITEM_4 }, - { "MK Bombchu Shop Item 5", RC_MARKET_BOMBCHU_SHOP_ITEM_5 }, - { "MK Bombchu Shop Item 6", RC_MARKET_BOMBCHU_SHOP_ITEM_6 }, - { "MK Bombchu Shop Item 7", RC_MARKET_BOMBCHU_SHOP_ITEM_7 }, - { "MK Bombchu Shop Item 8", RC_MARKET_BOMBCHU_SHOP_ITEM_8 }, - { "MK Potion Shop Item 1", RC_MARKET_POTION_SHOP_ITEM_1 }, - { "MK Potion Shop Item 2", RC_MARKET_POTION_SHOP_ITEM_2 }, - { "MK Potion Shop Item 3", RC_MARKET_POTION_SHOP_ITEM_3 }, - { "MK Potion Shop Item 4", RC_MARKET_POTION_SHOP_ITEM_4 }, - { "MK Potion Shop Item 5", RC_MARKET_POTION_SHOP_ITEM_5 }, - { "MK Potion Shop Item 6", RC_MARKET_POTION_SHOP_ITEM_6 }, - { "MK Potion Shop Item 7", RC_MARKET_POTION_SHOP_ITEM_7 }, - { "MK Potion Shop Item 8", RC_MARKET_POTION_SHOP_ITEM_8 }, - { "MK Bazaar Item 1", RC_MARKET_BAZAAR_ITEM_1 }, - { "MK Bazaar Item 2", RC_MARKET_BAZAAR_ITEM_2 }, - { "MK Bazaar Item 3", RC_MARKET_BAZAAR_ITEM_3 }, - { "MK Bazaar Item 4", RC_MARKET_BAZAAR_ITEM_4 }, - { "MK Bazaar Item 5", RC_MARKET_BAZAAR_ITEM_5 }, - { "MK Bazaar Item 6", RC_MARKET_BAZAAR_ITEM_6 }, - { "MK Bazaar Item 7", RC_MARKET_BAZAAR_ITEM_7 }, - { "MK Bazaar Item 8", RC_MARKET_BAZAAR_ITEM_8 }, - { "Kak Bazaar Item 1", RC_KAK_BAZAAR_ITEM_1 }, - { "Kak Bazaar Item 2", RC_KAK_BAZAAR_ITEM_2 }, - { "Kak Bazaar Item 3", RC_KAK_BAZAAR_ITEM_3 }, - { "Kak Bazaar Item 4", RC_KAK_BAZAAR_ITEM_4 }, - { "Kak Bazaar Item 5", RC_KAK_BAZAAR_ITEM_5 }, - { "Kak Bazaar Item 6", RC_KAK_BAZAAR_ITEM_6 }, - { "Kak Bazaar Item 7", RC_KAK_BAZAAR_ITEM_7 }, - { "Kak Bazaar Item 8", RC_KAK_BAZAAR_ITEM_8 }, - { "ZD Shop Item 1", RC_ZD_SHOP_ITEM_1 }, - { "ZD Shop Item 2", RC_ZD_SHOP_ITEM_2 }, - { "ZD Shop Item 3", RC_ZD_SHOP_ITEM_3 }, - { "ZD Shop Item 4", RC_ZD_SHOP_ITEM_4 }, - { "ZD Shop Item 5", RC_ZD_SHOP_ITEM_5 }, - { "ZD Shop Item 6", RC_ZD_SHOP_ITEM_6 }, - { "ZD Shop Item 7", RC_ZD_SHOP_ITEM_7 }, - { "ZD Shop Item 8", RC_ZD_SHOP_ITEM_8 }, - { "GC Shop Item 1", RC_GC_SHOP_ITEM_1 }, - { "GC Shop Item 2", RC_GC_SHOP_ITEM_2 }, - { "GC Shop Item 3", RC_GC_SHOP_ITEM_3 }, - { "GC Shop Item 4", RC_GC_SHOP_ITEM_4 }, - { "GC Shop Item 5", RC_GC_SHOP_ITEM_5 }, - { "GC Shop Item 6", RC_GC_SHOP_ITEM_6 }, - { "GC Shop Item 7", RC_GC_SHOP_ITEM_7 }, - { "GC Shop Item 8", RC_GC_SHOP_ITEM_8 }, - { "Colossus Gossip Stone", RC_COLOSSUS_GOSSIP_STONE }, - { "DMC Gossip Stone", RC_DMC_GOSSIP_STONE }, - { "DMC Upper Grotto Gossip Stone", RC_DMC_UPPER_GROTTO_GOSSIP_STONE }, - { "DMT Gossip Stone", RC_DMT_GOSSIP_STONE }, - { "DMT Storms Grotto Gossip Stone", RC_DMT_STORMS_GROTTO_GOSSIP_STONE }, - { "Dodongo's Cavern Gossip Stone", RC_DODONGOS_CAVERN_GOSSIP_STONE }, - { "Fairy Gossip Stone", RC_FAIRY_GOSSIP_STONE }, - { "GC Maze Gossip Stone", RC_GC_MAZE_GOSSIP_STONE }, - { "GC Medigoron Gossip Stone", RC_GC_MEDIGORON_GOSSIP_STONE }, - { "GV Gossip Stone", RC_GV_GOSSIP_STONE }, - { "GY Gossip Stone", RC_GY_GOSSIP_STONE }, - { "HC Malon Gossip Stone", RC_HC_MALON_GOSSIP_STONE }, - { "HC Rock Wall Gossip Stone", RC_HC_ROCK_WALL_GOSSIP_STONE }, - { "HC Storms Grotto Gossip Stone", RC_HC_STORMS_GROTTO_GOSSIP_STONE }, - { "HF Cow Grotto Gossip Stone", RC_HF_COW_GROTTO_GOSSIP_STONE }, - { "HF Near Market Gossip Stone", RC_HF_NEAR_MARKET_GOSSIP_STONE }, - { "HF Open Grotto Gossip Stone", RC_HF_OPEN_GROTTO_GOSSIP_STONE }, - { "HF Southeast Gossip Stone", RC_HF_SOUTHEAST_GOSSIP_STONE }, - { "Jabu Gossip Stone", RC_JABU_GOSSIP_STONE }, - { "KF Deku Tree Left Gossip Stone", RC_KF_DEKU_TREE_LEFT_GOSSIP_STONE }, - { "KF Deku Tree Right Gossip Stone", RC_KF_DEKU_TREE_RIGHT_GOSSIP_STONE }, - { "KF Gossip Stone", RC_KF_GOSSIP_STONE }, - { "KF Storms Gossip Stone", RC_KF_STORMS_GOSSIP_STONE }, - { "Kak Open Grotto Gossip Stone", RC_KAK_OPEN_GROTTO_GOSSIP_STONE }, - { "LH Lab Gossip Stone", RC_LH_LAB_GOSSIP_STONE }, - { "LH Southeast Gossip Stone", RC_LH_SOUTHEAST_GOSSIP_STONE }, - { "LH Southwest Gossip Stone", RC_LH_SOUTHWEST_GOSSIP_STONE }, - { "LW Gossip Stone", RC_LW_GOSSIP_STONE }, - { "LW Near Shortcuts Gossip Stone", RC_LW_NEAR_SHORTCUTS_GOSSIP_STONE }, - { "SFM Maze Lower Gossip Stone", RC_SFM_MAZE_LOWER_GOSSIP_STONE }, - { "SFM Maze Upper Gossip Stone", RC_SFM_MAZE_UPPER_GOSSIP_STONE }, - { "SFM Saria Gossip Stone", RC_SFM_SARIA_GOSSIP_STONE }, - { "ToT Left Center Gossip Stone", RC_TOT_LEFT_CENTER_GOSSIP_STONE }, - { "ToT Left Gossip Stone", RC_TOT_LEFT_GOSSIP_STONE }, - { "ToT Right Center Gossip Stone", RC_TOT_RIGHT_CENTER_GOSSIP_STONE }, - { "ToT Right Gossip Stone", RC_TOT_RIGHT_GOSSIP_STONE }, - { "ZD Gossip Stone", RC_ZD_GOSSIP_STONE }, - { "ZR Near Domain Gossip Stone", RC_ZR_NEAR_DOMAIN_GOSSIP_STONE }, - { "ZR Near Grottos Gossip Stone", RC_ZR_NEAR_GROTTOS_GOSSIP_STONE }, - { "ZR Open Grotto Gossip Stone", RC_ZR_OPEN_GROTTO_GOSSIP_STONE } -}; - std::unordered_map getItemIdToItemId = { { GI_BOW, ITEM_BOW }, { GI_ARROW_FIRE, ITEM_ARROW_FIRE }, @@ -3561,13 +2830,6 @@ void GenerateRandomizerImgui() { cvarSettings[RSK_STARTING_CONSUMABLES] = CVar_GetS32("gRandomizeStartingConsumables", 0); cvarSettings[RSK_FULL_WALLETS] = CVar_GetS32("gRandomizeFullWallets", 0); - cvarSettings[RSK_EXCLUDE_DEKU_THEATER_MASK_OF_TRUTH] = CVar_GetS32("gRandomizeExcludeDekuTheaterMaskOfTruth", 0); - cvarSettings[RSK_EXCLUDE_KAK_10_GOLD_SKULLTULA_REWARD] = CVar_GetS32("gRandomizeExcludeKak10SkullReward", 0); - cvarSettings[RSK_EXCLUDE_KAK_20_GOLD_SKULLTULA_REWARD] = CVar_GetS32("gRandomizeExcludeKak20SkullReward", 0); - cvarSettings[RSK_EXCLUDE_KAK_30_GOLD_SKULLTULA_REWARD] = CVar_GetS32("gRandomizeExcludeKak30SkullReward", 0); - cvarSettings[RSK_EXCLUDE_KAK_40_GOLD_SKULLTULA_REWARD] = CVar_GetS32("gRandomizeExcludeKak40SkullReward", 0); - cvarSettings[RSK_EXCLUDE_KAK_50_GOLD_SKULLTULA_REWARD] = CVar_GetS32("gRandomizeExcludeKak50SkullReward", 0); - // RANDOTODO implement chest minigame shuffle with keysanity cvarSettings[RSK_SHUFFLE_CHEST_MINIGAME] = false; @@ -3587,7 +2849,15 @@ void GenerateRandomizerImgui() { cvarSettings[RSK_SKULLS_SUNS_SONG] = CVar_GetS32("gRandomizeGsExpectSunsSong", 0); - RandoMain::GenerateRando(cvarSettings); + // todo: this efficently when we build out cvar array support + std::set excludedLocations; + std::stringstream excludedLocationStringStream(CVar_GetString("gRandomizeExcludedLocations", "")); + std::string excludedLocationString; + while(getline(excludedLocationStringStream, excludedLocationString, ',')) { + excludedLocations.insert((RandomizerCheck)std::stoi(excludedLocationString)); + } + + RandoMain::GenerateRando(cvarSettings, excludedLocations); CVar_SetS32("gRandoGenerating", 0); CVar_Save(); @@ -4461,41 +3731,126 @@ void DrawRandoEditor(bool& open) { ImGui::EndTabItem(); } + static bool locationsTabOpen = false; if (ImGui::BeginTabItem("Locations")) { ImGui::PushStyleVar(ImGuiStyleVar_CellPadding, cellPadding); + if (!locationsTabOpen) { + locationsTabOpen = true; + RandomizerCheckObjects::UpdateImGuiVisibility(); + // todo: this efficently when we build out cvar array support + std::stringstream excludedLocationStringStream(CVar_GetString("gRandomizeExcludedLocations", "")); + std::string excludedLocationString; + excludedLocations.clear(); + while(getline(excludedLocationStringStream, excludedLocationString, ',')) { + excludedLocations.insert((RandomizerCheck)std::stoi(excludedLocationString)); + } + } + if (ImGui::BeginTable("tableRandoLocations", 2, ImGuiTableFlags_BordersH | ImGuiTableFlags_BordersV)) { - ImGui::TableSetupColumn("Exclude Locations", ImGuiTableColumnFlags_WidthStretch, 200.0f); - ImGui::TableSetupColumn(" ", ImGuiTableColumnFlags_WidthStretch, 200.0f); + ImGui::TableSetupColumn("Included", ImGuiTableColumnFlags_WidthStretch, 200.0f); + ImGui::TableSetupColumn("Excluded", ImGuiTableColumnFlags_WidthStretch, 200.0f); ImGui::PushItemFlag(ImGuiItemFlags_Disabled, true); ImGui::TableHeadersRow(); ImGui::PopItemFlag(); ImGui::TableNextRow(); - // COLUMN 1 - EXCLUDE LOCATIONS - ImGui::TableNextColumn(); - window->DC.CurrLineTextBaseOffset = 0.0f; - SohImGui::EnhancementCheckbox("Deku Theater Mask of Truth", "gRandomizeExcludeDekuTheaterMaskOfTruth"); - PaddedSeparator(); - SohImGui::EnhancementCheckbox("10 Skulltula Reward", "gRandomizeExcludeKak10SkullReward"); - PaddedSeparator(); - SohImGui::EnhancementCheckbox("20 Skulltula Reward", "gRandomizeExcludeKak20SkullReward"); - PaddedSeparator(); - SohImGui::EnhancementCheckbox("30 Skulltula Reward", "gRandomizeExcludeKak30SkullReward"); - PaddedSeparator(); - SohImGui::EnhancementCheckbox("40 Skulltula Reward", "gRandomizeExcludeKak40SkullReward"); - PaddedSeparator(); - SohImGui::EnhancementCheckbox("50 Skulltula Reward", "gRandomizeExcludeKak50SkullReward"); - - // COLUMN 2 - EXCLUDE LOCATIONS + // COLUMN 1 - INCLUDED LOCATIONS ImGui::TableNextColumn(); window->DC.CurrLineTextBaseOffset = 0.0f; + static ImGuiTextFilter locationSearch; + locationSearch.Draw(); + + ImGui::BeginChild("ChildIncludedLocations", ImVec2(0, -8)); + for (auto areaIt : RandomizerCheckObjects::GetAllRCObjects()) { + bool hasItems = false; + for (auto locationIt : areaIt.second) { + if (locationIt.visibleInImgui && + !excludedLocations.count(locationIt.rc) && + locationSearch.PassFilter(locationIt.rcSpoilerName.c_str())) { + + hasItems = true; + break; + } + } + + if (hasItems) { + ImGui::SetNextItemOpen(true, ImGuiCond_Once); + if (ImGui::TreeNode(RandomizerCheckObjects::GetRCAreaName(areaIt.first).c_str())) { + for (auto locationIt : areaIt.second) { + if (locationIt.visibleInImgui && + !excludedLocations.count(locationIt.rc) && + locationSearch.PassFilter(locationIt.rcSpoilerName.c_str())) { + + if (ImGui::ArrowButton(std::to_string(locationIt.rc).c_str(), ImGuiDir_Right)) { + excludedLocations.insert(locationIt.rc); + // todo: this efficently when we build out cvar array support + std::string excludedLocationString = ""; + for (auto excludedLocationIt : excludedLocations) { + excludedLocationString += std::to_string(excludedLocationIt); + excludedLocationString += ","; + } + CVar_SetString("gRandomizeExcludedLocations", excludedLocationString.c_str()); + SohImGui::needs_save = true; + } + ImGui::SameLine(); + ImGui::Text(locationIt.rcShortName.c_str()); + } + } + ImGui::TreePop(); + } + } + } + ImGui::EndChild(); + + // COLUMN 2 - EXCLUDED LOCATIONS + ImGui::TableNextColumn(); + window->DC.CurrLineTextBaseOffset = 0.0f; + + ImGui::BeginChild("ChildExcludedLocations", ImVec2(0, -8)); + for (auto areaIt : RandomizerCheckObjects::GetAllRCObjects()) { + bool hasItems = false; + for (auto locationIt : areaIt.second) { + if (locationIt.visibleInImgui && excludedLocations.count(locationIt.rc)) { + hasItems = true; + break; + } + } + + if (hasItems) { + ImGui::SetNextItemOpen(true, ImGuiCond_Once); + if (ImGui::TreeNode(RandomizerCheckObjects::GetRCAreaName(areaIt.first).c_str())) { + for (auto locationIt : areaIt.second) { + auto elfound = excludedLocations.find(locationIt.rc); + if (locationIt.visibleInImgui && elfound != excludedLocations.end()) { + if (ImGui::ArrowButton(std::to_string(locationIt.rc).c_str(), ImGuiDir_Left)) { + excludedLocations.erase(elfound); + // todo: this efficently when we build out cvar array support + std::string excludedLocationString = ""; + for (auto excludedLocationIt : excludedLocations) { + excludedLocationString += std::to_string(excludedLocationIt); + excludedLocationString += ","; + } + CVar_SetString("gRandomizeExcludedLocations", excludedLocationString.c_str()); + SohImGui::needs_save = true; + } + ImGui::SameLine(); + ImGui::Text(locationIt.rcShortName.c_str()); + } + } + ImGui::TreePop(); + } + } + } + ImGui::EndChild(); ImGui::EndTable(); } ImGui::PopStyleVar(1); ImGui::EndTabItem(); + } else { + locationsTabOpen = false; } if (ImGui::BeginTabItem("Tricks/Glitches")) { diff --git a/soh/soh/Enhancements/randomizer/randomizerTypes.h b/soh/soh/Enhancements/randomizer/randomizerTypes.h index b09b9dab2..742fd56db 100644 --- a/soh/soh/Enhancements/randomizer/randomizerTypes.h +++ b/soh/soh/Enhancements/randomizer/randomizerTypes.h @@ -1,5 +1,7 @@ #pragma once +#include + typedef struct { char tex[512]; uint16_t width; @@ -753,6 +755,7 @@ typedef enum { RC_ZR_NEAR_DOMAIN_GOSSIP_STONE, RC_ZR_NEAR_GROTTOS_GOSSIP_STONE, RC_ZR_OPEN_GROTTO_GOSSIP_STONE, + RC_GANONDORF_HINT, RC_MAX } RandomizerCheck; @@ -993,13 +996,7 @@ typedef enum { RSK_SKIP_CHILD_ZELDA, RSK_STARTING_CONSUMABLES, RSK_FULL_WALLETS, - RSK_EXCLUDE_DEKU_THEATER_MASK_OF_TRUTH, RSK_LANGUAGE, - RSK_EXCLUDE_KAK_10_GOLD_SKULLTULA_REWARD, - RSK_EXCLUDE_KAK_20_GOLD_SKULLTULA_REWARD, - RSK_EXCLUDE_KAK_30_GOLD_SKULLTULA_REWARD, - RSK_EXCLUDE_KAK_40_GOLD_SKULLTULA_REWARD, - RSK_EXCLUDE_KAK_50_GOLD_SKULLTULA_REWARD, RSK_SHUFFLE_CHEST_MINIGAME, RSK_CUCCO_COUNT, RSK_BIG_POE_COUNT, diff --git a/soh/soh/Enhancements/randomizer/randomizer_check_objects.cpp b/soh/soh/Enhancements/randomizer/randomizer_check_objects.cpp new file mode 100644 index 000000000..67327985b --- /dev/null +++ b/soh/soh/Enhancements/randomizer/randomizer_check_objects.cpp @@ -0,0 +1,972 @@ +#include "randomizer_check_objects.h" +#include +#include +#include +#include + +/* +typedef struct { + RandomizerCheck rc; + RandomizerCheckVanillaOrMQ vOrMQ; + RandomizerCheckType rcType; + RandomizerCheckArea rcArea; + bool visibleInImgui; + std::string rcShortName; + std::string rcSpoilerName; +} RandomizerCheckObject; +*/ + +#define RC_OBJECT(rc, rc_v_or_mq, rc_type, rc_area, rc_shortname, rc_spoilername) \ + {rc, rc_v_or_mq, rc_type, rc_area, false, rc_shortname, rc_spoilername} + +std::vector rcObjectsKF = { + RC_OBJECT(RC_KF_KOKIRI_SWORD_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KOKIRI_FOREST, "Kokiri Sword Chest", "KF Kokiri Sword Chest"), + RC_OBJECT(RC_KF_MIDOS_TOP_LEFT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KOKIRI_FOREST, "Mido Top Left Chest", "KF Mido Top Left Chest"), + RC_OBJECT(RC_KF_MIDOS_TOP_RIGHT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KOKIRI_FOREST, "Mido Top Right Chest", "KF Mido Top Right Chest"), + RC_OBJECT(RC_KF_MIDOS_BOTTOM_LEFT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KOKIRI_FOREST, "Mido Bottom Left Chest", "KF Mido Bottom Left Chest"), + RC_OBJECT(RC_KF_MIDOS_BOTTOM_RIGHT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KOKIRI_FOREST, "Mido Bottom Right Chest", "KF Mido Bottom Right Chest"), + RC_OBJECT(RC_KF_STORMS_GROTTO_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KOKIRI_FOREST, "Storms Grotto Chest", "KF Storms Grotto Chest"), + RC_OBJECT(RC_KF_GS_BEAN_PATCH, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_KOKIRI_FOREST, "GS Bean Patch", "KF GS Bean Patch"), + RC_OBJECT(RC_KF_GS_KNOW_IT_ALL_HOUSE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_KOKIRI_FOREST, "GS Know It All House", "KF GS Know It All House"), + RC_OBJECT(RC_KF_GS_HOUSE_OF_TWINS, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_KOKIRI_FOREST, "GS House of Twins", "KF GS House of Twins"), + RC_OBJECT(RC_KF_LINKS_HOUSE_COW, RCVORMQ_VANILLA, RCTYPE_COW, RCAREA_KOKIRI_FOREST, "Links House Cow", "KF Links House Cow"), + RC_OBJECT(RC_KF_SHOP_ITEM_1, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KOKIRI_FOREST, "Shop Item 1", "KF Shop Item 1"), + RC_OBJECT(RC_KF_SHOP_ITEM_2, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KOKIRI_FOREST, "Shop Item 2", "KF Shop Item 2"), + RC_OBJECT(RC_KF_SHOP_ITEM_3, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KOKIRI_FOREST, "Shop Item 3", "KF Shop Item 3"), + RC_OBJECT(RC_KF_SHOP_ITEM_4, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KOKIRI_FOREST, "Shop Item 4", "KF Shop Item 4"), + RC_OBJECT(RC_KF_SHOP_ITEM_5, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KOKIRI_FOREST, "Shop Item 5", "KF Shop Item 5"), + RC_OBJECT(RC_KF_SHOP_ITEM_6, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KOKIRI_FOREST, "Shop Item 6", "KF Shop Item 6"), + RC_OBJECT(RC_KF_SHOP_ITEM_7, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KOKIRI_FOREST, "Shop Item 7", "KF Shop Item 7"), + RC_OBJECT(RC_KF_SHOP_ITEM_8, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KOKIRI_FOREST, "Shop Item 8", "KF Shop Item 8"), + RC_OBJECT(RC_KF_DEKU_TREE_LEFT_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_KOKIRI_FOREST, "Deku Tree Left Gossip Stone", "KF Deku Tree Left Gossip Stone"), + RC_OBJECT(RC_KF_DEKU_TREE_RIGHT_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_KOKIRI_FOREST, "Deku Tree Right Gossip Stone", "KF Deku Tree Right Gossip Stone"), + RC_OBJECT(RC_KF_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_KOKIRI_FOREST, "Gossip Stone", "KF Gossip Stone"), + RC_OBJECT(RC_KF_STORMS_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_KOKIRI_FOREST, "Storms Gossip Stone", "KF Storms Gossip Stone"), +}; + +std::vector rcObjectsLW = { + RC_OBJECT(RC_LW_NEAR_SHORTCUTS_GROTTO_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LOST_WOODS, "Near Shortcuts Grotto Chest", "LW Near Shortcuts Grotto Chest"), + RC_OBJECT(RC_LW_SKULL_KID, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LOST_WOODS, "Skull Kid", "LW Skull Kid"), + RC_OBJECT(RC_LW_TRADE_COJIRO, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LOST_WOODS, "Trade Cojiro", "LW Trade Cojiro"), + RC_OBJECT(RC_LW_TRADE_ODD_POTION, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LOST_WOODS, "Trade Odd Potion", "LW Trade Odd Potion"), + RC_OBJECT(RC_LW_OCARINA_MEMORY_GAME, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LOST_WOODS, "Ocarina Memory Game", "LW Ocarina Memory Game"), + RC_OBJECT(RC_LW_TARGET_IN_WOODS, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LOST_WOODS, "Target in Woods", "LW Target in Woods"), + RC_OBJECT(RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_RIGHT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LOST_WOODS, "Deku Scrub Near Deku Theater Right", "LW Deku Scrub Near Deku Theater Right"), + RC_OBJECT(RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_LEFT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LOST_WOODS, "Deku Scrub Near Deku Theater Left", "LW Deku Scrub Near Deku Theater Left"), + RC_OBJECT(RC_LW_DEKU_SCRUB_NEAR_BRIDGE, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LOST_WOODS, "Deku Scrub Near Bridge", "LW Deku Scrub Near Bridge"), + RC_OBJECT(RC_LW_DEKU_SCRUB_GROTTO_REAR, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LOST_WOODS, "Deku Scrub Grotto Rear", "LW Deku Scrub Grotto Rear"), + RC_OBJECT(RC_LW_DEKU_SCRUB_GROTTO_FRONT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LOST_WOODS, "Deku Scrub Grotto Front", "LW Deku Scrub Grotto Front"), + RC_OBJECT(RC_DEKU_THEATER_SKULL_MASK, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LOST_WOODS, "Deku Theater Skull Mask", "Deku Theater Skull Mask"), + RC_OBJECT(RC_DEKU_THEATER_MASK_OF_TRUTH, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LOST_WOODS, "Deku Theater Mask of Truth", "Deku Theater Mask of Truth"), + RC_OBJECT(RC_LW_GS_BEAN_PATCH_NEAR_BRIDGE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_LOST_WOODS, "GS Bean Patch Near Bridge", "LW GS Bean Patch Near Bridge"), + RC_OBJECT(RC_LW_GS_BEAN_PATCH_NEAR_THEATER, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_LOST_WOODS, "GS Bean Patch Near Theater", "LW GS Bean Patch Near Theater"), + RC_OBJECT(RC_LW_GS_ABOVE_THEATER, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_LOST_WOODS, "GS Above Theater", "LW GS Above Theater"), + RC_OBJECT(RC_LW_GIFT_FROM_SARIA, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LOST_WOODS, "Gift From Saria", "LW Gift From Saria"), + RC_OBJECT(RC_LW_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_LOST_WOODS, "Gossip Stone", "LW Gossip Stone"), + RC_OBJECT(RC_LW_NEAR_SHORTCUTS_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_LOST_WOODS, "Near Shortcuts Gossip Stone", "LW Near Shortcuts Gossip Stone"), +}; + +std::vector rcObjectsSFM = { + RC_OBJECT(RC_SFM_WOLFOS_GROTTO_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SACRED_FOREST_MEADOW, "Wolfos Grotto Chest", "SFM Wolfos Grotto Chest"), + RC_OBJECT(RC_SFM_DEKU_SCRUB_GROTTO_REAR, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SACRED_FOREST_MEADOW, "Deku Scrub Grotto Rear", "SFM Deku Scrub Grotto Rear"), + RC_OBJECT(RC_SFM_DEKU_SCRUB_GROTTO_FRONT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SACRED_FOREST_MEADOW, "Deku Scrub Grotto Front", "SFM Deku Scrub Grotto Front"), + RC_OBJECT(RC_SFM_GS, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_SACRED_FOREST_MEADOW, "GS", "SFM GS"), + RC_OBJECT(RC_SHEIK_IN_FOREST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SACRED_FOREST_MEADOW, "Sheik in Forest", "Sheik in Forest"), + RC_OBJECT(RC_SONG_FROM_SARIA, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SACRED_FOREST_MEADOW, "Song from Saria", "Song from Saria"), + RC_OBJECT(RC_SFM_MAZE_LOWER_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_SACRED_FOREST_MEADOW, "Maze Lower Gossip Stone", "SFM Maze Lower Gossip Stone"), + RC_OBJECT(RC_SFM_MAZE_UPPER_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_SACRED_FOREST_MEADOW, "Maze Upper Gossip Stone", "SFM Maze Upper Gossip Stone"), + RC_OBJECT(RC_SFM_SARIA_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_SACRED_FOREST_MEADOW, "Saria Gossip Stone", "SFM Saria Gossip Stone"), +}; + +std::vector rcObjectsHF = { + RC_OBJECT(RC_HF_SOUTHEAST_GROTTO_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_HYRULE_FIELD, "Southeast Grotto Chest", "HF Southeast Grotto Chest"), + RC_OBJECT(RC_HF_OPEN_GROTTO_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_HYRULE_FIELD, "Open Grotto Chest", "HF Open Grotto Chest"), + RC_OBJECT(RC_HF_NEAR_MARKET_GROTTO_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_HYRULE_FIELD, "Near Market Grotto Chest", "HF Near Market Grotto Chest"), + RC_OBJECT(RC_HF_OCARINA_OF_TIME_ITEM, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_HYRULE_FIELD, "Ocarina of Time Item", "HF Ocarina of Time Item"), + RC_OBJECT(RC_HF_TEKTITE_GROTTO_FREESTANDING_POH, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_HYRULE_FIELD, "Tektite Grotto Freestanding PoH", "HF Tektite Grotto Freestanding PoH"), + RC_OBJECT(RC_HF_DEKU_SCRUB_GROTTO, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_HYRULE_FIELD, "Deku Scrub Grotto", "HF Deku Scrub Grotto"), + RC_OBJECT(RC_HF_GS_COW_GROTTO, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_HYRULE_FIELD, "GS Cow Grotto", "HF GS Cow Grotto"), + RC_OBJECT(RC_HF_GS_NEAR_KAK_GROTTO, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_HYRULE_FIELD, "GS Near Kak Grotto", "HF GS Near Kak Grotto"), + RC_OBJECT(RC_SONG_FROM_OCARINA_OF_TIME, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_HYRULE_FIELD, "Song from Ocarina of Time", "Song from Ocarina of Time"), + RC_OBJECT(RC_HF_COW_GROTTO_COW, RCVORMQ_VANILLA, RCTYPE_COW, RCAREA_HYRULE_FIELD, "Cow Grotto Cow", "HF Cow Grotto Cow"), + RC_OBJECT(RC_HF_COW_GROTTO_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_HYRULE_FIELD, "Cow Grotto Gossip Stone", "HF Cow Grotto Gossip Stone"), + RC_OBJECT(RC_HF_NEAR_MARKET_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_HYRULE_FIELD, "Near Market Gossip Stone", "HF Near Market Gossip Stone"), + RC_OBJECT(RC_HF_OPEN_GROTTO_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_HYRULE_FIELD, "Open Grotto Gossip Stone", "HF Open Grotto Gossip Stone"), + RC_OBJECT(RC_HF_SOUTHEAST_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_HYRULE_FIELD, "Southeast Gossip Stone", "HF Southeast Gossip Stone"), +}; + +std::vector rcObjectsLH = { + RC_OBJECT(RC_LH_CHILD_FISHING, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LAKE_HYLIA, "Child Fishing", "LH Child Fishing"), + RC_OBJECT(RC_LH_ADULT_FISHING, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LAKE_HYLIA, "Adult Fishing", "LH Adult Fishing"), + RC_OBJECT(RC_LH_LAB_DIVE, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LAKE_HYLIA, "Lab Dive", "LH Lab Dive"), + RC_OBJECT(RC_LH_TRADE_FROG, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LAKE_HYLIA, "Lab Trade Eyeball Frog", "LH Lab Trade Eyeball Frog"), + RC_OBJECT(RC_LH_UNDERWATER_ITEM, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LAKE_HYLIA, "Underwater Item", "LH Underwater Item"), + RC_OBJECT(RC_LH_SUN, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LAKE_HYLIA, "Sun", "LH Sun"), + RC_OBJECT(RC_LH_FREESTANDING_POH, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LAKE_HYLIA, "Freestanding PoH", "LH Freestanding PoH"), + RC_OBJECT(RC_LH_DEKU_SCRUB_GROTTO_LEFT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LAKE_HYLIA, "Deku Scrub Grotto Left", "LH Deku Scrub Grotto Left"), + RC_OBJECT(RC_LH_DEKU_SCRUB_GROTTO_RIGHT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LAKE_HYLIA, "Deku Scrub Grotto Right", "LH Deku Scrub Grotto Right"), + RC_OBJECT(RC_LH_DEKU_SCRUB_GROTTO_CENTER, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LAKE_HYLIA, "Deku Scrub Grotto Center", "LH Deku Scrub Grotto Center"), + RC_OBJECT(RC_LH_GS_BEAN_PATCH, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_LAKE_HYLIA, "GS Bean Patch", "LH GS Bean Patch"), + RC_OBJECT(RC_LH_GS_SMALL_ISLAND, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_LAKE_HYLIA, "GS Small Island", "LH GS Small Island"), + RC_OBJECT(RC_LH_GS_LAB_WALL, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_LAKE_HYLIA, "GS Lab Wall", "LH GS Lab Wall"), + RC_OBJECT(RC_LH_GS_LAB_CRATE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_LAKE_HYLIA, "GS Lab Crate", "LH GS Lab Crate"), + RC_OBJECT(RC_LH_GS_TREE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_LAKE_HYLIA, "GS Tree", "LH GS Tree"), + RC_OBJECT(RC_LH_LAB_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_LAKE_HYLIA, "Lab Gossip Stone", "LH Lab Gossip Stone"), + RC_OBJECT(RC_LH_SOUTHEAST_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_LAKE_HYLIA, "Southeast Gossip Stone", "LH Southeast Gossip Stone"), + RC_OBJECT(RC_LH_SOUTHWEST_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_LAKE_HYLIA, "Southwest Gossip Stone", "LH Southwest Gossip Stone"), +}; + +std::vector rcObjectsGV = { + RC_OBJECT(RC_GV_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_VALLEY, "Chest", "GV Chest"), + RC_OBJECT(RC_GV_TRADE_SAW, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_VALLEY, "Trade Saw", "GV Trade Saw"), + RC_OBJECT(RC_GV_WATERFALL_FREESTANDING_POH, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_VALLEY, "Waterfall Freestanding PoH", "GV Waterfall Freestanding PoH"), + RC_OBJECT(RC_GV_CRATE_FREESTANDING_POH, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_VALLEY, "Crate Freestanding PoH", "GV Crate Freestanding PoH"), + RC_OBJECT(RC_GV_DEKU_SCRUB_GROTTO_REAR, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_VALLEY, "Deku Scrub Grotto Rear", "GV Deku Scrub Grotto Rear"), + RC_OBJECT(RC_GV_DEKU_SCRUB_GROTTO_FRONT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_VALLEY, "Deku Scrub Grotto Front", "GV Deku Scrub Grotto Front"), + RC_OBJECT(RC_GV_GS_BEAN_PATCH, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_GERUDO_VALLEY, "GS Bean Patch", "GV GS Bean Patch"), + RC_OBJECT(RC_GV_GS_SMALL_BRIDGE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_GERUDO_VALLEY, "GS Small Bridge", "GV GS Small Bridge"), + RC_OBJECT(RC_GV_GS_PILLAR, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_GERUDO_VALLEY, "GS Pillar", "GV GS Pillar"), + RC_OBJECT(RC_GV_GS_BEHIND_TENT, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_GERUDO_VALLEY, "GS Behind Tent", "GV GS Behind Tent"), + RC_OBJECT(RC_GV_COW, RCVORMQ_VANILLA, RCTYPE_COW, RCAREA_GERUDO_VALLEY, "Cow", "GV Cow"), + RC_OBJECT(RC_GV_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_GERUDO_VALLEY, "Gossip Stone", "GV Gossip Stone"), +}; + +std::vector rcObjectsGF = { + RC_OBJECT(RC_GF_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_FORTRESS, "Chest", "GF Chest"), + RC_OBJECT(RC_GF_HBA_1000_POINTS, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_FORTRESS, "GF HBA 1000 Points", "GF HBA 1000 Points"), + RC_OBJECT(RC_GF_HBA_1500_POINTS, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_FORTRESS, "GF HBA 1500 Points", "GF HBA 1500 Points"), + RC_OBJECT(RC_GF_GERUDO_MEMBERSHIP_CARD, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_FORTRESS, "GF Gerudo Membership Card", "GF Gerudo Membership Card"), + RC_OBJECT(RC_GF_NORTH_F1_CARPENTER, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_FORTRESS, "GF North F1 Carpenter", "GF North F1 Carpenter"), + RC_OBJECT(RC_GF_NORTH_F2_CARPENTER, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_FORTRESS, "GF North F2 Carpenter", "GF North F2 Carpenter"), + RC_OBJECT(RC_GF_SOUTH_F1_CARPENTER, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_FORTRESS, "GF South F1 Carpenter", "GF South F1 Carpenter"), + RC_OBJECT(RC_GF_SOUTH_F2_CARPENTER, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_FORTRESS, "GF South F2 Carpenter", "GF South F2 Carpenter"), + RC_OBJECT(RC_GF_GS_ARCHERY_RANGE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_GERUDO_FORTRESS, "GS Archery Range", "GF GS Archery Range"), + RC_OBJECT(RC_GF_GS_TOP_FLOOR, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_GERUDO_FORTRESS, "GS Top Floor", "GF GS Top Floor"), +}; + +std::vector rcObjectsWL = { + RC_OBJECT(RC_WASTELAND_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_WASTELAND, "Chest", "Wasteland Chest"), + RC_OBJECT(RC_WASTELAND_BOMBCHU_SALESMAN, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_WASTELAND, "Carpet Salesman", "Wasteland Carpet Salesman"), + RC_OBJECT(RC_WASTELAND_GS, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_WASTELAND, "GS", "Wasteland GS"), +}; + +std::vector rcObjectsCL = { + RC_OBJECT(RC_COLOSSUS_FREESTANDING_POH, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DESERT_COLOSSUS, "Freestanding PoH", "Colossus Freestanding PoH"), + RC_OBJECT(RC_COLOSSUS_DEKU_SCRUB_GROTTO_REAR, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DESERT_COLOSSUS, "Deku Scrub Grotto Rear", "Colossus Deku Scrub Grotto Rear"), + RC_OBJECT(RC_COLOSSUS_DEKU_SCRUB_GROTTO_FRONT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DESERT_COLOSSUS, "Deku Scrub Grotto Front", "Colossus Deku Scrub Grotto Front"), + RC_OBJECT(RC_COLOSSUS_GS_BEAN_PATCH, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_DESERT_COLOSSUS, "GS Bean Patch", "Colossus GS Bean Patch"), + RC_OBJECT(RC_COLOSSUS_GS_HILL, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_DESERT_COLOSSUS, "GS Hill", "Colossus GS Hill"), + RC_OBJECT(RC_COLOSSUS_GS_TREE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_DESERT_COLOSSUS, "GS Tree", "Colossus GS Tree"), + RC_OBJECT(RC_COLOSSUS_GREAT_FAIRY_REWARD, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DESERT_COLOSSUS, "Great Fairy Reward", "Colossus Great Fairy Reward"), + RC_OBJECT(RC_SHEIK_AT_COLOSSUS, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DESERT_COLOSSUS, "Sheik at Colossus", "Sheik at Colossus"), + RC_OBJECT(RC_COLOSSUS_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_DESERT_COLOSSUS, "Gossip Stone", "Colossus Gossip Stone"), +}; + +std::vector rcObjectsMK = { + RC_OBJECT(RC_MARKET_TREASURE_CHEST_GAME_REWARD, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_MARKET, "Treasure Chest Game Reward", "MK Treasure Chest Game Reward"), + RC_OBJECT(RC_MARKET_BOMBCHU_BOWLING_FIRST_PRIZE, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_MARKET, "Bombchu Bowling First Prize", "MK Bombchu Bowling First Prize"), + RC_OBJECT(RC_MARKET_BOMBCHU_BOWLING_SECOND_PRIZE, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_MARKET, "Bombchu Bowling Second Prize", "MK Bombchu Bowling Second Prize"), + RC_OBJECT(RC_MARKET_LOST_DOG, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_MARKET, "Lost Dog", "MK Lost Dog"), + RC_OBJECT(RC_MARKET_SHOOTING_GALLERY_REWARD, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_MARKET, "Shooting Gallery", "MK Shooting Gallery"), + RC_OBJECT(RC_MARKET_10_BIG_POES, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_MARKET, "10 Big Poes", "MK 10 Big Poes"), + RC_OBJECT(RC_MARKET_TREASURE_CHEST_GAME_ITEM_1, RCVORMQ_VANILLA, RCTYPE_CHEST_GAME, RCAREA_MARKET, "Chest Game First Room Chest", "MK Chest Game First Room Chest"), + RC_OBJECT(RC_MARKET_TREASURE_CHEST_GAME_ITEM_2, RCVORMQ_VANILLA, RCTYPE_CHEST_GAME, RCAREA_MARKET, "Chest Game Second Room Chest", "MK Chest Game Second Room Chest"), + RC_OBJECT(RC_MARKET_TREASURE_CHEST_GAME_ITEM_3, RCVORMQ_VANILLA, RCTYPE_CHEST_GAME, RCAREA_MARKET, "Chest Game Third Room Chest", "MK Chest Game Third Room Chest"), + RC_OBJECT(RC_MARKET_TREASURE_CHEST_GAME_ITEM_4, RCVORMQ_VANILLA, RCTYPE_CHEST_GAME, RCAREA_MARKET, "Chest Game Fourth Room Chest", "MK Chest Game Fourth Room Chest"), + RC_OBJECT(RC_MARKET_TREASURE_CHEST_GAME_ITEM_5, RCVORMQ_VANILLA, RCTYPE_CHEST_GAME, RCAREA_MARKET, "Chest Game Fifth Room Chest", "MK Chest Game Fifth Room Chest"), + RC_OBJECT(RC_MARKET_GS_GUARD_HOUSE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_MARKET, "Market GS Guard House", "Market GS Guard House"), + RC_OBJECT(RC_TOT_LIGHT_ARROWS_CUTSCENE, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_MARKET, "ToT Light Arrow Cutscene", "ToT Light Arrow Cutscene"), + RC_OBJECT(RC_SHEIK_AT_TEMPLE, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_MARKET, "Sheik at Temple", "Sheik at Temple"), + RC_OBJECT(RC_MARKET_BOMBCHU_SHOP_ITEM_1, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Bombchu Shop Item 1", "MK Bombchu Shop Item 1"), + RC_OBJECT(RC_MARKET_BOMBCHU_SHOP_ITEM_2, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Bombchu Shop Item 2", "MK Bombchu Shop Item 2"), + RC_OBJECT(RC_MARKET_BOMBCHU_SHOP_ITEM_3, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Bombchu Shop Item 3", "MK Bombchu Shop Item 3"), + RC_OBJECT(RC_MARKET_BOMBCHU_SHOP_ITEM_4, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Bombchu Shop Item 4", "MK Bombchu Shop Item 4"), + RC_OBJECT(RC_MARKET_BOMBCHU_SHOP_ITEM_5, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Bombchu Shop Item 5", "MK Bombchu Shop Item 5"), + RC_OBJECT(RC_MARKET_BOMBCHU_SHOP_ITEM_6, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Bombchu Shop Item 6", "MK Bombchu Shop Item 6"), + RC_OBJECT(RC_MARKET_BOMBCHU_SHOP_ITEM_7, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Bombchu Shop Item 7", "MK Bombchu Shop Item 7"), + RC_OBJECT(RC_MARKET_BOMBCHU_SHOP_ITEM_8, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Bombchu Shop Item 8", "MK Bombchu Shop Item 8"), + RC_OBJECT(RC_MARKET_POTION_SHOP_ITEM_1, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Potion Shop Item 1", "MK Potion Shop Item 1"), + RC_OBJECT(RC_MARKET_POTION_SHOP_ITEM_2, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Potion Shop Item 2", "MK Potion Shop Item 2"), + RC_OBJECT(RC_MARKET_POTION_SHOP_ITEM_3, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Potion Shop Item 3", "MK Potion Shop Item 3"), + RC_OBJECT(RC_MARKET_POTION_SHOP_ITEM_4, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Potion Shop Item 4", "MK Potion Shop Item 4"), + RC_OBJECT(RC_MARKET_POTION_SHOP_ITEM_5, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Potion Shop Item 5", "MK Potion Shop Item 5"), + RC_OBJECT(RC_MARKET_POTION_SHOP_ITEM_6, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Potion Shop Item 6", "MK Potion Shop Item 6"), + RC_OBJECT(RC_MARKET_POTION_SHOP_ITEM_7, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Potion Shop Item 7", "MK Potion Shop Item 7"), + RC_OBJECT(RC_MARKET_POTION_SHOP_ITEM_8, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Potion Shop Item 8", "MK Potion Shop Item 8"), + RC_OBJECT(RC_MARKET_BAZAAR_ITEM_1, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Bazaar Item 1", "MK Bazaar Item 1"), + RC_OBJECT(RC_MARKET_BAZAAR_ITEM_2, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Bazaar Item 2", "MK Bazaar Item 2"), + RC_OBJECT(RC_MARKET_BAZAAR_ITEM_3, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Bazaar Item 3", "MK Bazaar Item 3"), + RC_OBJECT(RC_MARKET_BAZAAR_ITEM_4, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Bazaar Item 4", "MK Bazaar Item 4"), + RC_OBJECT(RC_MARKET_BAZAAR_ITEM_5, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Bazaar Item 5", "MK Bazaar Item 5"), + RC_OBJECT(RC_MARKET_BAZAAR_ITEM_6, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Bazaar Item 6", "MK Bazaar Item 6"), + RC_OBJECT(RC_MARKET_BAZAAR_ITEM_7, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Bazaar Item 7", "MK Bazaar Item 7"), + RC_OBJECT(RC_MARKET_BAZAAR_ITEM_8, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_MARKET, "Bazaar Item 8", "MK Bazaar Item 8"), + RC_OBJECT(RC_TOT_LEFT_CENTER_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_MARKET, "ToT Left Center Gossip Stone", "ToT Left Center Gossip Stone"), + RC_OBJECT(RC_TOT_LEFT_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_MARKET, "ToT Left Gossip Stone", "ToT Left Gossip Stone"), + RC_OBJECT(RC_TOT_RIGHT_CENTER_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_MARKET, "ToT Right Center Gossip Stone", "ToT Right Center Gossip Stone"), + RC_OBJECT(RC_TOT_RIGHT_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_MARKET, "ToT Right Gossip Stone", "ToT Right Gossip Stone"), +}; + +std::vector rcObjectsHC = { + RC_OBJECT(RC_HC_MALON_EGG, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_HYRULE_CASTLE, "Malon Egg", "HC Malon Egg"), + RC_OBJECT(RC_HC_ZELDAS_LETTER, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_HYRULE_CASTLE, "Zeldas Letter", "HC Zeldas Letter"), + RC_OBJECT(RC_OGC_GS, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_HYRULE_CASTLE, "OGC GS", "OGC GS"), + RC_OBJECT(RC_HC_GS_STORMS_GROTTO, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_HYRULE_CASTLE, "GS Storms Grotto", "HC GS Storms Grotto"), + RC_OBJECT(RC_HC_GS_TREE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_HYRULE_CASTLE, "GS Tree", "HC GS Tree"), + RC_OBJECT(RC_HC_GREAT_FAIRY_REWARD, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_HYRULE_CASTLE, "Great Fairy Reward", "HC Great Fairy Reward"), + RC_OBJECT(RC_OGC_GREAT_FAIRY_REWARD, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_HYRULE_CASTLE, "OGC Great Fairy Reward", "OGC Great Fairy Reward"), + RC_OBJECT(RC_SONG_FROM_IMPA, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_HYRULE_CASTLE, "Song from Impa", "Song from Impa"), + RC_OBJECT(RC_HC_MALON_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_HYRULE_CASTLE, "Malon Gossip Stone", "HC Malon Gossip Stone"), + RC_OBJECT(RC_HC_ROCK_WALL_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_HYRULE_CASTLE, "Rock Wall Gossip Stone", "HC Rock Wall Gossip Stone"), + RC_OBJECT(RC_HC_STORMS_GROTTO_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_HYRULE_CASTLE, "Storms Grotto Gossip Stone", "HC Storms Grotto Gossip Stone"), +}; + +std::vector rcObjectsKV = { + RC_OBJECT(RC_KAK_REDEAD_GROTTO_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, "Redead Grotto Chest", "Kak Redead Grotto Chest"), + RC_OBJECT(RC_KAK_OPEN_GROTTO_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, "Open Grotto Chest", "Kak Open Grotto Chest"), + RC_OBJECT(RC_KAK_10_GOLD_SKULLTULA_REWARD, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, "10 Gold Skulltula Reward", "Kak 10 Gold Skulltula Reward"), + RC_OBJECT(RC_KAK_20_GOLD_SKULLTULA_REWARD, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, "20 Gold Skulltula Reward", "Kak 20 Gold Skulltula Reward"), + RC_OBJECT(RC_KAK_30_GOLD_SKULLTULA_REWARD, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, "30 Gold Skulltula Reward", "Kak 30 Gold Skulltula Reward"), + RC_OBJECT(RC_KAK_40_GOLD_SKULLTULA_REWARD, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, "40 Gold Skulltula Reward", "Kak 40 Gold Skulltula Reward"), + RC_OBJECT(RC_KAK_50_GOLD_SKULLTULA_REWARD, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, "50 Gold Skulltula Reward", "Kak 50 Gold Skulltula Reward"), + RC_OBJECT(RC_KAK_MAN_ON_ROOF, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, "Man on Roof", "Kak Man on Roof"), + RC_OBJECT(RC_KAK_SHOOTING_GALLERY_REWARD, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, "Shooting Gallery Reward", "Kak Shooting Gallery Reward"), + RC_OBJECT(RC_KAK_TRADE_ODD_MUSHROOM, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, "Trade Odd Mushroom", "Kak Trade Odd Mushroom"), + RC_OBJECT(RC_KAK_ANJU_AS_ADULT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, "Anju as Adult", "Kak Anju as Adult"), + RC_OBJECT(RC_KAK_ANJU_AS_CHILD, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, "Anju as Child", "Kak Anju as Child"), + RC_OBJECT(RC_KAK_TRADE_POCKET_CUCCO, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, "Trade Pocket Cucco", "Kak Trade Pocket Cucco"), + RC_OBJECT(RC_KAK_IMPAS_HOUSE_FREESTANDING_POH, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, "Impas House Freestanding PoH", "Kak Impas House Freestanding PoH"), + RC_OBJECT(RC_KAK_WINDMILL_FREESTANDING_POH, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, "Windmill Freestanding PoH", "Kak Windmill Freestanding PoH"), + RC_OBJECT(RC_KAK_GS_HOUSE_UNDER_CONSTRUCTION, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_KAKARIKO_VILLAGE, "GS House Under Construction", "Kak GS House Under Construction"), + RC_OBJECT(RC_KAK_GS_SKULLTULA_HOUSE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_KAKARIKO_VILLAGE, "GS Skulltula House", "Kak GS Skulltula House"), + RC_OBJECT(RC_KAK_GS_GUARDS_HOUSE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_KAKARIKO_VILLAGE, "GS Guards House", "Kak GS Guards House"), + RC_OBJECT(RC_KAK_GS_TREE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_KAKARIKO_VILLAGE, "GS Tree", "Kak GS Tree"), + RC_OBJECT(RC_KAK_GS_WATCHTOWER, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_KAKARIKO_VILLAGE, "GS Watchtower", "Kak GS Watchtower"), + RC_OBJECT(RC_KAK_GS_ABOVE_IMPAS_HOUSE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_KAKARIKO_VILLAGE, "GS Above Impas House", "Kak GS Above Impas House"), + RC_OBJECT(RC_SHEIK_IN_KAKARIKO, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, "Sheik in Kakariko", "Sheik in Kakariko"), + RC_OBJECT(RC_SONG_FROM_WINDMILL, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, "Song from Windmill", "Song from Windmill"), + RC_OBJECT(RC_KAK_IMPAS_HOUSE_COW, RCVORMQ_VANILLA, RCTYPE_COW, RCAREA_KAKARIKO_VILLAGE, "Impas House Cow", "Kak Impas House Cow"), + RC_OBJECT(RC_KAK_POTION_SHOP_ITEM_1, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KAKARIKO_VILLAGE, "Potion Shop Item 1", "Kak Potion Shop Item 1"), + RC_OBJECT(RC_KAK_POTION_SHOP_ITEM_2, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KAKARIKO_VILLAGE, "Potion Shop Item 2", "Kak Potion Shop Item 2"), + RC_OBJECT(RC_KAK_POTION_SHOP_ITEM_3, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KAKARIKO_VILLAGE, "Potion Shop Item 3", "Kak Potion Shop Item 3"), + RC_OBJECT(RC_KAK_POTION_SHOP_ITEM_4, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KAKARIKO_VILLAGE, "Potion Shop Item 4", "Kak Potion Shop Item 4"), + RC_OBJECT(RC_KAK_POTION_SHOP_ITEM_5, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KAKARIKO_VILLAGE, "Potion Shop Item 5", "Kak Potion Shop Item 5"), + RC_OBJECT(RC_KAK_POTION_SHOP_ITEM_6, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KAKARIKO_VILLAGE, "Potion Shop Item 6", "Kak Potion Shop Item 6"), + RC_OBJECT(RC_KAK_POTION_SHOP_ITEM_7, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KAKARIKO_VILLAGE, "Potion Shop Item 7", "Kak Potion Shop Item 7"), + RC_OBJECT(RC_KAK_POTION_SHOP_ITEM_8, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KAKARIKO_VILLAGE, "Potion Shop Item 8", "Kak Potion Shop Item 8"), + RC_OBJECT(RC_KAK_BAZAAR_ITEM_1, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KAKARIKO_VILLAGE, "Bazaar Item 1", "Kak Bazaar Item 1"), + RC_OBJECT(RC_KAK_BAZAAR_ITEM_2, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KAKARIKO_VILLAGE, "Bazaar Item 2", "Kak Bazaar Item 2"), + RC_OBJECT(RC_KAK_BAZAAR_ITEM_3, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KAKARIKO_VILLAGE, "Bazaar Item 3", "Kak Bazaar Item 3"), + RC_OBJECT(RC_KAK_BAZAAR_ITEM_4, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KAKARIKO_VILLAGE, "Bazaar Item 4", "Kak Bazaar Item 4"), + RC_OBJECT(RC_KAK_BAZAAR_ITEM_5, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KAKARIKO_VILLAGE, "Bazaar Item 5", "Kak Bazaar Item 5"), + RC_OBJECT(RC_KAK_BAZAAR_ITEM_6, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KAKARIKO_VILLAGE, "Bazaar Item 6", "Kak Bazaar Item 6"), + RC_OBJECT(RC_KAK_BAZAAR_ITEM_7, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KAKARIKO_VILLAGE, "Bazaar Item 7", "Kak Bazaar Item 7"), + RC_OBJECT(RC_KAK_BAZAAR_ITEM_8, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_KAKARIKO_VILLAGE, "Bazaar Item 8", "Kak Bazaar Item 8"), + RC_OBJECT(RC_KAK_OPEN_GROTTO_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_KAKARIKO_VILLAGE, "Open Grotto Gossip Stone", "Kak Open Grotto Gossip Stone"), +}; + +std::vector rcObjectsGY = { + RC_OBJECT(RC_GRAVEYARD_SHIELD_GRAVE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GRAVEYARD, "Shield Grave Chest", "GY Shield Grave Chest"), + RC_OBJECT(RC_GRAVEYARD_HEART_PIECE_GRAVE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GRAVEYARD, "Heart Piece Grave Chest", "GY Heart Piece Grave Chest"), + RC_OBJECT(RC_GRAVEYARD_ROYAL_FAMILYS_TOMB_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GRAVEYARD, "Composers Grave Chest", "GY Composers Grave Chest"), + RC_OBJECT(RC_GRAVEYARD_HOOKSHOT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GRAVEYARD, "Hookshot Chest", "GY Hookshot Chest"), + RC_OBJECT(RC_GRAVEYARD_DAMPE_RACE_FREESTANDING_POH, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GRAVEYARD, "Dampe Race Freestanding PoH", "GY Dampe Race Freestanding PoH"), + RC_OBJECT(RC_GRAVEYARD_FREESTANDING_POH, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GRAVEYARD, "Freestanding PoH", "GY Freestanding PoH"), + RC_OBJECT(RC_GRAVEYARD_DAMPE_GRAVEDIGGING_TOUR, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GRAVEYARD, "Dampe Gravedigging Tour", "GY Dampe Gravedigging Tour"), + RC_OBJECT(RC_GRAVEYARD_GS_WALL, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_GRAVEYARD, "GS Wall", "Graveyard GS Wall"), + RC_OBJECT(RC_GRAVEYARD_GS_BEAN_PATCH, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_GRAVEYARD, "GS Bean Patch", "Graveyard GS Bean Patch"), + RC_OBJECT(RC_SONG_FROM_ROYAL_FAMILYS_TOMB, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GRAVEYARD, "Song from Composers Grave", "Song from Composers Grave"), + RC_OBJECT(RC_GY_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_GRAVEYARD, "Gossip Stone", "GY Gossip Stone"), +}; + +std::vector rcObjectsDMT = { + RC_OBJECT(RC_DMT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_TRAIL, "Chest", "DMT Chest"), + RC_OBJECT(RC_DMT_STORMS_GROTTO_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_TRAIL, "Storms Grotto Chest", "DMT Storms Grotto Chest"), + RC_OBJECT(RC_DMT_TRADE_BROKEN_SWORD, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_TRAIL, "Trade Broken Sword", "DMT Trade Broken Sword"), + RC_OBJECT(RC_DMT_TRADE_EYEDROPS, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_TRAIL, "Trade Eyedrops", "DMT Trade Eyedrops"), + RC_OBJECT(RC_DMT_TRADE_CLAIM_CHECK, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_TRAIL, "Trade Claim Check", "DMT Trade Claim Check"), + RC_OBJECT(RC_DMT_FREESTANDING_POH, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_TRAIL, "Freestanding PoH", "DMT Freestanding PoH"), + RC_OBJECT(RC_DMT_GS_BEAN_PATCH, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_DEATH_MOUNTAIN_TRAIL, "GS Bean Patch", "DMT GS Bean Patch"), + RC_OBJECT(RC_DMT_GS_NEAR_KAK, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_DEATH_MOUNTAIN_TRAIL, "GS Near Kak", "DMT GS Near Kak"), + RC_OBJECT(RC_DMT_GS_ABOVE_DODONGOS_CAVERN, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_DEATH_MOUNTAIN_TRAIL, "GS Above Dodongos Cavern", "DMT GS Above Dodongos Cavern"), + RC_OBJECT(RC_DMT_GS_FALLING_ROCKS_PATH, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_DEATH_MOUNTAIN_TRAIL, "GS Falling Rocks Path", "DMT GS Falling Rocks Path"), + RC_OBJECT(RC_DMT_GREAT_FAIRY_REWARD, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_TRAIL, "Great Fairy Reward", "DMT Great Fairy Reward"), + RC_OBJECT(RC_DMT_COW_GROTTO_COW, RCVORMQ_VANILLA, RCTYPE_COW, RCAREA_DEATH_MOUNTAIN_TRAIL, "Cow Grotto Cow", "DMT Cow Grotto Cow"), + RC_OBJECT(RC_DMT_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_DEATH_MOUNTAIN_TRAIL, "Gossip Stone", "DMT Gossip Stone"), + RC_OBJECT(RC_DMT_STORMS_GROTTO_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_DEATH_MOUNTAIN_TRAIL, "Storms Grotto Gossip Stone", "DMT Storms Grotto Gossip Stone"), +}; + +std::vector rcObjectsGC = { + RC_OBJECT(RC_GC_MAZE_LEFT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GORON_CITY, "Maze Left Chest", "GC Maze Left Chest"), + RC_OBJECT(RC_GC_MAZE_RIGHT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GORON_CITY, "Maze Right Chest", "GC Maze Right Chest"), + RC_OBJECT(RC_GC_MAZE_CENTER_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GORON_CITY, "Maze Center Chest", "GC Maze Center Chest"), + RC_OBJECT(RC_GC_ROLLING_GORON_AS_CHILD, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GORON_CITY, "Rolling Goron as Child", "GC Rolling Goron as Child"), + RC_OBJECT(RC_GC_ROLLING_GORON_AS_ADULT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GORON_CITY, "Rolling Goron as Adult", "GC Rolling Goron as Adult"), + RC_OBJECT(RC_GC_DARUNIAS_JOY, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GORON_CITY, "Darunias Joy", "GC Darunias Joy"), + RC_OBJECT(RC_GC_POT_FREESTANDING_POH, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GORON_CITY, "Pot Freestanding PoH", "GC Pot Freestanding PoH"), + RC_OBJECT(RC_GC_DEKU_SCRUB_GROTTO_LEFT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GORON_CITY, "Deku Scrub Grotto Left", "GC Deku Scrub Grotto Left"), + RC_OBJECT(RC_GC_DEKU_SCRUB_GROTTO_RIGHT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GORON_CITY, "Deku Scrub Grotto Right", "GC Deku Scrub Grotto Right"), + RC_OBJECT(RC_GC_DEKU_SCRUB_GROTTO_CENTER, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GORON_CITY, "Deku Scrub Grotto Center", "GC Deku Scrub Grotto Center"), + RC_OBJECT(RC_GC_MEDIGORON, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GORON_CITY, "Medigoron", "GC Medigoron"), + RC_OBJECT(RC_GC_GS_CENTER_PLATFORM, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_GORON_CITY, "GS Center Platform", "GC GS Center Platform"), + RC_OBJECT(RC_GC_GS_BOULDER_MAZE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_GORON_CITY, "GS Boulder Maze", "GC GS Boulder Maze"), + RC_OBJECT(RC_GC_SHOP_ITEM_1, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_GORON_CITY, "Shop Item 1", "GC Shop Item 1"), + RC_OBJECT(RC_GC_SHOP_ITEM_2, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_GORON_CITY, "Shop Item 2", "GC Shop Item 2"), + RC_OBJECT(RC_GC_SHOP_ITEM_3, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_GORON_CITY, "Shop Item 3", "GC Shop Item 3"), + RC_OBJECT(RC_GC_SHOP_ITEM_4, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_GORON_CITY, "Shop Item 4", "GC Shop Item 4"), + RC_OBJECT(RC_GC_SHOP_ITEM_5, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_GORON_CITY, "Shop Item 5", "GC Shop Item 5"), + RC_OBJECT(RC_GC_SHOP_ITEM_6, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_GORON_CITY, "Shop Item 6", "GC Shop Item 6"), + RC_OBJECT(RC_GC_SHOP_ITEM_7, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_GORON_CITY, "Shop Item 7", "GC Shop Item 7"), + RC_OBJECT(RC_GC_SHOP_ITEM_8, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_GORON_CITY, "Shop Item 8", "GC Shop Item 8"), + RC_OBJECT(RC_GC_MAZE_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_GORON_CITY, "Maze Gossip Stone", "GC Maze Gossip Stone"), + RC_OBJECT(RC_GC_MEDIGORON_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_GORON_CITY, "Medigoron Gossip Stone", "GC Medigoron Gossip Stone"), +}; + +std::vector rcObjectsDMC = { + RC_OBJECT(RC_DMC_UPPER_GROTTO_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_CRATER, "Upper Grotto Chest", "DMC Upper Grotto Chest"), + RC_OBJECT(RC_DMC_WALL_FREESTANDING_POH, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_CRATER, "Wall Freestanding PoH", "DMC Wall Freestanding PoH"), + RC_OBJECT(RC_DMC_VOLCANO_FREESTANDING_POH, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_CRATER, "Volcano Freestanding PoH", "DMC Volcano Freestanding PoH"), + RC_OBJECT(RC_DMC_DEKU_SCRUB, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_CRATER, "Deku Scrub", "DMC Deku Scrub"), + RC_OBJECT(RC_DMC_DEKU_SCRUB_GROTTO_LEFT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_CRATER, "Deku Scrub Grotto Left", "DMC Deku Scrub Grotto Left"), + RC_OBJECT(RC_DMC_DEKU_SCRUB_GROTTO_RIGHT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_CRATER, "Deku Scrub Grotto Right", "DMC Deku Scrub Grotto Right"), + RC_OBJECT(RC_DMC_DEKU_SCRUB_GROTTO_CENTER, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_CRATER, "Deku Scrub Grotto Center", "DMC Deku Scrub Grotto Center"), + RC_OBJECT(RC_DMC_GS_BEAN_PATCH, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_DEATH_MOUNTAIN_CRATER, "GS Bean Patch", "DMC GS Bean Patch"), + RC_OBJECT(RC_DMC_GS_CRATE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_DEATH_MOUNTAIN_CRATER, "GS Crate", "DMC GS Crate"), + RC_OBJECT(RC_DMC_GREAT_FAIRY_REWARD, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_CRATER, "Great Fairy Reward", "DMC Great Fairy Reward"), + RC_OBJECT(RC_SHEIK_IN_CRATER, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_CRATER, "Sheik in Crater", "Sheik in Crater"), + RC_OBJECT(RC_DMC_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_DEATH_MOUNTAIN_CRATER, "Gossip Stone", "DMC Gossip Stone"), + RC_OBJECT(RC_DMC_UPPER_GROTTO_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_DEATH_MOUNTAIN_CRATER, "Upper Grotto Gossip Stone", "DMC Upper Grotto Gossip Stone"), +}; + +std::vector rcObjectsZR = { + RC_OBJECT(RC_ZR_OPEN_GROTTO_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, "Open Grotto Chest", "ZR Open Grotto Chest"), + RC_OBJECT(RC_ZR_MAGIC_BEAN_SALESMAN, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, "Magic Bean Salesman", "ZR Magic Bean Salesman"), + RC_OBJECT(RC_ZR_FROGS_ZELDAS_LULLABY, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, "Frogs Zelda's Lullaby", "ZR Frogs Zelda's Lullaby"), + RC_OBJECT(RC_ZR_FROGS_EPONAS_SONG, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, "Frogs Epona's Song", "ZR Frogs Epona's Song"), + RC_OBJECT(RC_ZR_FROGS_SARIAS_SONG, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, "Frogs Saria's Song", "ZR Frogs Saria's Song"), + RC_OBJECT(RC_ZR_FROGS_SUNS_SONG, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, "Frogs Sun's Song", "ZR Frogs Sun's Song"), + RC_OBJECT(RC_ZR_FROGS_SONG_OF_TIME, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, "Frogs Song of Time", "ZR Frogs Song of Time"), + RC_OBJECT(RC_ZR_FROGS_IN_THE_RAIN, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, "Frogs in the Rain", "ZR Frogs in the Rain"), + RC_OBJECT(RC_ZR_FROGS_OCARINA_GAME, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, "Frogs Ocarina Game", "ZR Frogs Ocarina Game"), + RC_OBJECT(RC_ZR_NEAR_OPEN_GROTTO_FREESTANDING_POH, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, "Near Open Grotto Freestanding PoH", "ZR Near Open Grotto Freestanding PoH"), + RC_OBJECT(RC_ZR_NEAR_DOMAIN_FREESTANDING_POH, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, "Near Domain Freestanding PoH", "ZR Near Domain Freestanding PoH"), + RC_OBJECT(RC_ZR_DEKU_SCRUB_GROTTO_REAR, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, "Deku Scrub Grotto Rear", "ZR Deku Scrub Grotto Rear"), + RC_OBJECT(RC_ZR_DEKU_SCRUB_GROTTO_FRONT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, "Deku Scrub Grotto Front", "ZR Deku Scrub Grotto Front"), + RC_OBJECT(RC_ZR_GS_LADDER, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_ZORAS_RIVER, "GS Ladder", "ZR GS Ladder"), + RC_OBJECT(RC_ZR_GS_TREE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_ZORAS_RIVER, "GS Tree", "ZR GS Tree"), + RC_OBJECT(RC_ZR_GS_ABOVE_BRIDGE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_ZORAS_RIVER, "GS Above Bridge", "ZR GS Above Bridge"), + RC_OBJECT(RC_ZR_GS_NEAR_RAISED_GROTTOS, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_ZORAS_RIVER, "GS Near Raised Grottos", "ZR GS Near Raised Grottos"), + RC_OBJECT(RC_ZR_NEAR_DOMAIN_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_ZORAS_RIVER, "Near Domain Gossip Stone", "ZR Near Domain Gossip Stone"), + RC_OBJECT(RC_ZR_NEAR_GROTTOS_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_ZORAS_RIVER, "Near Grottos Gossip Stone", "ZR Near Grottos Gossip Stone"), + RC_OBJECT(RC_ZR_OPEN_GROTTO_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_ZORAS_RIVER, "Open Grotto Gossip Stone", "ZR Open Grotto Gossip Stone"), +}; + +std::vector rcObjectsZD = { + RC_OBJECT(RC_ZD_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ZORAS_DOMAIN, "Chest", "ZD Chest"), + RC_OBJECT(RC_ZD_DIVING_MINIGAME, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ZORAS_DOMAIN, "Diving Minigame", "ZD Diving Minigame"), + RC_OBJECT(RC_ZD_KING_ZORA_THAWED, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ZORAS_DOMAIN, "King Zora Thawed", "ZD King Zora Thawed"), + RC_OBJECT(RC_ZD_TRADE_PRESCRIPTION, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ZORAS_DOMAIN, "Trade Prescription", "ZD Trade Prescription"), + RC_OBJECT(RC_ZD_GS_FROZEN_WATERFALL, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_ZORAS_DOMAIN, "GS Frozen Waterfall", "ZD GS Frozen Waterfall"), + RC_OBJECT(RC_ZD_SHOP_ITEM_1, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_ZORAS_DOMAIN, "Shop Item 1", "ZD Shop Item 1"), + RC_OBJECT(RC_ZD_SHOP_ITEM_2, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_ZORAS_DOMAIN, "Shop Item 2", "ZD Shop Item 2"), + RC_OBJECT(RC_ZD_SHOP_ITEM_3, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_ZORAS_DOMAIN, "Shop Item 3", "ZD Shop Item 3"), + RC_OBJECT(RC_ZD_SHOP_ITEM_4, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_ZORAS_DOMAIN, "Shop Item 4", "ZD Shop Item 4"), + RC_OBJECT(RC_ZD_SHOP_ITEM_5, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_ZORAS_DOMAIN, "Shop Item 5", "ZD Shop Item 5"), + RC_OBJECT(RC_ZD_SHOP_ITEM_6, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_ZORAS_DOMAIN, "Shop Item 6", "ZD Shop Item 6"), + RC_OBJECT(RC_ZD_SHOP_ITEM_7, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_ZORAS_DOMAIN, "Shop Item 7", "ZD Shop Item 7"), + RC_OBJECT(RC_ZD_SHOP_ITEM_8, RCVORMQ_VANILLA, RCTYPE_SHOP, RCAREA_ZORAS_DOMAIN, "Shop Item 8", "ZD Shop Item 8"), + RC_OBJECT(RC_ZD_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_ZORAS_DOMAIN, "Gossip Stone", "ZD Gossip Stone"), +}; + +std::vector rcObjectsZF = { + RC_OBJECT(RC_ZF_ICEBERC_FREESTANDING_POH, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ZORAS_FOUNTAIN, "Iceberg Freestanding PoH", "ZF Iceberg Freestanding PoH"), + RC_OBJECT(RC_ZF_BOTTOM_FREESTANDING_POH, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ZORAS_FOUNTAIN, "Bottom Freestanding PoH", "ZF Bottom Freestanding PoH"), + RC_OBJECT(RC_ZF_GS_ABOVE_THE_LOG, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_ZORAS_FOUNTAIN, "GS Above The Log", "ZF GS Above The Log"), + RC_OBJECT(RC_ZF_GS_HIDDEN_CAVE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_ZORAS_FOUNTAIN, "GS Hidden Cave", "ZF GS Hidden Cave"), + RC_OBJECT(RC_ZF_GS_TREE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_ZORAS_FOUNTAIN, "GS Tree", "ZF GS Tree"), + RC_OBJECT(RC_ZF_GREAT_FAIRY_REWARD, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ZORAS_FOUNTAIN, "Great Fairy Reward", "ZF Great Fairy Reward"), + RC_OBJECT(RC_FAIRY_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_ZORAS_FOUNTAIN, "Fairy Gossip Stone", "Fairy Gossip Stone"), + RC_OBJECT(RC_JABU_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_ZORAS_FOUNTAIN, "Jabu Gossip Stone", "Jabu Gossip Stone"), +}; + +std::vector rcObjectsLLR = { + RC_OBJECT(RC_LLR_TALONS_CHICKENS, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LON_LON_RANCH, "Talons Chickens", "LLR Talons Chickens"), + RC_OBJECT(RC_LLR_FREESTANDING_POH, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LON_LON_RANCH, "Freestanding PoH", "LLR Freestanding PoH"), + RC_OBJECT(RC_LLR_DEKU_SCRUB_GROTTO_LEFT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LON_LON_RANCH, "Deku Scrub Grotto Left", "LLR Deku Scrub Grotto Left"), + RC_OBJECT(RC_LLR_DEKU_SCRUB_GROTTO_RIGHT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LON_LON_RANCH, "Deku Scrub Grotto Right", "LLR Deku Scrub Grotto Right"), + RC_OBJECT(RC_LLR_DEKU_SCRUB_GROTTO_CENTER, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LON_LON_RANCH, "Deku Scrub Grotto Center", "LLR Deku Scrub Grotto Center"), + RC_OBJECT(RC_LLR_GS_BACK_WALL, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_LON_LON_RANCH, "GS Back Wall", "LLR GS Back Wall"), + RC_OBJECT(RC_LLR_GS_RAIN_SHED, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_LON_LON_RANCH, "GS Rain Shed", "LLR GS Rain Shed"), + RC_OBJECT(RC_LLR_GS_HOUSE_WINDOW, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_LON_LON_RANCH, "GS House Window", "LLR GS House Window"), + RC_OBJECT(RC_LLR_GS_TREE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_LON_LON_RANCH, "GS Tree", "LLR GS Tree"), + RC_OBJECT(RC_SONG_FROM_MALON, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_LON_LON_RANCH, "Song from Malon", "Song from Malon"), + RC_OBJECT(RC_LLR_STABLES_LEFT_COW, RCVORMQ_VANILLA, RCTYPE_COW, RCAREA_LON_LON_RANCH, "Stables Left Cow", "LLR Stables Left Cow"), + RC_OBJECT(RC_LLR_STABLES_RIGHT_COW, RCVORMQ_VANILLA, RCTYPE_COW, RCAREA_LON_LON_RANCH, "Stables Right Cow", "LLR Stables Right Cow"), + RC_OBJECT(RC_LLR_TOWER_LEFT_COW, RCVORMQ_VANILLA, RCTYPE_COW, RCAREA_LON_LON_RANCH, "Tower Left Cow", "LLR Tower Left Cow"), + RC_OBJECT(RC_LLR_TOWER_RIGHT_COW, RCVORMQ_VANILLA, RCTYPE_COW, RCAREA_LON_LON_RANCH, "Tower Right Cow", "LLR Tower Right Cow"), +}; + +std::vector rcObjectsDT = { + RC_OBJECT(RC_DEKU_TREE_MAP_CHEST, RCVORMQ_VANILLA, RCTYPE_MAP_COMPASS, RCAREA_DEKU_TREE, "Map Chest", "Deku Tree Map Chest"), + RC_OBJECT(RC_DEKU_TREE_COMPASS_CHEST, RCVORMQ_VANILLA, RCTYPE_MAP_COMPASS, RCAREA_DEKU_TREE, "Compass Chest", "Deku Tree Compass Chest"), + RC_OBJECT(RC_DEKU_TREE_COMPASS_ROOM_SIDE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEKU_TREE, "Compass Room Side Chest", "Deku Tree Compass Room Side Chest"), + RC_OBJECT(RC_DEKU_TREE_BASEMENT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEKU_TREE, "Basement Chest", "Deku Tree Basement Chest"), + RC_OBJECT(RC_DEKU_TREE_SLINGSHOT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEKU_TREE, "Slingshot Chest", "Deku Tree Slingshot Chest"), + RC_OBJECT(RC_DEKU_TREE_SLINGSHOT_ROOM_SIDE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEKU_TREE, "Slingshot Room Side Chest", "Deku Tree Slingshot Room Side Chest"), + RC_OBJECT(RC_DEKU_TREE_MQ_MAP_CHEST, RCVORMQ_MQ, RCTYPE_MAP_COMPASS, RCAREA_DEKU_TREE, "MQ Map Chest", "Deku Tree MQ Map Chest"), + RC_OBJECT(RC_DEKU_TREE_MQ_COMPASS_CHEST, RCVORMQ_MQ, RCTYPE_MAP_COMPASS, RCAREA_DEKU_TREE, "MQ Compass Chest", "Deku Tree MQ Compass Chest"), + RC_OBJECT(RC_DEKU_TREE_MQ_SLINGSHOT_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_DEKU_TREE, "MQ Slingshot Chest", "Deku Tree MQ Slingshot Chest"), + RC_OBJECT(RC_DEKU_TREE_MQ_SLINGSHOT_ROOM_BACK_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_DEKU_TREE, "MQ Slingshot Room Back Chest", "Deku Tree MQ Slingshot Room Back Chest"), + RC_OBJECT(RC_DEKU_TREE_MQ_BASEMENT_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_DEKU_TREE, "MQ Basement Chest", "Deku Tree MQ Basement Chest"), + RC_OBJECT(RC_DEKU_TREE_MQ_BEFORE_SPINNING_LOG_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_DEKU_TREE, "MQ Before Spinning Log Chest", "Deku Tree MQ Before Spinning Log Chest"), + RC_OBJECT(RC_DEKU_TREE_MQ_AFTER_SPINNING_LOG_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_DEKU_TREE, "MQ After Spinning Log Chest", "Deku Tree MQ After Spinning Log Chest"), + RC_OBJECT(RC_DEKU_TREE_MQ_DEKU_SCRUB, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_DEKU_TREE, "MQ Deku Scrub", "Deku Tree MQ Deku Scrub"), + RC_OBJECT(RC_DEKU_TREE_GS_BASEMENT_BACK_ROOM, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_DEKU_TREE, "GS Basement Back Room", "Deku Tree GS Basement Back Room"), + RC_OBJECT(RC_DEKU_TREE_GS_BASEMENT_GATE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_DEKU_TREE, "GS Basement Gate", "Deku Tree GS Basement Gate"), + RC_OBJECT(RC_DEKU_TREE_GS_BASEMENT_VINES, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_DEKU_TREE, "GS Basement Vines", "Deku Tree GS Basement Vines"), + RC_OBJECT(RC_DEKU_TREE_GS_COMPASS_ROOM, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_DEKU_TREE, "GS Compass Room", "Deku Tree GS Compass Room"), + RC_OBJECT(RC_DEKU_TREE_MQ_GS_LOBBY, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_DEKU_TREE, "MQ GS Lobby", "Deku Tree MQ GS Lobby"), + RC_OBJECT(RC_DEKU_TREE_MQ_GS_COMPASS_ROOM, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_DEKU_TREE, "MQ GS Compass Room", "Deku Tree MQ GS Compass Room"), + RC_OBJECT(RC_DEKU_TREE_MQ_GS_BASEMENT_GRAVES_ROOM, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_DEKU_TREE, "MQ GS Basement Graves Room", "Deku Tree MQ GS Basement Graves Room"), + RC_OBJECT(RC_DEKU_TREE_MQ_GS_BASEMENT_BACK_ROOM, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_DEKU_TREE, "MQ GS Basement Back Room", "Deku Tree MQ GS Basement Back Room"), + RC_OBJECT(RC_QUEEN_GOHMA, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEKU_TREE, "Queen Gohma", "Queen Gohma"), + RC_OBJECT(RC_DEKU_TREE_QUEEN_GOHMA_HEART, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DEKU_TREE, "Queen Gohma Heart Container", "Deku Tree Queen Gohma Heart Container"), +}; + +std::vector rcObjectsDC = { + RC_OBJECT(RC_DODONGOS_CAVERN_BOSS_ROOM_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, "Boss Room Chest", "Dodongos Cavern Boss Room Chest"), + RC_OBJECT(RC_DODONGOS_CAVERN_MAP_CHEST, RCVORMQ_VANILLA, RCTYPE_MAP_COMPASS, RCAREA_DODONGOS_CAVERN, "Map Chest", "Dodongos Cavern Map Chest"), + RC_OBJECT(RC_DODONGOS_CAVERN_COMPASS_CHEST, RCVORMQ_VANILLA, RCTYPE_MAP_COMPASS, RCAREA_DODONGOS_CAVERN, "Compass Chest", "Dodongos Cavern Compass Chest"), + RC_OBJECT(RC_DODONGOS_CAVERN_BOMB_FLOWER_PLATFORM_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, "Bomb Flower Platform Chest", "Dodongos Cavern Bomb Flower Platform Chest"), + RC_OBJECT(RC_DODONGOS_CAVERN_BOMB_BAG_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, "Bomb Bag Chest", "Dodongos Cavern Bomb Bag Chest"), + RC_OBJECT(RC_DODONGOS_CAVERN_END_OF_BRIDGE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, "End Of Bridge Chest", "Dodongos Cavern End Of Bridge Chest"), + RC_OBJECT(RC_DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_LEFT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, "Deku Scrub Near Bomb Bag Left", "Dodongos Cavern Deku Scrub Near Bomb Bag Left"), + RC_OBJECT(RC_DODONGOS_CAVERN_DEKU_SCRUB_SIDE_ROOM_NEAR_DODONGOS, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, "Deku Scrub Side Room Near Dodongos", "Dodongos Cavern Deku Scrub Side Room Near Dodongos"), + RC_OBJECT(RC_DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_RIGHT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, "Deku Scrub Near Bomb Bag Right", "Dodongos Cavern Deku Scrub Near Bomb Bag Right"), + RC_OBJECT(RC_DODONGOS_CAVERN_DEKU_SCRUB_LOBBY, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, "Deku Scrub Lobby", "Dodongos Cavern Deku Scrub Lobby"), + RC_OBJECT(RC_DODONGOS_CAVERN_MQ_MAP_CHEST, RCVORMQ_MQ, RCTYPE_MAP_COMPASS, RCAREA_DODONGOS_CAVERN, "MQ Map Chest", "Dodongos Cavern MQ Map Chest"), + RC_OBJECT(RC_DODONGOS_CAVERN_MQ_BOMB_BAG_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, "MQ Bomb Bag Chest", "Dodongos Cavern MQ Bomb Bag Chest"), + RC_OBJECT(RC_DODONGOS_CAVERN_MQ_COMPASS_CHEST, RCVORMQ_MQ, RCTYPE_MAP_COMPASS, RCAREA_DODONGOS_CAVERN, "MQ Compass Chest", "Dodongos Cavern MQ Compass Chest"), + RC_OBJECT(RC_DODONGOS_CAVERN_MQ_LARVAE_ROOM_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, "MQ Larvae Room Chest", "Dodongos Cavern MQ Larvae Room Chest"), + RC_OBJECT(RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_ROOM_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, "MQ Torch Puzzle Room Chest", "Dodongos Cavern MQ Torch Puzzle Room Chest"), + RC_OBJECT(RC_DODONGOS_CAVERN_MQ_UNDER_GRAVE_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, "MQ Under Grave Chest", "Dodongos Cavern MQ Under Grave Chest"), + RC_OBJECT(RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_LOBBY_REAR, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, "Deku Scrub Lobby Rear", "Dodongos Cavern Deku Scrub Lobby Rear"), + RC_OBJECT(RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_LOBBY_FRONT, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, "Deku Scrub Lobby Front", "Dodongos Cavern Deku Scrub Lobby Front"), + RC_OBJECT(RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_STAIRCASE, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, "Deku Scrub Staircase", "Dodongos Cavern Deku Scrub Staircase"), + RC_OBJECT(RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_SIDE_ROOM_NEAR_LOWER_LIZALFOS, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, "Deku Scrub Side Room Near Lower Lizalfos", "Dodongos Cavern Deku Scrub Side Room Near Lower Lizalfos"), + RC_OBJECT(RC_DODONGOS_CAVERN_GS_VINES_ABOVE_STAIRS, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_DODONGOS_CAVERN, "GS Vines Above Stairs", "Dodongos Cavern GS Vines Above Stairs"), + RC_OBJECT(RC_DODONGOS_CAVERN_GS_SCARECROW, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_DODONGOS_CAVERN, "GS Scarecrow", "Dodongos Cavern GS Scarecrow"), + RC_OBJECT(RC_DODONGOS_CAVERN_GS_ALCOVE_ABOVE_STAIRS, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_DODONGOS_CAVERN, "GS Alcove Above Stairs", "Dodongos Cavern GS Alcove Above Stairs"), + RC_OBJECT(RC_DODONGOS_CAVERN_GS_BACK_ROOM, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_DODONGOS_CAVERN, "GS Back Room", "Dodongos Cavern GS Back Room"), + RC_OBJECT(RC_DODONGOS_CAVERN_GS_SIDE_ROOM_NEAR_LOWER_LIZALFOS, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_DODONGOS_CAVERN, "GS Side Room Near Lower Lizalfos", "Dodongos Cavern GS Side Room Near Lower Lizalfos"), + RC_OBJECT(RC_DODONGOS_CAVERN_MQ_GS_SCRUB_ROOM, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_DODONGOS_CAVERN, "MQ GS Scrub Room", "Dodongos Cavern MQ GS Scrub Room"), + RC_OBJECT(RC_DODONGOS_CAVERN_MQ_GS_SONG_OF_TIME_BLOCK_ROOM, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_DODONGOS_CAVERN, "MQ GS Song of Time Block Room", "Dodongos Cavern MQ GS Song of Time Block Room"), + RC_OBJECT(RC_DODONGOS_CAVERN_MQ_GS_LIZALFOS_ROOM, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_DODONGOS_CAVERN, "MQ GS Lizalfos Room", "Dodongos Cavern MQ GS Lizalfos Room"), + RC_OBJECT(RC_DODONGOS_CAVERN_MQ_GS_LARVAE_ROOM, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_DODONGOS_CAVERN, "MQ GS Larvae Room", "Dodongos Cavern MQ GS Larvae Room"), + RC_OBJECT(RC_DODONGOS_CAVERN_MQ_GS_BACK_AREA, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_DODONGOS_CAVERN, "MQ GS Back Room", "Dodongos Cavern MQ GS Back Room"), + RC_OBJECT(RC_KING_DODONGO, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, "King Dodongo", "King Dodongo"), + RC_OBJECT(RC_DODONGOS_CAVERN_KING_DODONGO_HEART, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, "King Dodongo Heart Container", "Dodongos Cavern King Dodongo Heart Container"), + RC_OBJECT(RC_DODONGOS_CAVERN_GOSSIP_STONE, RCVORMQ_VANILLA, RCTYPE_GOSSIP_STONE, RCAREA_DODONGOS_CAVERN, "Gossip Stone", "Dodongo's Cavern Gossip Stone"), +}; + +std::vector rcObjectsJB = { + RC_OBJECT(RC_JABU_JABUS_BELLY_MAP_CHEST, RCVORMQ_VANILLA, RCTYPE_MAP_COMPASS, RCAREA_JABU_JABUS_BELLY, "Map Chest", "Jabu Jabus Belly Map Chest"), + RC_OBJECT(RC_JABU_JABUS_BELLY_COMPASS_CHEST, RCVORMQ_VANILLA, RCTYPE_MAP_COMPASS, RCAREA_JABU_JABUS_BELLY, "Compass Chest", "Jabu Jabus Belly Compass Chest"), + RC_OBJECT(RC_JABU_JABUS_BELLY_BOOMERANG_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_JABU_JABUS_BELLY, "Boomerang Chest", "Jabu Jabus Belly Boomerang Chest"), + RC_OBJECT(RC_JABU_JABUS_BELLY_DEKU_SCRUB, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_JABU_JABUS_BELLY, "Deku Scrub", "Jabu Jabus Belly Deku Scrub"), + RC_OBJECT(RC_JABU_JABUS_BELLY_MQ_FIRST_ROOM_SIDE_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_JABU_JABUS_BELLY, "MQ First Room Side Chest", "Jabu Jabus Belly MQ First Room Side Chest"), + RC_OBJECT(RC_JABU_JABUS_BELLY_MQ_MAP_CHEST, RCVORMQ_MQ, RCTYPE_MAP_COMPASS, RCAREA_JABU_JABUS_BELLY, "MQ Map Chest", "Jabu Jabus Belly MQ Map Chest"), + RC_OBJECT(RC_JABU_JABUS_BELLY_MQ_SECOND_ROOM_LOWER_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_JABU_JABUS_BELLY, "MQ Second Room Lower Chest", "Jabu Jabus Belly MQ Second Room Lower Chest"), + RC_OBJECT(RC_JABU_JABUS_BELLY_MQ_COMPASS_CHEST, RCVORMQ_MQ, RCTYPE_MAP_COMPASS, RCAREA_JABU_JABUS_BELLY, "MQ Compass Chest", "Jabu Jabus Belly MQ Compass Chest"), + RC_OBJECT(RC_JABU_JABUS_BELLY_MQ_SECOND_ROOM_UPPER_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_JABU_JABUS_BELLY, "MQ Second Room Upper Chest", "Jabu Jabus Belly MQ Second Room Upper Chest"), + RC_OBJECT(RC_JABU_JABUS_BELLY_MQ_BASEMENT_NEAR_SWITCHES_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_JABU_JABUS_BELLY, "MQ Basement Near Switches Chest", "Jabu Jabus Belly MQ Basement Near Switches Chest"), + RC_OBJECT(RC_JABU_JABUS_BELLY_MQ_BASEMENT_NEAR_VINES_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_JABU_JABUS_BELLY, "MQ Basement Near Vines Chest", "Jabu Jabus Belly MQ Basement Near Vines Chest"), + RC_OBJECT(RC_JABU_JABUS_BELLY_MQ_NEAR_BOSS_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_JABU_JABUS_BELLY, "MQ Near Boss Chest", "Jabu Jabus Belly MQ Near Boss Chest"), + RC_OBJECT(RC_JABU_JABUS_BELLY_MQ_FALLING_LIKE_LIKE_ROOM_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_JABU_JABUS_BELLY, "MQ Falling Like Like Room Chest", "Jabu Jabus Belly MQ Falling Like Like Room Chest"), + RC_OBJECT(RC_JABU_JABUS_BELLY_MQ_BOOMERANG_ROOM_SMALL_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_JABU_JABUS_BELLY, "MQ Boomerang Room Small Chest", "Jabu Jabus Belly MQ Boomerang Room Small Chest"), + RC_OBJECT(RC_JABU_JABUS_BELLY_MQ_BOOMERANG_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_JABU_JABUS_BELLY, "MQ Boomerang Chest", "Jabu Jabus Belly MQ Boomerang Chest"), + RC_OBJECT(RC_JABU_JABUS_BELLY_GS_LOBBY_BASEMENT_LOWER, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_JABU_JABUS_BELLY, "GS Lobby Basement Lower", "Jabu Jabus Belly GS Lobby Basement Lower"), + RC_OBJECT(RC_JABU_JABUS_BELLY_GS_LOBBY_BASEMENT_UPPER, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_JABU_JABUS_BELLY, "GS Lobby Basement Upper", "Jabu Jabus Belly GS Lobby Basement Upper"), + RC_OBJECT(RC_JABU_JABUS_BELLY_GS_NEAR_BOSS, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_JABU_JABUS_BELLY, "GS Near Boss", "Jabu Jabus Belly GS Near Boss"), + RC_OBJECT(RC_JABU_JABUS_BELLY_GS_WATER_SWITCH_ROOM, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_JABU_JABUS_BELLY, "GS Water Switch Room", "Jabu Jabus Belly GS Water Switch Room"), + RC_OBJECT(RC_JABU_JABUS_BELLY_MQ_GS_TAILPASARAN_ROOM, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_JABU_JABUS_BELLY, "MQ GS Tail Parasan Room", "Jabu Jabus Belly MQ GS Tail Parasan Room"), + RC_OBJECT(RC_JABU_JABUS_BELLY_MQ_GS_INVISIBLE_ENEMIES_ROOM, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_JABU_JABUS_BELLY, "MQ GS Invisible Enemies Room", "Jabu Jabus Belly MQ GS Invisible Enemies Room"), + RC_OBJECT(RC_JABU_JABUS_BELLY_MQ_GS_BOOMERANG_CHEST_ROOM, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_JABU_JABUS_BELLY, "MQ GS Boomerang Chest Room", "Jabu Jabus Belly MQ GS Boomerang Chest Room"), + RC_OBJECT(RC_JABU_JABUS_BELLY_MQ_GS_NEAR_BOSS, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_JABU_JABUS_BELLY, "MQ GS Near Boss", "Jabu Jabus Belly MQ GS Near Boss"), + RC_OBJECT(RC_BARINADE, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_JABU_JABUS_BELLY, "Barinade", "Barinade"), + RC_OBJECT(RC_JABU_JABUS_BELLY_BARINADE_HEART, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_JABU_JABUS_BELLY, "Barinade Heart Container", "Jabu Jabus Belly Barinade Heart Container"), +}; + +std::vector rcObjectsFST = { + RC_OBJECT(RC_FOREST_TEMPLE_FIRST_ROOM_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "First Room Chest", "Forest Temple First Room Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_FIRST_STALFOS_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "First Stalfos Chest", "Forest Temple First Stalfos Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_RAISED_ISLAND_COURTYARD_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "Raised Island Courtyard Chest", "Forest Temple Raised Island Courtyard Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_MAP_CHEST, RCVORMQ_VANILLA, RCTYPE_MAP_COMPASS, RCAREA_FOREST_TEMPLE, "Map Chest", "Forest Temple Map Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_WELL_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "Well Chest", "Forest Temple Well Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_FALLING_CEILING_ROOM_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "Falling Ceiling Room Chest", "Forest Temple Falling Ceiling Room Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_EYE_SWITCH_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "Eye Switch Chest", "Forest Temple Eye Switch Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_BOSS_KEY_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "Boss Key Chest", "Forest Temple Boss Key Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_FLOORMASTER_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "Floormaster Chest", "Forest Temple Floormaster Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_BOW_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "Bow Chest", "Forest Temple Bow Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_RED_POE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "Red Poe Chest", "Forest Temple Red Poe Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_BLUE_POE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "Blue Poe Chest", "Forest Temple Blue Poe Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_BASEMENT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "Basement Chest", "Forest Temple Basement Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_MQ_FIRST_ROOM_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "MQ First Room Chest", "Forest Temple MQ First Room Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_MQ_WOLFOS_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "MQ Wolfos Chest", "Forest Temple MQ Wolfos Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_MQ_BOW_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "MQ Bow Chest", "Forest Temple MQ Bow Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_MQ_RAISED_ISLAND_COURTYARD_LOWER_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "MQ Raised Island Courtyard Lower Chest", "Forest Temple MQ Raised Island Courtyard Lower Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_MQ_RAISED_ISLAND_COURTYARD_UPPER_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "MQ Raised Island Courtyard Upper Chest", "Forest Temple MQ Raised Island Courtyard Upper Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_MQ_WELL_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "MQ Well Chest", "Forest Temple MQ Well Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_MQ_MAP_CHEST, RCVORMQ_MQ, RCTYPE_MAP_COMPASS, RCAREA_FOREST_TEMPLE, "MQ Map Chest", "Forest Temple MQ Map Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_MQ_COMPASS_CHEST, RCVORMQ_MQ, RCTYPE_MAP_COMPASS, RCAREA_FOREST_TEMPLE, "MQ Compass Chest", "Forest Temple MQ Compass Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_MQ_FALLING_CEILING_ROOM_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "MQ Falling Ceiling Room Chest", "Forest Temple MQ Falling Ceiling Room Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_MQ_BASEMENT_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "MQ Basement Chest", "Forest Temple MQ Basement Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_MQ_REDEAD_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "MQ Redead Chest", "Forest Temple MQ Redead Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_MQ_BOSS_KEY_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "MQ Boss Key Chest", "Forest Temple MQ Boss Key Chest"), + RC_OBJECT(RC_FOREST_TEMPLE_GS_RAISED_ISLAND_COURTYARD, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_FOREST_TEMPLE, "GS Raised Island Courtyard", "Forest Temple GS Raised Island Courtyard"), + RC_OBJECT(RC_FOREST_TEMPLE_GS_FIRST_ROOM, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_FOREST_TEMPLE, "GS First Room", "Forest Temple GS First Room"), + RC_OBJECT(RC_FOREST_TEMPLE_GS_LEVEL_ISLAND_COURTYARD, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_FOREST_TEMPLE, "GS Level Island Courtyard", "Forest Temple GS Level Island Courtyard"), + RC_OBJECT(RC_FOREST_TEMPLE_GS_LOBBY, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_FOREST_TEMPLE, "GS Lobby", "Forest Temple GS Lobby"), + RC_OBJECT(RC_FOREST_TEMPLE_GS_BASEMENT, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_FOREST_TEMPLE, "GS Basement", "Forest Temple GS Basement"), + RC_OBJECT(RC_FOREST_TEMPLE_MQ_GS_FIRST_HALLWAY, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_FOREST_TEMPLE, "MQ GS First Hallway", "Forest Temple MQ GS First Hallway"), + RC_OBJECT(RC_FOREST_TEMPLE_MQ_GS_BLOCK_PUSH_ROOM, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_FOREST_TEMPLE, "MQ GS Block Push Room", "Forest Temple MQ GS Block Push Room"), + RC_OBJECT(RC_FOREST_TEMPLE_MQ_GS_RAISED_ISLAND_COURTYARD, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_FOREST_TEMPLE, "MQ GS Raised Island Courtyard", "Forest Temple MQ GS Raised Island Courtyard"), + RC_OBJECT(RC_FOREST_TEMPLE_MQ_GS_LEVEL_ISLAND_COURTYARD, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_FOREST_TEMPLE, "MQ GS Level Island Courtyard", "Forest Temple MQ GS Level Island Courtyard"), + RC_OBJECT(RC_FOREST_TEMPLE_MQ_GS_WELL, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_FOREST_TEMPLE, "MQ GS Well", "Forest Temple MQ GS Well"), + RC_OBJECT(RC_PHANTOM_GANON, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "Phantom Ganon", "Phantom Ganon"), + RC_OBJECT(RC_FOREST_TEMPLE_PHANTOM_GANON_HEART, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FOREST_TEMPLE, "Phantom Ganon Heart Container", "Forest Temple Phantom Ganon Heart Container"), +}; + +std::vector rcObjectsFRT = { + RC_OBJECT(RC_FIRE_TEMPLE_NEAR_BOSS_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "Near Boss Chest", "Fire Temple Near Boss Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_FLARE_DANCER_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "Flare Dancer Chest", "Fire Temple Flare Dancer Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_BOSS_KEY_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "Boss Key Chest", "Fire Temple Boss Key Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_BIG_LAVA_ROOM_BLOCKED_DOOR_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "Big Lava Room Blocked Door Chest", "Fire Temple Big Lava Room Blocked Door Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_BIG_LAVA_ROOM_LOWER_OPEN_DOOR_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "Big Lava Room Lower Open Door Chest", "Fire Temple Big Lava Room Lower Open Door Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_BOULDER_MAZE_LOWER_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "Boulder Maze Lower Chest", "Fire Temple Boulder Maze Lower Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_BOULDER_MAZE_UPPER_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "Boulder Maze Upper Chest", "Fire Temple Boulder Maze Upper Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_BOULDER_MAZE_SIDE_ROOM_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "Boulder Maze Side Room Chest", "Fire Temple Boulder Maze Side Room Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_BOULDER_MAZE_SHORTCUT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "Boulder Maze Shortcut Chest", "Fire Temple Boulder Maze Shortcut Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_SCARECROW_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "Scarecrow Chest", "Fire Temple Scarecrow Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_MAP_CHEST, RCVORMQ_VANILLA, RCTYPE_MAP_COMPASS, RCAREA_FIRE_TEMPLE, "Map Chest", "Fire Temple Map Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_COMPASS_CHEST, RCVORMQ_VANILLA, RCTYPE_MAP_COMPASS, RCAREA_FIRE_TEMPLE, "Compass Chest", "Fire Temple Compass Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_HIGHEST_GORON_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "Highest Goron Chest", "Fire Temple Highest Goron Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_MEGATON_HAMMER_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "Megaton Hammer Chest", "Fire Temple Megaton Hammer Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_MQ_NEAR_BOSS_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "MQ Near Boss Chest", "Fire Temple MQ Near Boss Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_MQ_MEGATON_HAMMER_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "MQ Megaton Hammer Chest", "Fire Temple MQ Megaton Hammer Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_MQ_COMPASS_CHEST, RCVORMQ_MQ, RCTYPE_MAP_COMPASS, RCAREA_FIRE_TEMPLE, "MQ Compass Chest", "Fire Temple MQ Compass Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_MQ_LIZALFOS_MAZE_LOWER_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "MQ Lizalfos Maze Lower Chest", "Fire Temple MQ Lizalfos Maze Lower Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_MQ_LIZALFOS_MAZE_UPPER_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "MQ Lizalfos Maze Upper Chest", "Fire Temple MQ Lizalfos Maze Upper Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_MQ_CHEST_ON_FIRE, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "MQ Chest on Fire", "Fire Temple MQ Chest on Fire"), + RC_OBJECT(RC_FIRE_TEMPLE_MQ_MAP_ROOM_SIDE_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "MQ Map Room Side Chest", "Fire Temple MQ Map Room Side Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_MQ_MAP_CHEST, RCVORMQ_MQ, RCTYPE_MAP_COMPASS, RCAREA_FIRE_TEMPLE, "MQ Map Chest", "Fire Temple MQ Map Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_MQ_BOSS_KEY_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "MQ Boss Key Chest", "Fire Temple MQ Boss Key Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_MQ_BIG_LAVA_ROOM_BLOCKED_DOOR_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "MQ Big Lava Room Blocked Door Chest", "Fire Temple MQ Big Lava Room Blocked Door Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_MQ_LIZALFOS_MAZE_SIDE_ROOM_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "MQ Lizalfos Maze Side Room Chest", "Fire Temple MQ Lizalfos Maze Side Room Chest"), + RC_OBJECT(RC_FIRE_TEMPLE_MQ_FREESTANDING_KEY, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "MQ Freestanding Key", "Fire Temple MQ Freestanding Key"), + RC_OBJECT(RC_FIRE_TEMPLE_GS_SONG_OF_TIME_ROOM, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_FIRE_TEMPLE, "GS Song of Time Room", "Fire Temple GS Song of Time Room"), + RC_OBJECT(RC_FIRE_TEMPLE_GS_BOSS_KEY_LOOP, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_FIRE_TEMPLE, "GS Boss Key Loop", "Fire Temple GS Boss Key Loop"), + RC_OBJECT(RC_FIRE_TEMPLE_GS_BOULDER_MAZE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_FIRE_TEMPLE, "GS Boulder Maze", "Fire Temple GS Boulder Maze"), + RC_OBJECT(RC_FIRE_TEMPLE_GS_SCARECROW_TOP, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_FIRE_TEMPLE, "GS Scarecrow Top", "Fire Temple GS Scarecrow Top"), + RC_OBJECT(RC_FIRE_TEMPLE_GS_SCARECROW_CLIMB, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_FIRE_TEMPLE, "GS Scarecrow Climb", "Fire Temple GS Scarecrow Climb"), + RC_OBJECT(RC_FIRE_TEMPLE_MQ_GS_ABOVE_FIRE_WALL_MAZE, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_FIRE_TEMPLE, "MQ GS Above Fire Wall Maze", "Fire Temple MQ GS Above Fire Wall Maze"), + RC_OBJECT(RC_FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_CENTER, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_FIRE_TEMPLE, "MQ GS Fire Wall Maze Center", "Fire Temple MQ GS Fire Wall Maze Center"), + RC_OBJECT(RC_FIRE_TEMPLE_MQ_GS_BIG_LAVA_ROOM_OPEN_DOOR, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_FIRE_TEMPLE, "MQ GS Big Lava Room Open Door", "Fire Temple MQ GS Big Lava Room Open Door"), + RC_OBJECT(RC_FIRE_TEMPLE_MQ_GS_FIRE_WALL_MAZE_SIDE_ROOM, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_FIRE_TEMPLE, "MQ GS Fire Wall Maze Side Room", "Fire Temple MQ GS Fire Wall Maze Side Room"), + RC_OBJECT(RC_FIRE_TEMPLE_MQ_GS_SKULL_ON_FIRE, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_FIRE_TEMPLE, "MQ GS Skull on Fire", "Fire Temple MQ GS Skull on Fire"), + RC_OBJECT(RC_VOLVAGIA, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "Volvagia", "Volvagia"), + RC_OBJECT(RC_FIRE_TEMPLE_VOLVAGIA_HEART, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_FIRE_TEMPLE, "Volvagia Heart Container", "Fire Temple Volvagia Heart Container"), +}; + +std::vector rcObjectsWT = { + RC_OBJECT(RC_WATER_TEMPLE_MAP_CHEST, RCVORMQ_VANILLA, RCTYPE_MAP_COMPASS, RCAREA_WATER_TEMPLE, "Map Chest", "Water Temple Map Chest"), + RC_OBJECT(RC_WATER_TEMPLE_COMPASS_CHEST, RCVORMQ_VANILLA, RCTYPE_MAP_COMPASS, RCAREA_WATER_TEMPLE, "Compass Chest", "Water Temple Compass Chest"), + RC_OBJECT(RC_WATER_TEMPLE_TORCHES_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_WATER_TEMPLE, "Torches Chest", "Water Temple Torches Chest"), + RC_OBJECT(RC_WATER_TEMPLE_DRAGON_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_WATER_TEMPLE, "Dragon Chest", "Water Temple Dragon Chest"), + RC_OBJECT(RC_WATER_TEMPLE_CENTRAL_BOW_TARGET_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_WATER_TEMPLE, "Central Bow Target Chest", "Water Temple Central Bow Target Chest"), + RC_OBJECT(RC_WATER_TEMPLE_CENTRAL_PILLAR_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_WATER_TEMPLE, "Central Pillar Chest", "Water Temple Central Pillar Chest"), + RC_OBJECT(RC_WATER_TEMPLE_CRACKED_WALL_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_WATER_TEMPLE, "Cracked Wall Chest", "Water Temple Cracked Wall Chest"), + RC_OBJECT(RC_WATER_TEMPLE_BOSS_KEY_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_WATER_TEMPLE, "Boss Key Chest", "Water Temple Boss Key Chest"), + RC_OBJECT(RC_WATER_TEMPLE_LONGSHOT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_WATER_TEMPLE, "Longshot Chest", "Water Temple Longshot Chest"), + RC_OBJECT(RC_WATER_TEMPLE_RIVER_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_WATER_TEMPLE, "River Chest", "Water Temple River Chest"), + RC_OBJECT(RC_WATER_TEMPLE_MQ_CENTRAL_PILLAR_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_WATER_TEMPLE, "MQ Central Pillar Chest", "Water Temple MQ Central Pillar Chest"), + RC_OBJECT(RC_WATER_TEMPLE_MQ_BOSS_KEY_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_WATER_TEMPLE, "MQ Boss Key Chest", "Water Temple MQ Boss Key Chest"), + RC_OBJECT(RC_WATER_TEMPLE_MQ_LONGSHOT_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_WATER_TEMPLE, "MQ Longshot Chest", "Water Temple MQ Longshot Chest"), + RC_OBJECT(RC_WATER_TEMPLE_MQ_COMPASS_CHEST, RCVORMQ_MQ, RCTYPE_MAP_COMPASS, RCAREA_WATER_TEMPLE, "MQ Compass Chest", "Water Temple MQ Compass Chest"), + RC_OBJECT(RC_WATER_TEMPLE_MQ_MAP_CHEST, RCVORMQ_MQ, RCTYPE_MAP_COMPASS, RCAREA_WATER_TEMPLE, "MQ Map Chest", "Water Temple MQ Map Chest"), + RC_OBJECT(RC_WATER_TEMPLE_MQ_FREESTANDING_KEY, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_WATER_TEMPLE, "MQ Freestanding Key", "Water Temple MQ Freestanding Key"), + RC_OBJECT(RC_WATER_TEMPLE_GS_BEHIND_GATE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_WATER_TEMPLE, "GS Behind Gate", "Water Temple GS Behind Gate"), + RC_OBJECT(RC_WATER_TEMPLE_GS_FALLING_PLATFORM_ROOM, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_WATER_TEMPLE, "GS Falling Platform Room", "Water Temple GS Falling Platform Room"), + RC_OBJECT(RC_WATER_TEMPLE_GS_CENTRAL_PILLAR, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_WATER_TEMPLE, "GS Central Pillar", "Water Temple GS Central Pillar"), + RC_OBJECT(RC_WATER_TEMPLE_GS_NEAR_BOSS_KEY_CHEST, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_WATER_TEMPLE, "GS Near Boss Key Chest", "Water Temple GS Near Boss Key Chest"), + RC_OBJECT(RC_WATER_TEMPLE_GS_RIVER, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_WATER_TEMPLE, "GS River", "Water Temple GS River"), + RC_OBJECT(RC_WATER_TEMPLE_MQ_GS_BEFORE_UPPER_WATER_SWITCH, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_WATER_TEMPLE, "MQ GS Before Upper Water Switch", "Water Temple MQ GS Before Upper Water Switch"), + RC_OBJECT(RC_WATER_TEMPLE_MQ_GS_FREESTANDING_KEY_AREA, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_WATER_TEMPLE, "MQ GS Freestanding Key Area", "Water Temple MQ GS Freestanding Key Area"), + RC_OBJECT(RC_WATER_TEMPLE_MQ_GS_LIZALFOS_HALLWAY, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_WATER_TEMPLE, "MQ GS Lizalfos Hallway", "Water Temple MQ GS Lizalfos Hallway"), + RC_OBJECT(RC_WATER_TEMPLE_MQ_GS_RIVER, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_WATER_TEMPLE, "MQ GS River", "Water Temple MQ GS River"), + RC_OBJECT(RC_WATER_TEMPLE_MQ_GS_TRIPLE_WALL_TORCH, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_WATER_TEMPLE, "MQ GS Triple Wall Torch", "Water Temple MQ GS Triple Wall Torch"), + RC_OBJECT(RC_MORPHA, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_WATER_TEMPLE, "Morpha", "Morpha"), + RC_OBJECT(RC_WATER_TEMPLE_MORPHA_HEART, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_WATER_TEMPLE, "Morpha Heart Container", "Water Temple Morpha Heart Container"), +}; + +std::vector rcObjectsSPT = { + RC_OBJECT(RC_SPIRIT_TEMPLE_SILVER_GAUNTLETS_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "Silver Gauntlets Chest", "Spirit Temple Silver Gauntlets Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MIRROR_SHIELD_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "Mirror Shield Chest", "Spirit Temple Mirror Shield Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_CHILD_BRIDGE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "Child Bridge Chest", "Spirit Temple Child Bridge Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_CHILD_EARLY_TORCHES_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "Child Early Torches Chest", "Spirit Temple Child Early Torches Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_COMPASS_CHEST, RCVORMQ_VANILLA, RCTYPE_MAP_COMPASS, RCAREA_SPIRIT_TEMPLE, "Compass Chest", "Spirit Temple Compass Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_EARLY_ADULT_RIGHT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "Early Adult Right Chest", "Spirit Temple Early Adult Right Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_FIRST_MIRROR_LEFT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "First Mirror Left Chest", "Spirit Temple First Mirror Left Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_FIRST_MIRROR_RIGHT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "First Mirror Right Chest", "Spirit Temple First Mirror Right Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MAP_CHEST, RCVORMQ_VANILLA, RCTYPE_MAP_COMPASS, RCAREA_SPIRIT_TEMPLE, "Map Chest", "Spirit Temple Map Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_CHILD_CLIMB_NORTH_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "Child Climb North Chest", "Spirit Temple Child Climb North Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_CHILD_CLIMB_EAST_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "Child Climb East Chest", "Spirit Temple Child Climb East Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_SUN_BLOCK_ROOM_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "Sun Block Room Chest", "Spirit Temple Sun Block Room Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_STATUE_ROOM_HAND_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "Statue Room Hand Chest", "Spirit Temple Statue Room Hand Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_STATUE_ROOM_NORTHEAST_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "Statue Room Northeast Chest", "Spirit Temple Statue Room Northeast Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_NEAR_FOUR_ARMOS_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "Near Four Armos Chest", "Spirit Temple Near Four Armos Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_HALLWAY_RIGHT_INVISIBLE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "Hallway Right Invisible Chest", "Spirit Temple Hallway Right Invisible Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_HALLWAY_LEFT_INVISIBLE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "Hallway Left Invisible Chest", "Spirit Temple Hallway Left Invisible Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_BOSS_KEY_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "Boss Key Chest", "Spirit Temple Boss Key Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_TOPMOST_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "Topmost Chest", "Spirit Temple Topmost Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_FRONT_LEFT_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "MQ Entrance Front Left Chest", "Spirit Temple MQ Entrance Front Left Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_BACK_RIGHT_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "MQ Entrance Back Right Chest", "Spirit Temple MQ Entrance Back Right Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_FRONT_RIGHT_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "MQ Entrance Front Right Chest", "Spirit Temple MQ Entrance Front Right Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_BACK_LEFT_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "MQ Entrance Back Left Chest", "Spirit Temple MQ Entrance Back Left Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_CHILD_HAMMER_SWITCH_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "MQ Child Hammer Switch Chest", "Spirit Temple MQ Child Hammer Switch Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_MAP_CHEST, RCVORMQ_MQ, RCTYPE_MAP_COMPASS, RCAREA_SPIRIT_TEMPLE, "MQ Map Chest", "Spirit Temple MQ Map Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_MAP_ROOM_ENEMY_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "MQ Map Room Enemy Chest", "Spirit Temple MQ Map Room Enemy Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_CHILD_CLIMB_NORTH_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "MQ Child Climb North Chest", "Spirit Temple MQ Child Climb North Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_CHILD_CLIMB_SOUTH_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "MQ Child Climb South Chest", "Spirit Temple MQ Child Climb South Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_COMPASS_CHEST, RCVORMQ_MQ, RCTYPE_MAP_COMPASS, RCAREA_SPIRIT_TEMPLE, "MQ Compass Chest", "Spirit Temple MQ Compass Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_STATUE_ROOM_LULLABY_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "MQ Statue Room Lullaby Chest", "Spirit Temple MQ Statue Room Lullaby Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_STATUE_ROOM_INVISIBLE_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "MQ Statue Room Invisible Chest", "Spirit Temple MQ Statue Room Invisible Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_SILVER_BLOCK_HALLWAY_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "MQ Silver Block Hallway Chest", "Spirit Temple MQ Silver Block Hallway Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_SUN_BLOCK_ROOM_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "MQ Sun Block Room Chest", "Spirit Temple MQ Sun Block Room Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_SYMPHONY_ROOM_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "MQ Symphony Room Chest", "Spirit Temple MQ Symphony Room Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_LEEVER_ROOM_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "MQ Leever Room Chest", "Spirit Temple MQ Leever Room Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_BEAMOS_ROOM_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "MQ Beamos Room Chest", "Spirit Temple MQ Beamos Room Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_CHEST_SWITCH_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "MQ Chest Switch Chest", "Spirit Temple MQ Chest Switch Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_BOSS_KEY_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "MQ Boss Key Chest", "Spirit Temple MQ Boss Key Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_MIRROR_PUZZLE_INVISIBLE_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "MQ Mirror Puzzle Invisible Chest", "Spirit Temple MQ Mirror Puzzle Invisible Chest"), + RC_OBJECT(RC_SPIRIT_TEMPLE_GS_HALL_AFTER_SUN_BLOCK_ROOM, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_SPIRIT_TEMPLE, "GS Hall After Sun Block Room", "Spirit Temple GS Hall After Sun Block Room"), + RC_OBJECT(RC_SPIRIT_TEMPLE_GS_BOULDER_ROOM, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_SPIRIT_TEMPLE, "GS Boulder Room", "Spirit Temple GS Boulder Room"), + RC_OBJECT(RC_SPIRIT_TEMPLE_GS_LOBBY, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_SPIRIT_TEMPLE, "GS Lobby", "Spirit Temple GS Lobby"), + RC_OBJECT(RC_SPIRIT_TEMPLE_GS_SUN_ON_FLOOR_ROOM, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_SPIRIT_TEMPLE, "GS Sun on Floor Room", "Spirit Temple GS Sun on Floor Room"), + RC_OBJECT(RC_SPIRIT_TEMPLE_GS_METAL_FENCE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_SPIRIT_TEMPLE, "GS Metal Fence", "Spirit Temple GS Metal Fence"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_GS_SYMPHONY_ROOM, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_SPIRIT_TEMPLE, "MQ GS Symphony Room", "Spirit Temple MQ GS Symphony Room"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_GS_LEEVER_ROOM, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_SPIRIT_TEMPLE, "MQ GS Leever Room", "Spirit Temple MQ GS Leever Room"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_GS_NINE_THRONES_ROOM_WEST, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_SPIRIT_TEMPLE, "MQ GS Nine Thrones Room West", "Spirit Temple MQ GS Nine Thrones Room West"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_GS_NINE_THRONES_ROOM_NORTH, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_SPIRIT_TEMPLE, "MQ GS Nine Thrones Room North", "Spirit Temple MQ GS Nine Thrones Room North"), + RC_OBJECT(RC_SPIRIT_TEMPLE_MQ_GS_SUN_BLOCK_ROOM, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_SPIRIT_TEMPLE, "MQ GS Sun Block Room", "Spirit Temple MQ GS Sun Block Room"), + RC_OBJECT(RC_TWINROVA, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "Twinrova", "Twinrova"), + RC_OBJECT(RC_SPIRIT_TEMPLE_TWINROVA_HEART, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SPIRIT_TEMPLE, "Twinrova Heart Container", "Spirit Temple Twinrova Heart Container"), +}; + +std::vector rcObjectsSDT = { + RC_OBJECT(RC_SHADOW_TEMPLE_MAP_CHEST, RCVORMQ_VANILLA, RCTYPE_MAP_COMPASS, RCAREA_SHADOW_TEMPLE, "Map Chest", "Shadow Temple Map Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_HOVER_BOOTS_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "Hover Boots Chest", "Shadow Temple Hover Boots Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_COMPASS_CHEST, RCVORMQ_VANILLA, RCTYPE_MAP_COMPASS, RCAREA_SHADOW_TEMPLE, "Compass Chest", "Shadow Temple Compass Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_EARLY_SILVER_RUPEE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "Early Silver Rupee Chest", "Shadow Temple Early Silver Rupee Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_INVISIBLE_BLADES_VISIBLE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "Invisible Blades Visible Chest", "Shadow Temple Invisible Blades Visible Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_INVISIBLE_BLADES_INVISIBLE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "Invisible Blades Invisible Chest", "Shadow Temple Invisible Blades Invisible Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_FALLING_SPIKES_LOWER_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "Falling Spikes Lower Chest", "Shadow Temple Falling Spikes Lower Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_FALLING_SPIKES_UPPER_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "Falling Spikes Upper Chest", "Shadow Temple Falling Spikes Upper Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_FALLING_SPIKES_SWITCH_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "Falling Spikes Switch Chest", "Shadow Temple Falling Spikes Switch Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_INVISIBLE_SPIKES_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "Invisible Spikes Chest", "Shadow Temple Invisible Spikes Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_WIND_HINT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "Wind Hint Chest", "Shadow Temple Wind Hint Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_AFTER_WIND_ENEMY_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "After Wind Enemy Chest", "Shadow Temple After Wind Enemy Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_AFTER_WIND_HIDDEN_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "After Wind Hidden Chest", "Shadow Temple After Wind Hidden Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_SPIKE_WALLS_LEFT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "Spike Walls Left Chest", "Shadow Temple Spike Walls Left Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_BOSS_KEY_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "Boss Key Chest", "Shadow Temple Boss Key Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_INVISIBLE_FLOORMASTER_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "Invisible Floormaster Chest", "Shadow Temple Invisible Floormaster Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_FREESTANDING_KEY, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "Freestanding Key", "Shadow Temple Freestanding Key"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_COMPASS_CHEST, RCVORMQ_MQ, RCTYPE_MAP_COMPASS, RCAREA_SHADOW_TEMPLE, "MQ Compass Chest", "Shadow Temple MQ Compass Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_HOVER_BOOTS_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "MQ Hover Boots Chest", "Shadow Temple MQ Hover Boots Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_EARLY_GIBDOS_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "MQ Early Gibdos Chest", "Shadow Temple MQ Early Gibdos Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_MAP_CHEST, RCVORMQ_MQ, RCTYPE_MAP_COMPASS, RCAREA_SHADOW_TEMPLE, "MQ Map Chest", "Shadow Temple MQ Map Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_BEAMOS_SILVER_RUPEES_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "MQ Beamos Silver Rupees Chest", "Shadow Temple MQ Beamos Silver Rupees Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_FALLING_SPIKES_SWITCH_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "MQ Falling Spikes Switch Chest", "Shadow Temple MQ Falling Spikes Switch Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_FALLING_SPIKES_LOWER_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "MQ Falling Spikes Lower Chest", "Shadow Temple MQ Falling Spikes Lower Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_FALLING_SPIKES_UPPER_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "MQ Falling Spikes Upper Chest", "Shadow Temple MQ Falling Spikes Upper Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_INVISIBLE_SPIKES_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "MQ Invisible Spikes Chest", "Shadow Temple MQ Invisible Spikes Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_BOSS_KEY_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "MQ Boss Key Chest", "Shadow Temple MQ Boss Key Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_SPIKE_WALLS_LEFT_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "MQ Spike Walls Left Chest", "Shadow Temple MQ Spike Walls Left Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_STALFOS_ROOM_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "MQ Stalfos Room Chest", "Shadow Temple MQ Stalfos Room Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_INVISIBLE_BLADES_INVISIBLE_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "MQ Invisible Blades Invisible Chest", "Shadow Temple MQ Invisible Blades Invisible Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_INVISIBLE_BLADES_VISIBLE_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "MQ Invisible Blades Visible Chest", "Shadow Temple MQ Invisible Blades Visible Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_BOMB_FLOWER_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "MQ Bomb Flower Chest", "Shadow Temple MQ Bomb Flower Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_WIND_HINT_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "MQ Wind Hint Chest", "Shadow Temple MQ Wind Hint Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_AFTER_WIND_HIDDEN_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "MQ After Wind Hidden Chest", "Shadow Temple MQ After Wind Hidden Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_AFTER_WIND_ENEMY_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "MQ After Wind Enemy Chest", "Shadow Temple MQ After Wind Enemy Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_NEAR_SHIP_INVISIBLE_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "MQ Near Ship Invisible Chest", "Shadow Temple MQ Near Ship Invisible Chest"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_FREESTANDING_KEY, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "MQ Freestanding Key", "Shadow Temple MQ Freestanding Key"), + RC_OBJECT(RC_SHADOW_TEMPLE_GS_SINGLE_GIANT_POT, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_SHADOW_TEMPLE, "GS Single Giant Pot", "Shadow Temple GS Single Giant Pot"), + RC_OBJECT(RC_SHADOW_TEMPLE_GS_FALLING_SPIKES_ROOM, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_SHADOW_TEMPLE, "GS Falling Spikes Room", "Shadow Temple GS Falling Spikes Room"), + RC_OBJECT(RC_SHADOW_TEMPLE_GS_TRIPLE_GIANT_POT, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_SHADOW_TEMPLE, "GS Triple Giant Pot", "Shadow Temple GS Triple Giant Pot"), + RC_OBJECT(RC_SHADOW_TEMPLE_GS_LIKE_LIKE_ROOM, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_SHADOW_TEMPLE, "GS Like Like Room", "Shadow Temple GS Like Like Room"), + RC_OBJECT(RC_SHADOW_TEMPLE_GS_NEAR_SHIP, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_SHADOW_TEMPLE, "GS Near Ship", "Shadow Temple GS Near Ship"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_GS_FALLING_SPIKES_ROOM, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_SHADOW_TEMPLE, "MQ GS Falling Spikes Room", "Shadow Temple MQ GS Falling Spikes Room"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_GS_WIND_HINT_ROOM, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_SHADOW_TEMPLE, "MQ GS Wind Hint Room", "Shadow Temple MQ GS Wind Hint Room"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_GS_AFTER_WIND, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_SHADOW_TEMPLE, "MQ GS After Wind", "Shadow Temple MQ GS After Wind"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_GS_AFTER_SHIP, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_SHADOW_TEMPLE, "MQ GS After Ship", "Shadow Temple MQ GS After Ship"), + RC_OBJECT(RC_SHADOW_TEMPLE_MQ_GS_NEAR_BOSS, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_SHADOW_TEMPLE, "MQ GS Near Boss", "Shadow Temple MQ GS Near Boss"), + RC_OBJECT(RC_BONGO_BONGO, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "Bongo Bongo", "Bongo Bongo"), + RC_OBJECT(RC_SHADOW_TEMPLE_BONGO_BONGO_HEART, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_SHADOW_TEMPLE, "Bongo Bongo Heart Container", "Shadow Temple Bongo Bongo Heart Container"), +}; + +std::vector rcObjectsBW = { + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_FRONT_LEFT_FAKE_WALL_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_BOTTOM_OF_THE_WELL, "Front Left Fake Wall Chest", "Bottom of the Well Front Left Fake Wall Chest"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_FRONT_CENTER_BOMBABLE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_BOTTOM_OF_THE_WELL, "Front Center Bombable Chest", "Bottom of the Well Front Center Bombable Chest"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_RIGHT_BOTTOM_FAKE_WALL_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_BOTTOM_OF_THE_WELL, "Right Bottom Fake Wall Chest", "Bottom of the Well Right Bottom Fake Wall Chest"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_COMPASS_CHEST, RCVORMQ_VANILLA, RCTYPE_MAP_COMPASS, RCAREA_BOTTOM_OF_THE_WELL, "Compass Chest", "Bottom of the Well Compass Chest"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_CENTER_SKULLTULA_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_BOTTOM_OF_THE_WELL, "Center Skulltula Chest", "Bottom of the Well Center Skulltula Chest"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_BACK_LEFT_BOMBABLE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_BOTTOM_OF_THE_WELL, "Back Left Bombable Chest", "Bottom of the Well Back Left Bombable Chest"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_LENS_OF_TRUTH_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_BOTTOM_OF_THE_WELL, "Lens of Truth Chest", "Bottom of the Well Lens of Truth Chest"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_INVISIBLE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_BOTTOM_OF_THE_WELL, "Invisible Chest", "Bottom of the Well Invisible Chest"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_UNDERWATER_FRONT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_BOTTOM_OF_THE_WELL, "Underwater Front Chest", "Bottom of the Well Underwater Front Chest"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_UNDERWATER_LEFT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_BOTTOM_OF_THE_WELL, "Underwater Left Chest", "Bottom of the Well Underwater Left Chest"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_MAP_CHEST, RCVORMQ_VANILLA, RCTYPE_MAP_COMPASS, RCAREA_BOTTOM_OF_THE_WELL, "Map Chest", "Bottom of the Well Map Chest"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_BOTTOM_OF_THE_WELL, "Fire Keese Chest", "Bottom of the Well Fire Keese Chest"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_LIKE_LIKE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_BOTTOM_OF_THE_WELL, "Like Like Chest", "Bottom of the Well Like Like Chest"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_FREESTANDING_KEY, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_BOTTOM_OF_THE_WELL, "Freestanding Key", "Bottom of the Well Freestanding Key"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_MQ_MAP_CHEST, RCVORMQ_MQ, RCTYPE_MAP_COMPASS, RCAREA_BOTTOM_OF_THE_WELL, "MQ Map Chest", "Bottom of the Well MQ Map Chest"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_MQ_LENS_OF_TRUTH_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_BOTTOM_OF_THE_WELL, "MQ Lens of Truth Chest", "Bottom of the Well MQ Lens of Truth Chest"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_MQ_COMPASS_CHEST, RCVORMQ_MQ, RCTYPE_MAP_COMPASS, RCAREA_BOTTOM_OF_THE_WELL, "MQ Compass Chest", "Bottom of the Well MQ Compass Chest"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_MQ_DEAD_HAND_FREESTANDING_KEY, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_BOTTOM_OF_THE_WELL, "MQ Dead Hand Freestanding Key", "Bottom of the Well MQ Dead Hand Freestanding Key"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_FREESTANDING_KEY, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_BOTTOM_OF_THE_WELL, "MQ East Inner Room Freestanding Key", "Bottom of the Well MQ East Inner Room Freestanding Key"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_GS_LIKE_LIKE_CAGE, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_BOTTOM_OF_THE_WELL, "GS Like Like Cage", "Bottom of the Well GS Like Like Cage"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_GS_EAST_INNER_ROOM, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_BOTTOM_OF_THE_WELL, "GS East Inner Room", "Bottom of the Well GS East Inner Room"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_GS_WEST_INNER_ROOM, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_BOTTOM_OF_THE_WELL, "GS West Inner Room", "Bottom of the Well GS West Inner Room"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_MQ_GS_BASEMENT, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_BOTTOM_OF_THE_WELL, "MQ GS Basement", "Bottom of the Well MQ GS Basement"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_MQ_GS_COFFIN_ROOM, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_BOTTOM_OF_THE_WELL, "MQ GS Coffin Room", "Bottom of the Well MQ GS Coffin Room"), + RC_OBJECT(RC_BOTTOM_OF_THE_WELL_MQ_GS_WEST_INNER_ROOM, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_BOTTOM_OF_THE_WELL, "MQ GS West Inner Room", "Bottom of the Well MQ GS West Inner Room"), +}; + +std::vector rcObjectsIC = { + RC_OBJECT(RC_ICE_CAVERN_MAP_CHEST, RCVORMQ_VANILLA, RCTYPE_MAP_COMPASS, RCAREA_ICE_CAVERN, "Map Chest", "Ice Cavern Map Chest"), + RC_OBJECT(RC_ICE_CAVERN_COMPASS_CHEST, RCVORMQ_VANILLA, RCTYPE_MAP_COMPASS, RCAREA_ICE_CAVERN, "Compass Chest", "Ice Cavern Compass Chest"), + RC_OBJECT(RC_ICE_CAVERN_IRON_BOOTS_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ICE_CAVERN, "Iron Boots Chest", "Ice Cavern Iron Boots Chest"), + RC_OBJECT(RC_ICE_CAVERN_FREESTANDING_POH, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ICE_CAVERN, "Freestanding PoH", "Ice Cavern Freestanding PoH"), + RC_OBJECT(RC_ICE_CAVERN_MQ_IRON_BOOTS_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_ICE_CAVERN, "MQ Iron Boots Chest", "Ice Cavern MQ Iron Boots Chest"), + RC_OBJECT(RC_ICE_CAVERN_MQ_COMPASS_CHEST, RCVORMQ_MQ, RCTYPE_MAP_COMPASS, RCAREA_ICE_CAVERN, "MQ Compass Chest", "Ice Cavern MQ Compass Chest"), + RC_OBJECT(RC_ICE_CAVERN_MQ_MAP_CHEST, RCVORMQ_MQ, RCTYPE_MAP_COMPASS, RCAREA_ICE_CAVERN, "MQ Map Chest", "Ice Cavern MQ Map Chest"), + RC_OBJECT(RC_ICE_CAVERN_MQ_FREESTANDING_POH, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_ICE_CAVERN, "MQ Freestanding PoH", "Ice Cavern MQ Freestanding PoH"), + RC_OBJECT(RC_ICE_CAVERN_GS_PUSH_BLOCK_ROOM, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_ICE_CAVERN, "GS Push Block Room", "Ice Cavern GS Push Block Room"), + RC_OBJECT(RC_ICE_CAVERN_GS_SPINNING_SCYTHE_ROOM, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_ICE_CAVERN, "GS Spinning Scythe Room", "Ice Cavern GS Spinning Scythe Room"), + RC_OBJECT(RC_ICE_CAVERN_GS_HEART_PIECE_ROOM, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_ICE_CAVERN, "GS Heart Piece Room", "Ice Cavern GS Heart Piece Room"), + RC_OBJECT(RC_ICE_CAVERN_MQ_GS_SCARECROW, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_ICE_CAVERN, "MQ GS Scarecrow", "Ice Cavern MQ GS Scarecrow"), + RC_OBJECT(RC_ICE_CAVERN_MQ_GS_ICE_BLOCK, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_ICE_CAVERN, "MQ GS Ice Block", "Ice Cavern MQ GS Ice Block"), + RC_OBJECT(RC_ICE_CAVERN_MQ_GS_RED_ICE, RCVORMQ_MQ, RCTYPE_SKULL_TOKEN, RCAREA_ICE_CAVERN, "MQ GS Red Ice", "Ice Cavern MQ GS Red Ice"), + RC_OBJECT(RC_SHEIK_IN_ICE_CAVERN, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_ICE_CAVERN, "Sheik in Ice Cavern", "Sheik in Ice Cavern"), +}; + +std::vector rcObjectsGTG = { + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_LOBBY_LEFT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Lobby Left Chest", "Gerudo Training Grounds Lobby Left Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_LOBBY_RIGHT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Lobby Right Chest", "Gerudo Training Grounds Lobby Right Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_STALFOS_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Stalfos Chest", "Gerudo Training Grounds Stalfos Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_BEAMOS_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Beamos Chest", "Gerudo Training Grounds Beamos Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_HIDDEN_CEILING_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Hidden Ceiling Chest", "Gerudo Training Grounds Hidden Ceiling Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MAZE_PATH_FIRST_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Maze Path First Chest", "Gerudo Training Grounds Maze Path First Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MAZE_PATH_SECOND_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Maze Path Second Chest", "Gerudo Training Grounds Maze Path Second Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MAZE_PATH_THIRD_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Maze Path Third Chest", "Gerudo Training Grounds Maze Path Third Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MAZE_PATH_FINAL_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Maze Path Final Chest", "Gerudo Training Grounds Maze Path Final Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MAZE_RIGHT_CENTRAL_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Maze Right Central Chest", "Gerudo Training Grounds Maze Right Central Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MAZE_RIGHT_SIDE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Maze Right Side Chest", "Gerudo Training Grounds Maze Right Side Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_UNDERWATER_SILVER_RUPEE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Underwater Silver Rupee Chest", "Gerudo Training Grounds Underwater Silver Rupee Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_HAMMER_ROOM_CLEAR_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Hammer Room Clear Chest", "Gerudo Training Grounds Hammer Room Clear Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_HAMMER_ROOM_SWITCH_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Hammer Room Switch Chest", "Gerudo Training Grounds Hammer Room Switch Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_EYE_STATUE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Eye Statue Chest", "Gerudo Training Grounds Eye Statue Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_NEAR_SCARECROW_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Near Scarecrow Chest", "Gerudo Training Grounds Near Scarecrow Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_BEFORE_HEAVY_BLOCK_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Before Heavy Block Chest", "Gerudo Training Grounds Before Heavy Block Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_FIRST_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Heavy Block First Chest", "Gerudo Training Grounds Heavy Block First Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_SECOND_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Heavy Block Second Chest", "Gerudo Training Grounds Heavy Block Second Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_THIRD_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Heavy Block Third Chest", "Gerudo Training Grounds Heavy Block Third Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_HEAVY_BLOCK_FOURTH_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Heavy Block Fourth Chest", "Gerudo Training Grounds Heavy Block Fourth Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_FREESTANDING_KEY, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "Freestanding Key", "Gerudo Training Grounds Freestanding Key"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "MQ Lobby Right Chest", "Gerudo Training Grounds MQ Lobby Right Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "MQ Lobby Left Chest", "Gerudo Training Grounds MQ Lobby Left Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MQ_FIRST_IRON_KNUCKLE_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "MQ First Iron Knuckle Chest", "Gerudo Training Grounds MQ First Iron Knuckle Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MQ_BEFORE_HEAVY_BLOCK_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "MQ Before Heavy Block Chest", "Gerudo Training Grounds MQ Before Heavy Block Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MQ_EYE_STATUE_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "MQ Eye Statue Chest", "Gerudo Training Grounds MQ Eye Statue Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MQ_FLAME_CIRCLE_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "MQ Flame Circle Chest", "Gerudo Training Grounds MQ Flame Circle Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MQ_SECOND_IRON_KNUCKLE_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "MQ Second Iron Knuckle Chest", "Gerudo Training Grounds MQ Second Iron Knuckle Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MQ_DINOLFOS_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "MQ Dinolfos Chest", "Gerudo Training Grounds MQ Dinolfos Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MQ_ICE_ARROWS_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "MQ Ice Arrows Chest", "Gerudo Training Grounds MQ Ice Arrows Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_CENTRAL_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "MQ Maze Right Central Chest", "Gerudo Training Grounds MQ Maze Right Central Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_FIRST_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "MQ Maze Path First Chest", "Gerudo Training Grounds MQ Maze Path First Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_SIDE_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "MQ Maze Right Side Chest", "Gerudo Training Grounds MQ Maze Right Side Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_THIRD_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "MQ Maze Path Third Chest", "Gerudo Training Grounds MQ Maze Path Third Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_PATH_SECOND_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "MQ Maze Path Second Chest", "Gerudo Training Grounds MQ Maze Path Second Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MQ_HIDDEN_CEILING_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "MQ Hidden Ceiling Chest", "Gerudo Training Grounds MQ Hidden Ceiling Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MQ_UNDERWATER_SILVER_RUPEE_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "MQ Underwater Silver Rupee Chest", "Gerudo Training Grounds MQ Underwater Silver Rupee Chest"), + RC_OBJECT(RC_GERUDO_TRAINING_GROUND_MQ_HEAVY_BLOCK_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GERUDO_TRAINING_GROUND, "MQ Heavy Block Chest", "Gerudo Training Grounds MQ Heavy Block Chest"), +}; + +std::vector rcObjectsGNC = { + RC_OBJECT(RC_GANONS_TOWER_BOSS_KEY_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "Boss Key Chest", "Ganon's Tower Boss Key Chest"), + RC_OBJECT(RC_GANONS_CASTLE_FOREST_TRIAL_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "Forest Trial Chest", "Ganon's Castle Forest Trial Chest"), + RC_OBJECT(RC_GANONS_CASTLE_WATER_TRIAL_LEFT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "Water Trial Left Chest", "Ganon's Castle Water Trial Left Chest"), + RC_OBJECT(RC_GANONS_CASTLE_WATER_TRIAL_RIGHT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "Water Trial Right Chest", "Ganon's Castle Water Trial Right Chest"), + RC_OBJECT(RC_GANONS_CASTLE_SHADOW_TRIAL_FRONT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "Shadow Trial Front Chest", "Ganon's Castle Shadow Trial Front Chest"), + RC_OBJECT(RC_GANONS_CASTLE_SHADOW_TRIAL_GOLDEN_GAUNTLETS_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "Shadow Trial Golden Gauntlets Chest", "Ganon's Castle Shadow Trial Golden Gauntlets Chest"), + RC_OBJECT(RC_GANONS_CASTLE_SPIRIT_TRIAL_CRYSTAL_SWITCH_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "Spirit Trial Crystal Switch Chest", "Ganon's Castle Spirit Trial Crystal Switch Chest"), + RC_OBJECT(RC_GANONS_CASTLE_SPIRIT_TRIAL_INVISIBLE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "Spirit Trial Invisible Chest", "Ganon's Castle Spirit Trial Invisible Chest"), + RC_OBJECT(RC_GANONS_CASTLE_LIGHT_TRIAL_FIRST_LEFT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "Light Trial First Left Chest", "Ganon's Castle Light Trial First Left Chest"), + RC_OBJECT(RC_GANONS_CASTLE_LIGHT_TRIAL_SECOND_LEFT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "Light Trial Second Left Chest", "Ganon's Castle Light Trial Second Left Chest"), + RC_OBJECT(RC_GANONS_CASTLE_LIGHT_TRIAL_THIRD_LEFT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "Light Trial Third Left Chest", "Ganon's Castle Light Trial Third Left Chest"), + RC_OBJECT(RC_GANONS_CASTLE_LIGHT_TRIAL_FIRST_RIGHT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "Light Trial First Right Chest", "Ganon's Castle Light Trial First Right Chest"), + RC_OBJECT(RC_GANONS_CASTLE_LIGHT_TRIAL_SECOND_RIGHT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "Light Trial Second Right Chest", "Ganon's Castle Light Trial Second Right Chest"), + RC_OBJECT(RC_GANONS_CASTLE_LIGHT_TRIAL_THIRD_RIGHT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "Light Trial Third Right Chest", "Ganon's Castle Light Trial Third Right Chest"), + RC_OBJECT(RC_GANONS_CASTLE_LIGHT_TRIAL_INVISIBLE_ENEMIES_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "Light Trial Invisible Enemies Chest", "Ganon's Castle Light Trial Invisible Enemies Chest"), + RC_OBJECT(RC_GANONS_CASTLE_LIGHT_TRIAL_LULLABY_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "Light Trial Lullaby Chest", "Ganon's Castle Light Trial Lullaby Chest"), + RC_OBJECT(RC_GANONS_CASTLE_DEKU_SCRUB_CENTER_LEFT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "Deku Scrub Center-Left", "Ganon's Castle Deku Scrub Center-Left"), + RC_OBJECT(RC_GANONS_CASTLE_DEKU_SCRUB_CENTER_RIGHT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "Deku Scrub Center-Right", "Ganon's Castle Deku Scrub Center-Right"), + RC_OBJECT(RC_GANONS_CASTLE_DEKU_SCRUB_RIGHT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "Deku Scrub Right", "Ganon's Castle Deku Scrub Right"), + RC_OBJECT(RC_GANONS_CASTLE_DEKU_SCRUB_LEFT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "Deku Scrub Left", "Ganon's Castle Deku Scrub Left"), + RC_OBJECT(RC_GANONS_CASTLE_MQ_WATER_TRIAL_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "MQ Water Trial Chest", "Ganon's Castle MQ Water Trial Chest"), + RC_OBJECT(RC_GANONS_CASTLE_MQ_FOREST_TRIAL_EYE_SWITCH_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "MQ Forest Trial Eye Switch Chest", "Ganon's Castle MQ Forest Trial Eye Switch Chest"), + RC_OBJECT(RC_GANONS_CASTLE_MQ_FOREST_TRIAL_FROZEN_EYE_SWITCH_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "MQ Forest Trial Frozen Eye Switch Chest", "Ganon's Castle MQ Forest Trial Frozen Eye Switch Chest"), + RC_OBJECT(RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_LULLABY_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "MQ Light Trial Lullaby Chest", "Ganon's Castle MQ Light Trial Lullaby Chest"), + RC_OBJECT(RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_BOMB_FLOWER_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "MQ Shadow Trial Bomb Flower Chest", "Ganon's Castle MQ Shadow Trial Bomb Flower Chest"), + RC_OBJECT(RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_EYE_SWITCH_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "MQ Shadow Trial Eye Switch Chest", "Ganon's Castle MQ Shadow Trial Eye Switch Chest"), + RC_OBJECT(RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_GOLDEN_GAUNTLETS_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "MQ Spirit Trial Golden Gauntlets Chest", "Ganon's Castle MQ Spirit Trial Golden Gauntlets Chest"), + RC_OBJECT(RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_SUN_BACK_RIGHT_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "MQ Spirit Trial Sun Back Right Chest", "Ganon's Castle MQ Spirit Trial Sun Back Right Chest"), + RC_OBJECT(RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_SUN_BACK_LEFT_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "MQ Spirit Trial Sun Back Left Chest", "Ganon's Castle MQ Spirit Trial Sun Back Left Chest"), + RC_OBJECT(RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_SUN_FRONT_LEFT_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "MQ Spirit Trial Sun Front Left Chest", "Ganon's Castle MQ Spirit Trial Sun Front Left Chest"), + RC_OBJECT(RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_FIRST_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "MQ Spirit Trial First Chest", "Ganon's Castle MQ Spirit Trial First Chest"), + RC_OBJECT(RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_INVISIBLE_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "MQ Spirit Trial Invisible Chest", "Ganon's Castle MQ Spirit Trial Invisible Chest"), + RC_OBJECT(RC_GANONS_CASTLE_MQ_FOREST_TRIAL_FREESTANDING_KEY, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "MQ Forest Trial Freestanding Key", "Ganon's Castle MQ Forest Trial Freestanding Key"), + RC_OBJECT(RC_GANONS_CASTLE_MQ_DEKU_SCRUB_RIGHT, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "MQ Deku Scrub Right", "Ganon's Castle MQ Deku Scrub Right"), + RC_OBJECT(RC_GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_LEFT, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "MQ Deku Scrub Center-Left", "Ganon's Castle MQ Deku Scrub Center-Left"), + RC_OBJECT(RC_GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "MQ Deku Scrub Center", "Ganon's Castle MQ Deku Scrub Center"), + RC_OBJECT(RC_GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_RIGHT, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "MQ Deku Scrub Center-Right", "Ganon's Castle MQ Deku Scrub Center-Right"), + RC_OBJECT(RC_GANONS_CASTLE_MQ_DEKU_SCRUB_LEFT, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, "MQ Deku Scrub Left", "Ganon's Castle MQ Deku Scrub Left"), +}; + +std::map rcAreaNames = { + { RCAREA_KOKIRI_FOREST, "Kokiri Forest"}, + { RCAREA_LOST_WOODS, "Lost Woods"}, + { RCAREA_SACRED_FOREST_MEADOW, "Sacred Forest Meadow"}, + { RCAREA_HYRULE_FIELD, "Hyrule Field"}, + { RCAREA_LAKE_HYLIA, "Lake Hylia"}, + { RCAREA_GERUDO_VALLEY, "Gerudo Valley"}, + { RCAREA_GERUDO_FORTRESS, "Gerudo Fortress"}, + { RCAREA_WASTELAND, "Desert Wasteland"}, + { RCAREA_DESERT_COLOSSUS, "Desert Colossus"}, + { RCAREA_MARKET, "Hyrule Market"}, + { RCAREA_HYRULE_CASTLE, "Hyrule Castle"}, + { RCAREA_KAKARIKO_VILLAGE, "Kakariko Village"}, + { RCAREA_GRAVEYARD, "Graveyard"}, + { RCAREA_DEATH_MOUNTAIN_TRAIL, "Death Mountain Trail"}, + { RCAREA_GORON_CITY, "Goron City"}, + { RCAREA_DEATH_MOUNTAIN_CRATER, "Death Mountain Crater"}, + { RCAREA_ZORAS_RIVER, "Zora's River"}, + { RCAREA_ZORAS_DOMAIN, "Zora's Domain"}, + { RCAREA_ZORAS_FOUNTAIN, "Zora's Fountain"}, + { RCAREA_LON_LON_RANCH, "Lon Lon Ranch"}, + { RCAREA_DEKU_TREE, "Deku Tree"}, + { RCAREA_DODONGOS_CAVERN, "Dodongo's Cavern"}, + { RCAREA_JABU_JABUS_BELLY, "Jabu Jabu's Belly"}, + { RCAREA_FOREST_TEMPLE, "Forest Temple"}, + { RCAREA_FIRE_TEMPLE, "Fire Temple"}, + { 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_ICE_CAVERN, "Ice Cavern"}, + { RCAREA_GERUDO_TRAINING_GROUND, "Gerudo Training Grounds"}, + { RCAREA_GANONS_CASTLE, "Ganon's Castle"}, + }; + +std::map> rcObjects = { + { RCAREA_KOKIRI_FOREST, rcObjectsKF }, + { RCAREA_LOST_WOODS, rcObjectsLW }, + { RCAREA_SACRED_FOREST_MEADOW, rcObjectsSFM }, + { RCAREA_HYRULE_FIELD, rcObjectsHF }, + { RCAREA_LAKE_HYLIA, rcObjectsLH }, + { RCAREA_GERUDO_VALLEY, rcObjectsGV }, + { RCAREA_GERUDO_FORTRESS, rcObjectsGF }, + { RCAREA_WASTELAND, rcObjectsWL }, + { RCAREA_DESERT_COLOSSUS, rcObjectsCL }, + { RCAREA_MARKET, rcObjectsMK }, + { RCAREA_HYRULE_CASTLE, rcObjectsHC }, + { RCAREA_KAKARIKO_VILLAGE, rcObjectsKV }, + { RCAREA_GRAVEYARD, rcObjectsGY }, + { RCAREA_DEATH_MOUNTAIN_TRAIL, rcObjectsDMT }, + { RCAREA_GORON_CITY, rcObjectsGC }, + { RCAREA_DEATH_MOUNTAIN_CRATER, rcObjectsDMC }, + { RCAREA_ZORAS_RIVER, rcObjectsZR }, + { RCAREA_ZORAS_DOMAIN, rcObjectsZD }, + { RCAREA_ZORAS_FOUNTAIN, rcObjectsZF }, + { RCAREA_LON_LON_RANCH, rcObjectsLLR }, + { RCAREA_DEKU_TREE, rcObjectsDT }, + { RCAREA_DODONGOS_CAVERN, rcObjectsDC }, + { RCAREA_JABU_JABUS_BELLY, rcObjectsJB }, + { RCAREA_FOREST_TEMPLE, rcObjectsFST }, + { RCAREA_FIRE_TEMPLE, rcObjectsFRT }, + { RCAREA_WATER_TEMPLE, rcObjectsWT }, + { RCAREA_SPIRIT_TEMPLE, rcObjectsSPT }, + { RCAREA_SHADOW_TEMPLE, rcObjectsSDT }, + { RCAREA_BOTTOM_OF_THE_WELL, rcObjectsBW }, + { RCAREA_ICE_CAVERN, rcObjectsIC }, + { RCAREA_GERUDO_TRAINING_GROUND, rcObjectsGTG }, + { RCAREA_GANONS_CASTLE, rcObjectsGNC }, +}; + +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_WATER_TEMPLE || + area == RCAREA_FIRE_TEMPLE || + area == RCAREA_FOREST_TEMPLE || + area == RCAREA_JABU_JABUS_BELLY || + area == RCAREA_DODONGOS_CAVERN || + area == RCAREA_DEKU_TREE; +} + +bool RandomizerCheckObjects::AreaIsOverworld(RandomizerCheckArea area) { + return !AreaIsDungeon(area); +} + +std::string RandomizerCheckObjects::GetRCAreaName(RandomizerCheckArea area) { + return rcAreaNames[area]; +} + +std::map> RandomizerCheckObjects::GetAllRCObjects() { + return rcObjects; +} + +void RandomizerCheckObjects::UpdateImGuiVisibility() { + for (auto& areaIt : rcObjects) { + for (auto& locationIt : areaIt.second) { + locationIt.visibleInImgui = ( + (locationIt.vOrMQ != RCVORMQ_MQ) && // don't show MQ checks until we support MQ + (locationIt.rcType != RCTYPE_SHOP) && // don't show shop items until we have shopsanity + (locationIt.rcType != RCTYPE_GOSSIP_STONE) && // don't show gossip stones (maybe gossipsanity will be a thing eventually?) + (locationIt.rcType != RCTYPE_LINKS_POCKET) && + (locationIt.rcType != RCTYPE_CHEST_GAME) && // don't show non final reward chest game checks until we support shuffling them + ((locationIt.rcType != RCTYPE_SKULL_TOKEN) || + (CVar_GetS32("gRandomizeShuffleTokens", 0) == 3) || // all tokens + ((CVar_GetS32("gRandomizeShuffleTokens", 0) == 2) && RandomizerCheckObjects::AreaIsOverworld(locationIt.rcArea)) || // overworld tokens + ((CVar_GetS32("gRandomizeShuffleTokens", 0) == 1) && RandomizerCheckObjects::AreaIsDungeon(locationIt.rcArea)) // dungeon tokens + ) && + ((locationIt.rcType != RCTYPE_COW) || CVar_GetS32("gRandomizeShuffleCows", 0)) && + ((locationIt.rcType != RCTYPE_ADULT_TRADE) || CVar_GetS32("gRandomizeShuffleAdultTrade", 0)) && + ((locationIt.rc != RC_KF_KOKIRI_SWORD_CHEST) || CVar_GetS32("gRandomizeShuffleKokiriSword", 0)) && + ((locationIt.rc != RC_HC_MALON_EGG) || CVar_GetS32("gRandomizeShuffleWeirdEgg", 0)) && + ((locationIt.rc != RC_GF_GERUDO_MEMBERSHIP_CARD) || CVar_GetS32("gRandomizeShuffleGerudoToken", 0)) && + ((locationIt.rcType != RCTYPE_FROG_SONG) || CVar_GetS32("gRandomizeShuffleFrogSongRupees", 0)) && + ((locationIt.rcType != RCTYPE_MAP_COMPASS) || CVar_GetS32("gRandomizeStartingMapsCompasses", 0) != 1) && // 1 is the value for "vanilla" maps/compasses + ((locationIt.rcType != RCTYPE_SMALL_KEY) || CVar_GetS32("gRandomizeKeysanity", 0) != 1) && // 1 is the value for "vanilla" small keys + ((locationIt.rcType != RCTYPE_GF_KEY) || CVar_GetS32("randoShuffleGerudoFortressKeys", 0) != 0) && // 0 is the value for "vanilla" gf keys + ((locationIt.rcType != RCTYPE_BOSS_KEY) || CVar_GetS32("gRandomizeBossKeysanity", 0) != 1) && // 1 is the value for "vanilla" boss keys + ((locationIt.rcType != RCTYPE_GANON_BOSS_KEY) || CVar_GetS32("gRandomizeShuffleGanonBossKey", 0) != 0) // 0 is the value for "vanilla" ganon's boss key + ); + } + } +} diff --git a/soh/soh/Enhancements/randomizer/randomizer_check_objects.h b/soh/soh/Enhancements/randomizer/randomizer_check_objects.h new file mode 100644 index 000000000..b58190c32 --- /dev/null +++ b/soh/soh/Enhancements/randomizer/randomizer_check_objects.h @@ -0,0 +1,83 @@ +#pragma once +#include "randomizerTypes.h" +#include +#include +#include + +// Check types based on main settings +typedef enum { + RCTYPE_STANDARD, // Base set of rando checks + RCTYPE_SKULL_TOKEN, // Gold Skulltulas + RCTYPE_COW, // Cows + RCTYPE_ADULT_TRADE, // Adult trade quest checks + RCTYPE_FROG_SONG, // Frog song purple rupee checks + RCTYPE_MAP_COMPASS, // Maps/Compasses + RCTYPE_SMALL_KEY, // Small Keys + RCTYPE_GF_KEY, // Gerudo Fortress Keys + RCTYPE_BOSS_KEY, // Boss Keys + RCTYPE_GANON_BOSS_KEY, // Ganon's boss key + RCTYPE_SHOP, // shops/scrubs + RCTYPE_CHEST_GAME, //todo replace this once we implement it, just using it to exclude for now + RCTYPE_LINKS_POCKET, //todo this feels hacky + RCTYPE_GOSSIP_STONE, +} RandomizerCheckType; + +typedef enum { + RCVORMQ_VANILLA, + RCVORMQ_MQ, + RCVORMQ_BOTH +} RandomizerCheckVanillaOrMQ; + +typedef enum { + RCAREA_KOKIRI_FOREST, + RCAREA_LOST_WOODS, + RCAREA_SACRED_FOREST_MEADOW, + RCAREA_HYRULE_FIELD, + RCAREA_LAKE_HYLIA, + RCAREA_GERUDO_VALLEY, + RCAREA_GERUDO_FORTRESS, + RCAREA_WASTELAND, + RCAREA_DESERT_COLOSSUS, + RCAREA_MARKET, + RCAREA_HYRULE_CASTLE, + RCAREA_KAKARIKO_VILLAGE, + RCAREA_GRAVEYARD, + RCAREA_DEATH_MOUNTAIN_TRAIL, + RCAREA_GORON_CITY, + RCAREA_DEATH_MOUNTAIN_CRATER, + RCAREA_ZORAS_RIVER, + RCAREA_ZORAS_DOMAIN, + RCAREA_ZORAS_FOUNTAIN, + RCAREA_LON_LON_RANCH, + RCAREA_DEKU_TREE, + RCAREA_DODONGOS_CAVERN, + RCAREA_JABU_JABUS_BELLY, + RCAREA_FOREST_TEMPLE, + RCAREA_FIRE_TEMPLE, + RCAREA_WATER_TEMPLE, + RCAREA_SPIRIT_TEMPLE, + RCAREA_SHADOW_TEMPLE, + RCAREA_BOTTOM_OF_THE_WELL, + RCAREA_ICE_CAVERN, + RCAREA_GERUDO_TRAINING_GROUND, + RCAREA_GANONS_CASTLE, + RCAREA_INVALID +} RandomizerCheckArea; + +typedef struct { + RandomizerCheck rc; + RandomizerCheckVanillaOrMQ vOrMQ; + RandomizerCheckType rcType; + RandomizerCheckArea rcArea; + bool visibleInImgui; + std::string rcShortName; + std::string rcSpoilerName; +} RandomizerCheckObject; + +namespace RandomizerCheckObjects { + bool AreaIsDungeon(RandomizerCheckArea area); + bool AreaIsOverworld(RandomizerCheckArea area); + std::string GetRCAreaName(RandomizerCheckArea area); + std::map> GetAllRCObjects(); + void UpdateImGuiVisibility(); +}