diff --git a/autogen/convert_constants.py b/autogen/convert_constants.py
index 9c7ebfa5c..73b9ed176 100644
--- a/autogen/convert_constants.py
+++ b/autogen/convert_constants.py
@@ -36,7 +36,8 @@ in_files = [
"src/game/obj_behaviors_2.h",
"include/dialog_ids.h",
"include/seq_ids.h",
- "include/surface_terrains.h"
+ "include/surface_terrains.h",
+ "src/game/level_update.h"
]
exclude_constants = {
diff --git a/autogen/convert_functions.py b/autogen/convert_functions.py
index 7054bed05..449cf62c3 100644
--- a/autogen/convert_functions.py
+++ b/autogen/convert_functions.py
@@ -52,6 +52,7 @@ in_files = [
"src/game/object_list_processor.h",
"src/game/behavior_actions.h",
"src/game/mario_misc.h",
+ "src/game/level_update.h"
]
override_allowed_functions = {
@@ -62,6 +63,7 @@ override_allowed_functions = {
"src/pc/lua/utils/smlua_model_utils.h": [ "smlua_model_util_get_id" ],
"src/game/object_list_processor.h": [ "set_object_respawn_info_bits" ],
"src/game/mario_misc.h": [ "bhv_toad.*", "bhv_unlock_door.*" ],
+ "src/game/level_update.h": [ "level_trigger_warp" ],
}
override_disallowed_functions = {
diff --git a/autogen/lua_definitions/constants.lua b/autogen/lua_definitions/constants.lua
index 50fdbbb9e..c0bbb75c6 100644
--- a/autogen/lua_definitions/constants.lua
+++ b/autogen/lua_definitions/constants.lua
@@ -2691,16 +2691,25 @@ CT_MAX = 5
--- @class PlayerParts
--- @type PlayerParts
-SHIRT = 0
+PANTS = 0
--- @type PlayerParts
-PANTS = 1
+SHIRT = 1
--- @type PlayerParts
GLOVES = 2
--- @type PlayerParts
-PLAYER_PART_MAX = 3
+SHOES = 3
+
+--- @type PlayerParts
+HAIR = 4
+
+--- @type PlayerParts
+SKIN = 5
+
+--- @type PlayerParts
+PLAYER_PART_MAX = 6
--- @class DialogId
@@ -3734,6 +3743,173 @@ LEVEL_UNKNOWN_38 = 38
--- @type LevelNum
LEVEL_COUNT = 39
+--- @type integer
+MARIO_SPAWN_AIRBORNE = 0x12
+
+--- @type integer
+MARIO_SPAWN_AIRBORNE_DEATH = 0x23
+
+--- @type integer
+MARIO_SPAWN_AIRBORNE_STAR_COLLECT = 0x22
+
+--- @type integer
+MARIO_SPAWN_DEATH = 0x15
+
+--- @type integer
+MARIO_SPAWN_DOOR_WARP = 0x01
+
+--- @type integer
+MARIO_SPAWN_FLYING = 0x17
+
+--- @type integer
+MARIO_SPAWN_HARD_AIR_KNOCKBACK = 0x13
+
+--- @type integer
+MARIO_SPAWN_INSTANT_ACTIVE = 0x10
+
+--- @type integer
+MARIO_SPAWN_LAUNCH_DEATH = 0x25
+
+--- @type integer
+MARIO_SPAWN_LAUNCH_STAR_COLLECT = 0x24
+
+--- @type integer
+MARIO_SPAWN_PAINTING_DEATH = 0x21
+
+--- @type integer
+MARIO_SPAWN_PAINTING_STAR_COLLECT = 0x20
+
+--- @type integer
+MARIO_SPAWN_SPIN_AIRBORNE = 0x16
+
+--- @type integer
+MARIO_SPAWN_SPIN_AIRBORNE_CIRCLE = 0x14
+
+--- @type integer
+MARIO_SPAWN_SWIMMING = 0x11
+
+--- @type integer
+MARIO_SPAWN_TELEPORT = 0x04
+
+--- @type integer
+MARIO_SPAWN_UNKNOWN_02 = 0x02
+
+--- @type integer
+MARIO_SPAWN_UNKNOWN_03 = 0x03
+
+--- @type integer
+MARIO_SPAWN_UNKNOWN_27 = 0x27
+
+--- @type integer
+TIMER_CONTROL_HIDE = 3
+
+--- @type integer
+TIMER_CONTROL_SHOW = 0
+
+--- @type integer
+TIMER_CONTROL_START = 1
+
+--- @type integer
+TIMER_CONTROL_STOP = 2
+
+--- @type integer
+WARP_OP_CREDITS_END = 0x15
+
+--- @type integer
+WARP_OP_CREDITS_NEXT = 0x18
+
+--- @type integer
+WARP_OP_CREDITS_START = 0x17
+
+--- @type integer
+WARP_OP_DEATH = 0x12
+
+--- @type integer
+WARP_OP_DEMO_END = 0x19
+
+--- @type integer
+WARP_OP_DEMO_NEXT = 0x16
+
+--- @type integer
+WARP_OP_EXIT = 0x21
+
+--- @type integer
+WARP_OP_FORCE_SYNC = 0x20
+
+--- @type integer
+WARP_OP_GAME_OVER = 0x14
+
+--- @type integer
+WARP_OP_LOOK_UP = 0x01
+
+--- @type integer
+WARP_OP_NONE = 0x00
+
+--- @type integer
+WARP_OP_SPIN_SHRINK = 0x02
+
+--- @type integer
+WARP_OP_STAR_EXIT = 0x11
+
+--- @type integer
+WARP_OP_TELEPORT = 0x05
+
+--- @type integer
+WARP_OP_TRIGGERS_LEVEL_SELECT = 0x10
+
+--- @type integer
+WARP_OP_WARP_DOOR = 0x03
+
+--- @type integer
+WARP_OP_WARP_FLOOR = 0x13
+
+--- @type integer
+WARP_OP_WARP_OBJECT = 0x04
+
+--- @type integer
+WARP_TYPE_CHANGE_AREA = 2
+
+--- @type integer
+WARP_TYPE_CHANGE_LEVEL = 1
+
+--- @type integer
+WARP_TYPE_NOT_WARPING = 0
+
+--- @type integer
+WARP_TYPE_SAME_AREA = 3
+
+--- @class HUDDisplayFlag
+
+--- @type HUDDisplayFlag
+HUD_DISPLAY_FLAG_LIVES = 0x0001
+
+--- @type HUDDisplayFlag
+HUD_DISPLAY_FLAG_COIN_COUNT = 0x0002
+
+--- @type HUDDisplayFlag
+HUD_DISPLAY_FLAG_STAR_COUNT = 0x0004
+
+--- @type HUDDisplayFlag
+HUD_DISPLAY_FLAG_CAMERA_AND_POWER = 0x0008
+
+--- @type HUDDisplayFlag
+HUD_DISPLAY_FLAG_KEYS = 0x0010
+
+--- @type HUDDisplayFlag
+HUD_DISPLAY_FLAG_UNKNOWN_0020 = 0x0020
+
+--- @type HUDDisplayFlag
+HUD_DISPLAY_FLAG_TIMER = 0x0040
+
+--- @type HUDDisplayFlag
+HUD_DISPLAY_FLAG_EMPHASIZE_POWER = 0x8000
+
+--- @type HUDDisplayFlag
+HUD_DISPLAY_NONE = 0x0000
+
+--- @type HUDDisplayFlag
+HUD_DISPLAY_DEFAULT = HUD_DISPLAY_FLAG_LIVES | HUD_DISPLAY_FLAG_COIN_COUNT | HUD_DISPLAY_FLAG_STAR_COUNT | HUD_DISPLAY_FLAG_CAMERA_AND_POWER | HUD_DISPLAY_FLAG_KEYS | HUD_DISPLAY_FLAG_UNKNOWN_0020
+
--- @class MarioAnimID
--- @type MarioAnimID
diff --git a/autogen/lua_definitions/functions.lua b/autogen/lua_definitions/functions.lua
index bd5178cff..be1df1fb5 100644
--- a/autogen/lua_definitions/functions.lua
+++ b/autogen/lua_definitions/functions.lua
@@ -4002,6 +4002,13 @@ function get_star_name_sm64(courseNum, starNum, charCase)
-- ...
end
+--- @param m MarioState
+--- @param warpOp integer
+--- @return integer
+function level_trigger_warp(m, warpOp)
+ -- ...
+end
+
--- @param m MarioState
--- @return nil
function adjust_sound_for_speed(m)
diff --git a/docs/lua/constants.md b/docs/lua/constants.md
index 0b39917e0..f09b972a2 100644
--- a/docs/lua/constants.md
+++ b/docs/lua/constants.md
@@ -21,6 +21,8 @@
- [enum InteractionType](#enum-InteractionType)
- [level_defines.h](#level_definesh)
- [enum LevelNum](#enum-LevelNum)
+- [level_update.h](#level_updateh)
+ - [enum HUDDisplayFlag](#enum-HUDDisplayFlag)
- [mario_animation_ids.h](#mario_animation_idsh)
- [enum MarioAnimID](#enum-MarioAnimID)
- [mario_geo_switch_case_ids.h](#mario_geo_switch_case_idsh)
@@ -1289,6 +1291,71 @@
+## [level_update.h](#level_update.h)
+- MARIO_SPAWN_AIRBORNE
+- MARIO_SPAWN_AIRBORNE_DEATH
+- MARIO_SPAWN_AIRBORNE_STAR_COLLECT
+- MARIO_SPAWN_DEATH
+- MARIO_SPAWN_DOOR_WARP
+- MARIO_SPAWN_FLYING
+- MARIO_SPAWN_HARD_AIR_KNOCKBACK
+- MARIO_SPAWN_INSTANT_ACTIVE
+- MARIO_SPAWN_LAUNCH_DEATH
+- MARIO_SPAWN_LAUNCH_STAR_COLLECT
+- MARIO_SPAWN_PAINTING_DEATH
+- MARIO_SPAWN_PAINTING_STAR_COLLECT
+- MARIO_SPAWN_SPIN_AIRBORNE
+- MARIO_SPAWN_SPIN_AIRBORNE_CIRCLE
+- MARIO_SPAWN_SWIMMING
+- MARIO_SPAWN_TELEPORT
+- MARIO_SPAWN_UNKNOWN_02
+- MARIO_SPAWN_UNKNOWN_03
+- MARIO_SPAWN_UNKNOWN_27
+- TIMER_CONTROL_HIDE
+- TIMER_CONTROL_SHOW
+- TIMER_CONTROL_START
+- TIMER_CONTROL_STOP
+- WARP_OP_CREDITS_END
+- WARP_OP_CREDITS_NEXT
+- WARP_OP_CREDITS_START
+- WARP_OP_DEATH
+- WARP_OP_DEMO_END
+- WARP_OP_DEMO_NEXT
+- WARP_OP_EXIT
+- WARP_OP_FORCE_SYNC
+- WARP_OP_GAME_OVER
+- WARP_OP_LOOK_UP
+- WARP_OP_NONE
+- WARP_OP_SPIN_SHRINK
+- WARP_OP_STAR_EXIT
+- WARP_OP_TELEPORT
+- WARP_OP_TRIGGERS_LEVEL_SELECT
+- WARP_OP_WARP_DOOR
+- WARP_OP_WARP_FLOOR
+- WARP_OP_WARP_OBJECT
+- WARP_TYPE_CHANGE_AREA
+- WARP_TYPE_CHANGE_LEVEL
+- WARP_TYPE_NOT_WARPING
+- WARP_TYPE_SAME_AREA
+
+### [enum HUDDisplayFlag](#HUDDisplayFlag)
+| Identifier | Value |
+| :--------- | :---- |
+| HUD_DISPLAY_FLAG_LIVES | 0x0001 |
+| HUD_DISPLAY_FLAG_COIN_COUNT | 0x0002 |
+| HUD_DISPLAY_FLAG_STAR_COUNT | 0x0004 |
+| HUD_DISPLAY_FLAG_CAMERA_AND_POWER | 0x0008 |
+| HUD_DISPLAY_FLAG_KEYS | 0x0010 |
+| HUD_DISPLAY_FLAG_UNKNOWN_0020 | 0x0020 |
+| HUD_DISPLAY_FLAG_TIMER | 0x0040 |
+| HUD_DISPLAY_FLAG_EMPHASIZE_POWER | 0x8000 |
+| HUD_DISPLAY_NONE | 0x0000 |
+| HUD_DISPLAY_DEFAULT | HUD_DISPLAY_FLAG_LIVES | HUD_DISPLAY_FLAG_COIN_COUNT | HUD_DISPLAY_FLAG_STAR_COUNT | HUD_DISPLAY_FLAG_CAMERA_AND_POWER | HUD_DISPLAY_FLAG_KEYS | HUD_DISPLAY_FLAG_UNKNOWN_0020 |
+
+[:arrow_up_small:](#)
+
+
+
## [mario_animation_ids.h](#mario_animation_ids.h)
### [enum MarioAnimID](#MarioAnimID)
diff --git a/docs/lua/functions-3.md b/docs/lua/functions-3.md
index d24db7f95..f9b4e6020 100644
--- a/docs/lua/functions-3.md
+++ b/docs/lua/functions-3.md
@@ -3358,6 +3358,33 @@
+---
+# functions from level_update.h
+
+
+
+
+## [level_trigger_warp](#level_trigger_warp)
+
+### Lua Example
+`local integerValue = level_trigger_warp(m, warpOp)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| m | [MarioState](structs.md#MarioState) |
+| warpOp | `integer` |
+
+### Returns
+- `integer`
+
+### C Prototype
+`s16 level_trigger_warp(struct MarioState *m, s32 warpOp);`
+
+[:arrow_up_small:](#)
+
+
+
---
# functions from mario.h
diff --git a/docs/lua/functions.md b/docs/lua/functions.md
index 8830f570b..ba5415e2c 100644
--- a/docs/lua/functions.md
+++ b/docs/lua/functions.md
@@ -788,6 +788,11 @@
+- level_update.h
+ - [level_trigger_warp](functions-3.md#level_trigger_warp)
+
+
+
- mario.h
- [adjust_sound_for_speed](functions-3.md#adjust_sound_for_speed)
- [check_common_action_exits](functions-3.md#check_common_action_exits)
diff --git a/src/pc/lua/smlua_constants_autogen.c b/src/pc/lua/smlua_constants_autogen.c
index 302124570..e22c3f91c 100644
--- a/src/pc/lua/smlua_constants_autogen.c
+++ b/src/pc/lua/smlua_constants_autogen.c
@@ -1436,6 +1436,61 @@ char gSmluaConstants[] = ""
"LEVEL_UNKNOWN_37 = 37\n"
"LEVEL_UNKNOWN_38 = 38\n"
"LEVEL_COUNT = 39\n"
+"TIMER_CONTROL_SHOW = 0\n"
+"TIMER_CONTROL_START = 1\n"
+"TIMER_CONTROL_STOP = 2\n"
+"TIMER_CONTROL_HIDE = 3\n"
+"WARP_OP_NONE = 0x00\n"
+"WARP_OP_LOOK_UP = 0x01\n"
+"WARP_OP_SPIN_SHRINK = 0x02\n"
+"WARP_OP_WARP_DOOR = 0x03\n"
+"WARP_OP_WARP_OBJECT = 0x04\n"
+"WARP_OP_TELEPORT = 0x05\n"
+"WARP_OP_STAR_EXIT = 0x11\n"
+"WARP_OP_DEATH = 0x12\n"
+"WARP_OP_WARP_FLOOR = 0x13\n"
+"WARP_OP_GAME_OVER = 0x14\n"
+"WARP_OP_CREDITS_END = 0x15\n"
+"WARP_OP_DEMO_NEXT = 0x16\n"
+"WARP_OP_CREDITS_START = 0x17\n"
+"WARP_OP_CREDITS_NEXT = 0x18\n"
+"WARP_OP_DEMO_END = 0x19\n"
+"WARP_OP_FORCE_SYNC = 0x20\n"
+"WARP_OP_EXIT = 0x21\n"
+"WARP_OP_TRIGGERS_LEVEL_SELECT = 0x10\n"
+"MARIO_SPAWN_DOOR_WARP = 0x01\n"
+"MARIO_SPAWN_UNKNOWN_02 = 0x02\n"
+"MARIO_SPAWN_UNKNOWN_03 = 0x03\n"
+"MARIO_SPAWN_TELEPORT = 0x04\n"
+"MARIO_SPAWN_INSTANT_ACTIVE = 0x10\n"
+"MARIO_SPAWN_SWIMMING = 0x11\n"
+"MARIO_SPAWN_AIRBORNE = 0x12\n"
+"MARIO_SPAWN_HARD_AIR_KNOCKBACK = 0x13\n"
+"MARIO_SPAWN_SPIN_AIRBORNE_CIRCLE = 0x14\n"
+"MARIO_SPAWN_DEATH = 0x15\n"
+"MARIO_SPAWN_SPIN_AIRBORNE = 0x16\n"
+"MARIO_SPAWN_FLYING = 0x17\n"
+"MARIO_SPAWN_PAINTING_STAR_COLLECT = 0x20\n"
+"MARIO_SPAWN_PAINTING_DEATH = 0x21\n"
+"MARIO_SPAWN_AIRBORNE_STAR_COLLECT = 0x22\n"
+"MARIO_SPAWN_AIRBORNE_DEATH = 0x23\n"
+"MARIO_SPAWN_LAUNCH_STAR_COLLECT = 0x24\n"
+"MARIO_SPAWN_LAUNCH_DEATH = 0x25\n"
+"MARIO_SPAWN_UNKNOWN_27 = 0x27\n"
+"WARP_TYPE_NOT_WARPING = 0\n"
+"WARP_TYPE_CHANGE_LEVEL = 1\n"
+"WARP_TYPE_CHANGE_AREA = 2\n"
+"WARP_TYPE_SAME_AREA = 3\n"
+"HUD_DISPLAY_FLAG_LIVES = 0x0001\n"
+"HUD_DISPLAY_FLAG_COIN_COUNT = 0x0002\n"
+"HUD_DISPLAY_FLAG_STAR_COUNT = 0x0004\n"
+"HUD_DISPLAY_FLAG_CAMERA_AND_POWER = 0x0008\n"
+"HUD_DISPLAY_FLAG_KEYS = 0x0010\n"
+"HUD_DISPLAY_FLAG_UNKNOWN_0020 = 0x0020\n"
+"HUD_DISPLAY_FLAG_TIMER = 0x0040\n"
+"HUD_DISPLAY_FLAG_EMPHASIZE_POWER = 0x8000\n"
+"HUD_DISPLAY_NONE = 0x0000\n"
+"HUD_DISPLAY_DEFAULT = HUD_DISPLAY_FLAG_LIVES | HUD_DISPLAY_FLAG_COIN_COUNT | HUD_DISPLAY_FLAG_STAR_COUNT | HUD_DISPLAY_FLAG_CAMERA_AND_POWER | HUD_DISPLAY_FLAG_KEYS | HUD_DISPLAY_FLAG_UNKNOWN_0020\n"
"MARIO_ANIM_SLOW_LEDGE_GRAB = 0\n"
"MARIO_ANIM_FALL_OVER_BACKWARDS = 1\n"
"MARIO_ANIM_BACKWARD_AIR_KB = 2\n"
diff --git a/src/pc/lua/smlua_functions_autogen.c b/src/pc/lua/smlua_functions_autogen.c
index bf45d55af..b4fe52f91 100644
--- a/src/pc/lua/smlua_functions_autogen.c
+++ b/src/pc/lua/smlua_functions_autogen.c
@@ -31,6 +31,7 @@
#include "src/game/object_list_processor.h"
#include "src/game/behavior_actions.h"
#include "src/game/mario_misc.h"
+#include "src/game/level_update.h"
////////////////////////
@@ -8059,6 +8060,23 @@ int smlua_func_get_star_name_sm64(lua_State* L) {
return 1;
}
+ ////////////////////
+ // level_update.h //
+////////////////////
+
+int smlua_func_level_trigger_warp(lua_State* L) {
+ if(!smlua_functions_valid_param_count(L, 2)) { return 0; }
+
+ struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 1 for function 'level_trigger_warp'"); return 0; }
+ s32 warpOp = smlua_to_integer(L, 2);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 2 for function 'level_trigger_warp'"); return 0; }
+
+ lua_pushinteger(L, level_trigger_warp(m, warpOp));
+
+ return 1;
+}
+
/////////////
// mario.h //
/////////////
@@ -18873,6 +18891,9 @@ void smlua_bind_functions_autogen(void) {
smlua_bind_function(L, "get_star_name_ascii", smlua_func_get_star_name_ascii);
smlua_bind_function(L, "get_star_name_sm64", smlua_func_get_star_name_sm64);
+ // level_update.h
+ smlua_bind_function(L, "level_trigger_warp", smlua_func_level_trigger_warp);
+
// mario.h
smlua_bind_function(L, "adjust_sound_for_speed", smlua_func_adjust_sound_for_speed);
smlua_bind_function(L, "check_common_action_exits", smlua_func_check_common_action_exits);