diff --git a/soh/soh/Enhancements/TimeSavers/timesaver_hook_handlers.cpp b/soh/soh/Enhancements/TimeSavers/timesaver_hook_handlers.cpp index 96c3c9455d..81b661b030 100644 --- a/soh/soh/Enhancements/TimeSavers/timesaver_hook_handlers.cpp +++ b/soh/soh/Enhancements/TimeSavers/timesaver_hook_handlers.cpp @@ -697,6 +697,13 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_li } break; } + case VB_PLAY_TIMEBLOCK_CS: { + if (CVarGetInteger(CVAR_ENHANCEMENT("TimeSavers.SkipCutscene.OnePoint"), IS_RANDO)) { + // Todo: Preferable if possible to turn camera as if SoT block cutscene + *should = false; + } + break; + } case VB_PLAY_GORON_FREE_CS: { if (CVarGetInteger(CVAR_ENHANCEMENT("TimeSavers.SkipCutscene.Story"), IS_RANDO)) { *should = false; diff --git a/soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h b/soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h index f62d3e71fa..1d5fbad065 100644 --- a/soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h +++ b/soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h @@ -1743,6 +1743,14 @@ typedef enum { // - `*EnDaiku` VB_PLAY_CARPENTER_FREE_CS, + // #### `result` + // ```c + // true if one point cutscene skip not enabled, or not randomizer + // ``` + // #### `args` + // - none + VB_PLAY_TIMEBLOCK_CS, + // #### `result` // Close enough & various cutscene checks // ```c diff --git a/soh/src/overlays/actors/ovl_Obj_Timeblock/z_obj_timeblock.c b/soh/src/overlays/actors/ovl_Obj_Timeblock/z_obj_timeblock.c index 273ca1303d..b158a68612 100644 --- a/soh/src/overlays/actors/ovl_Obj_Timeblock/z_obj_timeblock.c +++ b/soh/src/overlays/actors/ovl_Obj_Timeblock/z_obj_timeblock.c @@ -6,6 +6,7 @@ #include "z_obj_timeblock.h" #include "objects/object_timeblock/object_timeblock.h" +#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_UPDATE_DURING_OCARINA | \ @@ -218,8 +219,11 @@ void ObjTimeblock_Normal(ObjTimeblock* this, PlayState* play) { ObjTimeblock_SpawnDemoEffect(this, play); this->demoEffectTimer = 160; - // Possibly points the camera to this actor - OnePointCutscene_Attention(play, &this->dyna.actor); + if (GameInteractor_Should(VB_PLAY_TIMEBLOCK_CS, true, this)) { + // Possibly points the camera to this actor + OnePointCutscene_Attention(play, &this->dyna.actor); + } + // "◯◯◯◯ Time Block Attention Camera (frame counter %d)\n" osSyncPrintf("◯◯◯◯ Time Block 注目カメラ (frame counter %d)\n", play->state.frames); @@ -277,7 +281,11 @@ void ObjTimeblock_AltBehaviorVisible(ObjTimeblock* this, PlayState* play) { this->demoEffectFirstPartTimer = 12; ObjTimeblock_SpawnDemoEffect(this, play); this->demoEffectTimer = 160; - OnePointCutscene_Attention(play, &this->dyna.actor); + + if (GameInteractor_Should(VB_PLAY_TIMEBLOCK_CS, true, this)) { + OnePointCutscene_Attention(play, &this->dyna.actor); + } + // "Time Block Attention Camera (frame counter)" osSyncPrintf("◯◯◯◯ Time Block 注目カメラ (frame counter %d)\n", play->state.frames); ObjTimeblock_ToggleSwitchFlag(play, this->dyna.actor.params & 0x3F); diff --git a/soh/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.c b/soh/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.c index f85f1859b3..435063d9fd 100644 --- a/soh/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.c +++ b/soh/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.c @@ -6,6 +6,7 @@ #include "z_obj_warp2block.h" #include "objects/object_timeblock/object_timeblock.h" +#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #include "vt.h" #define FLAGS \ @@ -280,7 +281,9 @@ void func_80BA2610(ObjWarp2block* this, PlayState* play) { if ((func_80BA2304(this, play) != 0) && (this->unk_16C <= 0)) { ObjWarp2block_Spawn(this, play); this->unk_16C = 0xA0; - OnePointCutscene_Attention(play, &this->dyna.actor); + if (GameInteractor_Should(VB_PLAY_TIMEBLOCK_CS, true, this)) { + OnePointCutscene_Attention(play, &this->dyna.actor); + } this->unk_170 = 0xC; }