From 793196d581a678b8d8c8d610769479d730842b4d Mon Sep 17 00:00:00 2001 From: Blockyyy <88585273+Blockyyy@users.noreply.github.com> Date: Thu, 30 Apr 2026 04:24:57 +0200 Subject: [PATCH] add stayInLevelAfterStar constants (#1210) --- autogen/lua_definitions/constants.lua | 9 +++++++++ autogen/lua_definitions/structs.lua | 2 +- docs/lua/constants.md | 8 ++++++++ docs/lua/structs.md | 2 +- src/game/interaction.c | 4 ++-- src/game/level_update.c | 2 +- src/pc/lua/smlua_cobject_autogen.c | 2 +- src/pc/lua/smlua_constants_autogen.c | 3 +++ src/pc/network/network.h | 8 +++++++- 9 files changed, 33 insertions(+), 7 deletions(-) diff --git a/autogen/lua_definitions/constants.lua b/autogen/lua_definitions/constants.lua index 5cb601871..0b08db0ee 100644 --- a/autogen/lua_definitions/constants.lua +++ b/autogen/lua_definitions/constants.lua @@ -4751,6 +4751,15 @@ PLAYER_PVP_REVAMPED = 1 --- @type PvpType --- | `PLAYER_PVP_CLASSIC` --- | `PLAYER_PVP_REVAMPED` +STAR_LEAVE_LEVEL = 0 --- @type StarExitType +STAR_STAY_IN_LEVEL = 1 --- @type StarExitType +STAR_NON_STOP = 2 --- @type StarExitType + +--- @alias StarExitType +--- | `STAR_LEAVE_LEVEL` +--- | `STAR_STAY_IN_LEVEL` +--- | `STAR_NON_STOP` + --- @type integer UNKNOWN_LOCAL_INDEX = (-1) diff --git a/autogen/lua_definitions/structs.lua b/autogen/lua_definitions/structs.lua index 4f3f887f4..d69980893 100644 --- a/autogen/lua_definitions/structs.lua +++ b/autogen/lua_definitions/structs.lua @@ -2158,8 +2158,8 @@ --- @field public playerInteractions PlayerInteractions --- @field public bouncyLevelBounds BouncyLevelBounds --- @field public pvpType PvpType +--- @field public stayInLevelAfterStar StarExitType --- @field public playerKnockbackStrength integer ---- @field public stayInLevelAfterStar integer --- @field public skipIntro integer --- @field public bubbleDeath integer --- @field public enablePlayersInLevelDisplay integer diff --git a/docs/lua/constants.md b/docs/lua/constants.md index c70da9237..0c6021f8b 100644 --- a/docs/lua/constants.md +++ b/docs/lua/constants.md @@ -62,6 +62,7 @@ - [enum PlayerInteractions](#enum-PlayerInteractions) - [enum BouncyLevelBounds](#enum-BouncyLevelBounds) - [enum PvpType](#enum-PvpType) + - [enum StarExitType](#enum-StarExitType) - [network_player.h](#network_playerh) - [enum NetworkPlayerType](#enum-NetworkPlayerType) - [obj_behaviors.c](#obj_behaviorsc) @@ -2234,6 +2235,13 @@ | PLAYER_PVP_CLASSIC | 0 | | PLAYER_PVP_REVAMPED | 1 | +### [enum StarExitType](#StarExitType) +| Identifier | Value | +| :--------- | :---- | +| STAR_LEAVE_LEVEL | 0 | +| STAR_STAY_IN_LEVEL | 1 | +| STAR_NON_STOP | 2 | + [:arrow_up_small:](#)
diff --git a/docs/lua/structs.md b/docs/lua/structs.md index d7be1dc75..0ed41fa74 100644 --- a/docs/lua/structs.md +++ b/docs/lua/structs.md @@ -2826,8 +2826,8 @@ | playerInteractions | [enum PlayerInteractions](constants.md#enum-PlayerInteractions) | | | bouncyLevelBounds | [enum BouncyLevelBounds](constants.md#enum-BouncyLevelBounds) | | | pvpType | [enum PvpType](constants.md#enum-PvpType) | | +| stayInLevelAfterStar | [enum StarExitType](constants.md#enum-StarExitType) | | | playerKnockbackStrength | `integer` | | -| stayInLevelAfterStar | `integer` | | | skipIntro | `integer` | | | bubbleDeath | `integer` | | | enablePlayersInLevelDisplay | `integer` | | diff --git a/src/game/interaction.c b/src/game/interaction.c index 69d14cdf2..356987f5d 100644 --- a/src/game/interaction.c +++ b/src/game/interaction.c @@ -941,7 +941,7 @@ u32 interact_star_or_key(struct MarioState *m, UNUSED u32 interactType, struct O if (m->health >= 0x100) { - if (gServerSettings.stayInLevelAfterStar != 2) { + if (gServerSettings.stayInLevelAfterStar != STAR_NON_STOP) { mario_stop_riding_and_holding(m); } @@ -1015,7 +1015,7 @@ u32 interact_star_or_key(struct MarioState *m, UNUSED u32 interactType, struct O } save_file_do_save(gCurrSaveFileNum - 1, TRUE); - if (noExit && gServerSettings.stayInLevelAfterStar == 2) { + if (noExit && gServerSettings.stayInLevelAfterStar == STAR_NON_STOP) { return TRUE; } diff --git a/src/game/level_update.c b/src/game/level_update.c index f568df29f..23e0c579c 100644 --- a/src/game/level_update.c +++ b/src/game/level_update.c @@ -1144,7 +1144,7 @@ void update_hud_values(void) { gHudDisplay.coins += 1; play_sound(coinSound, gMarioState->marioObj->header.gfx.cameraToObject); - if (gServerSettings.stayInLevelAfterStar > 0 && gCurrCourseNum != COURSE_NONE) { + if (gServerSettings.stayInLevelAfterStar > STAR_LEAVE_LEVEL && gCurrCourseNum != COURSE_NONE) { // retain vanilla behavior if (gLevelValues.numCoinsToLife == 50) { if (gHudDisplay.coins == 50 || gHudDisplay.coins == 100 || gHudDisplay.coins == 150) { diff --git a/src/pc/lua/smlua_cobject_autogen.c b/src/pc/lua/smlua_cobject_autogen.c index e31f8f790..0a60718dc 100644 --- a/src/pc/lua/smlua_cobject_autogen.c +++ b/src/pc/lua/smlua_cobject_autogen.c @@ -2500,7 +2500,7 @@ static struct LuaObjectField sServerSettingsFields[LUA_SERVER_SETTINGS_FIELD_COU { "playerKnockbackStrength", LVT_U8, offsetof(struct ServerSettings, playerKnockbackStrength), false, LOT_NONE, 1, sizeof(u8) }, { "pvpType", LVT_S32, offsetof(struct ServerSettings, pvpType), false, LOT_NONE, 1, sizeof(enum PvpType) }, { "skipIntro", LVT_U8, offsetof(struct ServerSettings, skipIntro), false, LOT_NONE, 1, sizeof(u8) }, - { "stayInLevelAfterStar", LVT_U8, offsetof(struct ServerSettings, stayInLevelAfterStar), false, LOT_NONE, 1, sizeof(u8) }, + { "stayInLevelAfterStar", LVT_S32, offsetof(struct ServerSettings, stayInLevelAfterStar), false, LOT_NONE, 1, sizeof(enum StarExitType) }, }; #define LUA_SPAWN_INFO_FIELD_COUNT 8 diff --git a/src/pc/lua/smlua_constants_autogen.c b/src/pc/lua/smlua_constants_autogen.c index aa11caa9b..95e660f78 100644 --- a/src/pc/lua/smlua_constants_autogen.c +++ b/src/pc/lua/smlua_constants_autogen.c @@ -2337,6 +2337,9 @@ char gSmluaConstants[] = "" "BOUNCY_LEVEL_BOUNDS_ON_CAP=2\n" "PLAYER_PVP_CLASSIC=0\n" "PLAYER_PVP_REVAMPED=1\n" +"STAR_LEAVE_LEVEL=0\n" +"STAR_STAY_IN_LEVEL=1\n" +"STAR_NON_STOP=2\n" "UNKNOWN_LOCAL_INDEX=(-1)\n" "UNKNOWN_GLOBAL_INDEX=(-1)\n" "UNKNOWN_NETWORK_INDEX=(-1)\n" diff --git a/src/pc/network/network.h b/src/pc/network/network.h index 1ba8e6320..841a580a6 100644 --- a/src/pc/network/network.h +++ b/src/pc/network/network.h @@ -74,12 +74,18 @@ enum PvpType { PLAYER_PVP_REVAMPED }; +enum StarExitType { + STAR_LEAVE_LEVEL, + STAR_STAY_IN_LEVEL, + STAR_NON_STOP, +}; + struct ServerSettings { enum PlayerInteractions playerInteractions; enum BouncyLevelBounds bouncyLevelBounds; enum PvpType pvpType; + enum StarExitType stayInLevelAfterStar; u8 playerKnockbackStrength; - u8 stayInLevelAfterStar; u8 skipIntro; u8 bubbleDeath; u8 enablePlayersInLevelDisplay;