summaryrefslogtreecommitdiff
path: root/soh
diff options
context:
space:
mode:
authorPepper0ni <93387759+Pepper0ni@users.noreply.github.com>2026-08-03 14:37:46 +0100
committerGitHub <noreply@github.com>2026-08-03 13:37:46 +0000
commit6889132708fe1f3df628802cb5c3bcd1bed714db (patch)
treef4407d9ae424c749f862e03e1a9676512c408454 /soh
parent44f680a0b96412929638c7dd0bdfff639b689588 (diff)
Fix potential key softlock with hover boosts in MQ spirit (#7014)HEADdevelop
Using hover recoils, Adult can reach the symphony room lock without having access to Statue Room and thus the shared area of MQ spirit. This means that child logically needs an extra key to pass their early locks and get shared checks as adult can waste it, but it was not reflected in the current logic. This change fixes the issue, requiring an extra key for the first 2 child locks while both hover boost tricks are on unless either the grate in 3 suns room (which gives a hover sliding adult statue room access) is both open and climbable, or Adult already has reverse access to the dungeon, either of which giving the shared key logic assumed Statue Room access.
Diffstat (limited to 'soh')
-rw-r--r--soh/soh/Enhancements/randomizer/location_access/dungeons/spirit_temple.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/soh/soh/Enhancements/randomizer/location_access/dungeons/spirit_temple.cpp b/soh/soh/Enhancements/randomizer/location_access/dungeons/spirit_temple.cpp
index 07e3ed048..ce09d6d33 100644
--- a/soh/soh/Enhancements/randomizer/location_access/dungeons/spirit_temple.cpp
+++ b/soh/soh/Enhancements/randomizer/location_access/dungeons/spirit_temple.cpp
@@ -688,7 +688,10 @@ void RegionTable_Init_SpiritTemple() {
//Exits
ENTRANCE(RR_SPIRIT_TEMPLE_MQ_CHILD_SIDE_HUB, logic->CanUse(RG_CRAWL) && logic->Get(LOGIC_SPIRIT_MQ_CRAWL_BOULDER)),
//This tracks possible child access, if adult has not entered STATUE_ROOM. Certain Child Access is checked for separately as 7 Keys
- ENTRANCE(RR_SPIRIT_TEMPLE_MQ_UNDER_LIKE_LIKE, logic->SmallKeys(SCENE_SPIRIT_TEMPLE, 1)),
+ //Needs 2 keys if hover recoils are on because you can recoil past the jet and waste a key without having Statue Room Access.
+ //If the clip through the grate in 3 suns room is added to logic, being able to perform that will reduce the requirement as well.
+ ENTRANCE(RR_SPIRIT_TEMPLE_MQ_UNDER_LIKE_LIKE, logic->SmallKeys(SCENE_SPIRIT_TEMPLE,
+ (ctx->GetTrickOption(RT_HOVER_BOOST_SIMPLE) && !((logic->Get(LOGIC_SPIRIT_MQ_3SUNS_ENEMIES) && (logic->CanUse(RG_CLIMB) || logic->CanUse(RG_LONGSHOT))) || logic->Get(LOGIC_REVERSE_SPIRIT_ADULT))) ? 2 : 1)),
});
areaTable[RR_SPIRIT_TEMPLE_MQ_UNDER_LIKE_LIKE] = Region("Spirit Temple MQ Under Like Like", SCENE_SPIRIT_TEMPLE, {}, {
@@ -711,7 +714,8 @@ void RegionTable_Init_SpiritTemple() {
//Exits
ENTRANCE(RR_SPIRIT_TEMPLE_MQ_UNDER_LIKE_LIKE, logic->CanHitSwitch()),
//This exit only governs child forwards access, adult and reverse access starts on the other side so never checks this
- ENTRANCE(RR_SPIRIT_TEMPLE_MQ_STATUE_ROOM_CHILD, logic->SmallKeys(SCENE_SPIRIT_TEMPLE, 2)),
+ ENTRANCE(RR_SPIRIT_TEMPLE_MQ_STATUE_ROOM_CHILD, logic->SmallKeys(SCENE_SPIRIT_TEMPLE,
+ (ctx->GetTrickOption(RT_HOVER_BOOST_SIMPLE) && !((logic->Get(LOGIC_SPIRIT_MQ_3SUNS_ENEMIES) && (logic->CanUse(RG_CLIMB) || logic->CanUse(RG_LONGSHOT))) || logic->Get(LOGIC_REVERSE_SPIRIT_ADULT))) ? 3 : 2)),
});
areaTable[RR_SPIRIT_TEMPLE_MQ_STATUE_ROOM_CHILD] = Region("Spirit Temple MQ Statue Room Child", SCENE_SPIRIT_TEMPLE, {}, {