From 90b071acc061926d86a61250c643616b82f265ba Mon Sep 17 00:00:00 2001 From: Isaac0-dev <62234577+Isaac0-dev@users.noreply.github.com> Date: Fri, 3 May 2024 18:38:21 +1000 Subject: [PATCH] exposed a bunch of interaction functions to Lua (#22) Renamed the function interact_unknown_08 to interact_spiny_walking and added the constant INTERACT_SPINY_WALKING, which has the same value of INTERACT_UNKNOWN_08 INTERACT_UNKNOWN_08 is kept for compatibility with smlua, and behavior dynos bins --- autogen/lua_definitions/constants.lua | 5 +- autogen/lua_definitions/functions.lua | 232 ++++ autogen/lua_definitions/structs.lua | 1 + data/dynos_bin_behavior.cpp | 7 +- docs/lua/constants.md | 3 +- docs/lua/functions-3.md | 1839 +++++++++---------------- docs/lua/functions-4.md | 1766 ++++++++++++++++-------- docs/lua/functions-5.md | 565 ++++++++ docs/lua/functions.md | 191 +-- docs/lua/structs.md | 1 + src/game/behaviors/spiny.inc.c | 4 +- src/game/interaction.c | 34 +- src/game/interaction.h | 36 +- src/pc/lua/smlua_cobject_autogen.c | 43 +- src/pc/lua/smlua_constants_autogen.c | 3 +- src/pc/lua/smlua_functions_autogen.c | 716 +++++++++- 16 files changed, 3497 insertions(+), 1949 deletions(-) diff --git a/autogen/lua_definitions/constants.lua b/autogen/lua_definitions/constants.lua index 9b4ef878e..b543924ce 100644 --- a/autogen/lua_definitions/constants.lua +++ b/autogen/lua_definitions/constants.lua @@ -3786,6 +3786,9 @@ ATTACK_KICK_OR_TRIP = 2 --- @type integer ATTACK_PUNCH = 1 +--- @type integer +INTERACT_UNKNOWN_08 = (1 << 8) + --- @type integer INT_ANY_ATTACK = (INT_GROUND_POUND_OR_TWIRL | INT_PUNCH | INT_KICK | INT_TRIP | INT_SLIDE_KICK | INT_FAST_ATTACK_OR_SHELL | INT_HIT_FROM_ABOVE | INT_HIT_FROM_BELOW) @@ -3953,7 +3956,7 @@ INTERACT_POLE = (1 << 6) INTERACT_KOOPA = (1 << 7) --- @type InteractionType -INTERACT_UNKNOWN_08 = (1 << 8) +INTERACT_SPINY_WALKING = (1 << 8) --- @type InteractionType INTERACT_BREAKABLE = (1 << 9) diff --git a/autogen/lua_definitions/functions.lua b/autogen/lua_definitions/functions.lua index 67a6501cd..9c8c4b036 100644 --- a/autogen/lua_definitions/functions.lua +++ b/autogen/lua_definitions/functions.lua @@ -4077,6 +4077,70 @@ function get_door_save_file_flag(door) -- ... end +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_bbh_entrance(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_bounce_top(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_breakable(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_bully(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_cannon_base(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_cap(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_clam_or_bubba(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_coin(m, interactType, o) + -- ... +end + --- @param m MarioState --- @param interactType integer --- @param o Object @@ -4085,6 +4149,174 @@ function interact_damage(m, interactType, o) -- ... end +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_door(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_flame(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_grabbable(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_hit_from_below(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_hoot(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_igloo_barrier(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_koopa_shell(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_mr_blizzard(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_player(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_pole(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_shock(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_snufit_bullet(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_spiny_walking(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_star_or_key(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_strong_wind(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_text(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_tornado(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_warp(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_warp_door(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_water_ring(m, interactType, o) + -- ... +end + +--- @param m MarioState +--- @param interactType integer +--- @param o Object +--- @return integer +function interact_whirlpool(m, interactType, o) + -- ... +end + --- @param m MarioState --- @param capSpeed number --- @return nil diff --git a/autogen/lua_definitions/structs.lua b/autogen/lua_definitions/structs.lua index 5ff48a20a..9cf74bf41 100644 --- a/autogen/lua_definitions/structs.lua +++ b/autogen/lua_definitions/structs.lua @@ -2006,6 +2006,7 @@ --- @field public headlessServer integer --- @field public maxPlayers integer --- @field public nametags integer +--- @field public pauseAnywhere integer --- @field public playerInteractions PlayerInteractions --- @field public playerKnockbackStrength integer --- @field public skipIntro integer diff --git a/data/dynos_bin_behavior.cpp b/data/dynos_bin_behavior.cpp index c1c69cb02..69fc93b3b 100644 --- a/data/dynos_bin_behavior.cpp +++ b/data/dynos_bin_behavior.cpp @@ -107,6 +107,7 @@ s64 DynOS_Bhv_ParseBehaviorIntegerScriptConstants(const String &_Arg, bool *foun bhv_constant(INTERACT_POLE); bhv_constant(INTERACT_KOOPA); bhv_constant(INTERACT_UNKNOWN_08); + bhv_constant(INTERACT_SPINY_WALKING); bhv_constant(INTERACT_BREAKABLE); bhv_constant(INTERACT_STRONG_WIND); bhv_constant(INTERACT_WARP_DOOR); @@ -2494,7 +2495,7 @@ static DataNode *DynOS_Bhv_Load(BinFile *aFile, GfxData *aGfxDat // We have nothing to return, So return NULL. return NULL; } - + // Allocate our node. DataNode *_Node = New>(); @@ -2518,7 +2519,7 @@ static DataNode *DynOS_Bhv_Load(BinFile *aFile, GfxData *aGfxDat // We have nothing to return, So return NULL. return NULL; } - + // If we have nothing in the .bhv file, It compiled incorrectly or is maliciously crafted. // We also check if the specified behavior size is valid for the file. u32 dataSize = aFile->Read(); @@ -2548,7 +2549,7 @@ static DataNode *DynOS_Bhv_Load(BinFile *aFile, GfxData *aGfxDat _Node->mData[i] = (uintptr_t) _Value; } } - + // Add it if (aGfxData != NULL) { aGfxData->mBehaviorScripts.Add(_Node); diff --git a/docs/lua/constants.md b/docs/lua/constants.md index e6b572d72..2728d4d30 100644 --- a/docs/lua/constants.md +++ b/docs/lua/constants.md @@ -1321,6 +1321,7 @@ - ATTACK_GROUND_POUND_OR_TWIRL - ATTACK_KICK_OR_TRIP - ATTACK_PUNCH +- INTERACT_UNKNOWN_08 - INT_ANY_ATTACK - INT_ATTACK_NOT_FROM_BELOW - INT_ATTACK_NOT_WEAK_FROM_ABOVE @@ -1383,7 +1384,7 @@ | INTERACT_CAP | (1 << 5) | | INTERACT_POLE | (1 << 6) | | INTERACT_KOOPA | (1 << 7) | -| INTERACT_UNKNOWN_08 | (1 << 8) | +| INTERACT_SPINY_WALKING | (1 << 8) | | INTERACT_BREAKABLE | (1 << 9) | | INTERACT_STRONG_WIND | (1 << 10) | | INTERACT_WARP_DOOR | (1 << 11) | diff --git a/docs/lua/functions-3.md b/docs/lua/functions-3.md index 6b3f9207a..aedf9eb5a 100644 --- a/docs/lua/functions-3.md +++ b/docs/lua/functions-3.md @@ -3519,6 +3519,182 @@
+## [interact_bbh_entrance](#interact_bbh_entrance) + +### Lua Example +`local integerValue = interact_bbh_entrance(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_bbh_entrance(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_bounce_top](#interact_bounce_top) + +### Lua Example +`local integerValue = interact_bounce_top(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_bounce_top(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_breakable](#interact_breakable) + +### Lua Example +`local integerValue = interact_breakable(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_breakable(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_bully](#interact_bully) + +### Lua Example +`local integerValue = interact_bully(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_bully(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_cannon_base](#interact_cannon_base) + +### Lua Example +`local integerValue = interact_cannon_base(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_cannon_base(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_cap](#interact_cap) + +### Lua Example +`local integerValue = interact_cap(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_cap(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_clam_or_bubba](#interact_clam_or_bubba) + +### Lua Example +`local integerValue = interact_clam_or_bubba(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_clam_or_bubba(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_coin](#interact_coin) + +### Lua Example +`local integerValue = interact_coin(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_coin(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ ## [interact_damage](#interact_damage) ### Lua Example @@ -3541,6 +3717,468 @@
+## [interact_door](#interact_door) + +### Lua Example +`local integerValue = interact_door(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_door(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_flame](#interact_flame) + +### Lua Example +`local integerValue = interact_flame(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_flame(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_grabbable](#interact_grabbable) + +### Lua Example +`local integerValue = interact_grabbable(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_grabbable(struct MarioState *m, u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_hit_from_below](#interact_hit_from_below) + +### Lua Example +`local integerValue = interact_hit_from_below(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_hit_from_below(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_hoot](#interact_hoot) + +### Lua Example +`local integerValue = interact_hoot(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_hoot(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_igloo_barrier](#interact_igloo_barrier) + +### Lua Example +`local integerValue = interact_igloo_barrier(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_igloo_barrier(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_koopa_shell](#interact_koopa_shell) + +### Lua Example +`local integerValue = interact_koopa_shell(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_koopa_shell(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_mr_blizzard](#interact_mr_blizzard) + +### Lua Example +`local integerValue = interact_mr_blizzard(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_mr_blizzard(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_player](#interact_player) + +### Lua Example +`local integerValue = interact_player(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_player(struct MarioState* m, UNUSED u32 interactType, struct Object* o);` + +[:arrow_up_small:](#) + +
+ +## [interact_pole](#interact_pole) + +### Lua Example +`local integerValue = interact_pole(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_pole(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_shock](#interact_shock) + +### Lua Example +`local integerValue = interact_shock(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_shock(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_snufit_bullet](#interact_snufit_bullet) + +### Lua Example +`local integerValue = interact_snufit_bullet(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_snufit_bullet(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_spiny_walking](#interact_spiny_walking) + +### Lua Example +`local integerValue = interact_spiny_walking(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_spiny_walking(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_star_or_key](#interact_star_or_key) + +### Lua Example +`local integerValue = interact_star_or_key(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_star_or_key(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_strong_wind](#interact_strong_wind) + +### Lua Example +`local integerValue = interact_strong_wind(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_strong_wind(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_text](#interact_text) + +### Lua Example +`local integerValue = interact_text(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_text(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_tornado](#interact_tornado) + +### Lua Example +`local integerValue = interact_tornado(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_tornado(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_warp](#interact_warp) + +### Lua Example +`local integerValue = interact_warp(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_warp(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_warp_door](#interact_warp_door) + +### Lua Example +`local integerValue = interact_warp_door(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_warp_door(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_water_ring](#interact_water_ring) + +### Lua Example +`local integerValue = interact_water_ring(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_water_ring(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ +## [interact_whirlpool](#interact_whirlpool) + +### Lua Example +`local integerValue = interact_whirlpool(m, interactType, o)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| interactType | `integer` | +| o | [Object](structs.md#Object) | + +### Returns +- `integer` + +### C Prototype +`u32 interact_whirlpool(struct MarioState *m, UNUSED u32 interactType, struct Object *o);` + +[:arrow_up_small:](#) + +
+ ## [mario_blow_off_cap](#mario_blow_off_cap) ### Lua Example @@ -7650,1207 +8288,6 @@ [:arrow_up_small:](#) -
- ---- -# functions from math_util.h - -
- - -## [anim_spline_init](#anim_spline_init) - -### Lua Example -`anim_spline_init(m, keyFrames)` - -### Parameters -| Field | Type | -| ----- | ---- | -| m | [MarioState](structs.md#MarioState) | -| keyFrames | `Pointer` <`Vec4s`> | - -### Returns -- None - -### C Prototype -`void anim_spline_init(struct MarioState* m, Vec4s *keyFrames);` - -[:arrow_up_small:](#) - -
- -## [anim_spline_poll](#anim_spline_poll) - -### Lua Example -`local integerValue = anim_spline_poll(m, result)` - -### Parameters -| Field | Type | -| ----- | ---- | -| m | [MarioState](structs.md#MarioState) | -| result | [Vec3f](structs.md#Vec3f) | - -### Returns -- `integer` - -### C Prototype -`s32 anim_spline_poll(struct MarioState* m, Vec3f result);` - -[:arrow_up_small:](#) - -
- -## [approach_f32](#approach_f32) - -### Lua Example -`local numberValue = approach_f32(current, target, inc, dec)` - -### Parameters -| Field | Type | -| ----- | ---- | -| current | `number` | -| target | `number` | -| inc | `number` | -| dec | `number` | - -### Returns -- `number` - -### C Prototype -`f32 approach_f32(f32 current, f32 target, f32 inc, f32 dec);` - -[:arrow_up_small:](#) - -
- -## [approach_s32](#approach_s32) - -### Lua Example -`local integerValue = approach_s32(current, target, inc, dec)` - -### Parameters -| Field | Type | -| ----- | ---- | -| current | `integer` | -| target | `integer` | -| inc | `integer` | -| dec | `integer` | - -### Returns -- `integer` - -### C Prototype -`s32 approach_s32(s32 current, s32 target, s32 inc, s32 dec);` - -[:arrow_up_small:](#) - -
- -## [find_vector_perpendicular_to_plane](#find_vector_perpendicular_to_plane) - -### Lua Example -`local voidValue = find_vector_perpendicular_to_plane(dest, a, b, c)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | [Vec3f](structs.md#Vec3f) | -| a | [Vec3f](structs.md#Vec3f) | -| b | [Vec3f](structs.md#Vec3f) | -| c | [Vec3f](structs.md#Vec3f) | - -### Returns -- `void *` - -### C Prototype -`void *find_vector_perpendicular_to_plane(Vec3f dest, Vec3f a, Vec3f b, Vec3f c);` - -[:arrow_up_small:](#) - -
- -## [get_pos_from_transform_mtx](#get_pos_from_transform_mtx) - -### Lua Example -`get_pos_from_transform_mtx(dest, objMtx, camMtx)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | [Vec3f](structs.md#Vec3f) | -| objMtx | `Mat4` | -| camMtx | `Mat4` | - -### Returns -- None - -### C Prototype -`void get_pos_from_transform_mtx(Vec3f dest, Mat4 objMtx, Mat4 camMtx);` - -[:arrow_up_small:](#) - -
- -## [mtxf_align_terrain_normal](#mtxf_align_terrain_normal) - -### Lua Example -`mtxf_align_terrain_normal(dest, upDir, pos, yaw)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | `Mat4` | -| upDir | [Vec3f](structs.md#Vec3f) | -| pos | [Vec3f](structs.md#Vec3f) | -| yaw | `integer` | - -### Returns -- None - -### C Prototype -`void mtxf_align_terrain_normal(Mat4 dest, Vec3f upDir, Vec3f pos, s16 yaw);` - -[:arrow_up_small:](#) - -
- -## [mtxf_align_terrain_triangle](#mtxf_align_terrain_triangle) - -### Lua Example -`mtxf_align_terrain_triangle(mtx, pos, yaw, radius)` - -### Parameters -| Field | Type | -| ----- | ---- | -| mtx | `Mat4` | -| pos | [Vec3f](structs.md#Vec3f) | -| yaw | `integer` | -| radius | `number` | - -### Returns -- None - -### C Prototype -`void mtxf_align_terrain_triangle(Mat4 mtx, Vec3f pos, s16 yaw, f32 radius);` - -[:arrow_up_small:](#) - -
- -## [mtxf_billboard](#mtxf_billboard) - -### Lua Example -`mtxf_billboard(dest, mtx, position, angle)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | `Mat4` | -| mtx | `Mat4` | -| position | [Vec3f](structs.md#Vec3f) | -| angle | `integer` | - -### Returns -- None - -### C Prototype -`void mtxf_billboard(Mat4 dest, Mat4 mtx, Vec3f position, s16 angle);` - -[:arrow_up_small:](#) - -
- -## [mtxf_copy](#mtxf_copy) - -### Lua Example -`mtxf_copy(dest, src)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | `Mat4` | -| src | `Mat4` | - -### Returns -- None - -### C Prototype -`void mtxf_copy(Mat4 dest, Mat4 src);` - -[:arrow_up_small:](#) - -
- -## [mtxf_cylboard](#mtxf_cylboard) - -### Lua Example -`mtxf_cylboard(dest, mtx, position, angle)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | `Mat4` | -| mtx | `Mat4` | -| position | [Vec3f](structs.md#Vec3f) | -| angle | `integer` | - -### Returns -- None - -### C Prototype -`void mtxf_cylboard(Mat4 dest, Mat4 mtx, Vec3f position, s16 angle);` - -[:arrow_up_small:](#) - -
- -## [mtxf_identity](#mtxf_identity) - -### Lua Example -`mtxf_identity(mtx)` - -### Parameters -| Field | Type | -| ----- | ---- | -| mtx | `Mat4` | - -### Returns -- None - -### C Prototype -`void mtxf_identity(Mat4 mtx);` - -[:arrow_up_small:](#) - -
- -## [mtxf_inverse](#mtxf_inverse) - -### Lua Example -`mtxf_inverse(dest, src)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | `Mat4` | -| src | `Mat4` | - -### Returns -- None - -### C Prototype -`void mtxf_inverse(Mat4 dest, Mat4 src);` - -[:arrow_up_small:](#) - -
- -## [mtxf_lookat](#mtxf_lookat) - -### Lua Example -`mtxf_lookat(mtx, from, to, roll)` - -### Parameters -| Field | Type | -| ----- | ---- | -| mtx | `Mat4` | -| from | [Vec3f](structs.md#Vec3f) | -| to | [Vec3f](structs.md#Vec3f) | -| roll | `integer` | - -### Returns -- None - -### C Prototype -`void mtxf_lookat(Mat4 mtx, Vec3f from, Vec3f to, s16 roll);` - -[:arrow_up_small:](#) - -
- -## [mtxf_mul](#mtxf_mul) - -### Lua Example -`mtxf_mul(dest, a, b)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | `Mat4` | -| a | `Mat4` | -| b | `Mat4` | - -### Returns -- None - -### C Prototype -`void mtxf_mul(Mat4 dest, Mat4 a, Mat4 b);` - -[:arrow_up_small:](#) - -
- -## [mtxf_mul_vec3s](#mtxf_mul_vec3s) - -### Lua Example -`mtxf_mul_vec3s(mtx, b)` - -### Parameters -| Field | Type | -| ----- | ---- | -| mtx | `Mat4` | -| b | [Vec3s](structs.md#Vec3s) | - -### Returns -- None - -### C Prototype -`void mtxf_mul_vec3s(Mat4 mtx, Vec3s b);` - -[:arrow_up_small:](#) - -
- -## [mtxf_rotate_xy](#mtxf_rotate_xy) - -### Lua Example -`mtxf_rotate_xy(mtx, angle)` - -### Parameters -| Field | Type | -| ----- | ---- | -| mtx | `Pointer` <`Mtx`> | -| angle | `integer` | - -### Returns -- None - -### C Prototype -`void mtxf_rotate_xy(Mtx *mtx, s16 angle);` - -[:arrow_up_small:](#) - -
- -## [mtxf_rotate_xyz_and_translate](#mtxf_rotate_xyz_and_translate) - -### Lua Example -`mtxf_rotate_xyz_and_translate(dest, b, c)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | `Mat4` | -| b | [Vec3f](structs.md#Vec3f) | -| c | [Vec3s](structs.md#Vec3s) | - -### Returns -- None - -### C Prototype -`void mtxf_rotate_xyz_and_translate(Mat4 dest, Vec3f b, Vec3s c);` - -[:arrow_up_small:](#) - -
- -## [mtxf_rotate_zxy_and_translate](#mtxf_rotate_zxy_and_translate) - -### Lua Example -`mtxf_rotate_zxy_and_translate(dest, translate, rotate)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | `Mat4` | -| translate | [Vec3f](structs.md#Vec3f) | -| rotate | [Vec3s](structs.md#Vec3s) | - -### Returns -- None - -### C Prototype -`void mtxf_rotate_zxy_and_translate(Mat4 dest, Vec3f translate, Vec3s rotate);` - -[:arrow_up_small:](#) - -
- -## [mtxf_scale_vec3f](#mtxf_scale_vec3f) - -### Lua Example -`mtxf_scale_vec3f(dest, mtx, s)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | `Mat4` | -| mtx | `Mat4` | -| s | [Vec3f](structs.md#Vec3f) | - -### Returns -- None - -### C Prototype -`void mtxf_scale_vec3f(Mat4 dest, Mat4 mtx, Vec3f s);` - -[:arrow_up_small:](#) - -
- -## [mtxf_to_mtx](#mtxf_to_mtx) - -### Lua Example -`mtxf_to_mtx(dest, src)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | `Pointer` <`Mtx`> | -| src | `Mat4` | - -### Returns -- None - -### C Prototype -`void mtxf_to_mtx(Mtx *dest, Mat4 src);` - -[:arrow_up_small:](#) - -
- -## [mtxf_translate](#mtxf_translate) - -### Lua Example -`mtxf_translate(dest, b)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | `Mat4` | -| b | [Vec3f](structs.md#Vec3f) | - -### Returns -- None - -### C Prototype -`void mtxf_translate(Mat4 dest, Vec3f b);` - -[:arrow_up_small:](#) - -
- -## [not_zero](#not_zero) - -### Lua Example -`local numberValue = not_zero(value, replacement)` - -### Parameters -| Field | Type | -| ----- | ---- | -| value | `number` | -| replacement | `number` | - -### Returns -- `number` - -### C Prototype -`f32 not_zero(f32 value, f32 replacement);` - -[:arrow_up_small:](#) - -
- -## [spline_get_weights](#spline_get_weights) - -### Lua Example -`spline_get_weights(m, result, t, c)` - -### Parameters -| Field | Type | -| ----- | ---- | -| m | [MarioState](structs.md#MarioState) | -| result | `Vec4f` | -| t | `number` | -| c | `integer` | - -### Returns -- None - -### C Prototype -`void spline_get_weights(struct MarioState* m, Vec4f result, f32 t, UNUSED s32 c);` - -[:arrow_up_small:](#) - -
- -## [vec3f_add](#vec3f_add) - -### Lua Example -`local voidValue = vec3f_add(dest, a)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | [Vec3f](structs.md#Vec3f) | -| a | [Vec3f](structs.md#Vec3f) | - -### Returns -- `void *` - -### C Prototype -`void *vec3f_add(Vec3f dest, Vec3f a);` - -[:arrow_up_small:](#) - -
- -## [vec3f_combine](#vec3f_combine) - -### Lua Example -`vec3f_combine(dest, vecA, vecB, sclA, sclB)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | [Vec3f](structs.md#Vec3f) | -| vecA | [Vec3f](structs.md#Vec3f) | -| vecB | [Vec3f](structs.md#Vec3f) | -| sclA | `number` | -| sclB | `number` | - -### Returns -- None - -### C Prototype -`void vec3f_combine(Vec3f dest, Vec3f vecA, Vec3f vecB, f32 sclA, f32 sclB);` - -[:arrow_up_small:](#) - -
- -## [vec3f_copy](#vec3f_copy) - -### Lua Example -`local voidValue = vec3f_copy(dest, src)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | [Vec3f](structs.md#Vec3f) | -| src | [Vec3f](structs.md#Vec3f) | - -### Returns -- `void *` - -### C Prototype -`void *vec3f_copy(Vec3f dest, Vec3f src);` - -[:arrow_up_small:](#) - -
- -## [vec3f_cross](#vec3f_cross) - -### Lua Example -`local voidValue = vec3f_cross(dest, a, b)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | [Vec3f](structs.md#Vec3f) | -| a | [Vec3f](structs.md#Vec3f) | -| b | [Vec3f](structs.md#Vec3f) | - -### Returns -- `void *` - -### C Prototype -`void *vec3f_cross(Vec3f dest, Vec3f a, Vec3f b);` - -[:arrow_up_small:](#) - -
- -## [vec3f_dif](#vec3f_dif) - -### Lua Example -`local voidValue = vec3f_dif(dest, a, b)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | [Vec3f](structs.md#Vec3f) | -| a | [Vec3f](structs.md#Vec3f) | -| b | [Vec3f](structs.md#Vec3f) | - -### Returns -- `void *` - -### C Prototype -`void *vec3f_dif(Vec3f dest, Vec3f a, Vec3f b);` - -[:arrow_up_small:](#) - -
- -## [vec3f_dist](#vec3f_dist) - -### Lua Example -`local numberValue = vec3f_dist(v1, v2)` - -### Parameters -| Field | Type | -| ----- | ---- | -| v1 | [Vec3f](structs.md#Vec3f) | -| v2 | [Vec3f](structs.md#Vec3f) | - -### Returns -- `number` - -### C Prototype -`f32 vec3f_dist(Vec3f v1, Vec3f v2);` - -[:arrow_up_small:](#) - -
- -## [vec3f_dot](#vec3f_dot) - -### Lua Example -`local numberValue = vec3f_dot(a, b)` - -### Parameters -| Field | Type | -| ----- | ---- | -| a | [Vec3f](structs.md#Vec3f) | -| b | [Vec3f](structs.md#Vec3f) | - -### Returns -- `number` - -### C Prototype -`f32 vec3f_dot(Vec3f a, Vec3f b);` - -[:arrow_up_small:](#) - -
- -## [vec3f_get_dist_and_angle](#vec3f_get_dist_and_angle) - -### Lua Example -`vec3f_get_dist_and_angle(from, to, dist, pitch, yaw)` - -### Parameters -| Field | Type | -| ----- | ---- | -| from | [Vec3f](structs.md#Vec3f) | -| to | [Vec3f](structs.md#Vec3f) | -| dist | `Pointer` <`number`> | -| pitch | `Pointer` <`integer`> | -| yaw | `Pointer` <`integer`> | - -### Returns -- None - -### C Prototype -`void vec3f_get_dist_and_angle(Vec3f from, Vec3f to, f32 *dist, s16 *pitch, s16 *yaw);` - -[:arrow_up_small:](#) - -
- -## [vec3f_length](#vec3f_length) - -### Lua Example -`local numberValue = vec3f_length(a)` - -### Parameters -| Field | Type | -| ----- | ---- | -| a | [Vec3f](structs.md#Vec3f) | - -### Returns -- `number` - -### C Prototype -`f32 vec3f_length(Vec3f a);` - -[:arrow_up_small:](#) - -
- -## [vec3f_mul](#vec3f_mul) - -### Lua Example -`local voidValue = vec3f_mul(dest, a)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | [Vec3f](structs.md#Vec3f) | -| a | `number` | - -### Returns -- `void *` - -### C Prototype -`void *vec3f_mul(Vec3f dest, f32 a);` - -[:arrow_up_small:](#) - -
- -## [vec3f_normalize](#vec3f_normalize) - -### Lua Example -`local voidValue = vec3f_normalize(dest)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | [Vec3f](structs.md#Vec3f) | - -### Returns -- `void *` - -### C Prototype -`void *vec3f_normalize(Vec3f dest);` - -[:arrow_up_small:](#) - -
- -## [vec3f_project](#vec3f_project) - -### Lua Example -`vec3f_project(vec, onto, out)` - -### Parameters -| Field | Type | -| ----- | ---- | -| vec | [Vec3f](structs.md#Vec3f) | -| onto | [Vec3f](structs.md#Vec3f) | -| out | [Vec3f](structs.md#Vec3f) | - -### Returns -- None - -### C Prototype -`void vec3f_project(Vec3f vec, Vec3f onto, Vec3f out);` - -[:arrow_up_small:](#) - -
- -## [vec3f_rotate_zxy](#vec3f_rotate_zxy) - -### Lua Example -`local voidValue = vec3f_rotate_zxy(v, rotate)` - -### Parameters -| Field | Type | -| ----- | ---- | -| v | [Vec3f](structs.md#Vec3f) | -| rotate | [Vec3s](structs.md#Vec3s) | - -### Returns -- `void *` - -### C Prototype -`void *vec3f_rotate_zxy(Vec3f v, Vec3s rotate);` - -[:arrow_up_small:](#) - -
- -## [vec3f_set](#vec3f_set) - -### Lua Example -`local voidValue = vec3f_set(dest, x, y, z)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | [Vec3f](structs.md#Vec3f) | -| x | `number` | -| y | `number` | -| z | `number` | - -### Returns -- `void *` - -### C Prototype -`void *vec3f_set(Vec3f dest, f32 x, f32 y, f32 z);` - -[:arrow_up_small:](#) - -
- -## [vec3f_set_dist_and_angle](#vec3f_set_dist_and_angle) - -### Lua Example -`vec3f_set_dist_and_angle(from, to, dist, pitch, yaw)` - -### Parameters -| Field | Type | -| ----- | ---- | -| from | [Vec3f](structs.md#Vec3f) | -| to | [Vec3f](structs.md#Vec3f) | -| dist | `number` | -| pitch | `integer` | -| yaw | `integer` | - -### Returns -- None - -### C Prototype -`void vec3f_set_dist_and_angle(Vec3f from, Vec3f to, f32 dist, s16 pitch, s16 yaw);` - -[:arrow_up_small:](#) - -
- -## [vec3f_sum](#vec3f_sum) - -### Lua Example -`local voidValue = vec3f_sum(dest, a, b)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | [Vec3f](structs.md#Vec3f) | -| a | [Vec3f](structs.md#Vec3f) | -| b | [Vec3f](structs.md#Vec3f) | - -### Returns -- `void *` - -### C Prototype -`void *vec3f_sum(Vec3f dest, Vec3f a, Vec3f b);` - -[:arrow_up_small:](#) - -
- -## [vec3f_to_vec3s](#vec3f_to_vec3s) - -### Lua Example -`local voidValue = vec3f_to_vec3s(dest, a)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | [Vec3s](structs.md#Vec3s) | -| a | [Vec3f](structs.md#Vec3f) | - -### Returns -- `void *` - -### C Prototype -`void *vec3f_to_vec3s(Vec3s dest, Vec3f a);` - -[:arrow_up_small:](#) - -
- -## [vec3s_add](#vec3s_add) - -### Lua Example -`local voidValue = vec3s_add(dest, a)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | [Vec3s](structs.md#Vec3s) | -| a | [Vec3s](structs.md#Vec3s) | - -### Returns -- `void *` - -### C Prototype -`void *vec3s_add(Vec3s dest, Vec3s a);` - -[:arrow_up_small:](#) - -
- -## [vec3s_copy](#vec3s_copy) - -### Lua Example -`local voidValue = vec3s_copy(dest, src)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | [Vec3s](structs.md#Vec3s) | -| src | [Vec3s](structs.md#Vec3s) | - -### Returns -- `void *` - -### C Prototype -`void *vec3s_copy(Vec3s dest, Vec3s src);` - -[:arrow_up_small:](#) - -
- -## [vec3s_set](#vec3s_set) - -### Lua Example -`local voidValue = vec3s_set(dest, x, y, z)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | [Vec3s](structs.md#Vec3s) | -| x | `integer` | -| y | `integer` | -| z | `integer` | - -### Returns -- `void *` - -### C Prototype -`void *vec3s_set(Vec3s dest, s16 x, s16 y, s16 z);` - -[:arrow_up_small:](#) - -
- -## [vec3s_sum](#vec3s_sum) - -### Lua Example -`local voidValue = vec3s_sum(dest, a, b)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | [Vec3s](structs.md#Vec3s) | -| a | [Vec3s](structs.md#Vec3s) | -| b | [Vec3s](structs.md#Vec3s) | - -### Returns -- `void *` - -### C Prototype -`void *vec3s_sum(Vec3s dest, Vec3s a, Vec3s b);` - -[:arrow_up_small:](#) - -
- -## [vec3s_to_vec3f](#vec3s_to_vec3f) - -### Lua Example -`local voidValue = vec3s_to_vec3f(dest, a)` - -### Parameters -| Field | Type | -| ----- | ---- | -| dest | [Vec3f](structs.md#Vec3f) | -| a | [Vec3s](structs.md#Vec3s) | - -### Returns -- `void *` - -### C Prototype -`void *vec3s_to_vec3f(Vec3f dest, Vec3s a);` - -[:arrow_up_small:](#) - -
- ---- -# functions from misc.h - -
- - -## [update_all_mario_stars](#update_all_mario_stars) - -### Lua Example -`update_all_mario_stars()` - -### Parameters -- None - -### Returns -- None - -### C Prototype -`void update_all_mario_stars(void);` - -[:arrow_up_small:](#) - -
- ---- -# functions from mod_storage.h - -
- - -## [mod_storage_clear](#mod_storage_clear) - -### Lua Example -`local booleanValue = mod_storage_clear()` - -### Parameters -- None - -### Returns -- `boolean` - -### C Prototype -`bool mod_storage_clear(void);` - -[:arrow_up_small:](#) - -
- -## [mod_storage_load](#mod_storage_load) - -### Lua Example -`local stringValue = mod_storage_load(key)` - -### Parameters -| Field | Type | -| ----- | ---- | -| key | `string` | - -### Returns -- `string` - -### C Prototype -`const char *mod_storage_load(const char* key);` - -[:arrow_up_small:](#) - -
- -## [mod_storage_load_bool](#mod_storage_load_bool) - -### Lua Example -`local booleanValue = mod_storage_load_bool(key)` - -### Parameters -| Field | Type | -| ----- | ---- | -| key | `string` | - -### Returns -- `boolean` - -### C Prototype -`bool mod_storage_load_bool(const char* key);` - -[:arrow_up_small:](#) - -
- -## [mod_storage_load_number](#mod_storage_load_number) - -### Lua Example -`local numberValue = mod_storage_load_number(key)` - -### Parameters -| Field | Type | -| ----- | ---- | -| key | `string` | - -### Returns -- `number` - -### C Prototype -`double mod_storage_load_number(const char* key);` - -[:arrow_up_small:](#) - -
- -## [mod_storage_remove](#mod_storage_remove) - -### Lua Example -`local booleanValue = mod_storage_remove(key)` - -### Parameters -| Field | Type | -| ----- | ---- | -| key | `string` | - -### Returns -- `boolean` - -### C Prototype -`bool mod_storage_remove(const char* key);` - -[:arrow_up_small:](#) - -
- -## [mod_storage_save](#mod_storage_save) - -### Lua Example -`local booleanValue = mod_storage_save(key, value)` - -### Parameters -| Field | Type | -| ----- | ---- | -| key | `string` | -| value | `string` | - -### Returns -- `boolean` - -### C Prototype -`bool mod_storage_save(const char* key, const char* value);` - -[:arrow_up_small:](#) - -
- -## [mod_storage_save_bool](#mod_storage_save_bool) - -### Lua Example -`local booleanValue = mod_storage_save_bool(key, value)` - -### Parameters -| Field | Type | -| ----- | ---- | -| key | `string` | -| value | `boolean` | - -### Returns -- `boolean` - -### C Prototype -`bool mod_storage_save_bool(const char* key, bool value);` - -[:arrow_up_small:](#) - -
- -## [mod_storage_save_number](#mod_storage_save_number) - -### Lua Example -`local booleanValue = mod_storage_save_number(key, value)` - -### Parameters -| Field | Type | -| ----- | ---- | -| key | `string` | -| value | `number` | - -### Returns -- `boolean` - -### C Prototype -`bool mod_storage_save_number(const char* key, double value);` - -[:arrow_up_small:](#) -
--- diff --git a/docs/lua/functions-4.md b/docs/lua/functions-4.md index f42ac341e..7ba4f5d4c 100644 --- a/docs/lua/functions-4.md +++ b/docs/lua/functions-4.md @@ -5,6 +5,1207 @@ [< prev](functions-3.md) | [1](functions.md) | [2](functions-2.md) | [3](functions-3.md) | 4 | [5](functions-5.md) | [next >](functions-5.md)] +--- +# functions from math_util.h + +
+ + +## [anim_spline_init](#anim_spline_init) + +### Lua Example +`anim_spline_init(m, keyFrames)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| keyFrames | `Pointer` <`Vec4s`> | + +### Returns +- None + +### C Prototype +`void anim_spline_init(struct MarioState* m, Vec4s *keyFrames);` + +[:arrow_up_small:](#) + +
+ +## [anim_spline_poll](#anim_spline_poll) + +### Lua Example +`local integerValue = anim_spline_poll(m, result)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| result | [Vec3f](structs.md#Vec3f) | + +### Returns +- `integer` + +### C Prototype +`s32 anim_spline_poll(struct MarioState* m, Vec3f result);` + +[:arrow_up_small:](#) + +
+ +## [approach_f32](#approach_f32) + +### Lua Example +`local numberValue = approach_f32(current, target, inc, dec)` + +### Parameters +| Field | Type | +| ----- | ---- | +| current | `number` | +| target | `number` | +| inc | `number` | +| dec | `number` | + +### Returns +- `number` + +### C Prototype +`f32 approach_f32(f32 current, f32 target, f32 inc, f32 dec);` + +[:arrow_up_small:](#) + +
+ +## [approach_s32](#approach_s32) + +### Lua Example +`local integerValue = approach_s32(current, target, inc, dec)` + +### Parameters +| Field | Type | +| ----- | ---- | +| current | `integer` | +| target | `integer` | +| inc | `integer` | +| dec | `integer` | + +### Returns +- `integer` + +### C Prototype +`s32 approach_s32(s32 current, s32 target, s32 inc, s32 dec);` + +[:arrow_up_small:](#) + +
+ +## [find_vector_perpendicular_to_plane](#find_vector_perpendicular_to_plane) + +### Lua Example +`local voidValue = find_vector_perpendicular_to_plane(dest, a, b, c)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | [Vec3f](structs.md#Vec3f) | +| a | [Vec3f](structs.md#Vec3f) | +| b | [Vec3f](structs.md#Vec3f) | +| c | [Vec3f](structs.md#Vec3f) | + +### Returns +- `void *` + +### C Prototype +`void *find_vector_perpendicular_to_plane(Vec3f dest, Vec3f a, Vec3f b, Vec3f c);` + +[:arrow_up_small:](#) + +
+ +## [get_pos_from_transform_mtx](#get_pos_from_transform_mtx) + +### Lua Example +`get_pos_from_transform_mtx(dest, objMtx, camMtx)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | [Vec3f](structs.md#Vec3f) | +| objMtx | `Mat4` | +| camMtx | `Mat4` | + +### Returns +- None + +### C Prototype +`void get_pos_from_transform_mtx(Vec3f dest, Mat4 objMtx, Mat4 camMtx);` + +[:arrow_up_small:](#) + +
+ +## [mtxf_align_terrain_normal](#mtxf_align_terrain_normal) + +### Lua Example +`mtxf_align_terrain_normal(dest, upDir, pos, yaw)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | `Mat4` | +| upDir | [Vec3f](structs.md#Vec3f) | +| pos | [Vec3f](structs.md#Vec3f) | +| yaw | `integer` | + +### Returns +- None + +### C Prototype +`void mtxf_align_terrain_normal(Mat4 dest, Vec3f upDir, Vec3f pos, s16 yaw);` + +[:arrow_up_small:](#) + +
+ +## [mtxf_align_terrain_triangle](#mtxf_align_terrain_triangle) + +### Lua Example +`mtxf_align_terrain_triangle(mtx, pos, yaw, radius)` + +### Parameters +| Field | Type | +| ----- | ---- | +| mtx | `Mat4` | +| pos | [Vec3f](structs.md#Vec3f) | +| yaw | `integer` | +| radius | `number` | + +### Returns +- None + +### C Prototype +`void mtxf_align_terrain_triangle(Mat4 mtx, Vec3f pos, s16 yaw, f32 radius);` + +[:arrow_up_small:](#) + +
+ +## [mtxf_billboard](#mtxf_billboard) + +### Lua Example +`mtxf_billboard(dest, mtx, position, angle)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | `Mat4` | +| mtx | `Mat4` | +| position | [Vec3f](structs.md#Vec3f) | +| angle | `integer` | + +### Returns +- None + +### C Prototype +`void mtxf_billboard(Mat4 dest, Mat4 mtx, Vec3f position, s16 angle);` + +[:arrow_up_small:](#) + +
+ +## [mtxf_copy](#mtxf_copy) + +### Lua Example +`mtxf_copy(dest, src)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | `Mat4` | +| src | `Mat4` | + +### Returns +- None + +### C Prototype +`void mtxf_copy(Mat4 dest, Mat4 src);` + +[:arrow_up_small:](#) + +
+ +## [mtxf_cylboard](#mtxf_cylboard) + +### Lua Example +`mtxf_cylboard(dest, mtx, position, angle)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | `Mat4` | +| mtx | `Mat4` | +| position | [Vec3f](structs.md#Vec3f) | +| angle | `integer` | + +### Returns +- None + +### C Prototype +`void mtxf_cylboard(Mat4 dest, Mat4 mtx, Vec3f position, s16 angle);` + +[:arrow_up_small:](#) + +
+ +## [mtxf_identity](#mtxf_identity) + +### Lua Example +`mtxf_identity(mtx)` + +### Parameters +| Field | Type | +| ----- | ---- | +| mtx | `Mat4` | + +### Returns +- None + +### C Prototype +`void mtxf_identity(Mat4 mtx);` + +[:arrow_up_small:](#) + +
+ +## [mtxf_inverse](#mtxf_inverse) + +### Lua Example +`mtxf_inverse(dest, src)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | `Mat4` | +| src | `Mat4` | + +### Returns +- None + +### C Prototype +`void mtxf_inverse(Mat4 dest, Mat4 src);` + +[:arrow_up_small:](#) + +
+ +## [mtxf_lookat](#mtxf_lookat) + +### Lua Example +`mtxf_lookat(mtx, from, to, roll)` + +### Parameters +| Field | Type | +| ----- | ---- | +| mtx | `Mat4` | +| from | [Vec3f](structs.md#Vec3f) | +| to | [Vec3f](structs.md#Vec3f) | +| roll | `integer` | + +### Returns +- None + +### C Prototype +`void mtxf_lookat(Mat4 mtx, Vec3f from, Vec3f to, s16 roll);` + +[:arrow_up_small:](#) + +
+ +## [mtxf_mul](#mtxf_mul) + +### Lua Example +`mtxf_mul(dest, a, b)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | `Mat4` | +| a | `Mat4` | +| b | `Mat4` | + +### Returns +- None + +### C Prototype +`void mtxf_mul(Mat4 dest, Mat4 a, Mat4 b);` + +[:arrow_up_small:](#) + +
+ +## [mtxf_mul_vec3s](#mtxf_mul_vec3s) + +### Lua Example +`mtxf_mul_vec3s(mtx, b)` + +### Parameters +| Field | Type | +| ----- | ---- | +| mtx | `Mat4` | +| b | [Vec3s](structs.md#Vec3s) | + +### Returns +- None + +### C Prototype +`void mtxf_mul_vec3s(Mat4 mtx, Vec3s b);` + +[:arrow_up_small:](#) + +
+ +## [mtxf_rotate_xy](#mtxf_rotate_xy) + +### Lua Example +`mtxf_rotate_xy(mtx, angle)` + +### Parameters +| Field | Type | +| ----- | ---- | +| mtx | `Pointer` <`Mtx`> | +| angle | `integer` | + +### Returns +- None + +### C Prototype +`void mtxf_rotate_xy(Mtx *mtx, s16 angle);` + +[:arrow_up_small:](#) + +
+ +## [mtxf_rotate_xyz_and_translate](#mtxf_rotate_xyz_and_translate) + +### Lua Example +`mtxf_rotate_xyz_and_translate(dest, b, c)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | `Mat4` | +| b | [Vec3f](structs.md#Vec3f) | +| c | [Vec3s](structs.md#Vec3s) | + +### Returns +- None + +### C Prototype +`void mtxf_rotate_xyz_and_translate(Mat4 dest, Vec3f b, Vec3s c);` + +[:arrow_up_small:](#) + +
+ +## [mtxf_rotate_zxy_and_translate](#mtxf_rotate_zxy_and_translate) + +### Lua Example +`mtxf_rotate_zxy_and_translate(dest, translate, rotate)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | `Mat4` | +| translate | [Vec3f](structs.md#Vec3f) | +| rotate | [Vec3s](structs.md#Vec3s) | + +### Returns +- None + +### C Prototype +`void mtxf_rotate_zxy_and_translate(Mat4 dest, Vec3f translate, Vec3s rotate);` + +[:arrow_up_small:](#) + +
+ +## [mtxf_scale_vec3f](#mtxf_scale_vec3f) + +### Lua Example +`mtxf_scale_vec3f(dest, mtx, s)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | `Mat4` | +| mtx | `Mat4` | +| s | [Vec3f](structs.md#Vec3f) | + +### Returns +- None + +### C Prototype +`void mtxf_scale_vec3f(Mat4 dest, Mat4 mtx, Vec3f s);` + +[:arrow_up_small:](#) + +
+ +## [mtxf_to_mtx](#mtxf_to_mtx) + +### Lua Example +`mtxf_to_mtx(dest, src)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | `Pointer` <`Mtx`> | +| src | `Mat4` | + +### Returns +- None + +### C Prototype +`void mtxf_to_mtx(Mtx *dest, Mat4 src);` + +[:arrow_up_small:](#) + +
+ +## [mtxf_translate](#mtxf_translate) + +### Lua Example +`mtxf_translate(dest, b)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | `Mat4` | +| b | [Vec3f](structs.md#Vec3f) | + +### Returns +- None + +### C Prototype +`void mtxf_translate(Mat4 dest, Vec3f b);` + +[:arrow_up_small:](#) + +
+ +## [not_zero](#not_zero) + +### Lua Example +`local numberValue = not_zero(value, replacement)` + +### Parameters +| Field | Type | +| ----- | ---- | +| value | `number` | +| replacement | `number` | + +### Returns +- `number` + +### C Prototype +`f32 not_zero(f32 value, f32 replacement);` + +[:arrow_up_small:](#) + +
+ +## [spline_get_weights](#spline_get_weights) + +### Lua Example +`spline_get_weights(m, result, t, c)` + +### Parameters +| Field | Type | +| ----- | ---- | +| m | [MarioState](structs.md#MarioState) | +| result | `Vec4f` | +| t | `number` | +| c | `integer` | + +### Returns +- None + +### C Prototype +`void spline_get_weights(struct MarioState* m, Vec4f result, f32 t, UNUSED s32 c);` + +[:arrow_up_small:](#) + +
+ +## [vec3f_add](#vec3f_add) + +### Lua Example +`local voidValue = vec3f_add(dest, a)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | [Vec3f](structs.md#Vec3f) | +| a | [Vec3f](structs.md#Vec3f) | + +### Returns +- `void *` + +### C Prototype +`void *vec3f_add(Vec3f dest, Vec3f a);` + +[:arrow_up_small:](#) + +
+ +## [vec3f_combine](#vec3f_combine) + +### Lua Example +`vec3f_combine(dest, vecA, vecB, sclA, sclB)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | [Vec3f](structs.md#Vec3f) | +| vecA | [Vec3f](structs.md#Vec3f) | +| vecB | [Vec3f](structs.md#Vec3f) | +| sclA | `number` | +| sclB | `number` | + +### Returns +- None + +### C Prototype +`void vec3f_combine(Vec3f dest, Vec3f vecA, Vec3f vecB, f32 sclA, f32 sclB);` + +[:arrow_up_small:](#) + +
+ +## [vec3f_copy](#vec3f_copy) + +### Lua Example +`local voidValue = vec3f_copy(dest, src)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | [Vec3f](structs.md#Vec3f) | +| src | [Vec3f](structs.md#Vec3f) | + +### Returns +- `void *` + +### C Prototype +`void *vec3f_copy(Vec3f dest, Vec3f src);` + +[:arrow_up_small:](#) + +
+ +## [vec3f_cross](#vec3f_cross) + +### Lua Example +`local voidValue = vec3f_cross(dest, a, b)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | [Vec3f](structs.md#Vec3f) | +| a | [Vec3f](structs.md#Vec3f) | +| b | [Vec3f](structs.md#Vec3f) | + +### Returns +- `void *` + +### C Prototype +`void *vec3f_cross(Vec3f dest, Vec3f a, Vec3f b);` + +[:arrow_up_small:](#) + +
+ +## [vec3f_dif](#vec3f_dif) + +### Lua Example +`local voidValue = vec3f_dif(dest, a, b)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | [Vec3f](structs.md#Vec3f) | +| a | [Vec3f](structs.md#Vec3f) | +| b | [Vec3f](structs.md#Vec3f) | + +### Returns +- `void *` + +### C Prototype +`void *vec3f_dif(Vec3f dest, Vec3f a, Vec3f b);` + +[:arrow_up_small:](#) + +
+ +## [vec3f_dist](#vec3f_dist) + +### Lua Example +`local numberValue = vec3f_dist(v1, v2)` + +### Parameters +| Field | Type | +| ----- | ---- | +| v1 | [Vec3f](structs.md#Vec3f) | +| v2 | [Vec3f](structs.md#Vec3f) | + +### Returns +- `number` + +### C Prototype +`f32 vec3f_dist(Vec3f v1, Vec3f v2);` + +[:arrow_up_small:](#) + +
+ +## [vec3f_dot](#vec3f_dot) + +### Lua Example +`local numberValue = vec3f_dot(a, b)` + +### Parameters +| Field | Type | +| ----- | ---- | +| a | [Vec3f](structs.md#Vec3f) | +| b | [Vec3f](structs.md#Vec3f) | + +### Returns +- `number` + +### C Prototype +`f32 vec3f_dot(Vec3f a, Vec3f b);` + +[:arrow_up_small:](#) + +
+ +## [vec3f_get_dist_and_angle](#vec3f_get_dist_and_angle) + +### Lua Example +`vec3f_get_dist_and_angle(from, to, dist, pitch, yaw)` + +### Parameters +| Field | Type | +| ----- | ---- | +| from | [Vec3f](structs.md#Vec3f) | +| to | [Vec3f](structs.md#Vec3f) | +| dist | `Pointer` <`number`> | +| pitch | `Pointer` <`integer`> | +| yaw | `Pointer` <`integer`> | + +### Returns +- None + +### C Prototype +`void vec3f_get_dist_and_angle(Vec3f from, Vec3f to, f32 *dist, s16 *pitch, s16 *yaw);` + +[:arrow_up_small:](#) + +
+ +## [vec3f_length](#vec3f_length) + +### Lua Example +`local numberValue = vec3f_length(a)` + +### Parameters +| Field | Type | +| ----- | ---- | +| a | [Vec3f](structs.md#Vec3f) | + +### Returns +- `number` + +### C Prototype +`f32 vec3f_length(Vec3f a);` + +[:arrow_up_small:](#) + +
+ +## [vec3f_mul](#vec3f_mul) + +### Lua Example +`local voidValue = vec3f_mul(dest, a)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | [Vec3f](structs.md#Vec3f) | +| a | `number` | + +### Returns +- `void *` + +### C Prototype +`void *vec3f_mul(Vec3f dest, f32 a);` + +[:arrow_up_small:](#) + +
+ +## [vec3f_normalize](#vec3f_normalize) + +### Lua Example +`local voidValue = vec3f_normalize(dest)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | [Vec3f](structs.md#Vec3f) | + +### Returns +- `void *` + +### C Prototype +`void *vec3f_normalize(Vec3f dest);` + +[:arrow_up_small:](#) + +
+ +## [vec3f_project](#vec3f_project) + +### Lua Example +`vec3f_project(vec, onto, out)` + +### Parameters +| Field | Type | +| ----- | ---- | +| vec | [Vec3f](structs.md#Vec3f) | +| onto | [Vec3f](structs.md#Vec3f) | +| out | [Vec3f](structs.md#Vec3f) | + +### Returns +- None + +### C Prototype +`void vec3f_project(Vec3f vec, Vec3f onto, Vec3f out);` + +[:arrow_up_small:](#) + +
+ +## [vec3f_rotate_zxy](#vec3f_rotate_zxy) + +### Lua Example +`local voidValue = vec3f_rotate_zxy(v, rotate)` + +### Parameters +| Field | Type | +| ----- | ---- | +| v | [Vec3f](structs.md#Vec3f) | +| rotate | [Vec3s](structs.md#Vec3s) | + +### Returns +- `void *` + +### C Prototype +`void *vec3f_rotate_zxy(Vec3f v, Vec3s rotate);` + +[:arrow_up_small:](#) + +
+ +## [vec3f_set](#vec3f_set) + +### Lua Example +`local voidValue = vec3f_set(dest, x, y, z)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | [Vec3f](structs.md#Vec3f) | +| x | `number` | +| y | `number` | +| z | `number` | + +### Returns +- `void *` + +### C Prototype +`void *vec3f_set(Vec3f dest, f32 x, f32 y, f32 z);` + +[:arrow_up_small:](#) + +
+ +## [vec3f_set_dist_and_angle](#vec3f_set_dist_and_angle) + +### Lua Example +`vec3f_set_dist_and_angle(from, to, dist, pitch, yaw)` + +### Parameters +| Field | Type | +| ----- | ---- | +| from | [Vec3f](structs.md#Vec3f) | +| to | [Vec3f](structs.md#Vec3f) | +| dist | `number` | +| pitch | `integer` | +| yaw | `integer` | + +### Returns +- None + +### C Prototype +`void vec3f_set_dist_and_angle(Vec3f from, Vec3f to, f32 dist, s16 pitch, s16 yaw);` + +[:arrow_up_small:](#) + +
+ +## [vec3f_sum](#vec3f_sum) + +### Lua Example +`local voidValue = vec3f_sum(dest, a, b)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | [Vec3f](structs.md#Vec3f) | +| a | [Vec3f](structs.md#Vec3f) | +| b | [Vec3f](structs.md#Vec3f) | + +### Returns +- `void *` + +### C Prototype +`void *vec3f_sum(Vec3f dest, Vec3f a, Vec3f b);` + +[:arrow_up_small:](#) + +
+ +## [vec3f_to_vec3s](#vec3f_to_vec3s) + +### Lua Example +`local voidValue = vec3f_to_vec3s(dest, a)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | [Vec3s](structs.md#Vec3s) | +| a | [Vec3f](structs.md#Vec3f) | + +### Returns +- `void *` + +### C Prototype +`void *vec3f_to_vec3s(Vec3s dest, Vec3f a);` + +[:arrow_up_small:](#) + +
+ +## [vec3s_add](#vec3s_add) + +### Lua Example +`local voidValue = vec3s_add(dest, a)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | [Vec3s](structs.md#Vec3s) | +| a | [Vec3s](structs.md#Vec3s) | + +### Returns +- `void *` + +### C Prototype +`void *vec3s_add(Vec3s dest, Vec3s a);` + +[:arrow_up_small:](#) + +
+ +## [vec3s_copy](#vec3s_copy) + +### Lua Example +`local voidValue = vec3s_copy(dest, src)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | [Vec3s](structs.md#Vec3s) | +| src | [Vec3s](structs.md#Vec3s) | + +### Returns +- `void *` + +### C Prototype +`void *vec3s_copy(Vec3s dest, Vec3s src);` + +[:arrow_up_small:](#) + +
+ +## [vec3s_set](#vec3s_set) + +### Lua Example +`local voidValue = vec3s_set(dest, x, y, z)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | [Vec3s](structs.md#Vec3s) | +| x | `integer` | +| y | `integer` | +| z | `integer` | + +### Returns +- `void *` + +### C Prototype +`void *vec3s_set(Vec3s dest, s16 x, s16 y, s16 z);` + +[:arrow_up_small:](#) + +
+ +## [vec3s_sum](#vec3s_sum) + +### Lua Example +`local voidValue = vec3s_sum(dest, a, b)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | [Vec3s](structs.md#Vec3s) | +| a | [Vec3s](structs.md#Vec3s) | +| b | [Vec3s](structs.md#Vec3s) | + +### Returns +- `void *` + +### C Prototype +`void *vec3s_sum(Vec3s dest, Vec3s a, Vec3s b);` + +[:arrow_up_small:](#) + +
+ +## [vec3s_to_vec3f](#vec3s_to_vec3f) + +### Lua Example +`local voidValue = vec3s_to_vec3f(dest, a)` + +### Parameters +| Field | Type | +| ----- | ---- | +| dest | [Vec3f](structs.md#Vec3f) | +| a | [Vec3s](structs.md#Vec3s) | + +### Returns +- `void *` + +### C Prototype +`void *vec3s_to_vec3f(Vec3f dest, Vec3s a);` + +[:arrow_up_small:](#) + +
+ +--- +# functions from misc.h + +
+ + +## [update_all_mario_stars](#update_all_mario_stars) + +### Lua Example +`update_all_mario_stars()` + +### Parameters +- None + +### Returns +- None + +### C Prototype +`void update_all_mario_stars(void);` + +[:arrow_up_small:](#) + +
+ +--- +# functions from mod_storage.h + +
+ + +## [mod_storage_clear](#mod_storage_clear) + +### Lua Example +`local booleanValue = mod_storage_clear()` + +### Parameters +- None + +### Returns +- `boolean` + +### C Prototype +`bool mod_storage_clear(void);` + +[:arrow_up_small:](#) + +
+ +## [mod_storage_load](#mod_storage_load) + +### Lua Example +`local stringValue = mod_storage_load(key)` + +### Parameters +| Field | Type | +| ----- | ---- | +| key | `string` | + +### Returns +- `string` + +### C Prototype +`const char *mod_storage_load(const char* key);` + +[:arrow_up_small:](#) + +
+ +## [mod_storage_load_bool](#mod_storage_load_bool) + +### Lua Example +`local booleanValue = mod_storage_load_bool(key)` + +### Parameters +| Field | Type | +| ----- | ---- | +| key | `string` | + +### Returns +- `boolean` + +### C Prototype +`bool mod_storage_load_bool(const char* key);` + +[:arrow_up_small:](#) + +
+ +## [mod_storage_load_number](#mod_storage_load_number) + +### Lua Example +`local numberValue = mod_storage_load_number(key)` + +### Parameters +| Field | Type | +| ----- | ---- | +| key | `string` | + +### Returns +- `number` + +### C Prototype +`double mod_storage_load_number(const char* key);` + +[:arrow_up_small:](#) + +
+ +## [mod_storage_remove](#mod_storage_remove) + +### Lua Example +`local booleanValue = mod_storage_remove(key)` + +### Parameters +| Field | Type | +| ----- | ---- | +| key | `string` | + +### Returns +- `boolean` + +### C Prototype +`bool mod_storage_remove(const char* key);` + +[:arrow_up_small:](#) + +
+ +## [mod_storage_save](#mod_storage_save) + +### Lua Example +`local booleanValue = mod_storage_save(key, value)` + +### Parameters +| Field | Type | +| ----- | ---- | +| key | `string` | +| value | `string` | + +### Returns +- `boolean` + +### C Prototype +`bool mod_storage_save(const char* key, const char* value);` + +[:arrow_up_small:](#) + +
+ +## [mod_storage_save_bool](#mod_storage_save_bool) + +### Lua Example +`local booleanValue = mod_storage_save_bool(key, value)` + +### Parameters +| Field | Type | +| ----- | ---- | +| key | `string` | +| value | `boolean` | + +### Returns +- `boolean` + +### C Prototype +`bool mod_storage_save_bool(const char* key, bool value);` + +[:arrow_up_small:](#) + +
+ +## [mod_storage_save_number](#mod_storage_save_number) + +### Lua Example +`local booleanValue = mod_storage_save_number(key, value)` + +### Parameters +| Field | Type | +| ----- | ---- | +| key | `string` | +| value | `number` | + +### Returns +- `boolean` + +### C Prototype +`bool mod_storage_save_number(const char* key, double value);` + +[:arrow_up_small:](#) + +
+ --- # functions from network_player.h @@ -7572,571 +8773,6 @@ [:arrow_up_small:](#) -
- ---- -# functions from smlua_collision_utils.h - -
- - -## [collision_find_ceil](#collision_find_ceil) - -### Lua Example -`local SurfaceValue = collision_find_ceil(x, y, z)` - -### Parameters -| Field | Type | -| ----- | ---- | -| x | `number` | -| y | `number` | -| z | `number` | - -### Returns -[Surface](structs.md#Surface) - -### C Prototype -`struct Surface* collision_find_ceil(f32 x, f32 y, f32 z);` - -[:arrow_up_small:](#) - -
- -## [collision_find_floor](#collision_find_floor) - -### Lua Example -`local SurfaceValue = collision_find_floor(x, y, z)` - -### Parameters -| Field | Type | -| ----- | ---- | -| x | `number` | -| y | `number` | -| z | `number` | - -### Returns -[Surface](structs.md#Surface) - -### C Prototype -`struct Surface* collision_find_floor(f32 x, f32 y, f32 z);` - -[:arrow_up_small:](#) - -
- -## [collision_find_surface_on_ray](#collision_find_surface_on_ray) - -### Lua Example -`local RayIntersectionInfoValue = collision_find_surface_on_ray(startX, startY, startZ, dirX, dirY, dirZ)` - -### Parameters -| Field | Type | -| ----- | ---- | -| startX | `number` | -| startY | `number` | -| startZ | `number` | -| dirX | `number` | -| dirY | `number` | -| dirZ | `number` | - -### Returns -[RayIntersectionInfo](structs.md#RayIntersectionInfo) - -### C Prototype -`struct RayIntersectionInfo* collision_find_surface_on_ray(f32 startX, f32 startY, f32 startZ, f32 dirX, f32 dirY, f32 dirZ);` - -[:arrow_up_small:](#) - -
- -## [collision_get_temp_wall_collision_data](#collision_get_temp_wall_collision_data) - -### Lua Example -`local WallCollisionDataValue = collision_get_temp_wall_collision_data()` - -### Parameters -- None - -### Returns -[WallCollisionData](structs.md#WallCollisionData) - -### C Prototype -`struct WallCollisionData* collision_get_temp_wall_collision_data(void);` - -[:arrow_up_small:](#) - -
- -## [get_water_surface_pseudo_floor](#get_water_surface_pseudo_floor) - -### Lua Example -`local SurfaceValue = get_water_surface_pseudo_floor()` - -### Parameters -- None - -### Returns -[Surface](structs.md#Surface) - -### C Prototype -`struct Surface* get_water_surface_pseudo_floor(void);` - -[:arrow_up_small:](#) - -
- -## [smlua_collision_util_get](#smlua_collision_util_get) - -### Lua Example -`local PointerValue = smlua_collision_util_get(name)` - -### Parameters -| Field | Type | -| ----- | ---- | -| name | `string` | - -### Returns -- `Pointer` <`Collision`> - -### C Prototype -`Collision* smlua_collision_util_get(const char* name);` - -[:arrow_up_small:](#) - -
- ---- -# functions from smlua_deprecated.h - -
- - ---- -# functions from smlua_level_utils.h - -
- - -## [level_is_vanilla_level](#level_is_vanilla_level) - -### Lua Example -`local booleanValue = level_is_vanilla_level(levelNum)` - -### Parameters -| Field | Type | -| ----- | ---- | -| levelNum | `integer` | - -### Returns -- `boolean` - -### C Prototype -`bool level_is_vanilla_level(s16 levelNum);` - -[:arrow_up_small:](#) - -
- -## [level_register](#level_register) - -### Lua Example -`local integerValue = level_register(scriptEntryName, courseNum, fullName, shortName, acousticReach, echoLevel1, echoLevel2, echoLevel3)` - -### Parameters -| Field | Type | -| ----- | ---- | -| scriptEntryName | `string` | -| courseNum | `integer` | -| fullName | `string` | -| shortName | `string` | -| acousticReach | `integer` | -| echoLevel1 | `integer` | -| echoLevel2 | `integer` | -| echoLevel3 | `integer` | - -### Returns -- `integer` - -### C Prototype -`s16 level_register(const char* scriptEntryName, s16 courseNum, const char* fullName, const char* shortName, u32 acousticReach, u32 echoLevel1, u32 echoLevel2, u32 echoLevel3);` - -[:arrow_up_small:](#) - -
- -## [smlua_level_util_change_area](#smlua_level_util_change_area) - -### Lua Example -`smlua_level_util_change_area(areaIndex)` - -### Parameters -| Field | Type | -| ----- | ---- | -| areaIndex | `integer` | - -### Returns -- None - -### C Prototype -`void smlua_level_util_change_area(s32 areaIndex);` - -[:arrow_up_small:](#) - -
- -## [smlua_level_util_get_info](#smlua_level_util_get_info) - -### Lua Example -`local CustomLevelInfoValue = smlua_level_util_get_info(levelNum)` - -### Parameters -| Field | Type | -| ----- | ---- | -| levelNum | `integer` | - -### Returns -[CustomLevelInfo](structs.md#CustomLevelInfo) - -### C Prototype -`struct CustomLevelInfo* smlua_level_util_get_info(s16 levelNum);` - -[:arrow_up_small:](#) - -
- -## [smlua_level_util_get_info_from_course_num](#smlua_level_util_get_info_from_course_num) - -### Lua Example -`local CustomLevelInfoValue = smlua_level_util_get_info_from_course_num(courseNum)` - -### Parameters -| Field | Type | -| ----- | ---- | -| courseNum | `integer` | - -### Returns -[CustomLevelInfo](structs.md#CustomLevelInfo) - -### C Prototype -`struct CustomLevelInfo* smlua_level_util_get_info_from_course_num(u8 courseNum);` - -[:arrow_up_small:](#) - -
- -## [smlua_level_util_get_info_from_short_name](#smlua_level_util_get_info_from_short_name) - -### Lua Example -`local CustomLevelInfoValue = smlua_level_util_get_info_from_short_name(shortName)` - -### Parameters -| Field | Type | -| ----- | ---- | -| shortName | `string` | - -### Returns -[CustomLevelInfo](structs.md#CustomLevelInfo) - -### C Prototype -`struct CustomLevelInfo* smlua_level_util_get_info_from_short_name(const char* shortName);` - -[:arrow_up_small:](#) - -
- -## [warp_exit_level](#warp_exit_level) - -### Lua Example -`local booleanValue = warp_exit_level(aDelay)` - -### Parameters -| Field | Type | -| ----- | ---- | -| aDelay | `integer` | - -### Returns -- `boolean` - -### C Prototype -`bool warp_exit_level(s32 aDelay);` - -[:arrow_up_small:](#) - -
- -## [warp_restart_level](#warp_restart_level) - -### Lua Example -`local booleanValue = warp_restart_level()` - -### Parameters -- None - -### Returns -- `boolean` - -### C Prototype -`bool warp_restart_level(void);` - -[:arrow_up_small:](#) - -
- -## [warp_to_castle](#warp_to_castle) - -### Lua Example -`local booleanValue = warp_to_castle(aLevel)` - -### Parameters -| Field | Type | -| ----- | ---- | -| aLevel | `integer` | - -### Returns -- `boolean` - -### C Prototype -`bool warp_to_castle(s32 aLevel);` - -[:arrow_up_small:](#) - -
- -## [warp_to_level](#warp_to_level) - -### Lua Example -`local booleanValue = warp_to_level(aLevel, aArea, aAct)` - -### Parameters -| Field | Type | -| ----- | ---- | -| aLevel | `integer` | -| aArea | `integer` | -| aAct | `integer` | - -### Returns -- `boolean` - -### C Prototype -`bool warp_to_level(s32 aLevel, s32 aArea, s32 aAct);` - -[:arrow_up_small:](#) - -
- -## [warp_to_start_level](#warp_to_start_level) - -### Lua Example -`local booleanValue = warp_to_start_level()` - -### Parameters -- None - -### Returns -- `boolean` - -### C Prototype -`bool warp_to_start_level(void);` - -[:arrow_up_small:](#) - -
- -## [warp_to_warpnode](#warp_to_warpnode) - -### Lua Example -`local booleanValue = warp_to_warpnode(aLevel, aArea, aAct, aWarpId)` - -### Parameters -| Field | Type | -| ----- | ---- | -| aLevel | `integer` | -| aArea | `integer` | -| aAct | `integer` | -| aWarpId | `integer` | - -### Returns -- `boolean` - -### C Prototype -`bool warp_to_warpnode(s32 aLevel, s32 aArea, s32 aAct, s32 aWarpId);` - -[:arrow_up_small:](#) - -
- ---- -# functions from smlua_math_utils.h - -
- - -## [clamp](#clamp) - -### Lua Example -`local integerValue = clamp(a, b, c)` - -### Parameters -| Field | Type | -| ----- | ---- | -| a | `integer` | -| b | `integer` | -| c | `integer` | - -### Returns -- `integer` - -### C Prototype -`s32 clamp(s32 a, s32 b, s32 c);` - -[:arrow_up_small:](#) - -
- -## [clampf](#clampf) - -### Lua Example -`local numberValue = clampf(a, b, c)` - -### Parameters -| Field | Type | -| ----- | ---- | -| a | `number` | -| b | `number` | -| c | `number` | - -### Returns -- `number` - -### C Prototype -`f32 clampf(f32 a, f32 b, f32 c);` - -[:arrow_up_small:](#) - -
- -## [max](#max) - -### Lua Example -`local integerValue = max(a, b)` - -### Parameters -| Field | Type | -| ----- | ---- | -| a | `integer` | -| b | `integer` | - -### Returns -- `integer` - -### C Prototype -`s32 max(s32 a, s32 b);` - -[:arrow_up_small:](#) - -
- -## [maxf](#maxf) - -### Lua Example -`local numberValue = maxf(a, b)` - -### Parameters -| Field | Type | -| ----- | ---- | -| a | `number` | -| b | `number` | - -### Returns -- `number` - -### C Prototype -`f32 maxf(f32 a, f32 b);` - -[:arrow_up_small:](#) - -
- -## [min](#min) - -### Lua Example -`local integerValue = min(a, b)` - -### Parameters -| Field | Type | -| ----- | ---- | -| a | `integer` | -| b | `integer` | - -### Returns -- `integer` - -### C Prototype -`s32 min(s32 a, s32 b);` - -[:arrow_up_small:](#) - -
- -## [minf](#minf) - -### Lua Example -`local numberValue = minf(a, b)` - -### Parameters -| Field | Type | -| ----- | ---- | -| a | `number` | -| b | `number` | - -### Returns -- `number` - -### C Prototype -`f32 minf(f32 a, f32 b);` - -[:arrow_up_small:](#) - -
- -## [sqr](#sqr) - -### Lua Example -`local integerValue = sqr(x)` - -### Parameters -| Field | Type | -| ----- | ---- | -| x | `integer` | - -### Returns -- `integer` - -### C Prototype -`s32 sqr(s32 x);` - -[:arrow_up_small:](#) - -
- -## [sqrf](#sqrf) - -### Lua Example -`local numberValue = sqrf(x)` - -### Parameters -| Field | Type | -| ----- | ---- | -| x | `number` | - -### Returns -- `number` - -### C Prototype -`f32 sqrf(f32 x);` - -[:arrow_up_small:](#) -
--- diff --git a/docs/lua/functions-5.md b/docs/lua/functions-5.md index c0bd5f61d..aac96b874 100644 --- a/docs/lua/functions-5.md +++ b/docs/lua/functions-5.md @@ -5,6 +5,571 @@ [< prev](functions-4.md) | [1](functions.md) | [2](functions-2.md) | [3](functions-3.md) | [4](functions-4.md) | 5] +--- +# functions from smlua_collision_utils.h + +
+ + +## [collision_find_ceil](#collision_find_ceil) + +### Lua Example +`local SurfaceValue = collision_find_ceil(x, y, z)` + +### Parameters +| Field | Type | +| ----- | ---- | +| x | `number` | +| y | `number` | +| z | `number` | + +### Returns +[Surface](structs.md#Surface) + +### C Prototype +`struct Surface* collision_find_ceil(f32 x, f32 y, f32 z);` + +[:arrow_up_small:](#) + +
+ +## [collision_find_floor](#collision_find_floor) + +### Lua Example +`local SurfaceValue = collision_find_floor(x, y, z)` + +### Parameters +| Field | Type | +| ----- | ---- | +| x | `number` | +| y | `number` | +| z | `number` | + +### Returns +[Surface](structs.md#Surface) + +### C Prototype +`struct Surface* collision_find_floor(f32 x, f32 y, f32 z);` + +[:arrow_up_small:](#) + +
+ +## [collision_find_surface_on_ray](#collision_find_surface_on_ray) + +### Lua Example +`local RayIntersectionInfoValue = collision_find_surface_on_ray(startX, startY, startZ, dirX, dirY, dirZ)` + +### Parameters +| Field | Type | +| ----- | ---- | +| startX | `number` | +| startY | `number` | +| startZ | `number` | +| dirX | `number` | +| dirY | `number` | +| dirZ | `number` | + +### Returns +[RayIntersectionInfo](structs.md#RayIntersectionInfo) + +### C Prototype +`struct RayIntersectionInfo* collision_find_surface_on_ray(f32 startX, f32 startY, f32 startZ, f32 dirX, f32 dirY, f32 dirZ);` + +[:arrow_up_small:](#) + +
+ +## [collision_get_temp_wall_collision_data](#collision_get_temp_wall_collision_data) + +### Lua Example +`local WallCollisionDataValue = collision_get_temp_wall_collision_data()` + +### Parameters +- None + +### Returns +[WallCollisionData](structs.md#WallCollisionData) + +### C Prototype +`struct WallCollisionData* collision_get_temp_wall_collision_data(void);` + +[:arrow_up_small:](#) + +
+ +## [get_water_surface_pseudo_floor](#get_water_surface_pseudo_floor) + +### Lua Example +`local SurfaceValue = get_water_surface_pseudo_floor()` + +### Parameters +- None + +### Returns +[Surface](structs.md#Surface) + +### C Prototype +`struct Surface* get_water_surface_pseudo_floor(void);` + +[:arrow_up_small:](#) + +
+ +## [smlua_collision_util_get](#smlua_collision_util_get) + +### Lua Example +`local PointerValue = smlua_collision_util_get(name)` + +### Parameters +| Field | Type | +| ----- | ---- | +| name | `string` | + +### Returns +- `Pointer` <`Collision`> + +### C Prototype +`Collision* smlua_collision_util_get(const char* name);` + +[:arrow_up_small:](#) + +
+ +--- +# functions from smlua_deprecated.h + +
+ + +--- +# functions from smlua_level_utils.h + +
+ + +## [level_is_vanilla_level](#level_is_vanilla_level) + +### Lua Example +`local booleanValue = level_is_vanilla_level(levelNum)` + +### Parameters +| Field | Type | +| ----- | ---- | +| levelNum | `integer` | + +### Returns +- `boolean` + +### C Prototype +`bool level_is_vanilla_level(s16 levelNum);` + +[:arrow_up_small:](#) + +
+ +## [level_register](#level_register) + +### Lua Example +`local integerValue = level_register(scriptEntryName, courseNum, fullName, shortName, acousticReach, echoLevel1, echoLevel2, echoLevel3)` + +### Parameters +| Field | Type | +| ----- | ---- | +| scriptEntryName | `string` | +| courseNum | `integer` | +| fullName | `string` | +| shortName | `string` | +| acousticReach | `integer` | +| echoLevel1 | `integer` | +| echoLevel2 | `integer` | +| echoLevel3 | `integer` | + +### Returns +- `integer` + +### C Prototype +`s16 level_register(const char* scriptEntryName, s16 courseNum, const char* fullName, const char* shortName, u32 acousticReach, u32 echoLevel1, u32 echoLevel2, u32 echoLevel3);` + +[:arrow_up_small:](#) + +
+ +## [smlua_level_util_change_area](#smlua_level_util_change_area) + +### Lua Example +`smlua_level_util_change_area(areaIndex)` + +### Parameters +| Field | Type | +| ----- | ---- | +| areaIndex | `integer` | + +### Returns +- None + +### C Prototype +`void smlua_level_util_change_area(s32 areaIndex);` + +[:arrow_up_small:](#) + +
+ +## [smlua_level_util_get_info](#smlua_level_util_get_info) + +### Lua Example +`local CustomLevelInfoValue = smlua_level_util_get_info(levelNum)` + +### Parameters +| Field | Type | +| ----- | ---- | +| levelNum | `integer` | + +### Returns +[CustomLevelInfo](structs.md#CustomLevelInfo) + +### C Prototype +`struct CustomLevelInfo* smlua_level_util_get_info(s16 levelNum);` + +[:arrow_up_small:](#) + +
+ +## [smlua_level_util_get_info_from_course_num](#smlua_level_util_get_info_from_course_num) + +### Lua Example +`local CustomLevelInfoValue = smlua_level_util_get_info_from_course_num(courseNum)` + +### Parameters +| Field | Type | +| ----- | ---- | +| courseNum | `integer` | + +### Returns +[CustomLevelInfo](structs.md#CustomLevelInfo) + +### C Prototype +`struct CustomLevelInfo* smlua_level_util_get_info_from_course_num(u8 courseNum);` + +[:arrow_up_small:](#) + +
+ +## [smlua_level_util_get_info_from_short_name](#smlua_level_util_get_info_from_short_name) + +### Lua Example +`local CustomLevelInfoValue = smlua_level_util_get_info_from_short_name(shortName)` + +### Parameters +| Field | Type | +| ----- | ---- | +| shortName | `string` | + +### Returns +[CustomLevelInfo](structs.md#CustomLevelInfo) + +### C Prototype +`struct CustomLevelInfo* smlua_level_util_get_info_from_short_name(const char* shortName);` + +[:arrow_up_small:](#) + +
+ +## [warp_exit_level](#warp_exit_level) + +### Lua Example +`local booleanValue = warp_exit_level(aDelay)` + +### Parameters +| Field | Type | +| ----- | ---- | +| aDelay | `integer` | + +### Returns +- `boolean` + +### C Prototype +`bool warp_exit_level(s32 aDelay);` + +[:arrow_up_small:](#) + +
+ +## [warp_restart_level](#warp_restart_level) + +### Lua Example +`local booleanValue = warp_restart_level()` + +### Parameters +- None + +### Returns +- `boolean` + +### C Prototype +`bool warp_restart_level(void);` + +[:arrow_up_small:](#) + +
+ +## [warp_to_castle](#warp_to_castle) + +### Lua Example +`local booleanValue = warp_to_castle(aLevel)` + +### Parameters +| Field | Type | +| ----- | ---- | +| aLevel | `integer` | + +### Returns +- `boolean` + +### C Prototype +`bool warp_to_castle(s32 aLevel);` + +[:arrow_up_small:](#) + +
+ +## [warp_to_level](#warp_to_level) + +### Lua Example +`local booleanValue = warp_to_level(aLevel, aArea, aAct)` + +### Parameters +| Field | Type | +| ----- | ---- | +| aLevel | `integer` | +| aArea | `integer` | +| aAct | `integer` | + +### Returns +- `boolean` + +### C Prototype +`bool warp_to_level(s32 aLevel, s32 aArea, s32 aAct);` + +[:arrow_up_small:](#) + +
+ +## [warp_to_start_level](#warp_to_start_level) + +### Lua Example +`local booleanValue = warp_to_start_level()` + +### Parameters +- None + +### Returns +- `boolean` + +### C Prototype +`bool warp_to_start_level(void);` + +[:arrow_up_small:](#) + +
+ +## [warp_to_warpnode](#warp_to_warpnode) + +### Lua Example +`local booleanValue = warp_to_warpnode(aLevel, aArea, aAct, aWarpId)` + +### Parameters +| Field | Type | +| ----- | ---- | +| aLevel | `integer` | +| aArea | `integer` | +| aAct | `integer` | +| aWarpId | `integer` | + +### Returns +- `boolean` + +### C Prototype +`bool warp_to_warpnode(s32 aLevel, s32 aArea, s32 aAct, s32 aWarpId);` + +[:arrow_up_small:](#) + +
+ +--- +# functions from smlua_math_utils.h + +
+ + +## [clamp](#clamp) + +### Lua Example +`local integerValue = clamp(a, b, c)` + +### Parameters +| Field | Type | +| ----- | ---- | +| a | `integer` | +| b | `integer` | +| c | `integer` | + +### Returns +- `integer` + +### C Prototype +`s32 clamp(s32 a, s32 b, s32 c);` + +[:arrow_up_small:](#) + +
+ +## [clampf](#clampf) + +### Lua Example +`local numberValue = clampf(a, b, c)` + +### Parameters +| Field | Type | +| ----- | ---- | +| a | `number` | +| b | `number` | +| c | `number` | + +### Returns +- `number` + +### C Prototype +`f32 clampf(f32 a, f32 b, f32 c);` + +[:arrow_up_small:](#) + +
+ +## [max](#max) + +### Lua Example +`local integerValue = max(a, b)` + +### Parameters +| Field | Type | +| ----- | ---- | +| a | `integer` | +| b | `integer` | + +### Returns +- `integer` + +### C Prototype +`s32 max(s32 a, s32 b);` + +[:arrow_up_small:](#) + +
+ +## [maxf](#maxf) + +### Lua Example +`local numberValue = maxf(a, b)` + +### Parameters +| Field | Type | +| ----- | ---- | +| a | `number` | +| b | `number` | + +### Returns +- `number` + +### C Prototype +`f32 maxf(f32 a, f32 b);` + +[:arrow_up_small:](#) + +
+ +## [min](#min) + +### Lua Example +`local integerValue = min(a, b)` + +### Parameters +| Field | Type | +| ----- | ---- | +| a | `integer` | +| b | `integer` | + +### Returns +- `integer` + +### C Prototype +`s32 min(s32 a, s32 b);` + +[:arrow_up_small:](#) + +
+ +## [minf](#minf) + +### Lua Example +`local numberValue = minf(a, b)` + +### Parameters +| Field | Type | +| ----- | ---- | +| a | `number` | +| b | `number` | + +### Returns +- `number` + +### C Prototype +`f32 minf(f32 a, f32 b);` + +[:arrow_up_small:](#) + +
+ +## [sqr](#sqr) + +### Lua Example +`local integerValue = sqr(x)` + +### Parameters +| Field | Type | +| ----- | ---- | +| x | `integer` | + +### Returns +- `integer` + +### C Prototype +`s32 sqr(s32 x);` + +[:arrow_up_small:](#) + +
+ +## [sqrf](#sqrf) + +### Lua Example +`local numberValue = sqrf(x)` + +### Parameters +| Field | Type | +| ----- | ---- | +| x | `number` | + +### Returns +- `number` + +### C Prototype +`f32 sqrf(f32 x);` + +[:arrow_up_small:](#) + +
+ --- # functions from smlua_misc_utils.h diff --git a/docs/lua/functions.md b/docs/lua/functions.md index 6ec3375a5..69ef7e93a 100644 --- a/docs/lua/functions.md +++ b/docs/lua/functions.md @@ -820,7 +820,36 @@ - [determine_interaction](functions-3.md#determine_interaction) - [does_mario_have_normal_cap_on_head](functions-3.md#does_mario_have_normal_cap_on_head) - [get_door_save_file_flag](functions-3.md#get_door_save_file_flag) + - [interact_bbh_entrance](functions-3.md#interact_bbh_entrance) + - [interact_bounce_top](functions-3.md#interact_bounce_top) + - [interact_breakable](functions-3.md#interact_breakable) + - [interact_bully](functions-3.md#interact_bully) + - [interact_cannon_base](functions-3.md#interact_cannon_base) + - [interact_cap](functions-3.md#interact_cap) + - [interact_clam_or_bubba](functions-3.md#interact_clam_or_bubba) + - [interact_coin](functions-3.md#interact_coin) - [interact_damage](functions-3.md#interact_damage) + - [interact_door](functions-3.md#interact_door) + - [interact_flame](functions-3.md#interact_flame) + - [interact_grabbable](functions-3.md#interact_grabbable) + - [interact_hit_from_below](functions-3.md#interact_hit_from_below) + - [interact_hoot](functions-3.md#interact_hoot) + - [interact_igloo_barrier](functions-3.md#interact_igloo_barrier) + - [interact_koopa_shell](functions-3.md#interact_koopa_shell) + - [interact_mr_blizzard](functions-3.md#interact_mr_blizzard) + - [interact_player](functions-3.md#interact_player) + - [interact_pole](functions-3.md#interact_pole) + - [interact_shock](functions-3.md#interact_shock) + - [interact_snufit_bullet](functions-3.md#interact_snufit_bullet) + - [interact_spiny_walking](functions-3.md#interact_spiny_walking) + - [interact_star_or_key](functions-3.md#interact_star_or_key) + - [interact_strong_wind](functions-3.md#interact_strong_wind) + - [interact_text](functions-3.md#interact_text) + - [interact_tornado](functions-3.md#interact_tornado) + - [interact_warp](functions-3.md#interact_warp) + - [interact_warp_door](functions-3.md#interact_warp_door) + - [interact_water_ring](functions-3.md#interact_water_ring) + - [interact_whirlpool](functions-3.md#interact_whirlpool) - [mario_blow_off_cap](functions-3.md#mario_blow_off_cap) - [mario_check_object_grab](functions-3.md#mario_check_object_grab) - [mario_drop_held_object](functions-3.md#mario_drop_held_object) @@ -1075,69 +1104,69 @@
- math_util.h - - [anim_spline_init](functions-3.md#anim_spline_init) - - [anim_spline_poll](functions-3.md#anim_spline_poll) - - [approach_f32](functions-3.md#approach_f32) - - [approach_s32](functions-3.md#approach_s32) - - [find_vector_perpendicular_to_plane](functions-3.md#find_vector_perpendicular_to_plane) - - [get_pos_from_transform_mtx](functions-3.md#get_pos_from_transform_mtx) - - [mtxf_align_terrain_normal](functions-3.md#mtxf_align_terrain_normal) - - [mtxf_align_terrain_triangle](functions-3.md#mtxf_align_terrain_triangle) - - [mtxf_billboard](functions-3.md#mtxf_billboard) - - [mtxf_copy](functions-3.md#mtxf_copy) - - [mtxf_cylboard](functions-3.md#mtxf_cylboard) - - [mtxf_identity](functions-3.md#mtxf_identity) - - [mtxf_inverse](functions-3.md#mtxf_inverse) - - [mtxf_lookat](functions-3.md#mtxf_lookat) - - [mtxf_mul](functions-3.md#mtxf_mul) - - [mtxf_mul_vec3s](functions-3.md#mtxf_mul_vec3s) - - [mtxf_rotate_xy](functions-3.md#mtxf_rotate_xy) - - [mtxf_rotate_xyz_and_translate](functions-3.md#mtxf_rotate_xyz_and_translate) - - [mtxf_rotate_zxy_and_translate](functions-3.md#mtxf_rotate_zxy_and_translate) - - [mtxf_scale_vec3f](functions-3.md#mtxf_scale_vec3f) - - [mtxf_to_mtx](functions-3.md#mtxf_to_mtx) - - [mtxf_translate](functions-3.md#mtxf_translate) - - [not_zero](functions-3.md#not_zero) - - [spline_get_weights](functions-3.md#spline_get_weights) - - [vec3f_add](functions-3.md#vec3f_add) - - [vec3f_combine](functions-3.md#vec3f_combine) - - [vec3f_copy](functions-3.md#vec3f_copy) - - [vec3f_cross](functions-3.md#vec3f_cross) - - [vec3f_dif](functions-3.md#vec3f_dif) - - [vec3f_dist](functions-3.md#vec3f_dist) - - [vec3f_dot](functions-3.md#vec3f_dot) - - [vec3f_get_dist_and_angle](functions-3.md#vec3f_get_dist_and_angle) - - [vec3f_length](functions-3.md#vec3f_length) - - [vec3f_mul](functions-3.md#vec3f_mul) - - [vec3f_normalize](functions-3.md#vec3f_normalize) - - [vec3f_project](functions-3.md#vec3f_project) - - [vec3f_rotate_zxy](functions-3.md#vec3f_rotate_zxy) - - [vec3f_set](functions-3.md#vec3f_set) - - [vec3f_set_dist_and_angle](functions-3.md#vec3f_set_dist_and_angle) - - [vec3f_sum](functions-3.md#vec3f_sum) - - [vec3f_to_vec3s](functions-3.md#vec3f_to_vec3s) - - [vec3s_add](functions-3.md#vec3s_add) - - [vec3s_copy](functions-3.md#vec3s_copy) - - [vec3s_set](functions-3.md#vec3s_set) - - [vec3s_sum](functions-3.md#vec3s_sum) - - [vec3s_to_vec3f](functions-3.md#vec3s_to_vec3f) + - [anim_spline_init](functions-4.md#anim_spline_init) + - [anim_spline_poll](functions-4.md#anim_spline_poll) + - [approach_f32](functions-4.md#approach_f32) + - [approach_s32](functions-4.md#approach_s32) + - [find_vector_perpendicular_to_plane](functions-4.md#find_vector_perpendicular_to_plane) + - [get_pos_from_transform_mtx](functions-4.md#get_pos_from_transform_mtx) + - [mtxf_align_terrain_normal](functions-4.md#mtxf_align_terrain_normal) + - [mtxf_align_terrain_triangle](functions-4.md#mtxf_align_terrain_triangle) + - [mtxf_billboard](functions-4.md#mtxf_billboard) + - [mtxf_copy](functions-4.md#mtxf_copy) + - [mtxf_cylboard](functions-4.md#mtxf_cylboard) + - [mtxf_identity](functions-4.md#mtxf_identity) + - [mtxf_inverse](functions-4.md#mtxf_inverse) + - [mtxf_lookat](functions-4.md#mtxf_lookat) + - [mtxf_mul](functions-4.md#mtxf_mul) + - [mtxf_mul_vec3s](functions-4.md#mtxf_mul_vec3s) + - [mtxf_rotate_xy](functions-4.md#mtxf_rotate_xy) + - [mtxf_rotate_xyz_and_translate](functions-4.md#mtxf_rotate_xyz_and_translate) + - [mtxf_rotate_zxy_and_translate](functions-4.md#mtxf_rotate_zxy_and_translate) + - [mtxf_scale_vec3f](functions-4.md#mtxf_scale_vec3f) + - [mtxf_to_mtx](functions-4.md#mtxf_to_mtx) + - [mtxf_translate](functions-4.md#mtxf_translate) + - [not_zero](functions-4.md#not_zero) + - [spline_get_weights](functions-4.md#spline_get_weights) + - [vec3f_add](functions-4.md#vec3f_add) + - [vec3f_combine](functions-4.md#vec3f_combine) + - [vec3f_copy](functions-4.md#vec3f_copy) + - [vec3f_cross](functions-4.md#vec3f_cross) + - [vec3f_dif](functions-4.md#vec3f_dif) + - [vec3f_dist](functions-4.md#vec3f_dist) + - [vec3f_dot](functions-4.md#vec3f_dot) + - [vec3f_get_dist_and_angle](functions-4.md#vec3f_get_dist_and_angle) + - [vec3f_length](functions-4.md#vec3f_length) + - [vec3f_mul](functions-4.md#vec3f_mul) + - [vec3f_normalize](functions-4.md#vec3f_normalize) + - [vec3f_project](functions-4.md#vec3f_project) + - [vec3f_rotate_zxy](functions-4.md#vec3f_rotate_zxy) + - [vec3f_set](functions-4.md#vec3f_set) + - [vec3f_set_dist_and_angle](functions-4.md#vec3f_set_dist_and_angle) + - [vec3f_sum](functions-4.md#vec3f_sum) + - [vec3f_to_vec3s](functions-4.md#vec3f_to_vec3s) + - [vec3s_add](functions-4.md#vec3s_add) + - [vec3s_copy](functions-4.md#vec3s_copy) + - [vec3s_set](functions-4.md#vec3s_set) + - [vec3s_sum](functions-4.md#vec3s_sum) + - [vec3s_to_vec3f](functions-4.md#vec3s_to_vec3f)
- misc.h - - [update_all_mario_stars](functions-3.md#update_all_mario_stars) + - [update_all_mario_stars](functions-4.md#update_all_mario_stars)
- mod_storage.h - - [mod_storage_clear](functions-3.md#mod_storage_clear) - - [mod_storage_load](functions-3.md#mod_storage_load) - - [mod_storage_load_bool](functions-3.md#mod_storage_load_bool) - - [mod_storage_load_number](functions-3.md#mod_storage_load_number) - - [mod_storage_remove](functions-3.md#mod_storage_remove) - - [mod_storage_save](functions-3.md#mod_storage_save) - - [mod_storage_save_bool](functions-3.md#mod_storage_save_bool) - - [mod_storage_save_number](functions-3.md#mod_storage_save_number) + - [mod_storage_clear](functions-4.md#mod_storage_clear) + - [mod_storage_load](functions-4.md#mod_storage_load) + - [mod_storage_load_bool](functions-4.md#mod_storage_load_bool) + - [mod_storage_load_number](functions-4.md#mod_storage_load_number) + - [mod_storage_remove](functions-4.md#mod_storage_remove) + - [mod_storage_save](functions-4.md#mod_storage_save) + - [mod_storage_save_bool](functions-4.md#mod_storage_save_bool) + - [mod_storage_save_number](functions-4.md#mod_storage_save_number)
@@ -1550,12 +1579,12 @@
- smlua_collision_utils.h - - [collision_find_ceil](functions-4.md#collision_find_ceil) - - [collision_find_floor](functions-4.md#collision_find_floor) - - [collision_find_surface_on_ray](functions-4.md#collision_find_surface_on_ray) - - [collision_get_temp_wall_collision_data](functions-4.md#collision_get_temp_wall_collision_data) - - [get_water_surface_pseudo_floor](functions-4.md#get_water_surface_pseudo_floor) - - [smlua_collision_util_get](functions-4.md#smlua_collision_util_get) + - [collision_find_ceil](functions-5.md#collision_find_ceil) + - [collision_find_floor](functions-5.md#collision_find_floor) + - [collision_find_surface_on_ray](functions-5.md#collision_find_surface_on_ray) + - [collision_get_temp_wall_collision_data](functions-5.md#collision_get_temp_wall_collision_data) + - [get_water_surface_pseudo_floor](functions-5.md#get_water_surface_pseudo_floor) + - [smlua_collision_util_get](functions-5.md#smlua_collision_util_get)
@@ -1564,30 +1593,30 @@
- smlua_level_utils.h - - [level_is_vanilla_level](functions-4.md#level_is_vanilla_level) - - [level_register](functions-4.md#level_register) - - [smlua_level_util_change_area](functions-4.md#smlua_level_util_change_area) - - [smlua_level_util_get_info](functions-4.md#smlua_level_util_get_info) - - [smlua_level_util_get_info_from_course_num](functions-4.md#smlua_level_util_get_info_from_course_num) - - [smlua_level_util_get_info_from_short_name](functions-4.md#smlua_level_util_get_info_from_short_name) - - [warp_exit_level](functions-4.md#warp_exit_level) - - [warp_restart_level](functions-4.md#warp_restart_level) - - [warp_to_castle](functions-4.md#warp_to_castle) - - [warp_to_level](functions-4.md#warp_to_level) - - [warp_to_start_level](functions-4.md#warp_to_start_level) - - [warp_to_warpnode](functions-4.md#warp_to_warpnode) + - [level_is_vanilla_level](functions-5.md#level_is_vanilla_level) + - [level_register](functions-5.md#level_register) + - [smlua_level_util_change_area](functions-5.md#smlua_level_util_change_area) + - [smlua_level_util_get_info](functions-5.md#smlua_level_util_get_info) + - [smlua_level_util_get_info_from_course_num](functions-5.md#smlua_level_util_get_info_from_course_num) + - [smlua_level_util_get_info_from_short_name](functions-5.md#smlua_level_util_get_info_from_short_name) + - [warp_exit_level](functions-5.md#warp_exit_level) + - [warp_restart_level](functions-5.md#warp_restart_level) + - [warp_to_castle](functions-5.md#warp_to_castle) + - [warp_to_level](functions-5.md#warp_to_level) + - [warp_to_start_level](functions-5.md#warp_to_start_level) + - [warp_to_warpnode](functions-5.md#warp_to_warpnode)
- smlua_math_utils.h - - [clamp](functions-4.md#clamp) - - [clampf](functions-4.md#clampf) - - [max](functions-4.md#max) - - [maxf](functions-4.md#maxf) - - [min](functions-4.md#min) - - [minf](functions-4.md#minf) - - [sqr](functions-4.md#sqr) - - [sqrf](functions-4.md#sqrf) + - [clamp](functions-5.md#clamp) + - [clampf](functions-5.md#clampf) + - [max](functions-5.md#max) + - [maxf](functions-5.md#maxf) + - [min](functions-5.md#min) + - [minf](functions-5.md#minf) + - [sqr](functions-5.md#sqr) + - [sqrf](functions-5.md#sqrf)
diff --git a/docs/lua/structs.md b/docs/lua/structs.md index 333e5d244..48f2a463e 100644 --- a/docs/lua/structs.md +++ b/docs/lua/structs.md @@ -2518,6 +2518,7 @@ | headlessServer | `integer` | | | maxPlayers | `integer` | | | nametags | `integer` | | +| pauseAnywhere | `integer` | | | playerInteractions | [enum PlayerInteractions](constants.md#enum-PlayerInteractions) | | | playerKnockbackStrength | `integer` | | | skipIntro | `integer` | | diff --git a/src/game/behaviors/spiny.inc.c b/src/game/behaviors/spiny.inc.c index 1ab65140e..247c984af 100644 --- a/src/game/behaviors/spiny.inc.c +++ b/src/game/behaviors/spiny.inc.c @@ -7,7 +7,7 @@ /** * Hitbox for spiny both while thrown and walking. The interaction type is - * changed to INTERACT_UNKNOWN_08 while walking. + * changed to INTERACT_SPINY_WALKING while walking. */ static struct ObjectHitbox sSpinyHitbox = { /* interactType: */ INTERACT_MR_BLIZZARD, @@ -158,7 +158,7 @@ static void spiny_act_walk(void) { // Don't allow mario to punch the spiny two frames in a row? o->oInteractType = INTERACT_MR_BLIZZARD; } else { - o->oInteractType = INTERACT_UNKNOWN_08; + o->oInteractType = INTERACT_SPINY_WALKING; } } } diff --git a/src/game/interaction.c b/src/game/interaction.c index bf12abb9a..c4c877ff9 100644 --- a/src/game/interaction.c +++ b/src/game/interaction.c @@ -34,36 +34,6 @@ u8 sDelayInvincTimer; s16 gInteractionInvulnerable; -u32 interact_coin(struct MarioState *, u32, struct Object *); -u32 interact_water_ring(struct MarioState *, u32, struct Object *); -u32 interact_star_or_key(struct MarioState *, u32, struct Object *); -u32 interact_bbh_entrance(struct MarioState *, u32, struct Object *); -u32 interact_warp(struct MarioState *, u32, struct Object *); -u32 interact_warp_door(struct MarioState *, u32, struct Object *); -u32 interact_door(struct MarioState *, u32, struct Object *); -u32 interact_cannon_base(struct MarioState *, u32, struct Object *); -u32 interact_player(struct MarioState*, u32, struct Object*); -u32 interact_igloo_barrier(struct MarioState *, u32, struct Object *); -u32 interact_tornado(struct MarioState *, u32, struct Object *); -u32 interact_whirlpool(struct MarioState *, u32, struct Object *); -u32 interact_strong_wind(struct MarioState *, u32, struct Object *); -u32 interact_flame(struct MarioState *, u32, struct Object *); -u32 interact_snufit_bullet(struct MarioState *, u32, struct Object *); -u32 interact_clam_or_bubba(struct MarioState *, u32, struct Object *); -u32 interact_bully(struct MarioState *, u32, struct Object *); -u32 interact_shock(struct MarioState *, u32, struct Object *); -u32 interact_mr_blizzard(struct MarioState *, u32, struct Object *); -u32 interact_hit_from_below(struct MarioState *, u32, struct Object *); -u32 interact_bounce_top(struct MarioState *, u32, struct Object *); -u32 interact_unknown_08(struct MarioState *, u32, struct Object *); -u32 interact_damage(struct MarioState *, u32, struct Object *); -u32 interact_breakable(struct MarioState *, u32, struct Object *); -u32 interact_koopa_shell(struct MarioState *, u32, struct Object *); -u32 interact_pole(struct MarioState *, u32, struct Object *); -u32 interact_hoot(struct MarioState *, u32, struct Object *); -u32 interact_cap(struct MarioState *, u32, struct Object *); -u32 interact_grabbable(struct MarioState *, u32, struct Object *); -u32 interact_text(struct MarioState *, u32, struct Object *); struct InteractionHandler { u32 interactType; @@ -98,7 +68,7 @@ static struct InteractionHandler sInteractionHandlers[] = { { INTERACT_BREAKABLE, interact_breakable }, { INTERACT_KOOPA, interact_bounce_top }, { INTERACT_KOOPA_SHELL, interact_koopa_shell }, - { INTERACT_UNKNOWN_08, interact_unknown_08 }, + { INTERACT_SPINY_WALKING, interact_spiny_walking }, { INTERACT_CAP, interact_cap }, { INTERACT_GRABBABLE, interact_grabbable }, { INTERACT_TEXT, interact_text }, @@ -1864,7 +1834,7 @@ u32 interact_bounce_top(struct MarioState *m, UNUSED u32 interactType, struct Ob return FALSE; } -u32 interact_unknown_08(struct MarioState *m, UNUSED u32 interactType, struct Object *o) { +u32 interact_spiny_walking(struct MarioState *m, UNUSED u32 interactType, struct Object *o) { if (!m || !o) { return FALSE; } u32 interaction = determine_interaction(m, o); diff --git a/src/game/interaction.h b/src/game/interaction.h index 043dd8aa1..00d7c100f 100644 --- a/src/game/interaction.h +++ b/src/game/interaction.h @@ -5,6 +5,8 @@ #include "types.h" +#define INTERACT_UNKNOWN_08 (1 << 8) + enum InteractionType { INTERACT_HOOT = /* 0x00000001 */ (1 << 0), INTERACT_GRABBABLE = /* 0x00000002 */ (1 << 1), @@ -14,7 +16,7 @@ enum InteractionType { INTERACT_CAP = /* 0x00000020 */ (1 << 5), INTERACT_POLE = /* 0x00000040 */ (1 << 6), INTERACT_KOOPA = /* 0x00000080 */ (1 << 7), - INTERACT_UNKNOWN_08 = /* 0x00000100 */ (1 << 8), + INTERACT_SPINY_WALKING = /* 0x00000100 */ (1 << 8), INTERACT_BREAKABLE = /* 0x00000200 */ (1 << 9), INTERACT_STRONG_WIND = /* 0x00000400 */ (1 << 10), INTERACT_WARP_DOOR = /* 0x00000800 */ (1 << 11), @@ -119,6 +121,37 @@ enum InteractionFlag { extern s16 gInteractionInvulnerable; extern u8 gPssSlideStarted; +u32 interact_coin(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_water_ring(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_star_or_key(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_bbh_entrance(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_warp(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_warp_door(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_door(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_cannon_base(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_player(struct MarioState* m, UNUSED u32 interactType, struct Object* o); +u32 interact_igloo_barrier(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_tornado(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_whirlpool(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_strong_wind(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_flame(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_snufit_bullet(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_clam_or_bubba(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_bully(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_shock(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_mr_blizzard(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_hit_from_below(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_bounce_top(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_spiny_walking(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_damage(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_breakable(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_koopa_shell(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_pole(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_hoot(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_cap(struct MarioState *m, UNUSED u32 interactType, struct Object *o); +u32 interact_grabbable(struct MarioState *m, u32 interactType, struct Object *o); +u32 interact_text(struct MarioState *m, UNUSED u32 interactType, struct Object *o); + s16 mario_obj_angle_to_object(struct MarioState *m, struct Object *o); void mario_stop_riding_object(struct MarioState *m); void mario_grab_used_object(struct MarioState *m); @@ -136,7 +169,6 @@ void mario_process_interactions(struct MarioState *m); void mario_handle_special_floors(struct MarioState *m); u8 passes_pvp_interaction_checks(struct MarioState* attacker, struct MarioState* victim); u32 take_damage_and_knock_back(struct MarioState *m, struct Object *o); -u32 interact_damage(struct MarioState *m, UNUSED u32 interactType, struct Object *o); u32 determine_interaction(struct MarioState *m, struct Object *o); #endif // INTERACTION_H diff --git a/src/pc/lua/smlua_cobject_autogen.c b/src/pc/lua/smlua_cobject_autogen.c index 4ec470c17..f87f6014b 100644 --- a/src/pc/lua/smlua_cobject_autogen.c +++ b/src/pc/lua/smlua_cobject_autogen.c @@ -2,26 +2,26 @@ /* SHOULD NOT BE MANUALLY CHANGED */ #include "smlua.h" #include "include/types.h" -#include "game/area.h" -#include "game/camera.h" -#include "game/characters.h" -#include "engine/surface_collision.h" -#include "pc/network/network_player.h" -#include "pc/djui/djui_hud_utils.h" -#include "game/object_helpers.h" -#include "game/mario_step.h" -#include "pc/lua/utils/smlua_anim_utils.h" -#include "pc/lua/utils/smlua_misc_utils.h" -#include "pc/lua/utils/smlua_collision_utils.h" -#include "pc/lua/utils/smlua_level_utils.h" -#include "game/spawn_sound.h" -#include "pc/network/network.h" -#include "game/hardcoded.h" -#include "pc/mods/mod.h" -#include "pc/lua/utils/smlua_audio_utils.h" -#include "game/paintings.h" -#include "pc/djui/djui_types.h" -#include "game/first_person_cam.h" +#include "src/game/area.h" +#include "src/game/camera.h" +#include "src/game/characters.h" +#include "src/engine/surface_collision.h" +#include "src/pc/network/network_player.h" +#include "src/pc/djui/djui_hud_utils.h" +#include "src/game/object_helpers.h" +#include "src/game/mario_step.h" +#include "src/pc/lua/utils/smlua_anim_utils.h" +#include "src/pc/lua/utils/smlua_misc_utils.h" +#include "src/pc/lua/utils/smlua_collision_utils.h" +#include "src/pc/lua/utils/smlua_level_utils.h" +#include "src/game/spawn_sound.h" +#include "src/pc/network/network.h" +#include "src/game/hardcoded.h" +#include "src/pc/mods/mod.h" +#include "src/pc/lua/utils/smlua_audio_utils.h" +#include "src/game/paintings.h" +#include "src/pc/djui/djui_types.h" +#include "src/game/first_person_cam.h" #include "include/object_fields.h" @@ -2194,7 +2194,7 @@ static struct LuaObjectField sRayIntersectionInfoFields[LUA_RAY_INTERSECTION_INF { "surface", LVT_COBJECT_P, offsetof(struct RayIntersectionInfo, surface), false, LOT_SURFACE }, }; -#define LUA_SERVER_SETTINGS_FIELD_COUNT 12 +#define LUA_SERVER_SETTINGS_FIELD_COUNT 13 static struct LuaObjectField sServerSettingsFields[LUA_SERVER_SETTINGS_FIELD_COUNT] = { { "bouncyLevelBounds", LVT_S32, offsetof(struct ServerSettings, bouncyLevelBounds), false, LOT_NONE }, { "bubbleDeath", LVT_U8, offsetof(struct ServerSettings, bubbleDeath), false, LOT_NONE }, @@ -2204,6 +2204,7 @@ static struct LuaObjectField sServerSettingsFields[LUA_SERVER_SETTINGS_FIELD_COU { "headlessServer", LVT_U8, offsetof(struct ServerSettings, headlessServer), false, LOT_NONE }, { "maxPlayers", LVT_U8, offsetof(struct ServerSettings, maxPlayers), false, LOT_NONE }, { "nametags", LVT_U8, offsetof(struct ServerSettings, nametags), false, LOT_NONE }, + { "pauseAnywhere", LVT_U8, offsetof(struct ServerSettings, pauseAnywhere), false, LOT_NONE }, { "playerInteractions", LVT_S32, offsetof(struct ServerSettings, playerInteractions), false, LOT_NONE }, { "playerKnockbackStrength", LVT_U8, offsetof(struct ServerSettings, playerKnockbackStrength), false, LOT_NONE }, { "skipIntro", LVT_U8, offsetof(struct ServerSettings, skipIntro), false, LOT_NONE }, diff --git a/src/pc/lua/smlua_constants_autogen.c b/src/pc/lua/smlua_constants_autogen.c index 6272cca9b..9e5830c2a 100644 --- a/src/pc/lua/smlua_constants_autogen.c +++ b/src/pc/lua/smlua_constants_autogen.c @@ -1471,6 +1471,7 @@ char gSmluaConstants[] = "" "GEO_CONTEXT_AREA_LOAD = 3\n" "GEO_CONTEXT_AREA_INIT = 4\n" "GEO_CONTEXT_HELD_OBJ = 5\n" +"INTERACT_UNKNOWN_08 = (1 << 8)\n" "INTERACT_HOOT = (1 << 0)\n" "INTERACT_GRABBABLE = (1 << 1)\n" "INTERACT_DOOR = (1 << 2)\n" @@ -1479,7 +1480,7 @@ char gSmluaConstants[] = "" "INTERACT_CAP = (1 << 5)\n" "INTERACT_POLE = (1 << 6)\n" "INTERACT_KOOPA = (1 << 7)\n" -"INTERACT_UNKNOWN_08 = (1 << 8)\n" +"INTERACT_SPINY_WALKING = (1 << 8)\n" "INTERACT_BREAKABLE = (1 << 9)\n" "INTERACT_STRONG_WIND = (1 << 10)\n" "INTERACT_WARP_DOOR = (1 << 11)\n" diff --git a/src/pc/lua/smlua_functions_autogen.c b/src/pc/lua/smlua_functions_autogen.c index 54c7c0b7b..ea27d4cb5 100644 --- a/src/pc/lua/smlua_functions_autogen.c +++ b/src/pc/lua/smlua_functions_autogen.c @@ -3,46 +3,46 @@ #include "smlua.h" -#include "audio/external.h" -#include "engine/math_util.h" -#include "engine/surface_collision.h" -#include "engine/surface_load.h" -#include "game/camera.h" -#include "game/characters.h" -#include "game/mario_step.h" -#include "game/mario.h" -#include "pc/djui/djui_popup.h" -#include "pc/network/network_utils.h" -#include "pc/djui/djui_console.h" -#include "pc/djui/djui_chat_message.h" -#include "game/interaction.h" -#include "game/level_info.h" -#include "game/save_file.h" -#include "game/sound_init.h" -#include "pc/djui/djui_hud_utils.h" -#include "pc/network/network_player.h" -#include "pc/network/lag_compensation.h" +#include "src/audio/external.h" +#include "src/engine/math_util.h" +#include "src/engine/surface_collision.h" +#include "src/engine/surface_load.h" +#include "src/game/camera.h" +#include "src/game/characters.h" +#include "src/game/mario_step.h" +#include "src/game/mario.h" +#include "src/pc/djui/djui_popup.h" +#include "src/pc/network/network_utils.h" +#include "src/pc/djui/djui_console.h" +#include "src/pc/djui/djui_chat_message.h" +#include "src/game/interaction.h" +#include "src/game/level_info.h" +#include "src/game/save_file.h" +#include "src/game/sound_init.h" +#include "src/pc/djui/djui_hud_utils.h" +#include "src/pc/network/network_player.h" +#include "src/pc/network/lag_compensation.h" #include "include/behavior_table.h" -#include "pc/lua/utils/smlua_obj_utils.h" -#include "pc/lua/utils/smlua_misc_utils.h" -#include "pc/lua/utils/smlua_collision_utils.h" -#include "pc/lua/utils/smlua_math_utils.h" -#include "pc/lua/utils/smlua_model_utils.h" -#include "pc/lua/utils/smlua_text_utils.h" -#include "pc/lua/utils/smlua_audio_utils.h" -#include "pc/lua/utils/smlua_level_utils.h" -#include "pc/lua/utils/smlua_anim_utils.h" -#include "pc/lua/utils/smlua_deprecated.h" -#include "game/object_list_processor.h" -#include "game/behavior_actions.h" -#include "game/mario_misc.h" -#include "pc/mods/mod_storage.h" -#include "pc/utils/misc.h" -#include "game/level_update.h" -#include "game/area.h" -#include "engine/level_script.h" -#include "game/ingame_menu.h" -#include "game/first_person_cam.h" +#include "src/pc/lua/utils/smlua_obj_utils.h" +#include "src/pc/lua/utils/smlua_misc_utils.h" +#include "src/pc/lua/utils/smlua_collision_utils.h" +#include "src/pc/lua/utils/smlua_math_utils.h" +#include "src/pc/lua/utils/smlua_model_utils.h" +#include "src/pc/lua/utils/smlua_text_utils.h" +#include "src/pc/lua/utils/smlua_audio_utils.h" +#include "src/pc/lua/utils/smlua_level_utils.h" +#include "src/pc/lua/utils/smlua_anim_utils.h" +#include "src/pc/lua/utils/smlua_deprecated.h" +#include "src/game/object_list_processor.h" +#include "src/game/behavior_actions.h" +#include "src/game/mario_misc.h" +#include "src/pc/mods/mod_storage.h" +#include "src/pc/utils/misc.h" +#include "src/game/level_update.h" +#include "src/game/area.h" +#include "src/engine/level_script.h" +#include "src/game/ingame_menu.h" +#include "src/game/first_person_cam.h" //////////// @@ -13406,6 +13406,174 @@ int smlua_func_get_door_save_file_flag(lua_State* L) { return 1; } +int smlua_func_interact_bbh_entrance(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_bbh_entrance", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_bbh_entrance"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_bbh_entrance"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_bbh_entrance"); return 0; } + + lua_pushinteger(L, interact_bbh_entrance(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_bounce_top(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_bounce_top", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_bounce_top"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_bounce_top"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_bounce_top"); return 0; } + + lua_pushinteger(L, interact_bounce_top(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_breakable(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_breakable", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_breakable"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_breakable"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_breakable"); return 0; } + + lua_pushinteger(L, interact_breakable(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_bully(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_bully", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_bully"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_bully"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_bully"); return 0; } + + lua_pushinteger(L, interact_bully(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_cannon_base(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_cannon_base", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_cannon_base"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_cannon_base"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_cannon_base"); return 0; } + + lua_pushinteger(L, interact_cannon_base(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_cap(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_cap", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_cap"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_cap"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_cap"); return 0; } + + lua_pushinteger(L, interact_cap(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_clam_or_bubba(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_clam_or_bubba", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_clam_or_bubba"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_clam_or_bubba"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_clam_or_bubba"); return 0; } + + lua_pushinteger(L, interact_clam_or_bubba(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_coin(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_coin", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_coin"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_coin"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_coin"); return 0; } + + lua_pushinteger(L, interact_coin(m, interactType, o)); + + return 1; +} + int smlua_func_interact_damage(lua_State* L) { if (L == NULL) { return 0; } @@ -13427,6 +13595,447 @@ int smlua_func_interact_damage(lua_State* L) { return 1; } +int smlua_func_interact_door(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_door", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_door"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_door"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_door"); return 0; } + + lua_pushinteger(L, interact_door(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_flame(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_flame", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_flame"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_flame"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_flame"); return 0; } + + lua_pushinteger(L, interact_flame(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_grabbable(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_grabbable", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_grabbable"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_grabbable"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_grabbable"); return 0; } + + lua_pushinteger(L, interact_grabbable(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_hit_from_below(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_hit_from_below", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_hit_from_below"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_hit_from_below"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_hit_from_below"); return 0; } + + lua_pushinteger(L, interact_hit_from_below(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_hoot(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_hoot", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_hoot"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_hoot"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_hoot"); return 0; } + + lua_pushinteger(L, interact_hoot(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_igloo_barrier(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_igloo_barrier", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_igloo_barrier"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_igloo_barrier"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_igloo_barrier"); return 0; } + + lua_pushinteger(L, interact_igloo_barrier(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_koopa_shell(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_koopa_shell", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_koopa_shell"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_koopa_shell"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_koopa_shell"); return 0; } + + lua_pushinteger(L, interact_koopa_shell(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_mr_blizzard(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_mr_blizzard", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_mr_blizzard"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_mr_blizzard"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_mr_blizzard"); return 0; } + + lua_pushinteger(L, interact_mr_blizzard(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_player(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_player", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_player"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_player"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_player"); return 0; } + + lua_pushinteger(L, interact_player(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_pole(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_pole", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_pole"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_pole"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_pole"); return 0; } + + lua_pushinteger(L, interact_pole(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_shock(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_shock", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_shock"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_shock"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_shock"); return 0; } + + lua_pushinteger(L, interact_shock(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_snufit_bullet(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_snufit_bullet", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_snufit_bullet"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_snufit_bullet"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_snufit_bullet"); return 0; } + + lua_pushinteger(L, interact_snufit_bullet(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_spiny_walking(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_spiny_walking", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_spiny_walking"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_spiny_walking"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_spiny_walking"); return 0; } + + lua_pushinteger(L, interact_spiny_walking(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_star_or_key(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_star_or_key", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_star_or_key"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_star_or_key"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_star_or_key"); return 0; } + + lua_pushinteger(L, interact_star_or_key(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_strong_wind(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_strong_wind", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_strong_wind"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_strong_wind"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_strong_wind"); return 0; } + + lua_pushinteger(L, interact_strong_wind(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_text(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_text", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_text"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_text"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_text"); return 0; } + + lua_pushinteger(L, interact_text(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_tornado(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_tornado", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_tornado"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_tornado"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_tornado"); return 0; } + + lua_pushinteger(L, interact_tornado(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_warp(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_warp", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_warp"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_warp"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_warp"); return 0; } + + lua_pushinteger(L, interact_warp(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_warp_door(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_warp_door", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_warp_door"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_warp_door"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_warp_door"); return 0; } + + lua_pushinteger(L, interact_warp_door(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_water_ring(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_water_ring", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_water_ring"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_water_ring"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_water_ring"); return 0; } + + lua_pushinteger(L, interact_water_ring(m, interactType, o)); + + return 1; +} + +int smlua_func_interact_whirlpool(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 3) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "interact_whirlpool", 3, top); + return 0; + } + + struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "interact_whirlpool"); return 0; } + u32 interactType = smlua_to_integer(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "interact_whirlpool"); return 0; } + struct Object* o = (struct Object*)smlua_to_cobject(L, 3, LOT_OBJECT); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "interact_whirlpool"); return 0; } + + lua_pushinteger(L, interact_whirlpool(m, interactType, o)); + + return 1; +} + int smlua_func_mario_blow_off_cap(lua_State* L) { if (L == NULL) { return 0; } @@ -32182,7 +32791,36 @@ void smlua_bind_functions_autogen(void) { smlua_bind_function(L, "determine_interaction", smlua_func_determine_interaction); smlua_bind_function(L, "does_mario_have_normal_cap_on_head", smlua_func_does_mario_have_normal_cap_on_head); smlua_bind_function(L, "get_door_save_file_flag", smlua_func_get_door_save_file_flag); + smlua_bind_function(L, "interact_bbh_entrance", smlua_func_interact_bbh_entrance); + smlua_bind_function(L, "interact_bounce_top", smlua_func_interact_bounce_top); + smlua_bind_function(L, "interact_breakable", smlua_func_interact_breakable); + smlua_bind_function(L, "interact_bully", smlua_func_interact_bully); + smlua_bind_function(L, "interact_cannon_base", smlua_func_interact_cannon_base); + smlua_bind_function(L, "interact_cap", smlua_func_interact_cap); + smlua_bind_function(L, "interact_clam_or_bubba", smlua_func_interact_clam_or_bubba); + smlua_bind_function(L, "interact_coin", smlua_func_interact_coin); smlua_bind_function(L, "interact_damage", smlua_func_interact_damage); + smlua_bind_function(L, "interact_door", smlua_func_interact_door); + smlua_bind_function(L, "interact_flame", smlua_func_interact_flame); + smlua_bind_function(L, "interact_grabbable", smlua_func_interact_grabbable); + smlua_bind_function(L, "interact_hit_from_below", smlua_func_interact_hit_from_below); + smlua_bind_function(L, "interact_hoot", smlua_func_interact_hoot); + smlua_bind_function(L, "interact_igloo_barrier", smlua_func_interact_igloo_barrier); + smlua_bind_function(L, "interact_koopa_shell", smlua_func_interact_koopa_shell); + smlua_bind_function(L, "interact_mr_blizzard", smlua_func_interact_mr_blizzard); + smlua_bind_function(L, "interact_player", smlua_func_interact_player); + smlua_bind_function(L, "interact_pole", smlua_func_interact_pole); + smlua_bind_function(L, "interact_shock", smlua_func_interact_shock); + smlua_bind_function(L, "interact_snufit_bullet", smlua_func_interact_snufit_bullet); + smlua_bind_function(L, "interact_spiny_walking", smlua_func_interact_spiny_walking); + smlua_bind_function(L, "interact_star_or_key", smlua_func_interact_star_or_key); + smlua_bind_function(L, "interact_strong_wind", smlua_func_interact_strong_wind); + smlua_bind_function(L, "interact_text", smlua_func_interact_text); + smlua_bind_function(L, "interact_tornado", smlua_func_interact_tornado); + smlua_bind_function(L, "interact_warp", smlua_func_interact_warp); + smlua_bind_function(L, "interact_warp_door", smlua_func_interact_warp_door); + smlua_bind_function(L, "interact_water_ring", smlua_func_interact_water_ring); + smlua_bind_function(L, "interact_whirlpool", smlua_func_interact_whirlpool); smlua_bind_function(L, "mario_blow_off_cap", smlua_func_mario_blow_off_cap); smlua_bind_function(L, "mario_check_object_grab", smlua_func_mario_check_object_grab); smlua_bind_function(L, "mario_drop_held_object", smlua_func_mario_drop_held_object);