From 40cb4a6d7d6ede82e98c515c233677ea9f303c07 Mon Sep 17 00:00:00 2001 From: sonoftunk <59073987+sonoftunk@users.noreply.github.com> Date: Sat, 10 Dec 2022 18:21:36 -0500 Subject: [PATCH] Randomizer Location Exclusion List (#2070) * Randomizer Location Exclusion List - Adds Scrubs, Merchants, Shops. Adult Trade items, MQ Dungeons, and Bean Salesman - Fixes Kokiri Sword Chest, Weird Egg, and Frog Song Rupees from misbehaving - Updates Gerudo Fortress logic to be dependent on Open/Fast/Normal Fortress - Removes Invalid Check - Adds RO Enum for MQ settings - Updates magic values to RO enum * Location Exclusion List - Scrubs that are always randomized now always show on the list * For now, removes some extra code only needed for a Check Tracker. * Randomizer Location Exclusion List - Fixes Eyeball Frog from showing up when Adult Trade Items was off * Apply suggestions from code review Location Exclusion List - Applies suggested dungeon item defaults Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com> Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com> --- .../Enhancements/randomizer/randomizer.cpp | 8 +- .../randomizer/randomizer_check_objects.cpp | 184 ++++++++++-------- .../randomizer/randomizer_check_objects.h | 4 +- 3 files changed, 111 insertions(+), 85 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index 0668c6157..47f79264e 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -202,6 +202,9 @@ std::unordered_map SpoilerfileSettingNameToEn { "Shuffle Settings:Tokensanity", RSK_SHUFFLE_TOKENS }, { "Shuffle Settings:Shuffle Adult Trade", RSK_SHUFFLE_ADULT_TRADE }, { "Shuffle Settings:Shuffle Magic Beans", RSK_SHUFFLE_MAGIC_BEANS }, + { "Shuffle Settings:Shuffle Kokiri Sword", RSK_SHUFFLE_KOKIRI_SWORD }, + { "Shuffle Settings:Shuffle Weird Egg", RSK_SHUFFLE_WEIRD_EGG }, + { "Shuffle Settings:Shuffle Frog Song Rupees", RSK_SHUFFLE_FROG_SONG_RUPEES }, { "Shuffle Settings:Shuffle Merchants", RSK_SHUFFLE_MERCHANTS }, { "Start with Deku Shield", RSK_STARTING_DEKU_SHIELD }, { "Start with Kokiri Sword", RSK_STARTING_KOKIRI_SWORD }, @@ -653,6 +656,10 @@ void Randomizer::ParseRandomizerSettingsFile(const char* spoilerFileName) { case RSK_SHUFFLE_COWS: case RSK_SHUFFLE_ADULT_TRADE: case RSK_SHUFFLE_MAGIC_BEANS: + case RSK_SHUFFLE_KOKIRI_SWORD: + case RSK_SHUFFLE_WEIRD_EGG: + case RSK_SHUFFLE_FROG_SONG_RUPEES: + case RSK_RANDOM_MQ_DUNGEONS: case RSK_STARTING_DEKU_SHIELD: case RSK_STARTING_KOKIRI_SWORD: case RSK_COMPLETE_MASK_QUEST: @@ -2304,7 +2311,6 @@ std::map rcToRandomizerInf = { { RC_MARKET_BOMBCHU_SHOP_ITEM_8, RAND_INF_SHOP_ITEMS_MARKET_BOMBCHU_SHOP_ITEM_8 }, { RC_GC_MEDIGORON, RAND_INF_MERCHANTS_MEDIGORON }, { RC_WASTELAND_BOMBCHU_SALESMAN, RAND_INF_MERCHANTS_CARPET_SALESMAN }, - }; RandomizerCheckObject Randomizer::GetCheckObjectFromActor(s16 actorId, s16 sceneNum, s32 actorParams = 0x00) { diff --git a/soh/soh/Enhancements/randomizer/randomizer_check_objects.cpp b/soh/soh/Enhancements/randomizer/randomizer_check_objects.cpp index c36852f62..ccfdddce6 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_check_objects.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer_check_objects.cpp @@ -48,15 +48,15 @@ std::map rcObjects = { RC_OBJECT(RC_LW_NEAR_SHORTCUTS_GROTTO_CHEST, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LOST_WOODS, ACTOR_EN_BOX, SCENE_KAKUSIANA, 22964, GI_RUPEE_BLUE, "Near Shortcuts Grotto Chest", "LW Near Shortcuts Grotto Chest"), RC_OBJECT(RC_LW_SKULL_KID, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LOST_WOODS, ACTOR_ID_MAX, SCENE_SPOT10, 0x00, GI_NONE, "Skull Kid", "LW Skull Kid"), - RC_OBJECT(RC_LW_TRADE_COJIRO, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LOST_WOODS, ACTOR_ID_MAX, SCENE_SPOT10, 0x00, GI_NONE, "Trade Cojiro", "LW Trade Cojiro"), - RC_OBJECT(RC_LW_TRADE_ODD_POTION, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LOST_WOODS, ACTOR_ID_MAX, SCENE_SPOT10, 0x00, GI_NONE, "Trade Odd Potion", "LW Trade Odd Potion"), + RC_OBJECT(RC_LW_TRADE_COJIRO, RCVORMQ_BOTH, RCTYPE_ADULT_TRADE, RCAREA_LOST_WOODS, ACTOR_ID_MAX, SCENE_SPOT10, 0x00, GI_NONE, "Trade Cojiro", "LW Trade Cojiro"), + RC_OBJECT(RC_LW_TRADE_ODD_POTION, RCVORMQ_BOTH, RCTYPE_ADULT_TRADE, RCAREA_LOST_WOODS, ACTOR_ID_MAX, SCENE_SPOT10, 0x00, GI_NONE, "Trade Odd Potion", "LW Trade Odd Potion"), RC_OBJECT(RC_LW_OCARINA_MEMORY_GAME, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LOST_WOODS, ACTOR_ID_MAX, SCENE_SPOT10, 0x00, GI_NONE, "Ocarina Memory Game", "LW Ocarina Memory Game"), RC_OBJECT(RC_LW_TARGET_IN_WOODS, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LOST_WOODS, ACTOR_ID_MAX, SCENE_SPOT10, 0x00, GI_NONE, "Target in Woods", "LW Target in Woods"), - RC_OBJECT(RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_RIGHT, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LOST_WOODS, ACTOR_EN_DNS, SCENE_SPOT10, 0x00, GI_NUTS_5_2, "Deku Scrub Near Deku Theater Right", "LW Deku Scrub Near Deku Theater Right"), - RC_OBJECT(RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_LEFT, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LOST_WOODS, ACTOR_EN_DNS, SCENE_SPOT10, 0x01, GI_STICKS_1, "Deku Scrub Near Deku Theater Left", "LW Deku Scrub Near Deku Theater Left"), - RC_OBJECT(RC_LW_DEKU_SCRUB_NEAR_BRIDGE, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LOST_WOODS, ACTOR_EN_DNS, SCENE_SPOT10, 0x09, GI_STICK_UPGRADE_20, "Deku Scrub Near Bridge", "LW Deku Scrub Near Bridge"), - RC_OBJECT(RC_LW_DEKU_SCRUB_GROTTO_REAR, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LOST_WOODS, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x03,0xF5), GI_SEEDS_30, "Deku Scrub Grotto Rear", "LW Deku Scrub Grotto Rear"), - RC_OBJECT(RC_LW_DEKU_SCRUB_GROTTO_FRONT, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LOST_WOODS, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x0A,0xF5), GI_NUT_UPGRADE_30, "Deku Scrub Grotto Front", "LW Deku Scrub Grotto Front"), + RC_OBJECT(RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_RIGHT, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_LOST_WOODS, ACTOR_EN_DNS, SCENE_SPOT10, 0x00, GI_NUTS_5_2, "Deku Scrub Near Deku Theater Right", "LW Deku Scrub Near Deku Theater Right"), + RC_OBJECT(RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_LEFT, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_LOST_WOODS, ACTOR_EN_DNS, SCENE_SPOT10, 0x01, GI_STICKS_1, "Deku Scrub Near Deku Theater Left", "LW Deku Scrub Near Deku Theater Left"), + RC_OBJECT(RC_LW_DEKU_SCRUB_NEAR_BRIDGE, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_LOST_WOODS, ACTOR_EN_DNS, SCENE_SPOT10, 0x09, GI_STICK_UPGRADE_20, "Deku Scrub Near Bridge", "LW Deku Scrub Near Bridge"), + RC_OBJECT(RC_LW_DEKU_SCRUB_GROTTO_REAR, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_LOST_WOODS, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x03,0xF5), GI_SEEDS_30, "Deku Scrub Grotto Rear", "LW Deku Scrub Grotto Rear"), + RC_OBJECT(RC_LW_DEKU_SCRUB_GROTTO_FRONT, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_LOST_WOODS, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x0A,0xF5), GI_NUT_UPGRADE_30, "Deku Scrub Grotto Front", "LW Deku Scrub Grotto Front"), RC_OBJECT(RC_DEKU_THEATER_SKULL_MASK, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LOST_WOODS, ACTOR_ID_MAX, SCENE_KAKUSIANA, 0x00, GI_NONE, "Deku Theater Skull Mask", "Deku Theater Skull Mask"), RC_OBJECT(RC_DEKU_THEATER_MASK_OF_TRUTH, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LOST_WOODS, ACTOR_ID_MAX, SCENE_KAKUSIANA, 0x00, GI_NONE, "Deku Theater Mask of Truth", "Deku Theater Mask of Truth"), RC_OBJECT(RC_LW_GS_BEAN_PATCH_NEAR_BRIDGE, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_LOST_WOODS, ACTOR_EN_SI, SCENE_SPOT10, 27905, GI_SKULL_TOKEN, "GS Bean Patch Near Bridge", "LW GS Bean Patch Near Bridge"), @@ -68,8 +68,8 @@ std::map rcObjects = { RC_OBJECT(RC_SFM_WOLFOS_GROTTO_CHEST, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_SACRED_FOREST_MEADOW, ACTOR_EN_BOX, SCENE_KAKUSIANA, 31409, GI_RUPEE_PURPLE, "Wolfos Grotto Chest", "SFM Wolfos Grotto Chest"), - RC_OBJECT(RC_SFM_DEKU_SCRUB_GROTTO_REAR, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_SACRED_FOREST_MEADOW, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x07,0xEE), GI_POTION_RED, "Deku Scrub Grotto Rear", "SFM Deku Scrub Grotto Rear"), - RC_OBJECT(RC_SFM_DEKU_SCRUB_GROTTO_FRONT, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_SACRED_FOREST_MEADOW, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x08,0xEE), GI_POTION_GREEN, "Deku Scrub Grotto Front", "SFM Deku Scrub Grotto Front"), + RC_OBJECT(RC_SFM_DEKU_SCRUB_GROTTO_REAR, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_SACRED_FOREST_MEADOW, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x07,0xEE), GI_POTION_RED, "Deku Scrub Grotto Rear", "SFM Deku Scrub Grotto Rear"), + RC_OBJECT(RC_SFM_DEKU_SCRUB_GROTTO_FRONT, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_SACRED_FOREST_MEADOW, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x08,0xEE), GI_POTION_GREEN, "Deku Scrub Grotto Front", "SFM Deku Scrub Grotto Front"), RC_OBJECT(RC_SFM_GS, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_SACRED_FOREST_MEADOW, ACTOR_EN_SI, SCENE_SPOT05, 19720, GI_SKULL_TOKEN, "GS", "SFM GS"), RC_OBJECT(RC_SHEIK_IN_FOREST, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_SACRED_FOREST_MEADOW, ACTOR_ID_MAX, SCENE_SPOT05, 0x00, GI_NONE, "Sheik in Forest", "Sheik in Forest"), RC_OBJECT(RC_SONG_FROM_SARIA, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_SACRED_FOREST_MEADOW, ACTOR_ID_MAX, SCENE_SPOT05, 0x00, GI_NONE, "Song from Saria", "Song from Saria"), @@ -83,7 +83,7 @@ std::map rcObjects = { RC_OBJECT(RC_HF_NEAR_MARKET_GROTTO_CHEST, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_HYRULE_FIELD, ACTOR_EN_BOX, SCENE_KAKUSIANA, 22944, GI_RUPEE_BLUE, "Near Market Grotto Chest", "HF Near Market Grotto Chest"), RC_OBJECT(RC_HF_OCARINA_OF_TIME_ITEM, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_HYRULE_FIELD, ACTOR_ID_MAX, SCENE_SPOT00, 0x00, GI_NONE, "Ocarina of Time Item", "HF Ocarina of Time Item"), RC_OBJECT(RC_HF_TEKTITE_GROTTO_FREESTANDING_POH, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_HYRULE_FIELD, ACTOR_EN_ITEM00, SCENE_KAKUSIANA, 262, GI_HEART_PIECE, "Tektite Grotto Freestanding PoH", "HF Tektite Grotto Freestanding PoH"), - RC_OBJECT(RC_HF_DEKU_SCRUB_GROTTO, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_HYRULE_FIELD, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x02,0xE6), GI_HEART_PIECE, "Deku Scrub Grotto", "HF Deku Scrub Grotto"), + RC_OBJECT(RC_HF_DEKU_SCRUB_GROTTO, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_HYRULE_FIELD, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x02,0xE6), GI_HEART_PIECE, "Deku Scrub Grotto", "HF Deku Scrub Grotto"), RC_OBJECT(RC_HF_GS_COW_GROTTO, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_HYRULE_FIELD, ACTOR_EN_SI, SCENE_KAKUSIANA, 10753, GI_SKULL_TOKEN, "GS Cow Grotto", "HF GS Cow Grotto"), RC_OBJECT(RC_HF_GS_NEAR_KAK_GROTTO, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_HYRULE_FIELD, ACTOR_EN_SI, SCENE_KAKUSIANA, 10754, GI_SKULL_TOKEN, "GS Near Kak Grotto", "HF GS Near Kak Grotto"), RC_OBJECT(RC_SONG_FROM_OCARINA_OF_TIME, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_HYRULE_FIELD, ACTOR_ID_MAX, SCENE_ID_MAX, 0x00, GI_NONE, "Song from Ocarina of Time", "Song from Ocarina of Time"), @@ -97,13 +97,13 @@ std::map rcObjects = { RC_OBJECT(RC_LH_CHILD_FISHING, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LAKE_HYLIA, ACTOR_ID_MAX, SCENE_TURIBORI, 0x00, GI_NONE, "Child Fishing", "LH Child Fishing"), RC_OBJECT(RC_LH_ADULT_FISHING, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LAKE_HYLIA, ACTOR_ID_MAX, SCENE_TURIBORI, 0x00, GI_NONE, "Adult Fishing", "LH Adult Fishing"), RC_OBJECT(RC_LH_LAB_DIVE, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LAKE_HYLIA, ACTOR_ID_MAX, SCENE_HYLIA_LABO, 0x00, GI_NONE, "Lab Dive", "LH Lab Dive"), - RC_OBJECT(RC_LH_TRADE_FROG, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LAKE_HYLIA, ACTOR_ID_MAX, SCENE_HYLIA_LABO, 0x00, GI_NONE, "Lab Trade Eyeball Frog", "LH Lab Trade Eyeball Frog"), + RC_OBJECT(RC_LH_TRADE_FROG, RCVORMQ_BOTH, RCTYPE_ADULT_TRADE, RCAREA_LAKE_HYLIA, ACTOR_ID_MAX, SCENE_HYLIA_LABO, 0x00, GI_NONE, "Lab Trade Eyeball Frog", "LH Lab Trade Eyeball Frog"), RC_OBJECT(RC_LH_UNDERWATER_ITEM, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LAKE_HYLIA, ACTOR_ID_MAX, SCENE_SPOT06, 0x00, GI_NONE, "Underwater Item", "LH Underwater Item"), RC_OBJECT(RC_LH_SUN, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LAKE_HYLIA, ACTOR_ID_MAX, SCENE_SPOT06, 0x00, GI_NONE, "Sun", "LH Sun"), RC_OBJECT(RC_LH_FREESTANDING_POH, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LAKE_HYLIA, ACTOR_EN_ITEM00, SCENE_SPOT06, 7686, GI_HEART_PIECE, "Freestanding PoH", "LH Freestanding PoH"), - RC_OBJECT(RC_LH_DEKU_SCRUB_GROTTO_LEFT, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LAKE_HYLIA, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x00,0xEF), GI_NUTS_5_2, "Deku Scrub Grotto Left", "LH Deku Scrub Grotto Left"), - RC_OBJECT(RC_LH_DEKU_SCRUB_GROTTO_RIGHT, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LAKE_HYLIA, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x05,0xEF), GI_BOMBS_5, "Deku Scrub Grotto Right", "LH Deku Scrub Grotto Right"), - RC_OBJECT(RC_LH_DEKU_SCRUB_GROTTO_CENTER, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LAKE_HYLIA, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x03,0xEF), GI_SEEDS_30, "Deku Scrub Grotto Center", "LH Deku Scrub Grotto Center"), + RC_OBJECT(RC_LH_DEKU_SCRUB_GROTTO_LEFT, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_LAKE_HYLIA, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x00,0xEF), GI_NUTS_5_2, "Deku Scrub Grotto Left", "LH Deku Scrub Grotto Left"), + RC_OBJECT(RC_LH_DEKU_SCRUB_GROTTO_RIGHT, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_LAKE_HYLIA, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x05,0xEF), GI_BOMBS_5, "Deku Scrub Grotto Right", "LH Deku Scrub Grotto Right"), + RC_OBJECT(RC_LH_DEKU_SCRUB_GROTTO_CENTER, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_LAKE_HYLIA, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x03,0xEF), GI_SEEDS_30, "Deku Scrub Grotto Center", "LH Deku Scrub Grotto Center"), RC_OBJECT(RC_LH_GS_BEAN_PATCH, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_LAKE_HYLIA, ACTOR_EN_SI, SCENE_SPOT06, 29185, GI_SKULL_TOKEN, "GS Bean Patch", "LH GS Bean Patch"), RC_OBJECT(RC_LH_GS_SMALL_ISLAND, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_LAKE_HYLIA, ACTOR_EN_SI, SCENE_SPOT06, 20994, GI_SKULL_TOKEN, "GS Small Island", "LH GS Small Island"), RC_OBJECT(RC_LH_GS_LAB_WALL, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_LAKE_HYLIA, ACTOR_EN_SI, SCENE_SPOT06, 20996, GI_SKULL_TOKEN, "GS Lab Wall", "LH GS Lab Wall"), @@ -115,11 +115,11 @@ std::map rcObjects = { RC_OBJECT(RC_GV_CHEST, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_GERUDO_VALLEY, ACTOR_EN_BOX, SCENE_SPOT09, 23200, GI_RUPEE_PURPLE, "Chest", "GV Chest"), - RC_OBJECT(RC_GV_TRADE_SAW, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_GERUDO_VALLEY, ACTOR_ID_MAX, SCENE_SPOT09, 0x00, GI_NONE, "Trade Saw", "GV Trade Saw"), + RC_OBJECT(RC_GV_TRADE_SAW, RCVORMQ_BOTH, RCTYPE_ADULT_TRADE, RCAREA_GERUDO_VALLEY, ACTOR_ID_MAX, SCENE_SPOT09, 0x00, GI_NONE, "Trade Saw", "GV Trade Saw"), RC_OBJECT(RC_GV_WATERFALL_FREESTANDING_POH, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_GERUDO_VALLEY, ACTOR_EN_ITEM00, SCENE_SPOT09, 262, GI_HEART_PIECE, "Waterfall Freestanding PoH", "GV Waterfall Freestanding PoH"), RC_OBJECT(RC_GV_CRATE_FREESTANDING_POH, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_GERUDO_VALLEY, ACTOR_EN_ITEM00, SCENE_SPOT09, 518, GI_HEART_PIECE, "Crate Freestanding PoH", "GV Crate Freestanding PoH"), - RC_OBJECT(RC_GV_DEKU_SCRUB_GROTTO_REAR, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_GERUDO_VALLEY, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x07,0xF0), GI_POTION_RED, "Deku Scrub Grotto Rear", "GV Deku Scrub Grotto Rear"), - RC_OBJECT(RC_GV_DEKU_SCRUB_GROTTO_FRONT, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_GERUDO_VALLEY, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x08,0xF0), GI_POTION_GREEN, "Deku Scrub Grotto Front", "GV Deku Scrub Grotto Front"), + RC_OBJECT(RC_GV_DEKU_SCRUB_GROTTO_REAR, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_GERUDO_VALLEY, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x07,0xF0), GI_POTION_RED, "Deku Scrub Grotto Rear", "GV Deku Scrub Grotto Rear"), + RC_OBJECT(RC_GV_DEKU_SCRUB_GROTTO_FRONT, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_GERUDO_VALLEY, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x08,0xF0), GI_POTION_GREEN, "Deku Scrub Grotto Front", "GV Deku Scrub Grotto Front"), RC_OBJECT(RC_GV_GS_BEAN_PATCH, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_GERUDO_VALLEY, ACTOR_EN_SI, SCENE_SPOT09, 29441, GI_SKULL_TOKEN, "GS Bean Patch", "GV GS Bean Patch"), RC_OBJECT(RC_GV_GS_SMALL_BRIDGE, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_GERUDO_VALLEY, ACTOR_EN_SI, SCENE_SPOT09, 21250, GI_SKULL_TOKEN, "GS Small Bridge", "GV GS Small Bridge"), RC_OBJECT(RC_GV_GS_PILLAR, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_GERUDO_VALLEY, ACTOR_EN_SI, SCENE_SPOT09, 21252, GI_SKULL_TOKEN, "GS Pillar", "GV GS Pillar"), @@ -132,22 +132,22 @@ std::map rcObjects = { RC_OBJECT(RC_GF_HBA_1000_POINTS, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_GERUDO_FORTRESS, ACTOR_ID_MAX, SCENE_SPOT12, 0x00, GI_NONE, "GF HBA 1000 Points", "GF HBA 1000 Points"), RC_OBJECT(RC_GF_HBA_1500_POINTS, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_GERUDO_FORTRESS, ACTOR_ID_MAX, SCENE_SPOT12, 0x00, GI_NONE, "GF HBA 1500 Points", "GF HBA 1500 Points"), RC_OBJECT(RC_GF_GERUDO_MEMBERSHIP_CARD, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_GERUDO_FORTRESS, ACTOR_ID_MAX, SCENE_GERUDOWAY, 0x00, GI_NONE, "GF Gerudo Membership Card", "GF Gerudo Membership Card"), - RC_OBJECT(RC_GF_NORTH_F1_CARPENTER, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_GERUDO_FORTRESS, ACTOR_EN_ITEM00, SCENE_GERUDOWAY, 3089, GI_KEY_SMALL, "GF North F1 Carpenter", "GF North F1 Carpenter"), - RC_OBJECT(RC_GF_NORTH_F2_CARPENTER, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_GERUDO_FORTRESS, ACTOR_EN_ITEM00, SCENE_GERUDOWAY, 2577, GI_KEY_SMALL, "GF North F2 Carpenter", "GF North F2 Carpenter"), - RC_OBJECT(RC_GF_SOUTH_F1_CARPENTER, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_GERUDO_FORTRESS, ACTOR_EN_ITEM00, SCENE_GERUDOWAY, 3601, GI_KEY_SMALL, "GF South F1 Carpenter", "GF South F1 Carpenter"), - RC_OBJECT(RC_GF_SOUTH_F2_CARPENTER, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_GERUDO_FORTRESS, ACTOR_EN_ITEM00, SCENE_GERUDOWAY, 3857, GI_KEY_SMALL, "GF South F2 Carpenter", "GF South F2 Carpenter"), + RC_OBJECT(RC_GF_NORTH_F1_CARPENTER, RCVORMQ_BOTH, RCTYPE_GF_KEY, RCAREA_GERUDO_FORTRESS, ACTOR_EN_ITEM00, SCENE_GERUDOWAY, 3089, GI_KEY_SMALL, "GF North F1 Carpenter", "GF North F1 Carpenter"), + RC_OBJECT(RC_GF_NORTH_F2_CARPENTER, RCVORMQ_BOTH, RCTYPE_GF_KEY, RCAREA_GERUDO_FORTRESS, ACTOR_EN_ITEM00, SCENE_GERUDOWAY, 2577, GI_KEY_SMALL, "GF North F2 Carpenter", "GF North F2 Carpenter"), + RC_OBJECT(RC_GF_SOUTH_F1_CARPENTER, RCVORMQ_BOTH, RCTYPE_GF_KEY, RCAREA_GERUDO_FORTRESS, ACTOR_EN_ITEM00, SCENE_GERUDOWAY, 3601, GI_KEY_SMALL, "GF South F1 Carpenter", "GF South F1 Carpenter"), + RC_OBJECT(RC_GF_SOUTH_F2_CARPENTER, RCVORMQ_BOTH, RCTYPE_GF_KEY, RCAREA_GERUDO_FORTRESS, ACTOR_EN_ITEM00, SCENE_GERUDOWAY, 3857, GI_KEY_SMALL, "GF South F2 Carpenter", "GF South F2 Carpenter"), RC_OBJECT(RC_GF_GS_ARCHERY_RANGE, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_GERUDO_FORTRESS, ACTOR_EN_SI, SCENE_SPOT12, 21505, GI_SKULL_TOKEN, "GS Archery Range", "GF GS Archery Range"), RC_OBJECT(RC_GF_GS_TOP_FLOOR, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_GERUDO_FORTRESS, ACTOR_EN_SI, SCENE_SPOT12, 21506, GI_SKULL_TOKEN, "GS Top Floor", "GF GS Top Floor"), RC_OBJECT(RC_WASTELAND_CHEST, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_WASTELAND, ACTOR_EN_BOX, SCENE_SPOT13, -30048, GI_RUPEE_PURPLE, "Chest", "Wasteland Chest"), - RC_OBJECT(RC_WASTELAND_BOMBCHU_SALESMAN, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_WASTELAND, ACTOR_ID_MAX, SCENE_SPOT13, 0x00, GI_NONE, "Carpet Salesman", "Wasteland Carpet Salesman"), + RC_OBJECT(RC_WASTELAND_BOMBCHU_SALESMAN, RCVORMQ_BOTH, RCTYPE_MERCHANT, RCAREA_WASTELAND, ACTOR_ID_MAX, SCENE_SPOT13, 0x00, GI_NONE, "Carpet Salesman", "Wasteland Carpet Salesman"), RC_OBJECT(RC_WASTELAND_GS, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_WASTELAND, ACTOR_EN_SI, SCENE_SPOT13, 13570, GI_SKULL_TOKEN, "GS", "Wasteland GS"), RC_OBJECT(RC_COLOSSUS_FREESTANDING_POH, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_DESERT_COLOSSUS, ACTOR_EN_ITEM00, SCENE_SPOT11, 3334, GI_HEART_PIECE, "Freestanding PoH", "Colossus Freestanding PoH"), - RC_OBJECT(RC_COLOSSUS_DEKU_SCRUB_GROTTO_REAR, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_DESERT_COLOSSUS, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x07,0xFD), GI_POTION_RED, "Deku Scrub Grotto Rear", "Colossus Deku Scrub Grotto Rear"), - RC_OBJECT(RC_COLOSSUS_DEKU_SCRUB_GROTTO_FRONT, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_DESERT_COLOSSUS, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x08,0xFD), GI_POTION_GREEN, "Deku Scrub Grotto Front", "Colossus Deku Scrub Grotto Front"), + RC_OBJECT(RC_COLOSSUS_DEKU_SCRUB_GROTTO_REAR, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_DESERT_COLOSSUS, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x07,0xFD), GI_POTION_RED, "Deku Scrub Grotto Rear", "Colossus Deku Scrub Grotto Rear"), + RC_OBJECT(RC_COLOSSUS_DEKU_SCRUB_GROTTO_FRONT, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_DESERT_COLOSSUS, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x08,0xFD), GI_POTION_GREEN, "Deku Scrub Grotto Front", "Colossus Deku Scrub Grotto Front"), RC_OBJECT(RC_COLOSSUS_GS_BEAN_PATCH, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_DESERT_COLOSSUS, ACTOR_EN_SI, SCENE_SPOT11, 29953, GI_SKULL_TOKEN, "GS Bean Patch", "Colossus GS Bean Patch"), RC_OBJECT(RC_COLOSSUS_GS_HILL, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_DESERT_COLOSSUS, ACTOR_EN_SI, SCENE_SPOT11, 21764, GI_SKULL_TOKEN, "GS Hill", "Colossus GS Hill"), RC_OBJECT(RC_COLOSSUS_GS_TREE, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_DESERT_COLOSSUS, ACTOR_EN_SI, SCENE_SPOT11, 21768, GI_SKULL_TOKEN, "GS Tree", "Colossus GS Tree"), @@ -222,10 +222,10 @@ std::map rcObjects = { RC_OBJECT(RC_KAK_50_GOLD_SKULLTULA_REWARD, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, ACTOR_ID_MAX, SCENE_KINSUTA, 0x00, GI_NONE, "50 Gold Skulltula Reward", "Kak 50 Gold Skulltula Reward"), RC_OBJECT(RC_KAK_MAN_ON_ROOF, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, ACTOR_ID_MAX, SCENE_SPOT01, 0x00, GI_NONE, "Man on Roof", "Kak Man on Roof"), RC_OBJECT(RC_KAK_SHOOTING_GALLERY_REWARD, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, ACTOR_ID_MAX, SCENE_SYATEKIJYOU, 0x00, GI_NONE, "Shooting Gallery Reward", "Kak Shooting Gallery Reward"), - RC_OBJECT(RC_KAK_TRADE_ODD_MUSHROOM, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, ACTOR_ID_MAX, SCENE_MAHOUYA, 0x00, GI_NONE, "Trade Odd Mushroom", "Kak Trade Odd Mushroom"), - RC_OBJECT(RC_KAK_ANJU_AS_ADULT, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, ACTOR_ID_MAX, SCENE_SPOT01, 0x00, GI_NONE, "Anju as Adult", "Kak Anju as Adult"), + RC_OBJECT(RC_KAK_TRADE_ODD_MUSHROOM, RCVORMQ_BOTH, RCTYPE_ADULT_TRADE, RCAREA_KAKARIKO_VILLAGE, ACTOR_ID_MAX, SCENE_MAHOUYA, 0x00, GI_NONE, "Trade Odd Mushroom", "Kak Trade Odd Mushroom"), + RC_OBJECT(RC_KAK_ANJU_AS_ADULT, RCVORMQ_BOTH, RCTYPE_ADULT_TRADE, RCAREA_KAKARIKO_VILLAGE, ACTOR_ID_MAX, SCENE_SPOT01, 0x00, GI_NONE, "Anju as Adult", "Kak Anju as Adult"), RC_OBJECT(RC_KAK_ANJU_AS_CHILD, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, ACTOR_ID_MAX, SCENE_SPOT01, 0x00, GI_NONE, "Anju as Child", "Kak Anju as Child"), - RC_OBJECT(RC_KAK_TRADE_POCKET_CUCCO, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, ACTOR_ID_MAX, SCENE_SPOT01, 0x00, GI_NONE, "Trade Pocket Cucco", "Kak Trade Pocket Cucco"), + RC_OBJECT(RC_KAK_TRADE_POCKET_CUCCO, RCVORMQ_BOTH, RCTYPE_ADULT_TRADE, RCAREA_KAKARIKO_VILLAGE, ACTOR_ID_MAX, SCENE_SPOT01, 0x00, GI_NONE, "Trade Pocket Cucco", "Kak Trade Pocket Cucco"), RC_OBJECT(RC_KAK_IMPAS_HOUSE_FREESTANDING_POH, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, ACTOR_EN_ITEM00, SCENE_LABO, 262, GI_HEART_PIECE, "Impas House Freestanding PoH", "Kak Impas House Freestanding PoH"), RC_OBJECT(RC_KAK_WINDMILL_FREESTANDING_POH, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_KAKARIKO_VILLAGE, ACTOR_EN_ITEM00, SCENE_HAKASITARELAY, 262, GI_HEART_PIECE, "Windmill Freestanding PoH", "Kak Windmill Freestanding PoH"), RC_OBJECT(RC_KAK_GS_HOUSE_UNDER_CONSTRUCTION, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_KAKARIKO_VILLAGE, ACTOR_EN_SI, SCENE_SPOT01, 20488, GI_SKULL_TOKEN, "GS House Under Construction", "Kak GS House Under Construction"), @@ -271,9 +271,9 @@ std::map rcObjects = { RC_OBJECT(RC_DMT_CHEST, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_TRAIL, ACTOR_EN_BOX, SCENE_SPOT16, 23201, GI_RUPEE_PURPLE, "Chest", "DMT Chest"), RC_OBJECT(RC_DMT_STORMS_GROTTO_CHEST, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_TRAIL, ACTOR_EN_BOX, SCENE_KAKUSIANA, 23255, GI_RUPEE_GOLD, "Storms Grotto Chest", "DMT Storms Grotto Chest"), - RC_OBJECT(RC_DMT_TRADE_BROKEN_SWORD, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_TRAIL, ACTOR_ID_MAX, SCENE_SPOT16, 0x00, GI_NONE, "Trade Broken Sword", "DMT Trade Broken Sword"), - RC_OBJECT(RC_DMT_TRADE_EYEDROPS, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_TRAIL, ACTOR_ID_MAX, SCENE_SPOT16, 0x00, GI_NONE, "Trade Eyedrops", "DMT Trade Eyedrops"), - RC_OBJECT(RC_DMT_TRADE_CLAIM_CHECK, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_TRAIL, ACTOR_ID_MAX, SCENE_SPOT16, 0x00, GI_NONE, "Trade Claim Check", "DMT Trade Claim Check"), + RC_OBJECT(RC_DMT_TRADE_BROKEN_SWORD, RCVORMQ_BOTH, RCTYPE_ADULT_TRADE, RCAREA_DEATH_MOUNTAIN_TRAIL, ACTOR_ID_MAX, SCENE_SPOT16, 0x00, GI_NONE, "Trade Broken Sword", "DMT Trade Broken Sword"), + RC_OBJECT(RC_DMT_TRADE_EYEDROPS, RCVORMQ_BOTH, RCTYPE_ADULT_TRADE, RCAREA_DEATH_MOUNTAIN_TRAIL, ACTOR_ID_MAX, SCENE_SPOT16, 0x00, GI_NONE, "Trade Eyedrops", "DMT Trade Eyedrops"), + RC_OBJECT(RC_DMT_TRADE_CLAIM_CHECK, RCVORMQ_BOTH, RCTYPE_ADULT_TRADE, RCAREA_DEATH_MOUNTAIN_TRAIL, ACTOR_ID_MAX, SCENE_SPOT16, 0x00, GI_NONE, "Trade Claim Check", "DMT Trade Claim Check"), RC_OBJECT(RC_DMT_FREESTANDING_POH, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_TRAIL, ACTOR_EN_ITEM00, SCENE_SPOT16, 7686, GI_HEART_PIECE, "Freestanding PoH", "DMT Freestanding PoH"), RC_OBJECT(RC_DMT_GS_BEAN_PATCH, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_DEATH_MOUNTAIN_TRAIL, ACTOR_EN_SI, SCENE_SPOT16, 28418, GI_SKULL_TOKEN, "GS Bean Patch", "DMT GS Bean Patch"), RC_OBJECT(RC_DMT_GS_NEAR_KAK, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_DEATH_MOUNTAIN_TRAIL, ACTOR_EN_SI, SCENE_SPOT16, 12036, GI_SKULL_TOKEN, "GS Near Kak", "DMT GS Near Kak"), @@ -292,10 +292,10 @@ std::map rcObjects = { RC_OBJECT(RC_GC_ROLLING_GORON_AS_ADULT, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_GORON_CITY, ACTOR_ID_MAX, SCENE_SPOT18, 0x00, GI_NONE, "Rolling Goron as Adult", "GC Rolling Goron as Adult"), RC_OBJECT(RC_GC_DARUNIAS_JOY, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_GORON_CITY, ACTOR_ID_MAX, SCENE_SPOT18, 0x00, GI_NONE, "Darunias Joy", "GC Darunias Joy"), RC_OBJECT(RC_GC_POT_FREESTANDING_POH, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_GORON_CITY, ACTOR_EN_ITEM00, SCENE_SPOT18, 7942, GI_HEART_PIECE, "Pot Freestanding PoH", "GC Pot Freestanding PoH"), - RC_OBJECT(RC_GC_DEKU_SCRUB_GROTTO_LEFT, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_GORON_CITY, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x00,0xFB), GI_NUTS_5_2, "Deku Scrub Grotto Left", "GC Deku Scrub Grotto Left"), - RC_OBJECT(RC_GC_DEKU_SCRUB_GROTTO_RIGHT, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_GORON_CITY, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x05,0xFB), GI_BOMBS_5, "Deku Scrub Grotto Right", "GC Deku Scrub Grotto Right"), - RC_OBJECT(RC_GC_DEKU_SCRUB_GROTTO_CENTER, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_GORON_CITY, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x03,0xFB), GI_SEEDS_30, "Deku Scrub Grotto Center", "GC Deku Scrub Grotto Center"), - RC_OBJECT(RC_GC_MEDIGORON, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_GORON_CITY, ACTOR_ID_MAX, SCENE_SPOT18, 0x00, GI_NONE, "Medigoron", "GC Medigoron"), + RC_OBJECT(RC_GC_DEKU_SCRUB_GROTTO_LEFT, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_GORON_CITY, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x00,0xFB), GI_NUTS_5_2, "Deku Scrub Grotto Left", "GC Deku Scrub Grotto Left"), + RC_OBJECT(RC_GC_DEKU_SCRUB_GROTTO_RIGHT, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_GORON_CITY, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x05,0xFB), GI_BOMBS_5, "Deku Scrub Grotto Right", "GC Deku Scrub Grotto Right"), + RC_OBJECT(RC_GC_DEKU_SCRUB_GROTTO_CENTER, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_GORON_CITY, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x03,0xFB), GI_SEEDS_30, "Deku Scrub Grotto Center", "GC Deku Scrub Grotto Center"), + RC_OBJECT(RC_GC_MEDIGORON, RCVORMQ_BOTH, RCTYPE_MERCHANT, RCAREA_GORON_CITY, ACTOR_ID_MAX, SCENE_SPOT18, 0x00, GI_NONE, "Medigoron", "GC Medigoron"), RC_OBJECT(RC_GC_GS_CENTER_PLATFORM, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_GORON_CITY, ACTOR_EN_SI, SCENE_SPOT18, 12064, GI_SKULL_TOKEN, "GS Center Platform", "GC GS Center Platform"), RC_OBJECT(RC_GC_GS_BOULDER_MAZE, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_GORON_CITY, ACTOR_EN_SI, SCENE_SPOT18, -28864, GI_SKULL_TOKEN, "GS Boulder Maze", "GC GS Boulder Maze"), RC_OBJECT(RC_GC_SHOP_ITEM_1, RCVORMQ_BOTH, RCTYPE_SHOP, RCAREA_GORON_CITY, ACTOR_EN_GIRLA, SCENE_GOLON, 0x00, GI_BOMBS_5, "Shop Item 1", "GC Shop Item 1"), @@ -313,10 +313,10 @@ std::map rcObjects = { RC_OBJECT(RC_DMC_UPPER_GROTTO_CHEST, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_CRATER, ACTOR_EN_BOX, SCENE_KAKUSIANA, 23802, GI_BOMBS_20, "Upper Grotto Chest", "DMC Upper Grotto Chest"), RC_OBJECT(RC_DMC_WALL_FREESTANDING_POH, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_CRATER, ACTOR_EN_ITEM00, SCENE_SPOT17, 518, GI_HEART_PIECE, "Wall Freestanding PoH", "DMC Wall Freestanding PoH"), RC_OBJECT(RC_DMC_VOLCANO_FREESTANDING_POH, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_CRATER, ACTOR_EN_ITEM00, SCENE_SPOT17, 2054, GI_HEART_PIECE, "Volcano Freestanding PoH", "DMC Volcano Freestanding PoH"), - RC_OBJECT(RC_DMC_DEKU_SCRUB, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_CRATER, ACTOR_EN_DNS, SCENE_SPOT17, 0x05, GI_BOMBS_5, "Deku Scrub", "DMC Deku Scrub"), - RC_OBJECT(RC_DMC_DEKU_SCRUB_GROTTO_LEFT, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_CRATER, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x00,0xF9), GI_NUTS_5_2, "Deku Scrub Grotto Left", "DMC Deku Scrub Grotto Left"), - RC_OBJECT(RC_DMC_DEKU_SCRUB_GROTTO_RIGHT, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_CRATER, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x05,0xF9), GI_BOMBS_5, "Deku Scrub Grotto Right", "DMC Deku Scrub Grotto Right"), - RC_OBJECT(RC_DMC_DEKU_SCRUB_GROTTO_CENTER, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_CRATER, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x03,0xF9), GI_SEEDS_30, "Deku Scrub Grotto Center", "DMC Deku Scrub Grotto Center"), + RC_OBJECT(RC_DMC_DEKU_SCRUB, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_DEATH_MOUNTAIN_CRATER, ACTOR_EN_DNS, SCENE_SPOT17, 0x05, GI_BOMBS_5, "Deku Scrub", "DMC Deku Scrub"), + RC_OBJECT(RC_DMC_DEKU_SCRUB_GROTTO_LEFT, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_DEATH_MOUNTAIN_CRATER, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x00,0xF9), GI_NUTS_5_2, "Deku Scrub Grotto Left", "DMC Deku Scrub Grotto Left"), + RC_OBJECT(RC_DMC_DEKU_SCRUB_GROTTO_RIGHT, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_DEATH_MOUNTAIN_CRATER, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x05,0xF9), GI_BOMBS_5, "Deku Scrub Grotto Right", "DMC Deku Scrub Grotto Right"), + RC_OBJECT(RC_DMC_DEKU_SCRUB_GROTTO_CENTER, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_DEATH_MOUNTAIN_CRATER, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x03,0xF9), GI_SEEDS_30, "Deku Scrub Grotto Center", "DMC Deku Scrub Grotto Center"), RC_OBJECT(RC_DMC_GS_BEAN_PATCH, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_DEATH_MOUNTAIN_CRATER, ACTOR_EN_SI, SCENE_SPOT17, 28417, GI_SKULL_TOKEN, "GS Bean Patch", "DMC GS Bean Patch"), RC_OBJECT(RC_DMC_GS_CRATE, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_DEATH_MOUNTAIN_CRATER, ACTOR_EN_SI, SCENE_SPOT17, -28800, GI_SKULL_TOKEN, "GS Crate", "DMC GS Crate"), RC_OBJECT(RC_DMC_GREAT_FAIRY_REWARD, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_DEATH_MOUNTAIN_CRATER, ACTOR_BG_DY_YOSEIZO,SCENE_DAIYOUSEI_IZUMI, 2, GI_NONE, "Great Fairy Reward", "DMC Great Fairy Reward"), @@ -327,17 +327,17 @@ std::map rcObjects = { RC_OBJECT(RC_ZR_OPEN_GROTTO_CHEST, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, ACTOR_EN_BOX, SCENE_KAKUSIANA, 22985, GI_RUPEE_RED, "Open Grotto Chest", "ZR Open Grotto Chest"), RC_OBJECT(RC_ZR_MAGIC_BEAN_SALESMAN, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, ACTOR_ID_MAX, SCENE_SPOT03, 0x00, GI_NONE, "Magic Bean Salesman", "ZR Magic Bean Salesman"), - RC_OBJECT(RC_ZR_FROGS_ZELDAS_LULLABY, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, ACTOR_EN_FR, SCENE_SPOT03, 0x00, GI_NONE, "Frogs Zelda's Lullaby", "ZR Frogs Zelda's Lullaby"), - RC_OBJECT(RC_ZR_FROGS_EPONAS_SONG, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, ACTOR_EN_FR, SCENE_SPOT03, 0x00, GI_NONE, "Frogs Epona's Song", "ZR Frogs Epona's Song"), - RC_OBJECT(RC_ZR_FROGS_SARIAS_SONG, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, ACTOR_EN_FR, SCENE_SPOT03, 0x00, GI_NONE, "Frogs Saria's Song", "ZR Frogs Saria's Song"), - RC_OBJECT(RC_ZR_FROGS_SUNS_SONG, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, ACTOR_EN_FR, SCENE_SPOT03, 0x00, GI_NONE, "Frogs Sun's Song", "ZR Frogs Sun's Song"), - RC_OBJECT(RC_ZR_FROGS_SONG_OF_TIME, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, ACTOR_EN_FR, SCENE_SPOT03, 0x00, GI_NONE, "Frogs Song of Time", "ZR Frogs Song of Time"), + RC_OBJECT(RC_ZR_FROGS_ZELDAS_LULLABY, RCVORMQ_BOTH, RCTYPE_FROG_SONG, RCAREA_ZORAS_RIVER, ACTOR_EN_FR, SCENE_SPOT03, 0x00, GI_NONE, "Frogs Zelda's Lullaby", "ZR Frogs Zelda's Lullaby"), + RC_OBJECT(RC_ZR_FROGS_EPONAS_SONG, RCVORMQ_BOTH, RCTYPE_FROG_SONG, RCAREA_ZORAS_RIVER, ACTOR_EN_FR, SCENE_SPOT03, 0x00, GI_NONE, "Frogs Epona's Song", "ZR Frogs Epona's Song"), + RC_OBJECT(RC_ZR_FROGS_SARIAS_SONG, RCVORMQ_BOTH, RCTYPE_FROG_SONG, RCAREA_ZORAS_RIVER, ACTOR_EN_FR, SCENE_SPOT03, 0x00, GI_NONE, "Frogs Saria's Song", "ZR Frogs Saria's Song"), + RC_OBJECT(RC_ZR_FROGS_SUNS_SONG, RCVORMQ_BOTH, RCTYPE_FROG_SONG, RCAREA_ZORAS_RIVER, ACTOR_EN_FR, SCENE_SPOT03, 0x00, GI_NONE, "Frogs Sun's Song", "ZR Frogs Sun's Song"), + RC_OBJECT(RC_ZR_FROGS_SONG_OF_TIME, RCVORMQ_BOTH, RCTYPE_FROG_SONG, RCAREA_ZORAS_RIVER, ACTOR_EN_FR, SCENE_SPOT03, 0x00, GI_NONE, "Frogs Song of Time", "ZR Frogs Song of Time"), RC_OBJECT(RC_ZR_FROGS_IN_THE_RAIN, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, ACTOR_EN_FR, SCENE_SPOT03, 0x00, GI_NONE, "Frogs in the Rain", "ZR Frogs in the Rain"), RC_OBJECT(RC_ZR_FROGS_OCARINA_GAME, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, ACTOR_EN_FR, SCENE_SPOT03, 0x00, GI_NONE, "Frogs Ocarina Game", "ZR Frogs Ocarina Game"), RC_OBJECT(RC_ZR_NEAR_OPEN_GROTTO_FREESTANDING_POH, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, ACTOR_EN_ITEM00, SCENE_SPOT03, 1030, GI_HEART_PIECE, "Near Open Grotto Freestanding PoH", "ZR Near Open Grotto Freestanding PoH"), RC_OBJECT(RC_ZR_NEAR_DOMAIN_FREESTANDING_POH, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, ACTOR_EN_ITEM00, SCENE_SPOT03, 2822, GI_HEART_PIECE, "Near Domain Freestanding PoH", "ZR Near Domain Freestanding PoH"), - RC_OBJECT(RC_ZR_DEKU_SCRUB_GROTTO_REAR, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x07,0xEB), GI_POTION_RED, "Deku Scrub Grotto Rear", "ZR Deku Scrub Grotto Rear"), - RC_OBJECT(RC_ZR_DEKU_SCRUB_GROTTO_FRONT, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_ZORAS_RIVER, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x08,0xEB), GI_POTION_GREEN, "Deku Scrub Grotto Front", "ZR Deku Scrub Grotto Front"), + RC_OBJECT(RC_ZR_DEKU_SCRUB_GROTTO_REAR, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_ZORAS_RIVER, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x07,0xEB), GI_POTION_RED, "Deku Scrub Grotto Rear", "ZR Deku Scrub Grotto Rear"), + RC_OBJECT(RC_ZR_DEKU_SCRUB_GROTTO_FRONT, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_ZORAS_RIVER, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x08,0xEB), GI_POTION_GREEN, "Deku Scrub Grotto Front", "ZR Deku Scrub Grotto Front"), RC_OBJECT(RC_ZR_GS_LADDER, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_ZORAS_RIVER, ACTOR_EN_SI, SCENE_SPOT03, 20737, GI_SKULL_TOKEN, "GS Ladder", "ZR GS Ladder"), RC_OBJECT(RC_ZR_GS_TREE, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_ZORAS_RIVER, ACTOR_EN_SI, SCENE_SPOT03, -28414, GI_SKULL_TOKEN, "GS Tree", "ZR GS Tree"), RC_OBJECT(RC_ZR_GS_ABOVE_BRIDGE, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_ZORAS_RIVER, ACTOR_EN_SI, SCENE_SPOT03, 20744, GI_SKULL_TOKEN, "GS Above Bridge", "ZR GS Above Bridge"), @@ -350,7 +350,7 @@ std::map rcObjects = { RC_OBJECT(RC_ZD_CHEST, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_ZORAS_DOMAIN, ACTOR_EN_BOX, SCENE_SPOT07, -18496, GI_HEART_PIECE, "Chest", "ZD Chest"), RC_OBJECT(RC_ZD_DIVING_MINIGAME, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_ZORAS_DOMAIN, ACTOR_ID_MAX, SCENE_SPOT07, 0x00, GI_NONE, "Diving Minigame", "ZD Diving Minigame"), RC_OBJECT(RC_ZD_KING_ZORA_THAWED, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_ZORAS_DOMAIN, ACTOR_ID_MAX, SCENE_SPOT07, 0x00, GI_NONE, "King Zora Thawed", "ZD King Zora Thawed"), - RC_OBJECT(RC_ZD_TRADE_PRESCRIPTION, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_ZORAS_DOMAIN, ACTOR_ID_MAX, SCENE_SPOT07, 0x00, GI_NONE, "Trade Prescription", "ZD Trade Prescription"), + RC_OBJECT(RC_ZD_TRADE_PRESCRIPTION, RCVORMQ_BOTH, RCTYPE_ADULT_TRADE, RCAREA_ZORAS_DOMAIN, ACTOR_ID_MAX, SCENE_SPOT07, 0x00, GI_NONE, "Trade Prescription", "ZD Trade Prescription"), RC_OBJECT(RC_ZD_GS_FROZEN_WATERFALL, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_ZORAS_DOMAIN, ACTOR_EN_SI, SCENE_SPOT07, 20800, GI_SKULL_TOKEN, "GS Frozen Waterfall", "ZD GS Frozen Waterfall"), RC_OBJECT(RC_ZD_SHOP_ITEM_1, RCVORMQ_BOTH, RCTYPE_SHOP, RCAREA_ZORAS_DOMAIN, ACTOR_EN_GIRLA, SCENE_ZOORA, 0x00, GI_TUNIC_ZORA, "Shop Item 1", "ZD Shop Item 1"), RC_OBJECT(RC_ZD_SHOP_ITEM_2, RCVORMQ_BOTH, RCTYPE_SHOP, RCAREA_ZORAS_DOMAIN, ACTOR_EN_GIRLA, SCENE_ZOORA, 0x01, GI_ARROWS_SMALL, "Shop Item 2", "ZD Shop Item 2"), @@ -375,9 +375,9 @@ std::map rcObjects = { RC_OBJECT(RC_LLR_TALONS_CHICKENS, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LON_LON_RANCH, ACTOR_ID_MAX, SCENE_SOUKO, 0x00, GI_NONE, "Talons Chickens", "LLR Talons Chickens"), RC_OBJECT(RC_LLR_FREESTANDING_POH, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LON_LON_RANCH, ACTOR_EN_ITEM00, SCENE_SOUKO, 262, GI_HEART_PIECE, "Freestanding PoH", "LLR Freestanding PoH"), - RC_OBJECT(RC_LLR_DEKU_SCRUB_GROTTO_LEFT, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LON_LON_RANCH, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x00,0xFC), GI_NUTS_5_2, "Deku Scrub Grotto Left", "LLR Deku Scrub Grotto Left"), - RC_OBJECT(RC_LLR_DEKU_SCRUB_GROTTO_RIGHT, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LON_LON_RANCH, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x05,0xFC), GI_BOMBS_5, "Deku Scrub Grotto Right", "LLR Deku Scrub Grotto Right"), - RC_OBJECT(RC_LLR_DEKU_SCRUB_GROTTO_CENTER, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_LON_LON_RANCH, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x03,0xFC), GI_SEEDS_30, "Deku Scrub Grotto Center", "LLR Deku Scrub Grotto Center"), + RC_OBJECT(RC_LLR_DEKU_SCRUB_GROTTO_LEFT, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_LON_LON_RANCH, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x00,0xFC), GI_NUTS_5_2, "Deku Scrub Grotto Left", "LLR Deku Scrub Grotto Left"), + RC_OBJECT(RC_LLR_DEKU_SCRUB_GROTTO_RIGHT, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_LON_LON_RANCH, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x05,0xFC), GI_BOMBS_5, "Deku Scrub Grotto Right", "LLR Deku Scrub Grotto Right"), + RC_OBJECT(RC_LLR_DEKU_SCRUB_GROTTO_CENTER, RCVORMQ_BOTH, RCTYPE_SCRUB, RCAREA_LON_LON_RANCH, ACTOR_EN_DNS, SCENE_KAKUSIANA, TWO_ACTOR_PARAMS(0x03,0xFC), GI_SEEDS_30, "Deku Scrub Grotto Center", "LLR Deku Scrub Grotto Center"), RC_OBJECT(RC_LLR_GS_BACK_WALL, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_LON_LON_RANCH, ACTOR_EN_SI, SCENE_SPOT20, 11009, GI_SKULL_TOKEN, "GS Back Wall", "LLR GS Back Wall"), RC_OBJECT(RC_LLR_GS_RAIN_SHED, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_LON_LON_RANCH, ACTOR_EN_SI, SCENE_SPOT20, 11010, GI_SKULL_TOKEN, "GS Rain Shed", "LLR GS Rain Shed"), RC_OBJECT(RC_LLR_GS_HOUSE_WINDOW, RCVORMQ_BOTH, RCTYPE_SKULL_TOKEN, RCAREA_LON_LON_RANCH, ACTOR_EN_SI, SCENE_SPOT20, 11012, GI_SKULL_TOKEN, "GS House Window", "LLR GS House Window"), @@ -402,7 +402,7 @@ std::map rcObjects = { RC_OBJECT(RC_DEKU_TREE_MQ_BASEMENT_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_DEKU_TREE, ACTOR_EN_BOX, SCENE_YDAN, -31452, GI_SHIELD_DEKU, "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, ACTOR_EN_BOX, SCENE_YDAN, 22789, GI_HEART, "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, ACTOR_EN_BOX, SCENE_YDAN, 23200, GI_RUPEE_PURPLE, "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, ACTOR_EN_DNS, SCENE_YDAN, 0x04, GI_SHIELD_DEKU, "MQ Deku Scrub", "Deku Tree MQ Deku Scrub"), + RC_OBJECT(RC_DEKU_TREE_MQ_DEKU_SCRUB, RCVORMQ_MQ, RCTYPE_SCRUB, RCAREA_DEKU_TREE, ACTOR_EN_DNS, SCENE_YDAN, 0x04, GI_SHIELD_DEKU, "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, ACTOR_EN_SI, SCENE_YDAN, 8193, GI_SKULL_TOKEN, "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, ACTOR_EN_SI, SCENE_YDAN, 8194, GI_SKULL_TOKEN, "GS Basement Gate", "Deku Tree GS Basement Gate"), RC_OBJECT(RC_DEKU_TREE_GS_BASEMENT_VINES, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_DEKU_TREE, ACTOR_EN_SI, SCENE_YDAN, 8196, GI_SKULL_TOKEN, "GS Basement Vines", "Deku Tree GS Basement Vines"), @@ -421,20 +421,20 @@ std::map rcObjects = { RC_OBJECT(RC_DODONGOS_CAVERN_BOMB_FLOWER_PLATFORM_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, ACTOR_EN_BOX, SCENE_DDAN, 22982, GI_RUPEE_RED, "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, ACTOR_EN_BOX, SCENE_DDAN, 1604, GI_BOMB_BAG_20, "Bomb Bag Chest", "Dodongos Cavern Bomb Bag Chest"), RC_OBJECT(RC_DODONGOS_CAVERN_END_OF_BRIDGE_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, ACTOR_EN_BOX, SCENE_DDAN, 21802, GI_SHIELD_DEKU, "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, ACTOR_EN_DNS, SCENE_DDAN, 0x00, GI_NUTS_5_2, "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, ACTOR_EN_DNS, SCENE_DDAN, 0x01, GI_STICKS_1, "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, ACTOR_EN_DNS, SCENE_DDAN, 0x03, GI_SEEDS_30, "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, ACTOR_EN_DNS, SCENE_DDAN, 0x04, GI_SHIELD_DEKU, "Deku Scrub Lobby", "Dodongos Cavern Deku Scrub Lobby"), + RC_OBJECT(RC_DODONGOS_CAVERN_DEKU_SCRUB_NEAR_BOMB_BAG_LEFT, RCVORMQ_VANILLA, RCTYPE_SCRUB, RCAREA_DODONGOS_CAVERN, ACTOR_EN_DNS, SCENE_DDAN, 0x00, GI_NUTS_5_2, "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_SCRUB, RCAREA_DODONGOS_CAVERN, ACTOR_EN_DNS, SCENE_DDAN, 0x01, GI_STICKS_1, "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_SCRUB, RCAREA_DODONGOS_CAVERN, ACTOR_EN_DNS, SCENE_DDAN, 0x03, GI_SEEDS_30, "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_SCRUB, RCAREA_DODONGOS_CAVERN, ACTOR_EN_DNS, SCENE_DDAN, 0x04, GI_SHIELD_DEKU, "Deku Scrub Lobby", "Dodongos Cavern Deku Scrub Lobby"), RC_OBJECT(RC_DODONGOS_CAVERN_MQ_MAP_CHEST, RCVORMQ_MQ, RCTYPE_MAP_COMPASS, RCAREA_DODONGOS_CAVERN, ACTOR_EN_BOX, SCENE_DDAN, 2080, GI_MAP, "MQ Map Chest", "Dodongos Cavern MQ Map Chest"), RC_OBJECT(RC_DODONGOS_CAVERN_MQ_BOMB_BAG_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, ACTOR_EN_BOX, SCENE_DDAN, 1604, GI_BOMB_BAG_20, "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, ACTOR_EN_BOX, SCENE_DDAN, 6149, GI_COMPASS, "MQ Compass Chest", "Dodongos Cavern MQ Compass Chest"), RC_OBJECT(RC_DODONGOS_CAVERN_MQ_LARVAE_ROOM_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_DODONGOS_CAVERN, ACTOR_EN_BOX, SCENE_DDAN, 29986, GI_SHIELD_DEKU, "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, ACTOR_EN_BOX, SCENE_DDAN, 22947, GI_RUPEE_BLUE, "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, ACTOR_EN_BOX, SCENE_DDAN, 21825, GI_SHIELD_HYLIAN, "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, ACTOR_EN_DNS, SCENE_DDAN, 0x01, GI_STICKS_1, "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, ACTOR_EN_DNS, SCENE_DDAN, 0x03, GI_SEEDS_30, "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, ACTOR_EN_DNS, SCENE_DDAN, 0x04, GI_SHIELD_DEKU, "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, ACTOR_EN_DNS, SCENE_DDAN, 0x07, GI_POTION_RED, "Deku Scrub Side Room Near Lower Lizalfos", "Dodongos Cavern Deku Scrub Side Room Near Lower Lizalfos"), + RC_OBJECT(RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_LOBBY_REAR, RCVORMQ_MQ, RCTYPE_SCRUB, RCAREA_DODONGOS_CAVERN, ACTOR_EN_DNS, SCENE_DDAN, 0x01, GI_STICKS_1, "MQ Deku Scrub Lobby Rear", "Dodongos Cavern Deku Scrub Lobby Rear"), + RC_OBJECT(RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_LOBBY_FRONT, RCVORMQ_MQ, RCTYPE_SCRUB, RCAREA_DODONGOS_CAVERN, ACTOR_EN_DNS, SCENE_DDAN, 0x03, GI_SEEDS_30, "MQ Deku Scrub Lobby Front", "Dodongos Cavern Deku Scrub Lobby Front"), + RC_OBJECT(RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_STAIRCASE, RCVORMQ_MQ, RCTYPE_SCRUB, RCAREA_DODONGOS_CAVERN, ACTOR_EN_DNS, SCENE_DDAN, 0x04, GI_SHIELD_DEKU, "MQ Deku Scrub Staircase", "Dodongos Cavern Deku Scrub Staircase"), + RC_OBJECT(RC_DODONGOS_CAVERN_MQ_DEKU_SCRUB_SIDE_ROOM_NEAR_LOWER_LIZALFOS, RCVORMQ_MQ, RCTYPE_SCRUB, RCAREA_DODONGOS_CAVERN, ACTOR_EN_DNS, SCENE_DDAN, 0x07, GI_POTION_RED, "MQ 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, ACTOR_EN_SI, SCENE_DDAN, 8449, GI_SKULL_TOKEN, "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, ACTOR_EN_SI, SCENE_DDAN, 8450, GI_SKULL_TOKEN, "GS Scarecrow", "Dodongos Cavern GS Scarecrow"), RC_OBJECT(RC_DODONGOS_CAVERN_GS_ALCOVE_ABOVE_STAIRS, RCVORMQ_VANILLA, RCTYPE_SKULL_TOKEN, RCAREA_DODONGOS_CAVERN, ACTOR_EN_SI, SCENE_DDAN, 8452, GI_SKULL_TOKEN, "GS Alcove Above Stairs", "Dodongos Cavern GS Alcove Above Stairs"), @@ -453,7 +453,7 @@ std::map rcObjects = { RC_OBJECT(RC_JABU_JABUS_BELLY_MAP_CHEST, RCVORMQ_VANILLA, RCTYPE_MAP_COMPASS, RCAREA_JABU_JABUS_BELLY, ACTOR_EN_BOX, SCENE_BDAN, 6178, GI_MAP, "Map Chest", "Jabu Jabus Belly Map Chest"), RC_OBJECT(RC_JABU_JABUS_BELLY_COMPASS_CHEST, RCVORMQ_VANILLA, RCTYPE_MAP_COMPASS, RCAREA_JABU_JABUS_BELLY, ACTOR_EN_BOX, SCENE_BDAN, -18428, GI_COMPASS, "Compass Chest", "Jabu Jabus Belly Compass Chest"), RC_OBJECT(RC_JABU_JABUS_BELLY_BOOMERANG_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_JABU_JABUS_BELLY, ACTOR_EN_BOX, SCENE_BDAN, 4289, GI_BOOMERANG, "Boomerang Chest", "Jabu Jabus Belly Boomerang Chest"), - RC_OBJECT(RC_JABU_JABUS_BELLY_DEKU_SCRUB, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_JABU_JABUS_BELLY, ACTOR_EN_DNS, SCENE_BDAN, 0x00, GI_NUTS_5_2, "Deku Scrub", "Jabu Jabus Belly Deku Scrub"), + RC_OBJECT(RC_JABU_JABUS_BELLY_DEKU_SCRUB, RCVORMQ_VANILLA, RCTYPE_SCRUB, RCAREA_JABU_JABUS_BELLY, ACTOR_EN_DNS, SCENE_BDAN, 0x00, GI_NUTS_5_2, "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, ACTOR_EN_BOX, SCENE_BDAN, -32699, GI_NUTS_5, "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, ACTOR_EN_BOX, SCENE_BDAN, -18397, GI_MAP, "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, ACTOR_EN_BOX, SCENE_BDAN, 20546, GI_NUTS_5, "MQ Second Room Lower Chest", "Jabu Jabus Belly MQ Second Room Lower Chest"), @@ -792,10 +792,10 @@ std::map rcObjects = { RC_OBJECT(RC_GANONS_CASTLE_LIGHT_TRIAL_THIRD_RIGHT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, ACTOR_EN_BOX, SCENE_GANONTIKA, 24463, GI_ICE_TRAP, "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, ACTOR_EN_BOX, SCENE_GANONTIKA, 30800, GI_KEY_SMALL, "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, ACTOR_EN_BOX, SCENE_GANONTIKA, -30639, GI_KEY_SMALL, "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, ACTOR_EN_DNS, SCENE_GANONTIKA, 0x05, GI_BOMBS_5, "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, ACTOR_EN_DNS, SCENE_GANONTIKA, 0x03, GI_SEEDS_30, "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, ACTOR_EN_DNS, SCENE_GANONTIKA, 0x07, GI_POTION_RED, "Deku Scrub Right", "Ganon's Castle Deku Scrub Right"), - RC_OBJECT(RC_GANONS_CASTLE_DEKU_SCRUB_LEFT, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, ACTOR_EN_DNS, SCENE_GANONTIKA, 0x08, GI_POTION_GREEN, "Deku Scrub Left", "Ganon's Castle Deku Scrub Left"), + RC_OBJECT(RC_GANONS_CASTLE_DEKU_SCRUB_CENTER_LEFT, RCVORMQ_VANILLA, RCTYPE_SCRUB, RCAREA_GANONS_CASTLE, ACTOR_EN_DNS, SCENE_GANONTIKA, 0x05, GI_BOMBS_5, "Deku Scrub Center-Left", "Ganon's Castle Deku Scrub Center-Left"), + RC_OBJECT(RC_GANONS_CASTLE_DEKU_SCRUB_CENTER_RIGHT, RCVORMQ_VANILLA, RCTYPE_SCRUB, RCAREA_GANONS_CASTLE, ACTOR_EN_DNS, SCENE_GANONTIKA, 0x03, GI_SEEDS_30, "Deku Scrub Center-Right", "Ganon's Castle Deku Scrub Center-Right"), + RC_OBJECT(RC_GANONS_CASTLE_DEKU_SCRUB_RIGHT, RCVORMQ_VANILLA, RCTYPE_SCRUB, RCAREA_GANONS_CASTLE, ACTOR_EN_DNS, SCENE_GANONTIKA, 0x07, GI_POTION_RED, "Deku Scrub Right", "Ganon's Castle Deku Scrub Right"), + RC_OBJECT(RC_GANONS_CASTLE_DEKU_SCRUB_LEFT, RCVORMQ_VANILLA, RCTYPE_SCRUB, RCAREA_GANONS_CASTLE, ACTOR_EN_DNS, SCENE_GANONTIKA, 0x08, GI_POTION_GREEN, "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, ACTOR_EN_BOX, SCENE_GANONTIKA, 22977, GI_RUPEE_RED, "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, ACTOR_EN_BOX, SCENE_GANONTIKA, -30398, GI_ARROWS_MEDIUM, "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, ACTOR_EN_BOX, SCENE_GANONTIKA, -32733, GI_BOMBS_5, "MQ Forest Trial Frozen Eye Switch Chest", "Ganon's Castle MQ Forest Trial Frozen Eye Switch Chest"), @@ -809,11 +809,11 @@ std::map rcObjects = { RC_OBJECT(RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_FIRST_CHEST, RCVORMQ_MQ, RCTYPE_STANDARD, RCAREA_GANONS_CASTLE, ACTOR_EN_BOX, SCENE_GANONTIKA, 20586, GI_BOMBCHUS_10, "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, ACTOR_EN_BOX, SCENE_GANONTIKA, 26964, GI_ARROWS_MEDIUM, "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, ACTOR_EN_ITEM00, SCENE_GANONTIKA, 273, GI_KEY_SMALL, "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, ACTOR_EN_DNS, SCENE_GANONTIKA, 0x00, GI_NUTS_5_2, "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, ACTOR_EN_DNS, SCENE_GANONTIKA, 0x05, GI_BOMBS_5, "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, ACTOR_EN_DNS, SCENE_GANONTIKA, 0x03, GI_SEEDS_30, "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, ACTOR_EN_DNS, SCENE_GANONTIKA, 0x07, GI_POTION_RED, "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, ACTOR_EN_DNS, SCENE_GANONTIKA, 0x08, GI_POTION_GREEN, "MQ Deku Scrub Left", "Ganon's Castle MQ Deku Scrub Left"), + RC_OBJECT(RC_GANONS_CASTLE_MQ_DEKU_SCRUB_RIGHT, RCVORMQ_MQ, RCTYPE_SCRUB, RCAREA_GANONS_CASTLE, ACTOR_EN_DNS, SCENE_GANONTIKA, 0x00, GI_NUTS_5_2, "MQ Deku Scrub Right", "Ganon's Castle MQ Deku Scrub Right"), + RC_OBJECT(RC_GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_LEFT, RCVORMQ_MQ, RCTYPE_SCRUB, RCAREA_GANONS_CASTLE, ACTOR_EN_DNS, SCENE_GANONTIKA, 0x05, GI_BOMBS_5, "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_SCRUB, RCAREA_GANONS_CASTLE, ACTOR_EN_DNS, SCENE_GANONTIKA, 0x03, GI_SEEDS_30, "MQ Deku Scrub Center", "Ganon's Castle MQ Deku Scrub Center"), + RC_OBJECT(RC_GANONS_CASTLE_MQ_DEKU_SCRUB_CENTER_RIGHT, RCVORMQ_MQ, RCTYPE_SCRUB, RCAREA_GANONS_CASTLE, ACTOR_EN_DNS, SCENE_GANONTIKA, 0x07, GI_POTION_RED, "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_SCRUB, RCAREA_GANONS_CASTLE, ACTOR_EN_DNS, SCENE_GANONTIKA, 0x08, GI_POTION_GREEN, "MQ Deku Scrub Left", "Ganon's Castle MQ Deku Scrub Left"), RC_OBJECT(RC_UNKNOWN_CHECK, RCVORMQ_BOTH, RCTYPE_STANDARD, RCAREA_INVALID, ACTOR_ID_MAX, SCENE_ID_MAX, 0x00, GI_NONE, "Invalid Check", "Invalid Check"), @@ -897,27 +897,45 @@ std::map RandomizerCheckObjects::GetAllR void RandomizerCheckObjects::UpdateImGuiVisibility() { for (auto& [randomizerCheck, locationIt] : rcObjects) { 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.rc != RC_UNKNOWN_CHECK) && + (!RandomizerCheckObjects::AreaIsDungeon(locationIt.rcArea) || + locationIt.vOrMQ == RCVORMQ_BOTH || + locationIt.vOrMQ == RCVORMQ_MQ && CVar_GetS32("gRandomizeMqDungeons", RO_MQ_DUNGEONS_NONE) != RO_MQ_DUNGEONS_NONE && CVar_GetS32("gRandomizeMqDungeonCount", 0) > 0 || //at least one MQ dungeon + locationIt.vOrMQ == RCVORMQ_VANILLA && (CVar_GetS32("gRandomizeMqDungeons", RO_MQ_DUNGEONS_NONE) == RO_MQ_DUNGEONS_NONE || CVar_GetS32("gRandomizeMqDungeonCount", 0) < 12) //at least one vanilla dungeon + ) && + (locationIt.rcType != RCTYPE_SHOP || CVar_GetS32("gRandomizeShopsanity", RO_SHOPSANITY_OFF) > RO_SHOPSANITY_ZERO_ITEMS) && + (locationIt.rcType != RCTYPE_SCRUB || CVar_GetS32("gRandomizeShuffleScrubs", RO_SCRUBS_OFF) != RO_SCRUBS_OFF || + locationIt.rc == RC_HF_DEKU_SCRUB_GROTTO || locationIt.rc == RC_LW_DEKU_SCRUB_GROTTO_FRONT || locationIt.rc == RC_LW_DEKU_SCRUB_NEAR_BRIDGE) && //The 3 scrubs that are always randomized + (locationIt.rcType != RCTYPE_MERCHANT || CVar_GetS32("gRandomizeShuffleMerchants", RO_SHUFFLE_MERCHANTS_OFF) != RO_SHUFFLE_MERCHANTS_OFF) && (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", RO_TOKENSANITY_OFF) == RO_TOKENSANITY_ALL) || - ((CVar_GetS32("gRandomizeShuffleTokens", RO_TOKENSANITY_OFF) == RO_TOKENSANITY_OVERWORLD) && RandomizerCheckObjects::AreaIsOverworld(locationIt.rcArea)) || - ((CVar_GetS32("gRandomizeShuffleTokens", RO_TOKENSANITY_OFF) == RO_TOKENSANITY_DUNGEONS) && RandomizerCheckObjects::AreaIsDungeon(locationIt.rcArea)) + (CVar_GetS32("gRandomizeShuffleTokens", RO_TOKENSANITY_OFF) == RO_TOKENSANITY_ALL) || + ((CVar_GetS32("gRandomizeShuffleTokens", RO_TOKENSANITY_OFF) == RO_TOKENSANITY_OVERWORLD) && RandomizerCheckObjects::AreaIsOverworld(locationIt.rcArea)) || + ((CVar_GetS32("gRandomizeShuffleTokens", RO_TOKENSANITY_OFF) == RO_TOKENSANITY_DUNGEONS) && RandomizerCheckObjects::AreaIsDungeon(locationIt.rcArea)) ) && - ((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", RO_DUNGEON_ITEM_LOC_STARTWITH) != RO_DUNGEON_ITEM_LOC_VANILLA) && + ((locationIt.rcType != RCTYPE_COW) || CVar_GetS32("gRandomizeShuffleCows", RO_GENERIC_NO)) && + ((locationIt.rcType != RCTYPE_ADULT_TRADE) || CVar_GetS32("gRandomizeShuffleAdultTrade", RO_GENERIC_NO)) && + ((locationIt.rc != RC_KF_KOKIRI_SWORD_CHEST) || CVar_GetS32("gRandomizeShuffleKokiriSword", RO_GENERIC_NO)) && + ((locationIt.rc != RC_ZR_MAGIC_BEAN_SALESMAN) || CVar_GetS32("gRandomizeShuffleBeans", RO_GENERIC_NO) == RO_GENERIC_YES) && + ((locationIt.rc != RC_HC_MALON_EGG) || CVar_GetS32("gRandomizeShuffleWeirdEgg", RO_GENERIC_NO)) && + ((locationIt.rcType != RCTYPE_FROG_SONG) || CVar_GetS32("gRandomizeShuffleFrogSongRupees", RO_GENERIC_NO)) && + ((locationIt.rcType != RCTYPE_MAP_COMPASS) || CVar_GetS32("gRandomizeStartingMapsCompasses", RO_DUNGEON_ITEM_LOC_OWN_DUNGEON) != RO_DUNGEON_ITEM_LOC_VANILLA) && ((locationIt.rcType != RCTYPE_SMALL_KEY) || CVar_GetS32("gRandomizeKeysanity", RO_DUNGEON_ITEM_LOC_OWN_DUNGEON) != RO_DUNGEON_ITEM_LOC_VANILLA) && - ((locationIt.rcType != RCTYPE_GF_KEY) || CVar_GetS32("gRandomizeGerudoKeys", RO_GERUDO_KEYS_VANILLA) != RO_GERUDO_KEYS_VANILLA) && - ((locationIt.rcType != RCTYPE_BOSS_KEY) || CVar_GetS32("gRandomizeBossKeysanity", RO_DUNGEON_ITEM_LOC_STARTWITH) != RO_DUNGEON_ITEM_LOC_VANILLA) && - ((locationIt.rcType != RCTYPE_GANON_BOSS_KEY) || CVar_GetS32("gRandomizeShuffleGanonBossKey", RO_GANON_BOSS_KEY_VANILLA) != RO_GANON_BOSS_KEY_VANILLA) + ((locationIt.rcType != RCTYPE_BOSS_KEY) || CVar_GetS32("gRandomizeBossKeysanity", RO_DUNGEON_ITEM_LOC_OWN_DUNGEON) != RO_DUNGEON_ITEM_LOC_VANILLA) && + ((locationIt.rcType != RCTYPE_GANON_BOSS_KEY) || CVar_GetS32("gRandomizeShuffleGanonBossKey", RO_GANON_BOSS_KEY_VANILLA) != RO_GANON_BOSS_KEY_VANILLA) && + (locationIt.rcType != RCTYPE_GF_KEY && locationIt.rc != RC_GF_GERUDO_MEMBERSHIP_CARD || + (CVar_GetS32("gRandomizeGerudoFortress", RO_GF_NORMAL) == RO_GF_OPEN && locationIt.rcType != RCTYPE_GF_KEY && locationIt.rc != RC_GF_GERUDO_MEMBERSHIP_CARD) || + (CVar_GetS32("gRandomizeGerudoFortress", RO_GF_NORMAL) == RO_GF_FAST && + ((locationIt.rc == RC_GF_GERUDO_MEMBERSHIP_CARD && CVar_GetS32("gRandomizeShuffleGerudoToken", RO_GENERIC_NO) == RO_GENERIC_YES) || + (locationIt.rc == RC_GF_NORTH_F1_CARPENTER && CVar_GetS32("gRandomizeGerudoKeys", RO_GERUDO_KEYS_VANILLA) != RO_GERUDO_KEYS_VANILLA)) + ) || + (CVar_GetS32("gRandomizeGerudoFortress", RO_GF_NORMAL) == RO_GF_NORMAL && + ((locationIt.rc == RC_GF_GERUDO_MEMBERSHIP_CARD && CVar_GetS32("gRandomizeShuffleGerudoToken", RO_GENERIC_NO) == RO_GENERIC_YES) || + (locationIt.rcType == RCTYPE_GF_KEY && CVar_GetS32("gRandomizeGerudoKeys", RO_GERUDO_KEYS_VANILLA) != RO_GERUDO_KEYS_VANILLA)) + ) + ) ); } } diff --git a/soh/soh/Enhancements/randomizer/randomizer_check_objects.h b/soh/soh/Enhancements/randomizer/randomizer_check_objects.h index d3d127b1b..f0a8e1fa2 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_check_objects.h +++ b/soh/soh/Enhancements/randomizer/randomizer_check_objects.h @@ -19,7 +19,9 @@ typedef enum { RCTYPE_GF_KEY, // Gerudo Fortress Keys RCTYPE_BOSS_KEY, // Boss Keys RCTYPE_GANON_BOSS_KEY, // Ganon's boss key - RCTYPE_SHOP, // shops/scrubs + RCTYPE_SHOP, // shops + RCTYPE_SCRUB, // scrubs + RCTYPE_MERCHANT, // merchants 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,