Merge branch 'playerhitfloor-hook' into 'next'

Add PlayerHitFloor hook (fixed)

See merge request STJr/SRB2!2197
This commit is contained in:
aiire 2025-03-22 19:32:29 +00:00
commit 45fde4a033
3 changed files with 20 additions and 0 deletions

View file

@ -75,6 +75,7 @@ automatically.
X (AddonLoaded),\
X (KeyDown),\
X (KeyUp),\
X (PlayerHitFloor), /* P_PlayerHitFloor */
#define STRING_HOOK_LIST(X) \
X (BotAI),/* B_BuildTailsTiccmd by skin name */\
@ -161,3 +162,4 @@ int LUA_HookPlayerCmd(player_t *, ticcmd_t *);
int LUA_HookMusicChange(const char *oldname, struct MusicChange *);
fixed_t LUA_HookPlayerHeight(player_t *player);
int LUA_HookPlayerCanEnterSpinGaps(player_t *player);
int LUA_HookPlayerHitFloor(player_t* player);

View file

@ -1261,3 +1261,14 @@ int LUA_HookPlayerCanEnterSpinGaps(player_t *player)
}
return hook.status;
}
int LUA_HookPlayerHitFloor(player_t *player)
{
Hook_State hook;
if (prepare_hook(&hook, 0, HOOK(PlayerHitFloor)))
{
LUA_PushUserdata(gL, player, META_PLAYER);
call_hooks(&hook, 1, res_force);
}
return hook.status;
}

View file

@ -2379,6 +2379,13 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff)
if ((clipmomz = !(P_CheckDeathPitCollide(player->mo))) && player->mo->health && !player->spectator)
{
UINT8 shouldForce = LUA_HookPlayerHitFloor(player);
if (shouldForce == 1)
return true;
else if (shouldForce == 2)
return false;
if (dorollstuff)
{
if ((player->charability2 == CA2_SPINDASH) && !((player->pflags & (PF_SPINNING|PF_THOKKED)) == PF_THOKKED) && !(player->charability == CA_THOK && player->secondjump)