diff --git a/soh/soh/Enhancements/randomizer/hook_handlers.cpp b/soh/soh/Enhancements/randomizer/hook_handlers.cpp index 6712a5b6f..cd0790bf4 100644 --- a/soh/soh/Enhancements/randomizer/hook_handlers.cpp +++ b/soh/soh/Enhancements/randomizer/hook_handlers.cpp @@ -309,7 +309,9 @@ void RandomizerOnExternalCheckHandler(uint32_t randomizerCheck) { // Receiving the OoT or Iron Boots chest locations without preventing the locations locked behind them. // OoT locks Song of Time, Iron boots chest locks the song from Sheik in Ice Cavern. - if (rc == RC_HF_OCARINA_OF_TIME_ITEM || rc == RC_ICE_CAVERN_IRON_BOOTS_CHEST) { + // We also skip the bow chest in Forest Temple as the chest would spawn while the Stalfos fight still happens, + // leading to a double chest spawn. + if (rc == RC_HF_OCARINA_OF_TIME_ITEM || rc == RC_ICE_CAVERN_IRON_BOOTS_CHEST || RC_FOREST_TEMPLE_BOW_CHEST) { randomizerQueuedChecks.push(rc); return; } @@ -391,8 +393,12 @@ void RandomizerOnPlayerUpdateForRCQueueHandler() { // When Ocarina or Iron Boots chest has been received externally before, and then picked up in the game itself, // it'll be skipped and not give the song properly because the RC is already checked off. So instead we handle // it here and send out the check locked behind them manually. - if ((rc == RC_HF_OCARINA_OF_TIME_ITEM || rc == RC_ICE_CAVERN_IRON_BOOTS_CHEST) && loc->HasObtained()) { - RandomizerOnExternalCheckHandler(rc); + if (loc->HasObtained()) { + if (rc == RC_HF_OCARINA_OF_TIME_ITEM) { + RandomizerOnExternalCheckHandler(RC_SONG_FROM_OCARINA_OF_TIME); + } else if (rc == RC_ICE_CAVERN_IRON_BOOTS_CHEST) { + RandomizerOnExternalCheckHandler(RC_SHEIK_IN_ICE_CAVERN); + } } if (loc->HasObtained()) {