mirror of
				https://github.com/coop-deluxe/sm64coopdx.git
				synced 2025-10-30 08:01:01 +00:00 
			
		
		
		
	Added HOOK_ALLOW_HAZARD_SURFACE and various fixes (#209)
* Fixed naming from ceil to cell * Added HOOK_ON_QUICKSAND * Modified hook and removed weird newlines * Renamed hook and increased usage HOOK_ALLOW_QUICKSAND -> HOOK_ALLOW_HAZARD_SURFACE Now also works on lavaboost. Suggestion by Agent X. May add this hook to the death barrier check. * Autogen * Fixed downwarping to quicksand upon popping As a side effect though, Mario will no longer snap to the floor upon being popped.
This commit is contained in:
		
							parent
							
								
									dbff766af0
								
							
						
					
					
						commit
						97090abf28
					
				
					 17 changed files with 68 additions and 27 deletions
				
			
		| 
						 | 
				
			
			@ -8119,7 +8119,10 @@ HOOK_ON_CHANGE_CAMERA_ANGLE = 24
 | 
			
		|||
HOOK_ON_SCREEN_TRANSITION = 25
 | 
			
		||||
 | 
			
		||||
--- @type LuaHookedEventType
 | 
			
		||||
HOOK_MAX = 26
 | 
			
		||||
HOOK_ALLOW_HAZARD_SURFACE = 26
 | 
			
		||||
 | 
			
		||||
--- @type LuaHookedEventType
 | 
			
		||||
HOOK_MAX = 27
 | 
			
		||||
 | 
			
		||||
--- @class HudDisplayFlags
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -623,7 +623,7 @@
 | 
			
		|||
--- @field public yaw integer
 | 
			
		||||
 | 
			
		||||
--- @class LevelValues
 | 
			
		||||
--- @field public ceilHeightLimit integer
 | 
			
		||||
--- @field public cellHeightLimit integer
 | 
			
		||||
--- @field public coinsRequiredForCoinStar integer
 | 
			
		||||
--- @field public entryLevel LevelNum
 | 
			
		||||
--- @field public exitCastleArea integer
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2875,7 +2875,8 @@
 | 
			
		|||
| HOOK_USE_ACT_SELECT | 23 |
 | 
			
		||||
| HOOK_ON_CHANGE_CAMERA_ANGLE | 24 |
 | 
			
		||||
| HOOK_ON_SCREEN_TRANSITION | 25 |
 | 
			
		||||
| HOOK_MAX | 26 |
 | 
			
		||||
| HOOK_ALLOW_HAZARD_SURFACE | 26 |
 | 
			
		||||
| HOOK_MAX | 27 |
 | 
			
		||||
 | 
			
		||||
[:arrow_up_small:](#)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -918,7 +918,7 @@
 | 
			
		|||
 | 
			
		||||
| Field | Type | Access |
 | 
			
		||||
| ----- | ---- | ------ |
 | 
			
		||||
| ceilHeightLimit | `integer` |  |
 | 
			
		||||
| cellHeightLimit | `integer` |  |
 | 
			
		||||
| coinsRequiredForCoinStar | `integer` |  |
 | 
			
		||||
| entryLevel | [enum LevelNum](constants.md#enum-LevelNum) |  |
 | 
			
		||||
| exitCastleArea | `integer` |  |
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -380,7 +380,7 @@ static struct Surface *find_ceil_from_list(struct SurfaceNode *surfaceNode, s32
 | 
			
		|||
 | 
			
		||||
    // set pheight to highest value
 | 
			
		||||
    if (gLevelValues.fixCollisionBugs) {
 | 
			
		||||
        *pheight = gLevelValues.ceilHeightLimit;
 | 
			
		||||
        *pheight = gLevelValues.cellHeightLimit;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Stay in this loop until out of ceilings.
 | 
			
		||||
| 
						 | 
				
			
			@ -468,8 +468,8 @@ f32 find_ceil(f32 posX, f32 posY, f32 posZ, struct Surface **pceil) {
 | 
			
		|||
    s16 cellZ, cellX;
 | 
			
		||||
    struct Surface *ceil, *dynamicCeil;
 | 
			
		||||
    struct SurfaceNode *surfaceList;
 | 
			
		||||
    f32 height = gLevelValues.ceilHeightLimit;
 | 
			
		||||
    f32 dynamicHeight = gLevelValues.ceilHeightLimit;
 | 
			
		||||
    f32 height = gLevelValues.cellHeightLimit;
 | 
			
		||||
    f32 dynamicHeight = gLevelValues.cellHeightLimit;
 | 
			
		||||
    s16 x, y, z;
 | 
			
		||||
 | 
			
		||||
    //! (Parallel Universes) Because position is casted to an s16, reaching higher
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,7 @@
 | 
			
		|||
#include "engine/extended_bounds.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define CEIL_HEIGHT_LIMIT           20000
 | 
			
		||||
#define CELL_HEIGHT_LIMIT           20000
 | 
			
		||||
#define FLOOR_LOWER_LIMIT           -11000
 | 
			
		||||
#define FLOOR_LOWER_LIMIT_MISC      (FLOOR_LOWER_LIMIT + 1000)
 | 
			
		||||
// same as FLOOR_LOWER_LIMIT_MISC, explicitly for shadow.c 
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -806,10 +806,10 @@ void set_camera_height(struct Camera *c, f32 goalHeight) {
 | 
			
		|||
            }
 | 
			
		||||
        }
 | 
			
		||||
        approach_camera_height(c, goalHeight, 20.f);
 | 
			
		||||
        if (camCeilHeight != gLevelValues.ceilHeightLimit) {
 | 
			
		||||
        if (camCeilHeight != gLevelValues.cellHeightLimit) {
 | 
			
		||||
            camCeilHeight -= baseOff;
 | 
			
		||||
            if ((c->pos[1] > camCeilHeight && sMarioGeometry.currFloorHeight + baseOff < camCeilHeight)
 | 
			
		||||
                || (sMarioGeometry.currCeilHeight != gLevelValues.ceilHeightLimit
 | 
			
		||||
                || (sMarioGeometry.currCeilHeight != gLevelValues.cellHeightLimit
 | 
			
		||||
                    && sMarioGeometry.currCeilHeight > camCeilHeight && c->pos[1] > camCeilHeight)) {
 | 
			
		||||
                c->pos[1] = camCeilHeight;
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			@ -1515,7 +1515,7 @@ s32 update_fixed_camera(struct Camera *c, Vec3f focus, UNUSED Vec3f pos) {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    ceilHeight = find_ceil(c->pos[0], goalHeight - 100.f, c->pos[2], &ceiling);
 | 
			
		||||
    if (ceilHeight != gLevelValues.ceilHeightLimit) {
 | 
			
		||||
    if (ceilHeight != gLevelValues.cellHeightLimit) {
 | 
			
		||||
        if (goalHeight > (ceilHeight -= 125.f)) {
 | 
			
		||||
            goalHeight = ceilHeight;
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -1614,7 +1614,7 @@ s32 update_boss_fight_camera(struct Camera *c, Vec3f focus, Vec3f pos) {
 | 
			
		|||
    // When C-Down is not active, this
 | 
			
		||||
    vec3f_set_dist_and_angle(focus, pos, focusDistance, 0x1000, yaw);
 | 
			
		||||
    // Find the floor of the arena
 | 
			
		||||
    pos[1] = find_floor(c->areaCenX, gLevelValues.ceilHeightLimit, c->areaCenZ, &floor);
 | 
			
		||||
    pos[1] = find_floor(c->areaCenX, gLevelValues.cellHeightLimit, c->areaCenZ, &floor);
 | 
			
		||||
    if (floor != NULL) {
 | 
			
		||||
        nx = floor->normal.x;
 | 
			
		||||
        ny = floor->normal.y;
 | 
			
		||||
| 
						 | 
				
			
			@ -2351,7 +2351,7 @@ s16 update_default_camera(struct Camera *c) {
 | 
			
		|||
        if (c->mode == CAMERA_MODE_FREE_ROAM) {
 | 
			
		||||
            camFloorHeight -= 100.f;
 | 
			
		||||
        }
 | 
			
		||||
        ceilHeight = gLevelValues.ceilHeightLimit;
 | 
			
		||||
        ceilHeight = gLevelValues.cellHeightLimit;
 | 
			
		||||
        vec3f_copy(c->focus, sMarioCamState->pos);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2360,7 +2360,7 @@ s16 update_default_camera(struct Camera *c) {
 | 
			
		|||
        if (sMarioCamState->pos[1] - 100.f > camFloorHeight) {
 | 
			
		||||
            camFloorHeight = sMarioCamState->pos[1] - 100.f;
 | 
			
		||||
        }
 | 
			
		||||
        ceilHeight = gLevelValues.ceilHeightLimit;
 | 
			
		||||
        ceilHeight = gLevelValues.cellHeightLimit;
 | 
			
		||||
        vec3f_copy(c->focus, sMarioCamState->pos);
 | 
			
		||||
    }
 | 
			
		||||
    if (camFloorHeight != gLevelValues.floorLowerLimit) {
 | 
			
		||||
| 
						 | 
				
			
			@ -2385,7 +2385,7 @@ s16 update_default_camera(struct Camera *c) {
 | 
			
		|||
            vec3f_set_dist_and_angle(c->focus, c->pos, dist, tempPitch, tempYaw);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    if (ceilHeight != gLevelValues.ceilHeightLimit) {
 | 
			
		||||
    if (ceilHeight != gLevelValues.cellHeightLimit) {
 | 
			
		||||
        if (c->pos[1] > (ceilHeight -= 150.f)
 | 
			
		||||
            && (avoidStatus = is_range_behind_surface(c->pos, sMarioCamState->pos, ceil, 0, -1)) == 1) {
 | 
			
		||||
            c->pos[1] = ceilHeight;
 | 
			
		||||
| 
						 | 
				
			
			@ -6826,19 +6826,19 @@ void resolve_geometry_collisions(Vec3f pos, UNUSED Vec3f lastGood) {
 | 
			
		|||
    floorY = find_floor(pos[0], pos[1] + 50.f, pos[2], &surf);
 | 
			
		||||
    ceilY = find_ceil(pos[0], pos[1] - 50.f, pos[2], &surf);
 | 
			
		||||
 | 
			
		||||
    if ((gLevelValues.floorLowerLimit != floorY) && (gLevelValues.ceilHeightLimit == ceilY)) {
 | 
			
		||||
    if ((gLevelValues.floorLowerLimit != floorY) && (gLevelValues.cellHeightLimit == ceilY)) {
 | 
			
		||||
        if (pos[1] < (floorY += 125.f)) {
 | 
			
		||||
            pos[1] = floorY;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ((gLevelValues.floorLowerLimit == floorY) && (gLevelValues.ceilHeightLimit != ceilY)) {
 | 
			
		||||
    if ((gLevelValues.floorLowerLimit == floorY) && (gLevelValues.cellHeightLimit != ceilY)) {
 | 
			
		||||
        if (pos[1] > (ceilY -= 125.f)) {
 | 
			
		||||
            pos[1] = ceilY;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ((gLevelValues.floorLowerLimit != floorY) && (gLevelValues.ceilHeightLimit != ceilY)) {
 | 
			
		||||
    if ((gLevelValues.floorLowerLimit != floorY) && (gLevelValues.cellHeightLimit != ceilY)) {
 | 
			
		||||
        floorY += 125.f;
 | 
			
		||||
        ceilY -= 125.f;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -6972,7 +6972,7 @@ void find_mario_floor_and_ceil(struct PlayerGeometry *pg) {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    if (find_ceil(sMarioCamState->pos[0], sMarioCamState->pos[1] - 10.f,
 | 
			
		||||
                  sMarioCamState->pos[2], &surf) != gLevelValues.ceilHeightLimit) {
 | 
			
		||||
                  sMarioCamState->pos[2], &surf) != gLevelValues.cellHeightLimit) {
 | 
			
		||||
        pg->currCeilType = surf->type;
 | 
			
		||||
    } else {
 | 
			
		||||
        pg->currCeilType = 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -89,7 +89,7 @@ struct LevelValues gDefaultLevelValues = {
 | 
			
		|||
        .UnagiStarPos         = {  6833.0f, -3654.0f,  2230.0f },
 | 
			
		||||
        .JetstreamRingStarPos = {  3400.0f, -3200.0f,  -500.0f },
 | 
			
		||||
    },
 | 
			
		||||
    .ceilHeightLimit          = CEIL_HEIGHT_LIMIT,
 | 
			
		||||
    .cellHeightLimit          = CELL_HEIGHT_LIMIT,
 | 
			
		||||
    .floorLowerLimit          = FLOOR_LOWER_LIMIT,
 | 
			
		||||
    .floorLowerLimitMisc      = FLOOR_LOWER_LIMIT_MISC,
 | 
			
		||||
    .floorLowerLimitShadow    = FLOOR_LOWER_LIMIT_SHADOW,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -53,7 +53,7 @@ struct LevelValues {
 | 
			
		|||
    u16 metalCapDurationCotmc;
 | 
			
		||||
    u16 vanishCapDurationVcutm;
 | 
			
		||||
    struct StarPositions starPositions;
 | 
			
		||||
    s16 ceilHeightLimit;
 | 
			
		||||
    s16 cellHeightLimit;
 | 
			
		||||
    s16 floorLowerLimit;
 | 
			
		||||
    s16 floorLowerLimitMisc;
 | 
			
		||||
    s16 floorLowerLimitShadow;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2261,7 +2261,9 @@ void check_death_barrier(struct MarioState *m) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void check_lava_boost(struct MarioState *m) {
 | 
			
		||||
    if (m->action == ACT_BUBBLED || (Cheats.enabled && Cheats.godMode)) { return; }
 | 
			
		||||
    bool allow = true;
 | 
			
		||||
    smlua_call_event_hooks_mario_param_ret_bool(HOOK_ALLOW_HAZARD_SURFACE, m, &allow);
 | 
			
		||||
    if (m->action == ACT_BUBBLED || (Cheats.enabled && Cheats.godMode) || (!allow)) { return; }
 | 
			
		||||
    if (!(m->action & ACT_FLAG_RIDING_SHELL) && m->pos[1] < m->floorHeight + 10.0f) {
 | 
			
		||||
        if (!(m->flags & MARIO_METAL_CAP)) {
 | 
			
		||||
            m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 12 : 18;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -53,7 +53,9 @@ void play_knockback_sound(struct MarioState *m) {
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
s32 lava_boost_on_wall(struct MarioState *m) {
 | 
			
		||||
    if (Cheats.enabled && Cheats.godMode) { return FALSE; }
 | 
			
		||||
    bool allow = true;
 | 
			
		||||
    smlua_call_event_hooks_mario_param_ret_bool(HOOK_ALLOW_HAZARD_SURFACE, m, &allow);
 | 
			
		||||
    if ((Cheats.enabled && Cheats.godMode) || (!allow)) { return FALSE; }
 | 
			
		||||
    m->faceAngle[1] = atan2s(m->wallNormal[2], m->wallNormal[0]);
 | 
			
		||||
 | 
			
		||||
    if (m->forwardVel < 24.0f) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1049,7 +1049,8 @@ s32 act_bubbled(struct MarioState* m) {
 | 
			
		|||
        if (m->playerIndex == 0) {
 | 
			
		||||
            soft_reset_camera(m->area->camera);
 | 
			
		||||
        }
 | 
			
		||||
        return force_idle_state(m);
 | 
			
		||||
        u8 underWater = (m->pos[1] < ((f32)m->waterLevel));
 | 
			
		||||
        return set_mario_action(m, underWater ? ACT_WATER_IDLE : ACT_FREEFALL, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return FALSE;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -109,7 +109,9 @@ void mario_bonk_reflection(struct MarioState *m, u32 negateSpeed) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
u32 mario_update_quicksand(struct MarioState *m, f32 sinkingSpeed) {
 | 
			
		||||
    if (m->action & ACT_FLAG_RIDING_SHELL || (Cheats.enabled && Cheats.godMode)) {
 | 
			
		||||
    bool allow = true;
 | 
			
		||||
    smlua_call_event_hooks_mario_param_ret_bool(HOOK_ALLOW_HAZARD_SURFACE, m, &allow);
 | 
			
		||||
    if (m->action & ACT_FLAG_RIDING_SHELL || (Cheats.enabled && Cheats.godMode) || (!allow)) {
 | 
			
		||||
        m->quicksandDepth = 0.0f;
 | 
			
		||||
    } else {
 | 
			
		||||
        if (m->quicksandDepth < 1.1f) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -728,7 +728,7 @@ static struct LuaObjectField sLakituStateFields[LUA_LAKITU_STATE_FIELD_COUNT] =
 | 
			
		|||
 | 
			
		||||
#define LUA_LEVEL_VALUES_FIELD_COUNT 20
 | 
			
		||||
static struct LuaObjectField sLevelValuesFields[LUA_LEVEL_VALUES_FIELD_COUNT] = {
 | 
			
		||||
    { "ceilHeightLimit",          LVT_S16,     offsetof(struct LevelValues, ceilHeightLimit),          false, LOT_NONE          },
 | 
			
		||||
    { "cellHeightLimit",          LVT_S16,     offsetof(struct LevelValues, cellHeightLimit),          false, LOT_NONE          },
 | 
			
		||||
    { "coinsRequiredForCoinStar", LVT_S16,     offsetof(struct LevelValues, coinsRequiredForCoinStar), false, LOT_NONE          },
 | 
			
		||||
    { "entryLevel",               LVT_S32,     offsetof(struct LevelValues, entryLevel),               false, LOT_NONE          },
 | 
			
		||||
    { "exitCastleArea",           LVT_S16,     offsetof(struct LevelValues, exitCastleArea),           false, LOT_NONE          },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2882,7 +2882,8 @@ char gSmluaConstants[] = ""
 | 
			
		|||
"HOOK_USE_ACT_SELECT = 23\n"
 | 
			
		||||
"HOOK_ON_CHANGE_CAMERA_ANGLE = 24\n"
 | 
			
		||||
"HOOK_ON_SCREEN_TRANSITION = 25\n"
 | 
			
		||||
"HOOK_MAX = 26\n"
 | 
			
		||||
"HOOK_ALLOW_HAZARD_SURFACE = 26\n"
 | 
			
		||||
"HOOK_MAX = 27\n"
 | 
			
		||||
"ACTION_HOOK_EVERY_FRAME = 0\n"
 | 
			
		||||
"ACTION_HOOK_GRAVITY = 1\n"
 | 
			
		||||
"ACTION_HOOK_MAX = 2\n"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -424,6 +424,32 @@ bool smlua_call_event_hooks_ret_int(enum LuaHookedEventType hookType, s32* retur
 | 
			
		|||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void smlua_call_event_hooks_ret_bool(enum LuaHookedEventType hookType, bool* returnValue) {
 | 
			
		||||
    lua_State* L = gLuaState;
 | 
			
		||||
    if (L == NULL) { return; }
 | 
			
		||||
    *returnValue = true;
 | 
			
		||||
 | 
			
		||||
    struct LuaHookedEvent* hook = &sHookedEvents[hookType];
 | 
			
		||||
    for (int i = 0; i < hook->count; i++) {
 | 
			
		||||
        s32 prevTop = lua_gettop(L);
 | 
			
		||||
 | 
			
		||||
        // push the callback onto the stack
 | 
			
		||||
        lua_rawgeti(L, LUA_REGISTRYINDEX, hook->reference[i]);
 | 
			
		||||
 | 
			
		||||
        // call the callback
 | 
			
		||||
        if (0 != smlua_call_hook(L, 0, 1, 0, hook->mod[i])) {
 | 
			
		||||
            LOG_LUA("Failed to call the callback: %u", hookType);
 | 
			
		||||
            continue;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // output the return value
 | 
			
		||||
        if (lua_type(L, -1) == LUA_TBOOLEAN && *returnValue) {
 | 
			
		||||
            *returnValue = smlua_to_boolean(L, -1);
 | 
			
		||||
        }
 | 
			
		||||
        lua_settop(L, prevTop);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void smlua_call_event_hooks_network_player_param(enum LuaHookedEventType hookType, struct NetworkPlayer* np) {
 | 
			
		||||
    lua_State* L = gLuaState;
 | 
			
		||||
    if (L == NULL) { return; }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,6 +37,7 @@ enum LuaHookedEventType {
 | 
			
		|||
    HOOK_USE_ACT_SELECT,
 | 
			
		||||
    HOOK_ON_CHANGE_CAMERA_ANGLE,
 | 
			
		||||
    HOOK_ON_SCREEN_TRANSITION,
 | 
			
		||||
    HOOK_ALLOW_HAZARD_SURFACE,
 | 
			
		||||
    HOOK_MAX,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -67,6 +68,7 @@ static const char* LuaHookedEventTypeName[] = {
 | 
			
		|||
    "HOOK_USE_ACT_SELECT",
 | 
			
		||||
    "HOOK_ON_CHANGE_CAMERA_ANGLE",
 | 
			
		||||
    "HOOK_ON_SCREEN_TRANSITION",
 | 
			
		||||
    "HOOK_ALLOW_HAZARD_SURFACE",
 | 
			
		||||
    "HOOK_MAX"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -101,6 +103,7 @@ void smlua_call_event_hooks_set_camera_mode_params(enum LuaHookedEventType hookT
 | 
			
		|||
void smlua_call_event_hooks_int_params_ret_bool(enum LuaHookedEventType hookType, s16 param, bool* returnValue);
 | 
			
		||||
void smlua_call_event_hooks_value_param(enum LuaHookedEventType hookType, int modIndex, int valueIndex);
 | 
			
		||||
void smlua_call_event_hooks_use_act_select(enum LuaHookedEventType hookType, int value, bool* foundHook, bool* returnValue);
 | 
			
		||||
void smlua_call_event_hooks_ret_bool(enum LuaHookedEventType hookType, bool* returnValue);
 | 
			
		||||
 | 
			
		||||
enum BehaviorId smlua_get_original_behavior_id(const BehaviorScript* behavior);
 | 
			
		||||
const BehaviorScript* smlua_override_behavior(const BehaviorScript* behavior);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue