Enhancement, add SoT blocks to one point cutscene skip (#6848)

This commit is contained in:
djevangelia
2026-07-08 18:04:29 +02:00
committed by GitHub
parent 3a12eeaa71
commit 2fc787d64b
4 changed files with 30 additions and 4 deletions
@@ -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;
@@ -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
@@ -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);
@@ -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;
}