From c10ec7702a76b35055e2ed33bc54c402d8b9e684 Mon Sep 17 00:00:00 2001 From: aiire <104533992+aiire@users.noreply.github.com> Date: Thu, 2 Nov 2023 15:52:44 -0400 Subject: [PATCH 1/2] do the things --- src/lua_hook.h | 2 ++ src/lua_hooklib.c | 11 +++++++++++ src/p_user.c | 9 ++++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/lua_hook.h b/src/lua_hook.h index cb0e30d87..137b595c4 100644 --- a/src/lua_hook.h +++ b/src/lua_hook.h @@ -74,6 +74,7 @@ automatically. X (PlayerCanEnterSpinGaps),\ X (KeyDown),\ X (KeyUp),\ + X (PlayerHitFloor), /* P_PlayerHitFloor */ #define STRING_HOOK_LIST(X) \ X (BotAI),/* B_BuildTailsTiccmd by skin name */\ @@ -149,3 +150,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); diff --git a/src/lua_hooklib.c b/src/lua_hooklib.c index 039a9677f..5745d599f 100644 --- a/src/lua_hooklib.c +++ b/src/lua_hooklib.c @@ -1182,3 +1182,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; +} \ No newline at end of file diff --git a/src/p_user.c b/src/p_user.c index 84d0c0abf..93669c941 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -2275,6 +2275,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) @@ -2455,7 +2462,7 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff) S_StartSound(player->mo, sfx_s3k4c); else // create a fire pattern on the ground { - S_StartSound(player->mo, sfx_s3k47); + S_StartSound(player->mo, sfx_s3k47); P_ElementalFire(player, true); } P_SetObjectMomZ(player->mo, From b510a2fefe186e7752a3c7f7471662269bfe24eb Mon Sep 17 00:00:00 2001 From: aiire <1050-aiire@users.noreply.git.do.srb2.org> Date: Thu, 2 Nov 2023 23:27:46 +0000 Subject: [PATCH 2/2] Remove random whitespace --- src/p_user.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_user.c b/src/p_user.c index 0284a9b9a..b85d79357 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -2464,7 +2464,7 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff) S_StartSound(player->mo, sfx_s3k4c); else // create a fire pattern on the ground { - S_StartSound(player->mo, sfx_s3k47); + S_StartSound(player->mo, sfx_s3k47); P_ElementalFire(player, true); } P_SetObjectMomZ(player->mo,