From b2c5502e095c70d12ac92d86d7c096d89a578d3a Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Tue, 9 Jan 2024 23:08:52 -0700 Subject: [PATCH 1/2] Reduce hitlag, then respawn when trapped in tripwire --- src/d_player.h | 2 ++ src/k_kart.c | 13 +++++++++++++ src/lua_playerlib.c | 4 ++++ src/p_saveg.c | 4 ++++ 4 files changed, 23 insertions(+) diff --git a/src/d_player.h b/src/d_player.h index 2f27838bf..f688b2820 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -957,6 +957,8 @@ struct player_t UINT8 preventfailsafe; // Set when taking damage to prevent cheesing eggboxes + UINT8 tripwireUnstuck; + UINT8 handtimer; angle_t besthanddirection; diff --git a/src/k_kart.c b/src/k_kart.c index 0054b2163..795f49e25 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -4644,6 +4644,8 @@ void K_ApplyTripWire(player_t *player, tripwirestate_t state) if (player->hyudorotimer <= 0) { K_AddHitLag(player->mo, 10, false); + CONS_Printf("unstuck %d\n", player->tripwireUnstuck); + player->mo->hitlag -= min(player->mo->hitlag, player->tripwireUnstuck/4); } if (state == TRIPSTATE_PASSED && player->spinouttimer && @@ -4651,6 +4653,8 @@ void K_ApplyTripWire(player_t *player, tripwirestate_t state) { K_TumblePlayer(player, NULL, NULL); } + + player->tripwireUnstuck += 10; } INT32 K_ExplodePlayer(player_t *player, mobj_t *inflictor, mobj_t *source) // A bit of a hack, we just throw the player up higher here and extend their spinout timer @@ -8612,6 +8616,15 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) if (player->preventfailsafe) player->preventfailsafe--; + if (player->tripwireUnstuck > 150) + { + player->tripwireUnstuck = 0; + K_DoIngameRespawn(player); + } + + if (player->tripwireUnstuck && !player->mo->hitlag) + player->tripwireUnstuck--; + if ((player->respawn.state == RESPAWNST_NONE) && player->growshrinktimer != 0) { if (player->growshrinktimer > 0 && onground == true) diff --git a/src/lua_playerlib.c b/src/lua_playerlib.c index e7d603c6f..f00f74eb3 100644 --- a/src/lua_playerlib.c +++ b/src/lua_playerlib.c @@ -353,6 +353,8 @@ static int player_get(lua_State *L) lua_pushinteger(L, plr->guardCooldown); else if (fastcmp(field,"preventfailsafe")) lua_pushinteger(L, plr->preventfailsafe); + else if (fastcmp(field,"tripwireUnstuck")) + lua_pushinteger(L, plr->tripwireUnstuck); /* else if (fastcmp(field,"itemroulette")) lua_pushinteger(L, plr->itemroulette); @@ -855,6 +857,8 @@ static int player_set(lua_State *L) plr->guardCooldown = luaL_checkinteger(L, 3); else if (fastcmp(field,"preventfailsafe")) plr->preventfailsafe = luaL_checkinteger(L, 3); + else if (fastcmp(field,"tripwireUnstuck")) + plr->tripwireUnstuck = luaL_checkinteger(L, 3); /* else if (fastcmp(field,"itemroulette")) plr->itemroulette = luaL_checkinteger(L, 3); diff --git a/src/p_saveg.c b/src/p_saveg.c index 88bb493d7..a605e347a 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -579,6 +579,8 @@ static void P_NetArchivePlayers(savebuffer_t *save) WRITEUINT8(save->p, players[i].preventfailsafe); + WRITEUINT8(save->p, players[i].tripwireUnstuck); + WRITEUINT8(save->p, players[i].handtimer); WRITEANGLE(save->p, players[i].besthanddirection); @@ -1140,6 +1142,8 @@ static void P_NetUnArchivePlayers(savebuffer_t *save) players[i].preventfailsafe = READUINT8(save->p); + players[i].tripwireUnstuck = READUINT8(save->p); + players[i].handtimer = READUINT8(save->p); players[i].besthanddirection = READANGLE(save->p); From 4771b4b0dfb1b3d6a267d17ed941bb17f7592aeb Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Tue, 9 Jan 2024 23:11:00 -0700 Subject: [PATCH 2/2] Remove another fucking debug print, I'm going to hell --- src/k_kart.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/k_kart.c b/src/k_kart.c index 795f49e25..d2957bb54 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -4644,7 +4644,6 @@ void K_ApplyTripWire(player_t *player, tripwirestate_t state) if (player->hyudorotimer <= 0) { K_AddHitLag(player->mo, 10, false); - CONS_Printf("unstuck %d\n", player->tripwireUnstuck); player->mo->hitlag -= min(player->mo->hitlag, player->tripwireUnstuck/4); }