mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-22 12:05:11 +00:00
Added allocate_mario_action()
This commit is contained in:
parent
9c502da395
commit
0cd2a91e9c
13 changed files with 76 additions and 19 deletions
|
@ -4385,6 +4385,9 @@ ACT_FLAG_BUTT_OR_STOMACH_SLIDE = (1 << 18)
|
||||||
--- @type integer
|
--- @type integer
|
||||||
ACT_FLAG_CONTROL_JUMP_HEIGHT = (1 << 25)
|
ACT_FLAG_CONTROL_JUMP_HEIGHT = (1 << 25)
|
||||||
|
|
||||||
|
--- @type integer
|
||||||
|
ACT_FLAG_CUSTOM_ACTION = (1 << 30)
|
||||||
|
|
||||||
--- @type integer
|
--- @type integer
|
||||||
ACT_FLAG_DIVING = (1 << 19)
|
ACT_FLAG_DIVING = (1 << 19)
|
||||||
|
|
||||||
|
|
|
@ -3476,6 +3476,12 @@ function collision_find_surface_on_ray(startX, startY, startZ, endX, endY, endZ)
|
||||||
-- ...
|
-- ...
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- @param actFlags integer
|
||||||
|
--- @return integer
|
||||||
|
function allocate_mario_action(actFlags)
|
||||||
|
-- ...
|
||||||
|
end
|
||||||
|
|
||||||
--- @return integer
|
--- @return integer
|
||||||
function get_network_area_timer()
|
function get_network_area_timer()
|
||||||
-- ...
|
-- ...
|
||||||
|
|
|
@ -1550,6 +1550,7 @@
|
||||||
- ACT_FLAG_ATTACKING
|
- ACT_FLAG_ATTACKING
|
||||||
- ACT_FLAG_BUTT_OR_STOMACH_SLIDE
|
- ACT_FLAG_BUTT_OR_STOMACH_SLIDE
|
||||||
- ACT_FLAG_CONTROL_JUMP_HEIGHT
|
- ACT_FLAG_CONTROL_JUMP_HEIGHT
|
||||||
|
- ACT_FLAG_CUSTOM_ACTION
|
||||||
- ACT_FLAG_DIVING
|
- ACT_FLAG_DIVING
|
||||||
- ACT_FLAG_HANGING
|
- ACT_FLAG_HANGING
|
||||||
- ACT_FLAG_IDLE
|
- ACT_FLAG_IDLE
|
||||||
|
|
|
@ -634,6 +634,7 @@
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
- smlua_misc_utils.h
|
- smlua_misc_utils.h
|
||||||
|
- [allocate_mario_action](#allocate_mario_action)
|
||||||
- [get_network_area_timer](#get_network_area_timer)
|
- [get_network_area_timer](#get_network_area_timer)
|
||||||
- [hud_hide](#hud_hide)
|
- [hud_hide](#hud_hide)
|
||||||
- [hud_show](#hud_show)
|
- [hud_show](#hud_show)
|
||||||
|
@ -11614,6 +11615,26 @@ The `reliable` field will ensure that the packet arrives, but should be used spa
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
|
|
||||||
|
## [allocate_mario_action](#allocate_mario_action)
|
||||||
|
|
||||||
|
### Lua Example
|
||||||
|
`local integerValue = allocate_mario_action(actFlags)`
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
| Field | Type |
|
||||||
|
| ----- | ---- |
|
||||||
|
| actFlags | `integer` |
|
||||||
|
|
||||||
|
### Returns
|
||||||
|
- `integer`
|
||||||
|
|
||||||
|
### C Prototype
|
||||||
|
`u32 allocate_mario_action(u32 actFlags);`
|
||||||
|
|
||||||
|
[:arrow_up_small:](#)
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
## [get_network_area_timer](#get_network_area_timer)
|
## [get_network_area_timer](#get_network_area_timer)
|
||||||
|
|
||||||
### Lua Example
|
### Lua Example
|
||||||
|
|
|
@ -167,6 +167,7 @@
|
||||||
#define ACT_FLAG_PAUSE_EXIT /* 0x08000000 */ (1 << 27)
|
#define ACT_FLAG_PAUSE_EXIT /* 0x08000000 */ (1 << 27)
|
||||||
#define ACT_FLAG_SWIMMING_OR_FLYING /* 0x10000000 */ (1 << 28)
|
#define ACT_FLAG_SWIMMING_OR_FLYING /* 0x10000000 */ (1 << 28)
|
||||||
#define ACT_FLAG_WATER_OR_TEXT /* 0x20000000 */ (1 << 29)
|
#define ACT_FLAG_WATER_OR_TEXT /* 0x20000000 */ (1 << 29)
|
||||||
|
#define ACT_FLAG_CUSTOM_ACTION /* 0x40000000 */ (1 << 30)
|
||||||
#define ACT_FLAG_THROWING /* 0x80000000 */ (1 << 31)
|
#define ACT_FLAG_THROWING /* 0x80000000 */ (1 << 31)
|
||||||
|
|
||||||
#define ACT_UNINITIALIZED 0x00000000 // (0x000)
|
#define ACT_UNINITIALIZED 0x00000000 // (0x000)
|
||||||
|
|
|
@ -36,8 +36,8 @@ end
|
||||||
-- luigi --
|
-- luigi --
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
ACT_SPIN_POUND_LAND = (0x037 | ACT_FLAG_STATIONARY | ACT_FLAG_ATTACKING)
|
ACT_SPIN_POUND_LAND = allocate_mario_action(ACT_FLAG_STATIONARY | ACT_FLAG_ATTACKING)
|
||||||
ACT_SPIN_POUND = (0x08F | ACT_FLAG_AIR | ACT_FLAG_ATTACKING)
|
ACT_SPIN_POUND = allocate_mario_action(ACT_FLAG_AIR | ACT_FLAG_ATTACKING)
|
||||||
|
|
||||||
function act_spin_pound(m)
|
function act_spin_pound(m)
|
||||||
local e = gStateExtras[m.playerIndex]
|
local e = gStateExtras[m.playerIndex]
|
||||||
|
@ -360,7 +360,7 @@ gEventTable[CT_TOAD] = {
|
||||||
-- waluigi --
|
-- waluigi --
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
ACT_WALL_SLIDE = (0x0BF | ACT_FLAG_AIR | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
|
ACT_WALL_SLIDE = allocate_mario_action(ACT_FLAG_AIR | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
|
||||||
|
|
||||||
function act_wall_slide(m)
|
function act_wall_slide(m)
|
||||||
if (m.input & INPUT_A_PRESSED) ~= 0 then
|
if (m.input & INPUT_A_PRESSED) ~= 0 then
|
||||||
|
@ -482,10 +482,10 @@ gEventTable[CT_WALUIGI] = {
|
||||||
-- wario --
|
-- wario --
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
ACT_WARIO_DASH = (0x05B | ACT_FLAG_MOVING | ACT_FLAG_ATTACKING)
|
ACT_WARIO_DASH = allocate_mario_action(ACT_FLAG_MOVING | ACT_FLAG_ATTACKING)
|
||||||
ACT_WARIO_AIR_DASH = (0x05B | ACT_FLAG_AIR | ACT_FLAG_ATTACKING)
|
ACT_WARIO_AIR_DASH = allocate_mario_action(ACT_FLAG_AIR | ACT_FLAG_ATTACKING)
|
||||||
ACT_CORKSCREW_CONK = (0x05D | ACT_FLAG_AIR | ACT_FLAG_ATTACKING | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
|
ACT_CORKSCREW_CONK = allocate_mario_action(ACT_FLAG_AIR | ACT_FLAG_ATTACKING | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
|
||||||
ACT_WARIO_SPINNING_OBJ = (0x05B | ACT_FLAG_STATIONARY)
|
ACT_WARIO_SPINNING_OBJ = allocate_mario_action(ACT_FLAG_STATIONARY)
|
||||||
|
|
||||||
function act_corkscrew_conk(m)
|
function act_corkscrew_conk(m)
|
||||||
local e = gStateExtras[m.playerIndex]
|
local e = gStateExtras[m.playerIndex]
|
||||||
|
|
|
@ -6,18 +6,18 @@
|
||||||
-- initialize actions --
|
-- initialize actions --
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
ACT_SPIN_POUND_LAND = (0x037 | ACT_FLAG_STATIONARY | ACT_FLAG_ATTACKING)
|
ACT_SPIN_POUND_LAND = allocate_mario_action(ACT_FLAG_STATIONARY | ACT_FLAG_ATTACKING)
|
||||||
ACT_ROLL = (0x05B | ACT_FLAG_MOVING | ACT_FLAG_BUTT_OR_STOMACH_SLIDE)
|
ACT_ROLL = allocate_mario_action(ACT_FLAG_MOVING | ACT_FLAG_BUTT_OR_STOMACH_SLIDE)
|
||||||
ACT_GROUND_POUND_JUMP = (0x084 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
|
ACT_GROUND_POUND_JUMP = allocate_mario_action(ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
|
||||||
ACT_SPIN_JUMP = (0x08B | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
|
ACT_SPIN_JUMP = allocate_mario_action(ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
|
||||||
ACT_SPIN_POUND = (0x08F | ACT_FLAG_AIR | ACT_FLAG_ATTACKING)
|
ACT_SPIN_POUND = allocate_mario_action(ACT_FLAG_AIR | ACT_FLAG_ATTACKING)
|
||||||
ACT_LEDGE_PARKOUR = (0x09D | ACT_FLAG_AIR)
|
ACT_LEDGE_PARKOUR = allocate_mario_action(ACT_FLAG_AIR)
|
||||||
ACT_ROLL_AIR = (0x0BA | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
|
ACT_ROLL_AIR = allocate_mario_action(ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
|
||||||
ACT_WALL_SLIDE = (0x0BF | ACT_FLAG_AIR | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
|
ACT_WALL_SLIDE = allocate_mario_action(ACT_FLAG_AIR | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)
|
||||||
ACT_WATER_GROUND_POUND = (0x0C9 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT | ACT_FLAG_ATTACKING)
|
ACT_WATER_GROUND_POUND = allocate_mario_action(ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT | ACT_FLAG_ATTACKING)
|
||||||
ACT_WATER_GROUND_POUND_LAND = (0x0CA | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
|
ACT_WATER_GROUND_POUND_LAND = allocate_mario_action(ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
|
||||||
ACT_WATER_GROUND_POUND_STROKE = (0x0CB | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
|
ACT_WATER_GROUND_POUND_STROKE = allocate_mario_action(ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
|
||||||
ACT_WATER_GROUND_POUND_JUMP = (0x0CC | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
|
ACT_WATER_GROUND_POUND_JUMP = allocate_mario_action(ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)
|
||||||
|
|
||||||
-----------------------------
|
-----------------------------
|
||||||
-- initialize extra fields --
|
-- initialize extra fields --
|
||||||
|
|
|
@ -1651,6 +1651,7 @@ char gSmluaConstants[] = ""
|
||||||
"ACT_FLAG_PAUSE_EXIT = (1 << 27)\n"
|
"ACT_FLAG_PAUSE_EXIT = (1 << 27)\n"
|
||||||
"ACT_FLAG_SWIMMING_OR_FLYING = (1 << 28)\n"
|
"ACT_FLAG_SWIMMING_OR_FLYING = (1 << 28)\n"
|
||||||
"ACT_FLAG_WATER_OR_TEXT = (1 << 29)\n"
|
"ACT_FLAG_WATER_OR_TEXT = (1 << 29)\n"
|
||||||
|
"ACT_FLAG_CUSTOM_ACTION = (1 << 30)\n"
|
||||||
"ACT_FLAG_THROWING = (1 << 31)\n"
|
"ACT_FLAG_THROWING = (1 << 31)\n"
|
||||||
"ACT_UNINITIALIZED = 0x00000000\n"
|
"ACT_UNINITIALIZED = 0x00000000\n"
|
||||||
"ACT_IDLE = 0x0C400201\n"
|
"ACT_IDLE = 0x0C400201\n"
|
||||||
|
|
|
@ -7400,6 +7400,17 @@ int smlua_func_collision_find_surface_on_ray(lua_State* L) {
|
||||||
// smlua_misc_utils.h //
|
// smlua_misc_utils.h //
|
||||||
////////////////////////
|
////////////////////////
|
||||||
|
|
||||||
|
int smlua_func_allocate_mario_action(lua_State* L) {
|
||||||
|
if(!smlua_functions_valid_param_count(L, 1)) { return 0; }
|
||||||
|
|
||||||
|
u32 actFlags = smlua_to_integer(L, 1);
|
||||||
|
if (!gSmLuaConvertSuccess) { return 0; }
|
||||||
|
|
||||||
|
lua_pushinteger(L, allocate_mario_action(actFlags));
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
int smlua_func_get_network_area_timer(UNUSED lua_State* L) {
|
int smlua_func_get_network_area_timer(UNUSED lua_State* L) {
|
||||||
if(!smlua_functions_valid_param_count(L, 0)) { return 0; }
|
if(!smlua_functions_valid_param_count(L, 0)) { return 0; }
|
||||||
|
|
||||||
|
@ -8769,6 +8780,7 @@ void smlua_bind_functions_autogen(void) {
|
||||||
smlua_bind_function(L, "collision_find_surface_on_ray", smlua_func_collision_find_surface_on_ray);
|
smlua_bind_function(L, "collision_find_surface_on_ray", smlua_func_collision_find_surface_on_ray);
|
||||||
|
|
||||||
// smlua_misc_utils.h
|
// smlua_misc_utils.h
|
||||||
|
smlua_bind_function(L, "allocate_mario_action", smlua_func_allocate_mario_action);
|
||||||
smlua_bind_function(L, "get_network_area_timer", smlua_func_get_network_area_timer);
|
smlua_bind_function(L, "get_network_area_timer", smlua_func_get_network_area_timer);
|
||||||
smlua_bind_function(L, "hud_hide", smlua_func_hud_hide);
|
smlua_bind_function(L, "hud_hide", smlua_func_hud_hide);
|
||||||
smlua_bind_function(L, "hud_show", smlua_func_hud_show);
|
smlua_bind_function(L, "hud_show", smlua_func_hud_show);
|
||||||
|
|
|
@ -230,6 +230,7 @@ struct LuaHookedMarioAction {
|
||||||
|
|
||||||
static struct LuaHookedMarioAction sHookedMarioActions[MAX_HOOKED_ACTIONS] = { 0 };
|
static struct LuaHookedMarioAction sHookedMarioActions[MAX_HOOKED_ACTIONS] = { 0 };
|
||||||
static int sHookedMarioActionsCount = 0;
|
static int sHookedMarioActionsCount = 0;
|
||||||
|
u32 gLuaMarioActionIndex = 0;
|
||||||
|
|
||||||
int smlua_hook_mario_action(lua_State* L) {
|
int smlua_hook_mario_action(lua_State* L) {
|
||||||
if (L == NULL) { return 0; }
|
if (L == NULL) { return 0; }
|
||||||
|
@ -742,6 +743,7 @@ static void smlua_clear_hooks(void) {
|
||||||
hooked->mod = NULL;
|
hooked->mod = NULL;
|
||||||
}
|
}
|
||||||
sHookedBehaviorsCount = 0;
|
sHookedBehaviorsCount = 0;
|
||||||
|
gLuaMarioActionIndex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void smlua_bind_hooks(void) {
|
void smlua_bind_hooks(void) {
|
||||||
|
|
|
@ -40,6 +40,8 @@ static char* LuaHookedEventTypeName[] = {
|
||||||
"HOOK_MAX"
|
"HOOK_MAX"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern u32 gLuaMarioActionIndex;
|
||||||
|
|
||||||
void smlua_call_event_hooks(enum LuaHookedEventType hookType);
|
void smlua_call_event_hooks(enum LuaHookedEventType hookType);
|
||||||
void smlua_call_event_hooks_mario_param(enum LuaHookedEventType hookType, struct MarioState* m);
|
void smlua_call_event_hooks_mario_param(enum LuaHookedEventType hookType, struct MarioState* m);
|
||||||
void smlua_call_event_hooks_mario_params(enum LuaHookedEventType hookType, struct MarioState* m1, struct MarioState* m2);
|
void smlua_call_event_hooks_mario_params(enum LuaHookedEventType hookType, struct MarioState* m1, struct MarioState* m2);
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#include "sm64.h"
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
#include "data/dynos_coop.c.h"
|
#include "data/dynos_coop.c.h"
|
||||||
|
@ -33,3 +34,8 @@ bool warp_exit_level(s32 aDelay) {
|
||||||
bool warp_to_castle(s32 aLevel) {
|
bool warp_to_castle(s32 aLevel) {
|
||||||
return dynos_warp_to_castle(aLevel);
|
return dynos_warp_to_castle(aLevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u32 allocate_mario_action(u32 actFlags) {
|
||||||
|
actFlags = actFlags & (~((u32)0xFF));
|
||||||
|
return actFlags | ACT_FLAG_CUSTOM_ACTION | gLuaMarioActionIndex++;
|
||||||
|
}
|
|
@ -11,4 +11,6 @@ bool warp_restart_level(void);
|
||||||
bool warp_exit_level(s32 aDelay);
|
bool warp_exit_level(s32 aDelay);
|
||||||
bool warp_to_castle(s32 aLevel);
|
bool warp_to_castle(s32 aLevel);
|
||||||
|
|
||||||
|
u32 allocate_mario_action(u32 actFlags);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue