Add HOOK_MARIO_OVERRIDE_FLOOR_CLASS (#812)

* Update lua_definitions constants.lua

* you kiddin' dude

* Update lua docs constants.md

* Update smlua_constants_autogen.c

* Update smlua_hooks.h

* Update mario.c to add HOOK_MARIO_OVERRIDE_FLOOR_CLASS to mario_get_floor_class(m)

yeah i sure love using web interface

* Update lua guide hooks.md

* Whoops
This commit is contained in:
NitroDisPro 2025-05-28 18:13:46 -04:00 committed by GitHub
parent 97e0737bbb
commit dea7247d9f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 14 additions and 4 deletions

View file

@ -7667,7 +7667,8 @@ HOOK_ON_INTERACTIONS = 52 --- @type LuaHookedEventType
HOOK_ALLOW_FORCE_WATER_ACTION = 53 --- @type LuaHookedEventType HOOK_ALLOW_FORCE_WATER_ACTION = 53 --- @type LuaHookedEventType
HOOK_BEFORE_WARP = 54 --- @type LuaHookedEventType HOOK_BEFORE_WARP = 54 --- @type LuaHookedEventType
HOOK_ON_INSTANT_WARP = 55 --- @type LuaHookedEventType HOOK_ON_INSTANT_WARP = 55 --- @type LuaHookedEventType
HOOK_MAX = 56 --- @type LuaHookedEventType HOOK_MARIO_OVERRIDE_FLOOR_CLASS = 56 --- @type LuaHookedEventType
HOOK_MAX = 57 --- @type LuaHookedEventType
--- @alias LuaHookedEventType --- @alias LuaHookedEventType
--- | `HOOK_UPDATE` --- | `HOOK_UPDATE`
@ -7726,6 +7727,7 @@ HOOK_MAX = 56 --- @type LuaHookedEventType
--- | `HOOK_ALLOW_FORCE_WATER_ACTION` --- | `HOOK_ALLOW_FORCE_WATER_ACTION`
--- | `HOOK_BEFORE_WARP` --- | `HOOK_BEFORE_WARP`
--- | `HOOK_ON_INSTANT_WARP` --- | `HOOK_ON_INSTANT_WARP`
--- | `HOOK_MARIO_OVERRIDE_FLOOR_CLASS`
--- | `HOOK_MAX` --- | `HOOK_MAX`
ACTION_HOOK_EVERY_FRAME = 0 --- @type LuaActionHookType ACTION_HOOK_EVERY_FRAME = 0 --- @type LuaActionHookType

View file

@ -3438,7 +3438,8 @@
| HOOK_ALLOW_FORCE_WATER_ACTION | 53 | | HOOK_ALLOW_FORCE_WATER_ACTION | 53 |
| HOOK_BEFORE_WARP | 54 | | HOOK_BEFORE_WARP | 54 |
| HOOK_ON_INSTANT_WARP | 55 | | HOOK_ON_INSTANT_WARP | 55 |
| HOOK_MAX | 56 | | HOOK_MARIO_OVERRIDE_FLOOR_CLASS | 56 |
| HOOK_MAX | 57 |
### [enum LuaActionHookType](#LuaActionHookType) ### [enum LuaActionHookType](#LuaActionHookType)
| Identifier | Value | | Identifier | Value |

View file

@ -148,6 +148,7 @@ The lua functions sent to `hook_event()` will be automatically called by SM64 wh
| HOOK_ALLOW_FORCE_WATER_ACTION | Called when executing a non-water action while under the water's surface, or vice versa. Return `false` to prevent the player from being forced out of the action at the water's surface | [MarioState](../structs.md#MarioState) mario, `boolean` isInWaterAction | | HOOK_ALLOW_FORCE_WATER_ACTION | Called when executing a non-water action while under the water's surface, or vice versa. Return `false` to prevent the player from being forced out of the action at the water's surface | [MarioState](../structs.md#MarioState) mario, `boolean` isInWaterAction |
| HOOK_BEFORE_WARP | Called before the local player warps. Return a table with `destLevel`, `destArea`, `destWarpNode`, to override the warp | `integer` destLevel, `integer` destArea, `integer` destWarpNode, `integer` arg | | HOOK_BEFORE_WARP | Called before the local player warps. Return a table with `destLevel`, `destArea`, `destWarpNode`, to override the warp | `integer` destLevel, `integer` destArea, `integer` destWarpNode, `integer` arg |
| HOOK_ON_INSTANT_WARP | Called when the local player goes through an instant warp.| `integer` area, `integer` id, `Vec3s` displacement| | HOOK_ON_INSTANT_WARP | Called when the local player goes through an instant warp.| `integer` area, `integer` id, `Vec3s` displacement|
| HOOK_MARIO_OVERRIDE_FLOOR_CLASS | Called when Mario's floor class logic updates, return a `SURFACE_CLASS_*` constant to override the type. | [MarioState](../structs.md#MarioState) mario, `integer` surfaceClass |
### Parameters ### Parameters

View file

@ -524,6 +524,9 @@ s32 mario_get_floor_class(struct MarioState *m) {
floorClass = SURFACE_CLASS_NOT_SLIPPERY; floorClass = SURFACE_CLASS_NOT_SLIPPERY;
} }
s32 returnValue = 0;
if (smlua_call_event_hooks_mario_param_and_int_ret_int(HOOK_MARIO_OVERRIDE_FLOOR_CLASS, m, floorClass, &returnValue)) return returnValue;
return floorClass; return floorClass;
} }

View file

@ -3158,7 +3158,8 @@ char gSmluaConstants[] = ""
"HOOK_ALLOW_FORCE_WATER_ACTION=53\n" "HOOK_ALLOW_FORCE_WATER_ACTION=53\n"
"HOOK_BEFORE_WARP=54\n" "HOOK_BEFORE_WARP=54\n"
"HOOK_ON_INSTANT_WARP=55\n" "HOOK_ON_INSTANT_WARP=55\n"
"HOOK_MAX=56\n" "HOOK_MARIO_OVERRIDE_FLOOR_CLASS=56\n"
"HOOK_MAX=57\n"
"ACTION_HOOK_EVERY_FRAME=0\n" "ACTION_HOOK_EVERY_FRAME=0\n"
"ACTION_HOOK_GRAVITY=1\n" "ACTION_HOOK_GRAVITY=1\n"
"ACTION_HOOK_MAX=2\n" "ACTION_HOOK_MAX=2\n"
@ -4294,4 +4295,4 @@ char gSmluaConstants[] = ""
"VERSION_NUMBER=40\n" "VERSION_NUMBER=40\n"
"MINOR_VERSION_NUMBER=2\n" "MINOR_VERSION_NUMBER=2\n"
"MAX_VERSION_LENGTH=128\n" "MAX_VERSION_LENGTH=128\n"
; ;

View file

@ -68,6 +68,7 @@ enum LuaHookedEventType {
HOOK_ALLOW_FORCE_WATER_ACTION, HOOK_ALLOW_FORCE_WATER_ACTION,
HOOK_BEFORE_WARP, HOOK_BEFORE_WARP,
HOOK_ON_INSTANT_WARP, HOOK_ON_INSTANT_WARP,
HOOK_MARIO_OVERRIDE_FLOOR_CLASS,
HOOK_MAX, HOOK_MAX,
}; };
@ -128,6 +129,7 @@ static const char* LuaHookedEventTypeName[] = {
"HOOK_ALLOW_FORCE_WATER_ACTION", "HOOK_ALLOW_FORCE_WATER_ACTION",
"HOOK_BEFORE_WARP", "HOOK_BEFORE_WARP",
"HOOK_ON_INSTANT_WARP", "HOOK_ON_INSTANT_WARP",
"HOOK_MARIO_OVERRIDE_FLOOR_CLASS",
"HOOK_MAX" "HOOK_MAX"
}; };