From 5767a25b14d14bdf6a87e636d362b8b0b03e8b9f Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Sat, 24 Nov 2018 17:28:53 -0500 Subject: [PATCH] Infinite wall bump fix(?) Couldn't replicate it at all after this change, but I also have trouble replicating it before it :v --- src/p_map.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/p_map.c b/src/p_map.c index ba6e64540..66928bf66 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -3844,7 +3844,7 @@ void P_BouncePlayerMove(mobj_t *mo) if (!mo->player) return; - if ((mo->eflags & MFE_JUSTBOUNCEDWALL) || (mo->player->spectator)) + if (mo->player->spectator) { P_SlideMove(mo, true); return; @@ -3898,8 +3898,16 @@ void P_BouncePlayerMove(mobj_t *mo) if (bestslidefrac <= 0) return; - tmxmove = FixedMul(mmomx, (FRACUNIT - (FRACUNIT>>2) - (FRACUNIT>>3))); - tmymove = FixedMul(mmomy, (FRACUNIT - (FRACUNIT>>2) - (FRACUNIT>>3))); + if (mo->eflags & MFE_JUSTBOUNCEDWALL) // Stronger push-out + { + tmxmove = mmomx; + tmymove = mmomy; + } + else + { + tmxmove = FixedMul(mmomx, (FRACUNIT - (FRACUNIT>>2) - (FRACUNIT>>3))); + tmymove = FixedMul(mmomy, (FRACUNIT - (FRACUNIT>>2) - (FRACUNIT>>3))); + } { mobj_t *fx = P_SpawnMobj(mo->x, mo->y, mo->z, MT_BUMP); @@ -3936,18 +3944,18 @@ void P_BounceMove(mobj_t *mo) INT32 hitcount; fixed_t mmomx = 0, mmomy = 0; - if (mo->eflags & MFE_JUSTBOUNCEDWALL) - { - P_SlideMove(mo, true); - return; - } - if (mo->player) { P_BouncePlayerMove(mo); return; } + if (mo->eflags & MFE_JUSTBOUNCEDWALL) + { + P_SlideMove(mo, true); + return; + } + slidemo = mo; hitcount = 0;