StripItems / StripOther lua hooks

This commit is contained in:
minenice55 2025-11-17 20:59:37 -05:00
parent 6e86c7af83
commit 0856435fcc
4 changed files with 40 additions and 2 deletions

View file

@ -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);

View file

@ -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;

View file

@ -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"

View file

@ -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;
}