Skip to content

Commit 45e4c6c

Browse files
committed
Separate enhancement, use engine event system
1 parent 20e31d4 commit 45e4c6c

4 files changed

Lines changed: 19 additions & 2 deletions

File tree

src/game/level_update.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1259,7 +1259,7 @@ s32 lvl_init_from_save_file(UNUSED s16 arg0, s32 levelNum) {
12591259
#endif
12601260
sWarpDest.type = WARP_TYPE_NOT_WARPING;
12611261
sDelayedWarpOp = WARP_OP_NONE;
1262-
gNeverEnteredCastle = save_file_exists(gCurrSaveFileNum - 1) == FALSE && CVarGetInteger("gEnhancements.DisablePeachCutscene", 0) == 0;
1262+
gNeverEnteredCastle = save_file_exists(gCurrSaveFileNum - 1) == FALSE;
12631263

12641264
gCurrLevelNum = levelNum;
12651265
gCurrCourseNum = COURSE_NONE;
@@ -1273,6 +1273,8 @@ s32 lvl_init_from_save_file(UNUSED s16 arg0, s32 levelNum) {
12731273
select_mario_cam_mode();
12741274
set_yoshi_as_not_dead();
12751275

1276+
CALL_EVENT(LevelInitFromSaveFile);
1277+
12761278
return levelNum;
12771279
}
12781280

src/port/hooks/list/EngineEvent.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,6 @@ DEFINE_EVENT(LevelScriptBeginArea,
2424
DEFINE_EVENT(GeoLayoutCallASM,
2525
GraphNodeFunc* func;
2626
int16_t* parameter;
27-
);
27+
);
28+
29+
DEFINE_EVENT(LevelInitFromSaveFile);

src/port/mods/PortEnhancements.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#define INIT_EVENT_IDS
44

55
#include "sm64.h"
6+
#include "game/level_update.h"
67
#include "menu/title_screen.h"
78
#include "port/hooks/Events.h"
89
#include "assets/bin/segment2.h"
@@ -73,11 +74,18 @@ void PortEnhancements_Init() {
7374
RenderPauseCourseOptions* ev = (RenderPauseCourseOptions*)event;
7475
*ev->render = true;
7576
});
77+
78+
REGISTER_LISTENER(LevelInitFromSaveFile, EVENT_PRIORITY_NORMAL, [](IEvent* event) {
79+
if (CVarGetInteger("gEnhancements.DisableLakituCutscene", 0)) {
80+
gNeverEnteredCastle = false;
81+
}
82+
});
7683
}
7784

7885
void PortEnhancements_Register() {
7986
// Register engine events
8087
REGISTER_EVENT(GameFrameUpdate);
88+
REGISTER_EVENT(LevelInitFromSaveFile);
8189
REGISTER_EVENT(GeoLayoutCallASM);
8290
REGISTER_EVENT(LevelScriptCallLoop);
8391
REGISTER_EVENT(LevelScriptBeginArea);

src/port/ui/GhostshipMenuEnhancements.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,11 @@ void GhostshipMenu::AddMenuEnhancements() {
137137
.CVar(CVAR_ENHANCEMENT("DisablePeachCutscene"))
138138
.RaceDisable(false)
139139
.Options(CheckboxOptions().Tooltip("Skips the Peach cutscene when starting a new game."));
140+
AddWidget(path, "Skip Intro Lakitu", WIDGET_CVAR_CHECKBOX)
141+
.CVar(CVAR_ENHANCEMENT("DisableLakituCutscene"))
142+
.RaceDisable(false)
143+
.Options(CheckboxOptions().Tooltip("The Lakitu will not appear when Mario reaches the bridge outside Peach's \n"
144+
"Castle. Also skips Bowser's message when Mario first enters the castle."));
140145

141146
path = { "Enhancements", "Fixes", SECTION_COLUMN_1 };
142147
AddSidebarEntry("Enhancements", path.sidebarName, 1);

0 commit comments

Comments
 (0)