From 5c71fe07103e7f3febbb94bc0d9a6a7bd9426fc0 Mon Sep 17 00:00:00 2001 From: SMS Alfredo <65426124+SMS-Alfredo@users.noreply.github.com> Date: Wed, 25 Nov 2020 14:31:24 -0600 Subject: [PATCH] Allow player.lastlinehit and player.lastsidehit to be used outside of Knuckles' climbing ability --- src/p_map.c | 14 +++++++++++--- src/p_mobj.c | 4 ++++ src/p_user.c | 6 ------ 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/p_map.c b/src/p_map.c index 922c0d9ec..4f344a9b0 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -3443,9 +3443,17 @@ static boolean PTR_SlideTraverse(intercept_t *in) P_ProcessSpecialSector(slidemo->player, slidemo->subsector->sector, li->polyobj->lines[0]->backsector); } - if (slidemo->player && slidemo->player->charability == CA_GLIDEANDCLIMB - && (slidemo->player->pflags & PF_GLIDING || slidemo->player->climbing)) - PTR_GlideClimbTraverse(li); + if (slidemo->player) + { + if (slidemo->player->charability == CA_GLIDEANDCLIMB + && (slidemo->player->pflags & PF_GLIDING || slidemo->player->climbing)) + PTR_GlideClimbTraverse(li); + else + { + slidemo->player->lastsidehit = li->sidenum[P_PointOnLineSide(slidemo->x, slidemo->y, li)]; + slidemo->player->lastlinehit = (INT16)(li - lines); + } + } if (in->frac < bestslidefrac && (!slidemo->player || !slidemo->player->climbing)) { diff --git a/src/p_mobj.c b/src/p_mobj.c index 4fc561b20..8dab1b2cf 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -11404,6 +11404,10 @@ void P_SpawnPlayer(INT32 playernum) p->normalspeed = skins[p->skin].normalspeed; p->jumpfactor = skins[p->skin].jumpfactor; } + + // Clear lastlinehit and lastsidehit + p->lastsidehit = -1; + p->lastlinehit = -1; //awayview stuff p->awayviewmobj = NULL; diff --git a/src/p_user.c b/src/p_user.c index 10b7e970e..73f6339a9 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -8601,12 +8601,6 @@ void P_MovePlayer(player_t *player) player->climbing--; } - if (!player->climbing) - { - player->lastsidehit = -1; - player->lastlinehit = -1; - } - // Make sure you're not teetering when you shouldn't be. if (player->panim == PA_EDGE && (player->mo->momx || player->mo->momy || player->mo->momz))