From 848106039d02d813f59a6a76b87d3ced233e0eb9 Mon Sep 17 00:00:00 2001 From: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com> Date: Tue, 21 Jul 2026 03:29:07 +0100 Subject: [PATCH] fix climb requirements for MQ DC Torch room (#6950) --- .../dungeons/dodongos_cavern.cpp | 35 ++++++++++++++----- .../randomizer/randomizerEnums/LogicVal.h | 1 + .../randomizerEnums/RandomizerRegion.h | 1 + 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/location_access/dungeons/dodongos_cavern.cpp b/soh/soh/Enhancements/randomizer/location_access/dungeons/dodongos_cavern.cpp index b71ecf830d..ca228e9341 100644 --- a/soh/soh/Enhancements/randomizer/location_access/dungeons/dodongos_cavern.cpp +++ b/soh/soh/Enhancements/randomizer/location_access/dungeons/dodongos_cavern.cpp @@ -413,25 +413,42 @@ void RegionTable_Init_DodongosCavern() { ENTRANCE(RR_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_LOWER, AnyAgeTime([]{return logic->CanKillEnemy(RE_DODONGO) || logic->HasItem(RG_GORONS_BRACELET);})), }); - areaTable[RR_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_LOWER] = Region("Dodongos Cavern MQ Torch Puzzle Lower", SCENE_DODONGOS_CAVERN, { + areaTable[RR_DODONGOS_CAVERN_MQ_ENTRANCE_SIDE_BRIDGE] = Region("Dodongos Cavern MQ Entrance Side Bridge", SCENE_DODONGOS_CAVERN, { //Events EVENT_ACCESS(LOGIC_DC_MQ_CLEAR_UPPER_LOBBY_ROCKS, (((logic->IsAdult /*or bunny hood jump*/) && (logic->HasItem(RG_POWER_BRACELET) || ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS))) || logic->CanUse(RG_HOVER_BOOTS)) && logic->CanUse(RG_STICKS)), + EVENT_ACCESS(LOGIC_DC_MQ_CLEAR_BIG_BLOCK_WEB, logic->CanUse(RG_STICKS) && logic->HasItem(RG_POWER_BRACELET)), + }, {}, { + //Exits + ENTRANCE(RR_DODONGOS_CAVERN_MQ_LOBBY, logic->TakeDamage()), + ENTRANCE(RR_DODONGOS_CAVERN_MQ_DODONGO_ROOM, true), + ENTRANCE(RR_DODONGOS_CAVERN_MQ_LARVAE_ROOM, logic->CanUse(RG_STICKS) && logic->HasItem(RG_POWER_BRACELET)), //assumes RR_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_LOWER access. + //Bunny hood jump can make it as child + ENTRANCE(RR_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_UPPER, (logic->IsAdult && ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS)) || logic->CanUse(RG_HOVER_BOOTS)), + //Implies access to RR_DODONGOS_CAVERN_MQ_BIG_BLOCK_ROOM and RR_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_LOWER from here + ENTRANCE(RR_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS, logic->CanUse(RG_STICKS) && logic->HasItem(RG_GORONS_BRACELET)), + }); + + areaTable[RR_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_LOWER] = Region("Dodongos Cavern MQ Torch Puzzle Lower", SCENE_DODONGOS_CAVERN, { + //Events + EVENT_ACCESS(LOGIC_DC_MQ_CLEAR_BIG_BLOCK_WEB, logic->HasFireSource()), }, { //Locations - LOCATION(RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_MIDDLE_POT, logic->CanUse(RG_BOOMERANG)), + //on review, RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_MIDDLE_POT from here is indirect as there's a lack of clear line of sight as child. LOCATION(RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_ROOM_HEART, true), }, { //Exits - ENTRANCE(RR_DODONGOS_CAVERN_MQ_LOBBY, logic->TakeDamage()), - ENTRANCE(RR_DODONGOS_CAVERN_MQ_DODONGO_ROOM, logic->HasItem(RG_POWER_BRACELET) || logic->CanClimbLadder()), - ENTRANCE(RR_DODONGOS_CAVERN_MQ_LARVAE_ROOM, logic->HasFireSource() || (logic->CanUse(RG_STICKS) && logic->HasItem(RG_POWER_BRACELET))), - ENTRANCE(RR_DODONGOS_CAVERN_MQ_BIG_BLOCK_ROOM, AnyAgeTime([]{return logic->HasFireSourceWithTorch();})), //Includes an implied CanPass(RE_BIG_SKULLTULA) + ENTRANCE(RR_DODONGOS_CAVERN_MQ_ENTRANCE_SIDE_BRIDGE, (logic->IsAdult || logic->HasItem(RG_POWER_BRACELET)) || logic->CanClimbLadder()), + ENTRANCE(RR_DODONGOS_CAVERN_MQ_LARVAE_ROOM, logic->HasFireSource()), + //you can platform off the blocks to get here without climb + ENTRANCE(RR_DODONGOS_CAVERN_MQ_BIG_BLOCK_ROOM, logic->Get(LOGIC_DC_MQ_CLEAR_BIG_BLOCK_WEB)), //Includes an implied CanPass(RE_BIG_SKULLTULA) //Bunny hood jump can make it as child - ENTRANCE(RR_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_UPPER, (logic->IsAdult && (logic->HasItem(RG_POWER_BRACELET) || ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS) || logic->CanGroundJump())) || logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_HOOKSHOT)), - ENTRANCE(RR_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS, logic->CanUse(RG_STICKS) && logic->HasItem(RG_GORONS_BRACELET)), //Implies access to RR_DODONGOS_CAVERN_MQ_BIG_BLOCK_ROOM from here + ENTRANCE(RR_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_UPPER, (logic->IsAdult && (logic->HasItem(RG_POWER_BRACELET) || ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS) || logic->CanGroundJump())) || logic->CanUse(RG_HOOKSHOT)), }); - areaTable[RR_DODONGOS_CAVERN_MQ_BIG_BLOCK_ROOM] = Region("Dodongos Cavern MQ Big Block Room", SCENE_DODONGOS_CAVERN, {}, { + areaTable[RR_DODONGOS_CAVERN_MQ_BIG_BLOCK_ROOM] = Region("Dodongos Cavern MQ Big Block Room", SCENE_DODONGOS_CAVERN, { + //Events + EVENT_ACCESS(LOGIC_DC_MQ_CLEAR_BIG_BLOCK_WEB, logic->HasFireSource()), + }, { //Locations LOCATION(RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_1, logic->CanBreakPots()), LOCATION(RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_2, logic->CanBreakPots()), diff --git a/soh/soh/Enhancements/randomizer/randomizerEnums/LogicVal.h b/soh/soh/Enhancements/randomizer/randomizerEnums/LogicVal.h index d49aa7e799..9034bd4ee1 100644 --- a/soh/soh/Enhancements/randomizer/randomizerEnums/LogicVal.h +++ b/soh/soh/Enhancements/randomizer/randomizerEnums/LogicVal.h @@ -232,6 +232,7 @@ RANDO_ENUM_ITEM(LOGIC_DC_STAIRS_ROOM_DOOR) RANDO_ENUM_ITEM(LOGIC_DC_LIFT_PLATFORM) RANDO_ENUM_ITEM(LOGIC_DC_KILLED_LOWER_LIZALFOS) RANDO_ENUM_ITEM(LOGIC_DC_MQ_CLEAR_UPPER_LOBBY_ROCKS) +RANDO_ENUM_ITEM(LOGIC_DC_MQ_CLEAR_BIG_BLOCK_WEB) RANDO_ENUM_ITEM(LOGIC_DC_MQ_STAIRS_SILVER_RUPEES) RANDO_ENUM_ITEM(LOGIC_DC_MQ_BEHIND_FIRE_SWITCH) RANDO_ENUM_ITEM(LOGIC_JABU_RUTO_IN_1F) diff --git a/soh/soh/Enhancements/randomizer/randomizerEnums/RandomizerRegion.h b/soh/soh/Enhancements/randomizer/randomizerEnums/RandomizerRegion.h index bde9ade881..a3924e2d56 100644 --- a/soh/soh/Enhancements/randomizer/randomizerEnums/RandomizerRegion.h +++ b/soh/soh/Enhancements/randomizer/randomizerEnums/RandomizerRegion.h @@ -332,6 +332,7 @@ RANDO_ENUM_ITEM(RR_DODONGOS_CAVERN_MQ_STAIRS_LOWER) RANDO_ENUM_ITEM(RR_DODONGOS_CAVERN_MQ_STAIRS_UPPER) RANDO_ENUM_ITEM(RR_DODONGOS_CAVERN_MQ_STAIRS_PAST_BIG_SKULLTULAS) RANDO_ENUM_ITEM(RR_DODONGOS_CAVERN_MQ_DODONGO_ROOM) +RANDO_ENUM_ITEM(RR_DODONGOS_CAVERN_MQ_ENTRANCE_SIDE_BRIDGE) RANDO_ENUM_ITEM(RR_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_LOWER) RANDO_ENUM_ITEM(RR_DODONGOS_CAVERN_MQ_BIG_BLOCK_ROOM) RANDO_ENUM_ITEM(RR_DODONGOS_CAVERN_MQ_LARVAE_ROOM)