summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris <f1ana@users.noreply.github.com>2026-10-10 22:35:34 -0400
committerGitHub <noreply@github.com>2026-10-11 02:35:34 +0000
commit7e510f69ff17b0eeb23abd3d5d900add7e26065e (patch)
tree4818487812dcf065c28c1eb4a4d938c9a6a4ef67
parenteea5129a8c5d462706116a958a6a4574e2f7357b (diff)
[Bugfix] Restore Ganondorf Lights Hint (#7363)
-rw-r--r--soh/soh/Enhancements/TimeSavers/SkipCutscene/GanonIntros.cpp10
-rw-r--r--soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h1
-rw-r--r--soh/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c6
3 files changed, 13 insertions, 4 deletions
diff --git a/soh/soh/Enhancements/TimeSavers/SkipCutscene/GanonIntros.cpp b/soh/soh/Enhancements/TimeSavers/SkipCutscene/GanonIntros.cpp
index 1f634a842..e7dc93f1e 100644
--- a/soh/soh/Enhancements/TimeSavers/SkipCutscene/GanonIntros.cpp
+++ b/soh/soh/Enhancements/TimeSavers/SkipCutscene/GanonIntros.cpp
@@ -2,7 +2,9 @@
#include <libultraship/bridge/consolevariablebridge.h>
+#include "soh/Enhancements/custom-message/CustomMessageTypes.h"
#include "soh/Enhancements/game-interactor/GameInteractor.h"
+#include "soh/Enhancements/randomizer/SeedContext.h"
#include "soh/ShipInit.hpp"
extern "C" {
@@ -29,7 +31,13 @@ void RegisterGanonIntros() {
}
});
- COND_VB_SHOULD(VB_PLAY_GANONDORF_INTRO_CS, CVAR_VALUE || IS_RANDO || IS_BOSS_RUSH, { *should = false; });
+ COND_VB_SHOULD(VB_PLAY_GANONDORF_INTRO_CS, CVAR_VALUE || IS_RANDO || IS_BOSS_RUSH, {
+ va_arg(args, void*);
+ u16 textId = va_arg(args, int);
+ if (textId != TEXT_GANONDORF || !IS_RANDO || !RAND_GET_OPTION(RSK_GANONDORF_HINT)) {
+ *should = false;
+ }
+ });
// Skip Ganon rising from the rubble, transforming and landing. Skip to knocking sword away.
COND_VB_SHOULD(VB_PLAY_GANON_INTRO_CS, CVAR_VALUE, {
diff --git a/soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h b/soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h
index 41f34ca4e..dac11a293 100644
--- a/soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h
+++ b/soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h
@@ -2234,6 +2234,7 @@ typedef enum {
// ```
// #### `args`
// - `*BossGanon`
+ // - `u16` text ID
VB_PLAY_GANONDORF_INTRO_CS,
// #### `result`
diff --git a/soh/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c b/soh/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c
index 6311e0bdb..58bd1b016 100644
--- a/soh/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c
+++ b/soh/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c
@@ -918,7 +918,7 @@ void BossGanon_IntroCutscene(BossGanon* this, PlayState* play) {
this->csTimer = 0;
this->csCamFov = 60.0f;
BossGanon_SetIntroCsCamera(this, 12);
- if (GameInteractor_Should(VB_PLAY_GANONDORF_INTRO_CS, true, this)) {
+ if (GameInteractor_Should(VB_PLAY_GANONDORF_INTRO_CS, true, this, 0x70CB)) {
Message_StartTextbox(play, 0x70CB, NULL);
}
}
@@ -942,7 +942,7 @@ void BossGanon_IntroCutscene(BossGanon* this, PlayState* play) {
this->csState = 19;
this->csTimer = 0;
- if (GameInteractor_Should(VB_PLAY_GANONDORF_INTRO_CS, true, this)) {
+ if (GameInteractor_Should(VB_PLAY_GANONDORF_INTRO_CS, true, this, 0x70CC)) {
Message_StartTextbox(play, 0x70CC, NULL);
}
Animation_MorphToPlayOnce(&this->skelAnime, &gGanondorfRaiseHandStartAnim, -5.0f);
@@ -985,7 +985,7 @@ void BossGanon_IntroCutscene(BossGanon* this, PlayState* play) {
}
if ((this->csTimer > 80) && (Message_GetState(&play->msgCtx) == TEXT_STATE_NONE)) {
- if (!GameInteractor_Should(VB_PLAY_GANONDORF_INTRO_CS, true, this)) {
+ if (!GameInteractor_Should(VB_PLAY_GANONDORF_INTRO_CS, true, this, 0)) {
this->timers[2] = 30;
this->csCamAt.x = this->unk_1FC.x - 10.0f;
this->csCamAt.y = this->unk_1FC.y + 30.0f;