Fix song of storms cutscene (#6310)

This commit is contained in:
Philip Dubé
2026-02-28 23:51:13 +00:00
committed by GitHub
parent a547d51abb
commit b07c64ecf9
8 changed files with 31 additions and 130 deletions
+2 -2
View File
@@ -728,7 +728,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
play->transitionType = TRANS_TYPE_FADE_WHITE;
break;
case 22:
if (GameInteractor_Should(VB_GIVE_ITEM_REQUIEM_OF_SPIRIT, true)) {
if (GameInteractor_Should(VB_GIVE_ITEM_SONG, true, ITEM_SONG_REQUIEM)) {
Item_Give(play, ITEM_SONG_REQUIEM);
}
play->nextEntranceIndex = ENTR_DESERT_COLOSSUS_EAST_EXIT;
@@ -868,7 +868,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
play->transitionType = TRANS_TYPE_FADE_BLACK_FAST;
break;
case 47:
if (GameInteractor_Should(VB_GIVE_ITEM_NOCTURNE_OF_SHADOW, true)) {
if (GameInteractor_Should(VB_GIVE_ITEM_SONG, true, ITEM_SONG_NOCTURNE)) {
Item_Give(play, ITEM_SONG_NOCTURNE);
}
Flags_SetEventChkInf(EVENTCHKINF_LEARNED_NOCTURNE_OF_SHADOW);
+1 -17
View File
@@ -3859,23 +3859,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
u8 songItemId = ITEM_SONG_MINUET + gOcarinaSongItemMap[msgCtx->ocarinaStaff->state];
if ((songItemId == ITEM_SONG_MINUET &&
GameInteractor_Should(VB_GIVE_ITEM_MINUET_OF_FOREST, true)) ||
(songItemId == ITEM_SONG_BOLERO && GameInteractor_Should(VB_GIVE_ITEM_BOLERO_OF_FIRE, true)) ||
(songItemId == ITEM_SONG_SERENADE &&
GameInteractor_Should(VB_GIVE_ITEM_SERENADE_OF_WATER, true)) ||
(songItemId == ITEM_SONG_REQUIEM &&
GameInteractor_Should(VB_GIVE_ITEM_REQUIEM_OF_SPIRIT, true)) ||
(songItemId == ITEM_SONG_NOCTURNE &&
GameInteractor_Should(VB_GIVE_ITEM_NOCTURNE_OF_SHADOW, true)) ||
(songItemId == ITEM_SONG_PRELUDE &&
GameInteractor_Should(VB_GIVE_ITEM_PRELUDE_OF_LIGHT, true)) ||
(songItemId == ITEM_SONG_LULLABY && GameInteractor_Should(VB_GIVE_ITEM_ZELDAS_LULLABY, true)) ||
(songItemId == ITEM_SONG_EPONA && GameInteractor_Should(VB_GIVE_ITEM_EPONAS_SONG, true)) ||
(songItemId == ITEM_SONG_SARIA && GameInteractor_Should(VB_GIVE_ITEM_SARIAS_SONG, true)) ||
(songItemId == ITEM_SONG_SUN && GameInteractor_Should(VB_GIVE_ITEM_SUNS_SONG, true)) ||
(songItemId == ITEM_SONG_TIME && GameInteractor_Should(VB_GIVE_ITEM_SONG_OF_TIME, true)) ||
(songItemId == ITEM_SONG_STORMS && GameInteractor_Should(VB_GIVE_ITEM_SONG_OF_STORMS, true))) {
if (GameInteractor_Should(VB_GIVE_ITEM_SONG, true, songItemId)) {
Item_Give(play, songItemId);
}
@@ -917,7 +917,7 @@ void func_80986C30(DemoIm* this, PlayState* play) {
func_80985F54(this);
}
Flags_SetEventChkInf(EVENTCHKINF_LEARNED_ZELDAS_LULLABY);
if (GameInteractor_Should(VB_GIVE_ITEM_ZELDAS_LULLABY, true)) {
if (GameInteractor_Should(VB_GIVE_ITEM_SONG, true, ITEM_SONG_LULLABY)) {
Item_Give(play, ITEM_SONG_LULLABY);
}
}
+8 -1
View File
@@ -8,6 +8,7 @@
#include "objects/object_fu/object_fu.h"
#include "scenes/indoors/hakasitarelay/hakasitarelay_scene.h"
#include "soh/ResourceManagerHelpers.h"
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
#define FLAGS \
(ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \
@@ -178,7 +179,13 @@ void func_80A1DBD4(EnFu* this, PlayState* play) {
Sfx_PlaySfxCentered(NA_SE_SY_CORRECT_CHIME);
this->actionFunc = func_80A1DB60;
this->actor.flags &= ~ACTOR_FLAG_TALK_OFFER_AUTO_ACCEPTED;
if (GameInteractor_Should(VB_PLAY_SONG_OF_STORMS_CS, true, this)) {
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gSongOfStormsCs);
gSaveContext.cutsceneTrigger = 1;
}
if (GameInteractor_Should(VB_GIVE_ITEM_SONG, true, ITEM_SONG_STORMS)) {
Item_Give(play, ITEM_SONG_STORMS);
}
play->msgCtx.ocarinaMode = OCARINA_MODE_00;
Flags_SetEventChkInf(EVENTCHKINF_PLAYED_SONG_OF_STORMS_IN_WINDMILL);
} else if (play->msgCtx.ocarinaMode == OCARINA_MODE_02) {
+1 -1
View File
@@ -715,7 +715,7 @@ void func_80AF68E4(EnSa* this, PlayState* play) {
void func_80AF6B20(EnSa* this, PlayState* play) {
if (play->sceneNum == SCENE_SACRED_FOREST_MEADOW) {
if (GameInteractor_Should(VB_GIVE_ITEM_SARIAS_SONG, true)) {
if (GameInteractor_Should(VB_GIVE_ITEM_SONG, true, ITEM_SONG_SARIA)) {
Item_Give(play, ITEM_SONG_SARIA);
}
EnSa_ChangeAnim(this, ENSA_ANIM1_6);
+4 -4
View File
@@ -302,7 +302,7 @@ s32 EnXc_MinuetCS(EnXc* this, PlayState* play) {
gSaveContext.cutsceneTrigger = 1;
}
Flags_SetEventChkInf(EVENTCHKINF_LEARNED_MINUET_OF_FOREST);
if (GameInteractor_Should(VB_GIVE_ITEM_MINUET_OF_FOREST, true)) {
if (GameInteractor_Should(VB_GIVE_ITEM_SONG, true, ITEM_SONG_MINUET)) {
Item_Give(play, ITEM_SONG_MINUET);
}
if (GameInteractor_Should(VB_PLAY_MINUET_OF_FOREST_CS, true)) {
@@ -339,7 +339,7 @@ s32 EnXc_BoleroCS(EnXc* this, PlayState* play) {
gSaveContext.cutsceneTrigger = 1;
}
Flags_SetEventChkInf(EVENTCHKINF_LEARNED_BOLERO_OF_FIRE);
if (GameInteractor_Should(VB_GIVE_ITEM_BOLERO_OF_FIRE, true)) {
if (GameInteractor_Should(VB_GIVE_ITEM_SONG, true, ITEM_SONG_BOLERO)) {
Item_Give(play, ITEM_SONG_BOLERO);
}
if (GameInteractor_Should(VB_PLAY_BOLERO_OF_FIRE_CS, true)) {
@@ -378,7 +378,7 @@ s32 EnXc_SerenadeCS(EnXc* this, PlayState* play) {
gSaveContext.cutsceneTrigger = 1;
}
Flags_SetEventChkInf(EVENTCHKINF_LEARNED_SERENADE_OF_WATER); // Learned Serenade of Water Flag
if (GameInteractor_Should(VB_GIVE_ITEM_SERENADE_OF_WATER, true)) {
if (GameInteractor_Should(VB_GIVE_ITEM_SONG, true, ITEM_SONG_SERENADE)) {
Item_Give(play, ITEM_SONG_SERENADE);
}
osSyncPrintf("ブーツを取った!!!!!!!!!!!!!!!!!!\n");
@@ -2195,7 +2195,7 @@ void EnXc_InitTempleOfTime(EnXc* this, PlayState* play) {
!Flags_GetEventChkInf(EVENTCHKINF_LEARNED_PRELUDE_OF_LIGHT) &&
Flags_GetEventChkInf(EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP))) {
Flags_SetEventChkInf(EVENTCHKINF_LEARNED_PRELUDE_OF_LIGHT);
if (GameInteractor_Should(VB_GIVE_ITEM_PRELUDE_OF_LIGHT, true)) {
if (GameInteractor_Should(VB_GIVE_ITEM_SONG, true, ITEM_SONG_PRELUDE)) {
Item_Give(play, ITEM_SONG_PRELUDE);
}
if (GameInteractor_Should(VB_PLAY_PRELUDE_OF_LIGHT_CS, true)) {