From 0568c46005e46e59e8b1bdea843641904360dda0 Mon Sep 17 00:00:00 2001 From: AJ Martinez <aj@worldsbe.st> Date: Sat, 18 May 2024 20:16:07 -0700 Subject: [PATCH] Add automatic generic bump unstuck --- src/d_player.h | 1 + src/k_kart.c | 10 ++++++++++ src/lua_playerlib.c | 4 ++++ src/p_map.c | 3 +++ src/p_saveg.c | 2 ++ 5 files changed, 20 insertions(+) diff --git a/src/d_player.h b/src/d_player.h index dbc76b3e39..69a4207c98 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -1010,6 +1010,7 @@ struct player_t UINT8 preventfailsafe; // Set when taking damage to prevent cheesing eggboxes UINT8 tripwireUnstuck; + UINT8 bumpUnstuck; UINT8 handtimer; angle_t besthanddirection; diff --git a/src/k_kart.c b/src/k_kart.c index 19989c7317..206aef4ffc 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -9162,6 +9162,16 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) if (player->hyudorotimer) player->hyudorotimer--; + if (player->bumpUnstuck > 30*5) + { + player->bumpUnstuck = 0; + K_DoIngameRespawn(player); + } + else if (player->bumpUnstuck) + { + player->bumpUnstuck--; + } + if (player->fakeBoost) player->fakeBoost--; diff --git a/src/lua_playerlib.c b/src/lua_playerlib.c index 432af513a3..8bd5821db0 100644 --- a/src/lua_playerlib.c +++ b/src/lua_playerlib.c @@ -388,6 +388,8 @@ static int player_get(lua_State *L) lua_pushinteger(L, plr->preventfailsafe); else if (fastcmp(field,"tripwireunstuck")) lua_pushinteger(L, plr->tripwireUnstuck); + else if (fastcmp(field,"bumpunstuck")) + lua_pushinteger(L, plr->bumpUnstuck); /* else if (fastcmp(field,"itemroulette")) lua_pushinteger(L, plr->itemroulette); @@ -946,6 +948,8 @@ static int player_set(lua_State *L) plr->preventfailsafe = luaL_checkinteger(L, 3); else if (fastcmp(field,"tripwireunstuck")) plr->tripwireUnstuck = luaL_checkinteger(L, 3); + else if (fastcmp(field,"bumpunstuck")) + plr->bumpUnstuck = luaL_checkinteger(L, 3); /* else if (fastcmp(field,"itemroulette")) plr->itemroulette = luaL_checkinteger(L, 3); diff --git a/src/p_map.c b/src/p_map.c index bb7868dd44..7f1965aeea 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -4085,6 +4085,9 @@ static void P_BouncePlayerMove(mobj_t *mo, TryMoveResult_t *result) P_PlayerHitBounceLine(bestslideline, &result->normal); mo->eflags |= MFE_JUSTBOUNCEDWALL; + if (mo->player) + mo->player->bumpUnstuck += 5; + // Combo avoidance! if (mo->player && P_PlayerInPain(mo->player) && gametyperules & GTR_BUMPERS && mo->health == 1) { diff --git a/src/p_saveg.c b/src/p_saveg.c index a75274b056..6c5e8dc2ee 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -608,6 +608,7 @@ static void P_NetArchivePlayers(savebuffer_t *save) WRITEUINT8(save->p, players[i].preventfailsafe); WRITEUINT8(save->p, players[i].tripwireUnstuck); + WRITEUINT8(save->p, players[i].bumpUnstuck); WRITEUINT8(save->p, players[i].handtimer); WRITEANGLE(save->p, players[i].besthanddirection); @@ -1211,6 +1212,7 @@ static void P_NetUnArchivePlayers(savebuffer_t *save) players[i].preventfailsafe = READUINT8(save->p); players[i].tripwireUnstuck = READUINT8(save->p); + players[i].bumpUnstuck = READUINT8(save->p); players[i].handtimer = READUINT8(save->p); players[i].besthanddirection = READANGLE(save->p); -- GitLab