summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJordan Longstaff <JordanLongstaff@users.noreply.github.com>2026-04-08 18:54:04 -0400
committerGitHub <noreply@github.com>2026-04-08 22:54:04 +0000
commit4122d8079ed5167576ae731f8d4e687ad1c94cc1 (patch)
treea772b46a61179ba3e34e515536cb36dc23b6a536
parent40425c8c28b921b478e459365a08709aed6c80c0 (diff)
Faster bean planting (#6473)
-rw-r--r--soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h8
-rw-r--r--soh/soh/Enhancements/timesaver_hook_handlers.cpp1
-rw-r--r--soh/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c4
-rw-r--r--soh/src/overlays/actors/ovl_player_actor/z_player.c4
4 files changed, 15 insertions, 2 deletions
diff --git a/soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h b/soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h
index 0c2c6230a..4e13fdf33 100644
--- a/soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h
+++ b/soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h
@@ -1535,6 +1535,14 @@ typedef enum {
VB_PHANTOM_GANON_DEATH_SCENE,
// #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_PLAY_BEAN_PLANTING_CS,
+
+ // #### `result`
// ##### In `DoorWarp1_ChildWarpOut` - `SCENE_DODONGOS_CAVERN_BOSS`
// ```c
// !Flags_GetEventChkInf(EVENTCHKINF_USED_DODONGOS_CAVERN_BLUE_WARP)
diff --git a/soh/soh/Enhancements/timesaver_hook_handlers.cpp b/soh/soh/Enhancements/timesaver_hook_handlers.cpp
index 4c50a8632..be043b6da 100644
--- a/soh/soh/Enhancements/timesaver_hook_handlers.cpp
+++ b/soh/soh/Enhancements/timesaver_hook_handlers.cpp
@@ -572,6 +572,7 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_li
}
break;
}
+ case VB_PLAY_BEAN_PLANTING_CS:
case VB_PLAY_EYEDROP_CREATION_ANIM:
case VB_PLAY_EYEDROPS_CS:
case VB_PLAY_DROP_FISH_FOR_JABU_CS:
diff --git a/soh/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c b/soh/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c
index 923defcdc..0510e93e2 100644
--- a/soh/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c
+++ b/soh/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c
@@ -551,7 +551,9 @@ void ObjBean_WaitForBean(ObjBean* this, PlayState* play) {
void func_80B8FE00(ObjBean* this) {
this->actionFunc = func_80B8FE3C;
ObjBean_SetDrawMode(this, BEAN_STATE_DRAW_LEAVES);
- this->timer = 60;
+ if (GameInteractor_Should(VB_PLAY_BEAN_PLANTING_CS, true)) {
+ this->timer = 60;
+ }
}
// Link is looking at the soft soil
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 130644968..5aa9d9470 100644
--- a/soh/src/overlays/actors/ovl_player_actor/z_player.c
+++ b/soh/src/overlays/actors/ovl_player_actor/z_player.c
@@ -6063,7 +6063,9 @@ s32 Player_ActionHandler_13(Player* this, PlayState* play) {
Inventory_ChangeAmmo(ITEM_BEAN, -1);
Player_SetupActionPreserveItemAction(play, this, Player_Action_8084279C, 0);
this->stateFlags1 |= PLAYER_STATE1_IN_CUTSCENE;
- this->av2.actionVar2 = 0x50;
+ if (GameInteractor_Should(VB_PLAY_BEAN_PLANTING_CS, true)) {
+ this->av2.actionVar2 = 0x50;
+ }
this->av1.actionVar1 = -1;
}
talkActor->flags |= ACTOR_FLAG_TALK;