From 048a64dd0145e38cf54bcfca41fce2fa705523b5 Mon Sep 17 00:00:00 2001 From: Demur Rumed Date: Mon, 14 Jul 2025 01:28:09 +0000 Subject: [PATCH] feedback --- .../dungeons/jabujabus_belly.cpp | 67 ++++++++++++------- soh/soh/Enhancements/randomizer/logic.cpp | 1 + soh/soh/Enhancements/randomizer/logic.h | 1 + .../Enhancements/randomizer/randomizerTypes.h | 7 +- 4 files changed, 47 insertions(+), 29 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/location_access/dungeons/jabujabus_belly.cpp b/soh/soh/Enhancements/randomizer/location_access/dungeons/jabujabus_belly.cpp index c7c338e5c..6b0d25d80 100644 --- a/soh/soh/Enhancements/randomizer/location_access/dungeons/jabujabus_belly.cpp +++ b/soh/soh/Enhancements/randomizer/location_access/dungeons/jabujabus_belly.cpp @@ -49,8 +49,9 @@ void RegionTable_Init_JabuJabusBelly() { areaTable[RR_JABU_JABUS_BELLY_HOLES_BASEMENT] = Region("Jabu Jabus Belly Holes Basement", SCENE_JABU_JABU, {}, {}, { //Exits - Entrance(RR_JABU_JABUS_BELLY_HOLES_ROOM, []{return true /* logic->CanClimb() */;}), - Entrance(RR_JABU_JABUS_BELLY_B1_CUBE, []{return true;}), + Entrance(RR_JABU_JABUS_BELLY_HOLES_ROOM, []{return true /* logic->HasItem(RG_CLIMB) */;}), + Entrance(RR_JABU_JABUS_BELLY_B1_JIGGLY, []{return true;}), + Entrance(RR_JABU_JABUS_BELLY_HOLES_LOWER_DOOR_LEDGE, []{return logic->IsAdult;}), }); areaTable[RR_JABU_JABUS_BELLY_HOLES_LOWER_DOOR_LEDGE] = Region("Jabu Jabus Belly Holes Lower Door Ledge", SCENE_JABU_JABU, {}, {}, { @@ -60,7 +61,7 @@ void RegionTable_Init_JabuJabusBelly() { }); //contains B1 of hole room (aside from the ledge leading to big octo), 2 octorock room and north water switch room - areaTable[RR_JABU_JABUS_BELLY_B1_CUBE] = Region("Jabu Jabus Belly B1 Cube", SCENE_JABU_JABU, { + areaTable[RR_JABU_JABUS_BELLY_B1_JIGGLY] = Region("Jabu Jabus Belly B1 Cube", SCENE_JABU_JABU, { //Events EventAccess(&logic->FairyPot, []{return logic->CanUse(RG_BOOMERANG) || (logic->CanUse(RG_HOVER_BOOTS) && logic->CanKillEnemy(RE_OCTOROK));}), }, { @@ -72,7 +73,7 @@ void RegionTable_Init_JabuJabusBelly() { LOCATION(RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_5, logic->CanBreakPots() && (logic->CanUse(RG_BOOMERANG) || (logic->CanUse(RG_HOVER_BOOTS) && logic->CanKillEnemy(RE_OCTOROK, ED_BOOMERANG, false)))), }, { //Exits - Entrance(RR_JABU_JABUS_BELLY_HOLES_ROOM, []{return true;}), + Entrance(RR_JABU_JABUS_BELLY_HOLES_BASEMENT, []{return true;}), }); areaTable[RR_JABU_JABUS_BELLY_WATER_SWITCH_ROOM_NORTH] = Region("Jabu Jabus Belly Water Switch Room North", SCENE_JABU_JABU, { @@ -103,7 +104,7 @@ void RegionTable_Init_JabuJabusBelly() { EventAccess(&logic->FairyPot, []{return true;}), }, { //Locations - //this is the logic for climbing back and forth to use the pots to kill the skull... or killing the skull before climbing to grab the token + //this is for climbing back and forth to use pots (or ruto) to kill skull... or killing the skull before climbing to grab the token LOCATION(RC_JABU_JABUS_BELLY_GS_WATER_SWITCH_ROOM, logic->HasItem(RG_BRONZE_SCALE) || (logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS)) || logic->CanKillEnemy(RE_GOLD_SKULLTULA, ED_BOMB_THROW)), LOCATION(RC_JABU_JABUS_BELLY_BASEMENT_POT_1, logic->CanBreakPots()), LOCATION(RC_JABU_JABUS_BELLY_BASEMENT_POT_2, logic->CanBreakPots()), @@ -198,10 +199,12 @@ void RegionTable_Init_JabuJabusBelly() { LOCATION(RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_3, logic->CanBreakPots()), }, { //Exits - Entrance(RR_JABU_JABUS_BELLY_CUBES_ROOM, []{return true;}), + //when spawning above lift elevator is not raise. if elevator taken up access back down is irrelevant + Entrance(RR_JABU_JABUS_BELLY_BIGOCTO, []{return logic->TakeDamage();}), + Entrance(RR_JABU_JABUS_BELLY_JIGGLIES_ROOM, []{return true;}), }); - areaTable[RR_JABU_JABUS_BELLY_CUBES_ROOM] = Region("Jabu Jabus Belly Cubes Room", SCENE_JABU_JABU, {}, {}, { + areaTable[RR_JABU_JABUS_BELLY_JIGGLIES_ROOM] = Region("Jabu Jabus Belly Cubes Room", SCENE_JABU_JABU, {}, {}, { //Exits Entrance(RR_JABU_JABUS_BELLY_ABOVE_BIGOCTO, []{return true;}), Entrance(RR_JABU_JABUS_BELLY_LIFT_UPPER, []{return logic->CanUse(RG_BOOMERANG);}), @@ -212,8 +215,8 @@ void RegionTable_Init_JabuJabusBelly() { EventAccess(&logic->LoweredJabuPath, []{return true;}), }, {}, { //Exits - Entrance(RR_JABU_JABUS_BELLY_LIFT_ROOM, []{return true;}), - Entrance(RR_JABU_JABUS_BELLY_CUBES_ROOM, []{return true;}), + Entrance(RR_JABU_JABUS_BELLY_LIFT_ROOM, []{return true;}), + Entrance(RR_JABU_JABUS_BELLY_JIGGLIES_ROOM, []{return true;}), }); areaTable[RR_JABU_JABUS_BELLY_NEAR_BOSS_ROOM] = Region("Jabu Jabus Belly Near Boss Room", SCENE_JABU_JABU, {}, { @@ -283,15 +286,23 @@ void RegionTable_Init_JabuJabusBelly() { Entrance(RR_JABU_JABUS_BELLY_MQ_LIFT_ROOM, []{return logic->HasItem(RG_BRONZE_SCALE);}), }); - areaTable[RR_JABU_JABUS_BELLY_MQ_HOLES_ROOM] = Region("Jabu Jabus Belly MQ Holes Room", SCENE_JABU_JABU, {}, { + areaTable[RR_JABU_JABUS_BELLY_MQ_HOLES_ROOM] = Region("Jabu Jabus Belly MQ Holes Room", SCENE_JABU_JABU, { + //Events + EventAccess(&logic->MQJabuForkedRoomDoor, []{return logic->HasExplosives() && logic->CanUse(RG_FAIRY_SLINGSHOT);}), + }, { //Locations - LOCATION(RC_JABU_JABUS_BELLY_MQ_PIT_GRASS_1, logic->CanCutShrubs() && logic->HasExplosives()), - LOCATION(RC_JABU_JABUS_BELLY_MQ_PIT_GRASS_2, logic->CanCutShrubs() && logic->HasExplosives()), + LOCATION(RC_JABU_JABUS_BELLY_MQ_PIT_GRASS_1, logic->CanCutShrubs() && logic->HasExplosives()), + LOCATION(RC_JABU_JABUS_BELLY_MQ_PIT_GRASS_2, logic->CanCutShrubs() && logic->HasExplosives()), }, { //Exits - Entrance(RR_JABU_JABUS_BELLY_MQ_LIFT_ROOM, []{return true;}), - Entrance(RR_JABU_JABUS_BELLY_MQ_HOLES_BASEMENT, []{return true;}), - Entrance(RR_JABU_JABUS_BELLY_MQ_FORKED_CORRIDOR, []{return logic->CanUse(RG_BOOMERANG) && logic->HasExplosives() && Here(RR_JABU_JABUS_BELLY_MQ_HOLES_ROOM, []{return logic->CanUse(RG_FAIRY_SLINGSHOT);});}), + Entrance(RR_JABU_JABUS_BELLY_MQ_LIFT_ROOM, []{return true;}), + Entrance(RR_JABU_JABUS_BELLY_MQ_HOLES_BASEMENT, []{return true;}), + Entrance(RR_JABU_JABUS_BELLY_MQ_HOLES_ROOM_PAST_JIGGLY, []{return logic->CanUse(RG_BOOMERANG);}), + }); + + areaTable[RR_JABU_JABUS_BELLY_MQ_HOLES_ROOM_PAST_JIGGLY] = Region("Jabu Jabus Belly MQ Holes Room Past Jiggly", SCENE_JABU_JABU, {}, {}, { + Entrance(RR_JABU_JABUS_BELLY_MQ_HOLES_ROOM, []{return logic->CanUse(RG_BOOMERANG);}), + Entrance(RR_JABU_JABUS_BELLY_MQ_FORKED_CORRIDOR, []{return logic->MQJabuForkedRoomDoor;}), }); areaTable[RR_JABU_JABUS_BELLY_MQ_HOLES_BASEMENT] = Region("Jabu Jabus Belly MQ Holes Basement", SCENE_JABU_JABU, {}, { @@ -303,7 +314,7 @@ void RegionTable_Init_JabuJabusBelly() { LOCATION(RC_JABU_JABUS_BELLY_MQ_BASEMENT_GRASS_3, logic->CanCutShrubs()), }, { //Exits - Entrance(RR_JABU_JABUS_BELLY_HOLES_ROOM, []{return true /* logic->CanClimb() */;}), + Entrance(RR_JABU_JABUS_BELLY_HOLES_ROOM, []{return true /* logic->HasItem(RG_CLIMB) */;}), Entrance(RR_JABU_JABUS_BELLY_MQ_OUTSIDE_BIGOCTO, []{return logic->JabuWestTentacle;}), Entrance(RR_JABU_JABUS_BELLY_MQ_WATER_SWITCH_ROOM, []{return true;}), Entrance(RR_JABU_JABUS_BELLY_MQ_INVISIBLE_KEESE_ROOM, []{return logic->JabuNorthTentacle;}), @@ -412,27 +423,31 @@ void RegionTable_Init_JabuJabusBelly() { Entrance(RR_JABU_JABUS_BELLY_MQ_HOLES_ROOM, []{return (logic->JabuNorthTentacle || logic->TakeDamage()) && logic->HasItem(RG_BRONZE_SCALE);}), }); + // Need Ruto here areaTable[RR_JABU_JABUS_BELLY_MQ_BIGOCTO] = Region("Jabu Jabus Belly MQ Big Octo", SCENE_JABU_JABU, {}, {}, { - // Need Ruto here - Entrance(RR_JABU_JABUS_BELLY_MQ_OUTSIDE_BIGOCTO, []{return logic->CanKillEnemy(RE_BIG_OCTO);}), - Entrance(RR_JABU_JABUS_BELLY_MQ_ABOVE_BIGOCTO, []{return logic->CanKillEnemy(RE_BIG_OCTO);}), + //Exits + Entrance(RR_JABU_JABUS_BELLY_MQ_OUTSIDE_BIGOCTO, []{return Here(RR_JABU_JABUS_BELLY_MQ_BIGOCTO, []{return logic->CanKillEnemy(RE_BIG_OCTO);});}), + Entrance(RR_JABU_JABUS_BELLY_MQ_ABOVE_BIGOCTO, []{return Here(RR_JABU_JABUS_BELLY_MQ_BIGOCTO, []{return logic->CanKillEnemy(RE_BIG_OCTO);});}), }); areaTable[RR_JABU_JABUS_BELLY_MQ_ABOVE_BIGOCTO] = Region("Jabu Jabus Belly MQ Above Big Octo", SCENE_JABU_JABU, {}, {}, { + //Locations + LOCATION(RC_JABU_JABUS_BELLY_MQ_AFTER_BIG_OCTO_GRASS_1, logic->CanCutShrubs()), + LOCATION(RC_JABU_JABUS_BELLY_MQ_AFTER_BIG_OCTO_GRASS_2, logic->CanCutShrubs()), + }, { //Exits - Entrance(RR_JABU_JABUS_BELLY_MQ_CUBES_ROOM, []{return true;}), - Entrance(RR_JABU_JABUS_BELLY_MQ_BIGOCTO, []{return logic->TakeDamage() && Here(RR_JABU_JABUS_BELLY_MQ_ABOVE_BIGOCTO, []{return logic->CanKillEnemy(RE_BIG_OCTO);});}), + Entrance(RR_JABU_JABUS_BELLY_MQ_JIGGLIES_ROOM, []{return true;}), + Entrance(RR_JABU_JABUS_BELLY_MQ_BIGOCTO, []{return logic->TakeDamage() && Here(RR_JABU_JABUS_BELLY_MQ_ABOVE_BIGOCTO, []{return logic->CanKillEnemy(RE_BIG_OCTO);});}), }); - areaTable[RR_JABU_JABUS_BELLY_MQ_CUBES_ROOM] = Region("Jabu Jabus Belly MQ Cubes Room", SCENE_JABU_JABU, {}, { + areaTable[RR_JABU_JABUS_BELLY_MQ_JIGGLIES_ROOM] = Region("Jabu Jabus Belly MQ Cubes Room", SCENE_JABU_JABU, {}, { //Locations LOCATION(RC_JABU_JABUS_BELLY_MQ_COW, logic->CanUse(RG_EPONAS_SONG) && logic->CanUse(RG_FAIRY_SLINGSHOT)), LOCATION(RC_JABU_JABUS_BELLY_MQ_JIGGLIES_GRASS, logic->CanCutShrubs()), - LOCATION(RC_JABU_JABUS_BELLY_MQ_AFTER_BIG_OCTO_GRASS_1, logic->CanCutShrubs()), - LOCATION(RC_JABU_JABUS_BELLY_MQ_AFTER_BIG_OCTO_GRASS_2, logic->CanCutShrubs()), LOCATION(RC_JABU_JABUS_BELLY_MQ_JIGGLIES_SMALL_CRATE_1, logic->CanUse(RG_FAIRY_SLINGSHOT) && logic->CanBreakSmallCrates()), LOCATION(RC_JABU_JABUS_BELLY_MQ_JIGGLIES_SMALL_CRATE_2, logic->CanUse(RG_FAIRY_SLINGSHOT) && logic->CanBreakSmallCrates()), }, { + //Exits Entrance(RR_JABU_JABUS_BELLY_MQ_ABOVE_BIGOCTO, []{return true;}), Entrance(RR_JABU_JABUS_BELLY_MQ_ABOVE_LIFT_ROOM, []{return logic->CanUse(RG_BOOMERANG) && logic->CanUse(RG_FAIRY_SLINGSHOT);}), }); @@ -442,8 +457,8 @@ void RegionTable_Init_JabuJabusBelly() { EventAccess(&logic->LoweredJabuPath, []{return true;}), }, {}, { //Exits - Entrance(RR_JABU_JABUS_BELLY_MQ_CUBES_ROOM, []{return true;}), - Entrance(RR_JABU_JABUS_BELLY_MQ_LIFT_ROOM, []{return true;}), + Entrance(RR_JABU_JABUS_BELLY_MQ_JIGGLIES_ROOM, []{return true;}), + Entrance(RR_JABU_JABUS_BELLY_MQ_LIFT_ROOM, []{return true;}), }); areaTable[RR_JABU_JABUS_BELLY_MQ_LIFT_ROOM_EAST_LEDGE] = Region("Jabu Jabus Belly MQ Lift Room East Ledge", SCENE_JABU_JABU, {}, { diff --git a/soh/soh/Enhancements/randomizer/logic.cpp b/soh/soh/Enhancements/randomizer/logic.cpp index 2b03073ff..2e5550851 100644 --- a/soh/soh/Enhancements/randomizer/logic.cpp +++ b/soh/soh/Enhancements/randomizer/logic.cpp @@ -2513,6 +2513,7 @@ void Logic::Reset(bool resetSaveContext /*= true*/) { MQGTGRightSideSwitch = false; GTGPlatformSilverRupees = false; MQJabuHolesRoomDoor = false; + MQJabuForkedRoomDoor = false; MQJabuWaterSwitchLiftAccess = false; JabuRutoIn1F = false; JabuWestTentacle = false; diff --git a/soh/soh/Enhancements/randomizer/logic.h b/soh/soh/Enhancements/randomizer/logic.h index 319ec66df..b9f3525db 100644 --- a/soh/soh/Enhancements/randomizer/logic.h +++ b/soh/soh/Enhancements/randomizer/logic.h @@ -163,6 +163,7 @@ class Logic { bool MQGTGRightSideSwitch = false; bool GTGPlatformSilverRupees = false; bool MQJabuHolesRoomDoor = false; + bool MQJabuForkedRoomDoor = false; bool MQJabuWaterSwitchLiftAccess = false; bool JabuRutoIn1F = false; bool JabuWestTentacle = false; diff --git a/soh/soh/Enhancements/randomizer/randomizerTypes.h b/soh/soh/Enhancements/randomizer/randomizerTypes.h index 9a7964aea..a9ea417c3 100644 --- a/soh/soh/Enhancements/randomizer/randomizerTypes.h +++ b/soh/soh/Enhancements/randomizer/randomizerTypes.h @@ -662,7 +662,7 @@ typedef enum { RR_JABU_JABUS_BELLY_HOLES_ROOM, RR_JABU_JABUS_BELLY_HOLES_BASEMENT, RR_JABU_JABUS_BELLY_HOLES_LOWER_DOOR_LEDGE, - RR_JABU_JABUS_BELLY_B1_CUBE, + RR_JABU_JABUS_BELLY_B1_JIGGLY, RR_JABU_JABUS_BELLY_WATER_SWITCH_ROOM_NORTH, RR_JABU_JABUS_BELLY_WATER_SWITCH_ROOM_SOUTH, RR_JABU_JABUS_BELLY_WATER_SWITCH_ROOM_LEDGE, @@ -675,7 +675,7 @@ typedef enum { RR_JABU_JABUS_BELLY_BIGOCTO_LEDGE, RR_JABU_JABUS_BELLY_BIGOCTO, RR_JABU_JABUS_BELLY_ABOVE_BIGOCTO, - RR_JABU_JABUS_BELLY_CUBES_ROOM, + RR_JABU_JABUS_BELLY_JIGGLIES_ROOM, RR_JABU_JABUS_BELLY_LIFT_UPPER, RR_JABU_JABUS_BELLY_NEAR_BOSS_ROOM, @@ -684,6 +684,7 @@ typedef enum { RR_JABU_JABUS_BELLY_MQ_LIFT_ROOM_EAST_LEDGE, RR_JABU_JABUS_BELLY_MQ_UNDERWATER_ALCOVE, RR_JABU_JABUS_BELLY_MQ_HOLES_ROOM, + RR_JABU_JABUS_BELLY_MQ_HOLES_ROOM_PAST_JIGGLY, RR_JABU_JABUS_BELLY_MQ_HOLES_BASEMENT, RR_JABU_JABUS_BELLY_MQ_OUTSIDE_BIGOCTO, RR_JABU_JABUS_BELLY_MQ_WATER_SWITCH_ROOM, @@ -698,7 +699,7 @@ typedef enum { RR_JABU_JABUS_BELLY_MQ_INVISIBLE_KEESE_ROOM, RR_JABU_JABUS_BELLY_MQ_BIGOCTO, RR_JABU_JABUS_BELLY_MQ_ABOVE_BIGOCTO, - RR_JABU_JABUS_BELLY_MQ_CUBES_ROOM, + RR_JABU_JABUS_BELLY_MQ_JIGGLIES_ROOM, RR_JABU_JABUS_BELLY_MQ_ABOVE_LIFT_ROOM, RR_JABU_JABUS_BELLY_MQ_EAST_ROOM,