diff options
| author | djevangelia <263709373+djevangelia@users.noreply.github.com> | 2026-07-13 17:02:11 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-07-13 15:02:11 +0000 |
| commit | d1d6a564e57a80f6f091b036e325516cffb8b009 (patch) | |
| tree | 600aa3c621901e4bb6cce87f7edeebd16885df55 | |
| parent | 80fb8a8aa58c885327734915b4396c1d336fb36d (diff) | |
Bugfix, grotto boulder block respawn from water voidout (#6854)
| -rw-r--r-- | soh/soh/Enhancements/randomizer/hook_handlers.cpp | 4 | ||||
| -rw-r--r-- | soh/src/overlays/actors/ovl_player_actor/z_player.c | 4 |
2 files changed, 7 insertions, 1 deletions
diff --git a/soh/soh/Enhancements/randomizer/hook_handlers.cpp b/soh/soh/Enhancements/randomizer/hook_handlers.cpp index 3225bd0ff..bed8946b2 100644 --- a/soh/soh/Enhancements/randomizer/hook_handlers.cpp +++ b/soh/soh/Enhancements/randomizer/hook_handlers.cpp @@ -2790,7 +2790,8 @@ f32 triforcePieceScale; void RandomizerOnPlayerUpdateHandler() { if ((GET_PLAYER(gPlayState)->stateFlags1 & PLAYER_STATE1_IN_WATER) && !Flags_GetRandomizerInf(RAND_INF_CAN_SWIM) && - CUR_EQUIP_VALUE(EQUIP_TYPE_BOOTS) != EQUIP_VALUE_BOOTS_IRON) { + CUR_EQUIP_VALUE(EQUIP_TYPE_BOOTS) != EQUIP_VALUE_BOOTS_IRON && + gPlayState->transitionTrigger == TRANS_TRIGGER_OFF) { // if you void out in water temple without swim you get instantly kicked out to prevent softlocks if (gPlayState->sceneNum == SCENE_WATER_TEMPLE) { GameInteractor::RawAction::TeleportPlayer( @@ -2816,6 +2817,7 @@ void RandomizerOnPlayerUpdateHandler() { gSaveContext.respawnFlag = 0; } else { Play_TriggerVoidOut(gPlayState); + Grotto_ForceGrottoReturnOnSpecialEntrance(); } } } diff --git a/soh/src/overlays/actors/ovl_player_actor/z_player.c b/soh/src/overlays/actors/ovl_player_actor/z_player.c index 6ef4e4648..7ba300b63 100644 --- a/soh/src/overlays/actors/ovl_player_actor/z_player.c +++ b/soh/src/overlays/actors/ovl_player_actor/z_player.c @@ -10677,6 +10677,10 @@ void Player_StartMode_Door(PlayState* play, Player* this) { } void Player_StartMode_Grotto(PlayState* play, Player* this) { + // If can respawn from water to grotto, need to set normal speed factor for the jump + if (IS_RANDO) { + sWaterSpeedFactor = 1.0f; + } func_808389E8(this, &gPlayerAnim_link_normal_jump, 12.0f, play); Player_SetupAction(play, this, Player_Action_8084F9C0, 0); this->stateFlags1 |= PLAYER_STATE1_IN_CUTSCENE; |
