Skip the Mweep cutscene (#4646)

* Skip the Mweep cutscene

* Fix bug: Ruto's letter was not removed from bottle
This commit is contained in:
Jordan Longstaff 2024-12-09 11:13:45 -05:00 committed by GitHub
parent 4010229de5
commit d0bfa6860b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 30 additions and 10 deletions

View File

@ -309,6 +309,8 @@ typedef enum {
// Vanilla condition: !EVENTCHKINF_PULLED_MASTER_SWORD_FROM_PEDESTAL // Vanilla condition: !EVENTCHKINF_PULLED_MASTER_SWORD_FROM_PEDESTAL
VB_PLAY_PULL_MASTER_SWORD_CS, VB_PLAY_PULL_MASTER_SWORD_CS,
VB_PLAY_DROP_FISH_FOR_JABU_CS, VB_PLAY_DROP_FISH_FOR_JABU_CS,
// Opt: *EnKz
VB_PLAY_MWEEP_CS,
// Vanilla condition: player->getItemId == GI_GAUNTLETS_SILVER // Vanilla condition: player->getItemId == GI_GAUNTLETS_SILVER
VB_PLAY_NABOORU_CAPTURED_CS, VB_PLAY_NABOORU_CAPTURED_CS,
VB_PLAY_ZELDAS_LULLABY_CS, VB_PLAY_ZELDAS_LULLABY_CS,

View File

@ -404,6 +404,14 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_li
} }
break; break;
} }
case VB_PLAY_MWEEP_CS: {
if (CVarGetInteger(CVAR_ENHANCEMENT("TimeSavers.SkipCutscene.Story"), 0)) {
*should = false;
Inventory_ReplaceItem(gPlayState, ITEM_LETTER_RUTO, ITEM_BOTTLE);
Flags_SetEventChkInf(EVENTCHKINF_KING_ZORA_MOVED);
}
break;
}
case VB_PLAY_EYEDROP_CREATION_ANIM: case VB_PLAY_EYEDROP_CREATION_ANIM:
case VB_PLAY_EYEDROPS_CS: case VB_PLAY_EYEDROPS_CS:
case VB_PLAY_DROP_FISH_FOR_JABU_CS: case VB_PLAY_DROP_FISH_FOR_JABU_CS:

View File

@ -437,17 +437,23 @@ void EnKz_SetupMweep(EnKz* this, PlayState* play) {
Vec3f pos; Vec3f pos;
Vec3f initPos; Vec3f initPos;
this->cutsceneCamera = Play_CreateSubCamera(play); bool shouldPlayCutscene = GameInteractor_Should(VB_PLAY_MWEEP_CS, true);
this->gameplayCamera = play->activeCamera;
Play_ChangeCameraStatus(play, this->gameplayCamera, CAM_STAT_WAIT); if (shouldPlayCutscene) {
Play_ChangeCameraStatus(play, this->cutsceneCamera, CAM_STAT_ACTIVE); this->cutsceneCamera = Play_CreateSubCamera(play);
this->gameplayCamera = play->activeCamera;
Play_ChangeCameraStatus(play, this->gameplayCamera, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, this->cutsceneCamera, CAM_STAT_ACTIVE);
}
pos = this->actor.world.pos; pos = this->actor.world.pos;
initPos = this->actor.home.pos; initPos = this->actor.home.pos;
pos.y += 60.0f; pos.y += 60.0f;
initPos.y += -100.0f; initPos.y += -100.0f;
initPos.z += 260.0f; initPos.z += 260.0f;
Play_CameraSetAtEye(play, this->cutsceneCamera, &pos, &initPos); if (shouldPlayCutscene) {
Player_SetCsActionWithHaltedActors(play, &this->actor, 8); Play_CameraSetAtEye(play, this->cutsceneCamera, &pos, &initPos);
Player_SetCsActionWithHaltedActors(play, &this->actor, 8);
}
this->actor.speedXZ = 0.1f * CVarGetFloat(CVAR_ENHANCEMENT("MweepSpeed"), 1.0f); this->actor.speedXZ = 0.1f * CVarGetFloat(CVAR_ENHANCEMENT("MweepSpeed"), 1.0f);
this->actionFunc = EnKz_Mweep; this->actionFunc = EnKz_Mweep;
} }
@ -462,7 +468,9 @@ void EnKz_Mweep(EnKz* this, PlayState* play) {
pos.y += 60.0f; pos.y += 60.0f;
initPos.y += -100.0f; initPos.y += -100.0f;
initPos.z += 260.0f; initPos.z += 260.0f;
Play_CameraSetAtEye(play, this->cutsceneCamera, &pos, &initPos); if (GameInteractor_Should(VB_PLAY_MWEEP_CS, true)) {
Play_CameraSetAtEye(play, this->cutsceneCamera, &pos, &initPos);
}
if ((EnKz_FollowPath(this, play) == 1) && (this->waypoint == 0)) { if ((EnKz_FollowPath(this, play) == 1) && (this->waypoint == 0)) {
Animation_ChangeByInfo(&this->skelanime, sAnimationInfo, ENKZ_ANIM_1); Animation_ChangeByInfo(&this->skelanime, sAnimationInfo, ENKZ_ANIM_1);
Inventory_ReplaceItem(play, ITEM_LETTER_RUTO, ITEM_BOTTLE); Inventory_ReplaceItem(play, ITEM_LETTER_RUTO, ITEM_BOTTLE);
@ -477,9 +485,11 @@ void EnKz_Mweep(EnKz* this, PlayState* play) {
} }
void EnKz_StopMweep(EnKz* this, PlayState* play) { void EnKz_StopMweep(EnKz* this, PlayState* play) {
Play_ChangeCameraStatus(play, this->gameplayCamera, CAM_STAT_ACTIVE); if (GameInteractor_Should(VB_PLAY_MWEEP_CS, true)) {
Play_ClearCamera(play, this->cutsceneCamera); Play_ChangeCameraStatus(play, this->gameplayCamera, CAM_STAT_ACTIVE);
Player_SetCsActionWithHaltedActors(play, &this->actor, 7); Play_ClearCamera(play, this->cutsceneCamera);
Player_SetCsActionWithHaltedActors(play, &this->actor, 7);
}
this->actionFunc = EnKz_Wait; this->actionFunc = EnKz_Wait;
} }