summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Dubé <serprex@users.noreply.github.com>2025-12-15 19:41:53 +0000
committerGitHub <noreply@github.com>2025-12-15 12:41:53 -0700
commite9aad17d171dc9137a4d2ac660a67eb095e7a517 (patch)
tree03a494584b60c828135967e892994e7f07853d34
parent7176960a0ee7766f58cebcb6efe341956cc59d75 (diff)
refactor deku tree (#5854)
-rw-r--r--soh/soh/Enhancements/randomizer/location_access/dungeons/deku_tree.cpp30
-rw-r--r--soh/soh/Enhancements/randomizer/randomizerTypes.h2
2 files changed, 23 insertions, 9 deletions
diff --git a/soh/soh/Enhancements/randomizer/location_access/dungeons/deku_tree.cpp b/soh/soh/Enhancements/randomizer/location_access/dungeons/deku_tree.cpp
index 831cd2786..c9ff7f9d2 100644
--- a/soh/soh/Enhancements/randomizer/location_access/dungeons/deku_tree.cpp
+++ b/soh/soh/Enhancements/randomizer/location_access/dungeons/deku_tree.cpp
@@ -213,7 +213,10 @@ void RegionTable_Init_DekuTree() {
//is it possible to recoil from here to the ledge with a trick?
});
- areaTable[RR_DEKU_TREE_MQ_2F] = Region("Deku Tree MQ 2F", SCENE_DEKU_TREE, {}, {
+ areaTable[RR_DEKU_TREE_MQ_2F] = Region("Deku Tree MQ 2F", SCENE_DEKU_TREE, {
+ //Events
+ EventAccess(LOGIC_DEKU_TREE_MQ_2F_BURNED_WEB, []{return logic->HasFireSource();}),
+ }, {
//Locations
LOCATION(RC_DEKU_TREE_MQ_MAP_CHEST, true),
LOCATION(RC_DEKU_TREE_MQ_GS_LOBBY, logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)),
@@ -226,14 +229,26 @@ void RegionTable_Init_DekuTree() {
Entrance(RR_DEKU_TREE_MQ_1F, []{return true;}),
//Will need canAvoid logic with enemy shuffle
Entrance(RR_DEKU_TREE_MQ_3F, []{return true;}),
- Entrance(RR_DEKU_TREE_MQ_EYE_TARGET_ROOM, []{return Here(RR_DEKU_TREE_MQ_2F, []{return logic->HasFireSource();});}),
+ Entrance(RR_DEKU_TREE_MQ_EYE_TARGET_ROOM, []{return logic->Get(LOGIC_DEKU_TREE_MQ_2F_BURNED_WEB);}),
});
areaTable[RR_DEKU_TREE_MQ_3F] = Region("Deku Tree MQ 3F", SCENE_DEKU_TREE, {
//Events
- EventAccess(LOGIC_STICK_ACCESS, []{return logic->CanGetDekuBabaSticks();}),
- EventAccess(LOGIC_NUT_ACCESS, []{return logic->CanGetDekuBabaNuts();}),
- EventAccess(LOGIC_DEKU_TREE_1F_BROKE_WEB, []{return true;}),
+ EventAccess(LOGIC_STICK_ACCESS, []{return logic->CanGetDekuBabaSticks();}),
+ EventAccess(LOGIC_NUT_ACCESS, []{return logic->CanGetDekuBabaNuts();}),
+ EventAccess(LOGIC_DEKU_TREE_1F_BROKE_WEB, []{return true;}),
+ EventAccess(LOGIC_DEKU_TREE_MQ_2F_BURNED_WEB, []{return logic->CanUse(RG_STICKS) || logic->CanUse(RG_FAIRY_BOW);}),
+ }, {}, {
+ //Exits
+ Entrance(RR_DEKU_TREE_MQ_2F, []{return true;}),
+ Entrance(RR_DEKU_TREE_MQ_SLINGSHOT_ROOM, []{return true;}),
+ Entrance(RR_DEKU_TREE_MQ_BASEMENT, []{return true;}),
+ });
+
+ areaTable[RR_DEKU_TREE_MQ_SLINGSHOT_ROOM] = Region("Deku Tree MQ Slingshot Room", SCENE_DEKU_TREE, {
+ //Events
+ EventAccess(LOGIC_STICK_ACCESS, []{return logic->CanGetDekuBabaSticks();}),
+ EventAccess(LOGIC_NUT_ACCESS, []{return logic->CanGetDekuBabaNuts();}),
}, {
//Locations
//Implies CanKillEnemy(RE_GOHMA_LARVA)
@@ -248,10 +263,7 @@ void RegionTable_Init_DekuTree() {
LOCATION(RC_DEKU_TREE_MQ_SLINGSHOT_ROOM_CRATE_2, logic->CanBreakCrates()),
}, {
//Exits
- Entrance(RR_DEKU_TREE_MQ_2F, []{return true;}),
- //Assumes RR_DEKU_TREE_MQ_2F access
- Entrance(RR_DEKU_TREE_MQ_EYE_TARGET_ROOM, []{return Here(RR_DEKU_TREE_MQ_3F, []{return logic->CanUse(RG_STICKS) || logic->CanUse(RG_FAIRY_BOW);});}),
- Entrance(RR_DEKU_TREE_MQ_BASEMENT, []{return true;}),
+ Entrance(RR_DEKU_TREE_MQ_3F, []{return logic->CanKillEnemy(RE_DEKU_BABA);}),
});
areaTable[RR_DEKU_TREE_MQ_EYE_TARGET_ROOM] = Region("Deku Tree MQ Eye Target Room", SCENE_DEKU_TREE, {}, {
diff --git a/soh/soh/Enhancements/randomizer/randomizerTypes.h b/soh/soh/Enhancements/randomizer/randomizerTypes.h
index 6c07665db..fe85c2e1c 100644
--- a/soh/soh/Enhancements/randomizer/randomizerTypes.h
+++ b/soh/soh/Enhancements/randomizer/randomizerTypes.h
@@ -255,6 +255,7 @@ typedef enum {
LOGIC_DEKU_TREE_PUSHED_BASEMENT_BLOCK,
LOGIC_DEKU_TREE_MQ_CLEARED_SE_ROOM,
LOGIC_DEKU_TREE_MQ_WATER_ROOM_TORCHES,
+ LOGIC_DEKU_TREE_MQ_2F_BURNED_WEB,
LOGIC_DC_EYES_LIT,
LOGIC_DC_STAIRS_ROOM_DOOR,
LOGIC_DC_LIFT_PLATFORM,
@@ -710,6 +711,7 @@ typedef enum {
RR_DEKU_TREE_MQ_EYE_TARGET_ROOM,
RR_DEKU_TREE_MQ_COMPASS_ROOM,
RR_DEKU_TREE_MQ_PAST_BOULDER_VINES,
+ RR_DEKU_TREE_MQ_SLINGSHOT_ROOM,
RR_DEKU_TREE_MQ_BASEMENT,
RR_DEKU_TREE_MQ_BASEMENT_SOUTHEAST_ROOM,
RR_DEKU_TREE_MQ_BASEMENT_WATER_ROOM_FRONT,