From 0856435fccb32483d18559534cf0251617a05988 Mon Sep 17 00:00:00 2001 From: minenice55 Date: Mon, 17 Nov 2025 20:59:37 -0500 Subject: [PATCH] StripItems / StripOther lua hooks --- src/d_netcmd.c | 3 ++- src/k_kart.c | 6 ++++++ src/lua_hook.h | 4 ++++ src/lua_hooklib.c | 29 ++++++++++++++++++++++++++++- 4 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 92717b8f2..37679766c 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -594,7 +594,8 @@ static CV_PossibleValue_t bubble_defense_damagerate_cons_t[] = {{0, "MIN"}, {FRA consvar_t cv_kartbubble_defense_damagerate = CVAR_INIT ("kartbubble_defense_damagerate", "1.0", CV_NETVAR|CV_FLOAT, bubble_defense_damagerate_cons_t, NULL); consvar_t cv_kartbubble_boost_allow = CVAR_INIT ("kartbubble_boost_allow", "On", CV_NETVAR, CV_OnOff, NULL); consvar_t cv_kartflame_fastfuel = CVAR_INIT ("kartflame_fastfuel", "Off", CV_NETVAR, CV_OnOff, NULL); -consvar_t cv_kartflame_offroadburn = CVAR_INIT ("kartflame_offroadburn", "Off", CV_NETVAR, CV_OnOff, NULL); +// we want this to be default now apparently +consvar_t cv_kartflame_offroadburn = CVAR_INIT ("kartflame_offroadburn", "On", CV_NETVAR, CV_OnOff, NULL); static CV_PossibleValue_t kartairsquish_cons_t[] = {{1, "Squish"}, {2, "Flip-over"}, {0, "None"}, {0, NULL}}; consvar_t cv_kartairsquish = CVAR_INIT ("kartairsquish", "None", CV_NETVAR, kartairsquish_cons_t, NULL); diff --git a/src/k_kart.c b/src/k_kart.c index e4aaa8b40..56a745b9f 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -9732,6 +9732,9 @@ void K_UpdateAllPlayerPositions(void) // void K_StripItems(player_t *player) { + if (LUA_HookKartStripItems(player, player->itemtype)) + return; + K_DropRocketSneaker(player); K_DropKitchenSink(player); player->itemtype = KITEM_NONE; @@ -9760,6 +9763,9 @@ void K_StripItems(player_t *player) void K_StripOther(player_t *player) { + if (LUA_HookKartStripOther(player)) + return; + player->itemroulette = 0; player->roulettetype = KROULETTETYPE_NORMAL; diff --git a/src/lua_hook.h b/src/lua_hook.h index a09508570..a0a9aaf48 100644 --- a/src/lua_hook.h +++ b/src/lua_hook.h @@ -89,6 +89,8 @@ automatically. X (PlayerItem),/*SRB2KART*/\ X (KartHyudoro),/*SRB2KART*/\ X (KartSneaker),/*SRB2KART*/\ + X (KartStripItems),/*SRB2KART*/\ + X (KartStripOther),/*SRB2KART*/\ #define STRING_HOOK_LIST(X) \ X (SpecialExecute),\ @@ -179,6 +181,8 @@ boolean LUA_HookPlayerItem(player_t *player, UINT8 itemType, boolean wasHoldingI boolean LUA_HookKartHyudoro(player_t *player, INT32 *target, boolean sink); // SRB2Kart: Hook for K_DoHyudoroSteal and overriding its results. boolean LUA_HookMobjScaleChange(mobj_t *target, fixed_t newscale, fixed_t oldscale); // SRB2Kart: Hook for P_SetScale. boolean LUA_HookKartSneaker(player_t *player, int type); // SRB2Kart: Hook for K_DoSneaker. +boolean LUA_HookKartStripItems(player_t *player, UINT8 item); // SRB2Kart: Hook for K_StripItems. +boolean LUA_HookKartStripOther(player_t *player); // SRB2Kart: Hook for K_StripOther. #ifdef __cplusplus } // extern "C" diff --git a/src/lua_hooklib.c b/src/lua_hooklib.c index 4b2321301..d37c7be36 100644 --- a/src/lua_hooklib.c +++ b/src/lua_hooklib.c @@ -1369,6 +1369,33 @@ boolean LUA_HookKartSneaker(player_t *player, int type) call_hooks(&hook, 1, res_true); } - + return hook.status; } + +boolean LUA_HookKartStripItems(player_t* player, UINT8 item) +{ + Hook_State hook; + if (prepare_hook(&hook, false, HOOK(KartStripItems))) + { + LUA_PushUserdata(gL, player, META_PLAYER); + lua_pushinteger(gL, item); + + call_hooks(&hook, 1, res_true); + } + + return hook.status; +} + +boolean LUA_HookKartStripOther(player_t* player) +{ + Hook_State hook; + if (prepare_hook(&hook, false, HOOK(KartStripOther))) + { + LUA_PushUserdata(gL, player, META_PLAYER); + + call_hooks(&hook, 1, res_true); + } + + return hook.status; +} \ No newline at end of file