From f54eeb82b7d39ab3e2ff9d435e86774aa6251347 Mon Sep 17 00:00:00 2001
From: MascaraSnake <jonassauer27@gmail.com>
Date: Mon, 25 Nov 2019 22:35:40 +0100
Subject: [PATCH] -Fix player being able to push up spikes -Minor tweaks to
 make paper collision slightly more reliable

---
 src/p_map.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/p_map.c b/src/p_map.c
index 3f140e1d58..d4c753dfc8 100644
--- a/src/p_map.c
+++ b/src/p_map.c
@@ -1719,8 +1719,8 @@ static boolean PIT_CheckThing(mobj_t *thing)
 		}
 	}
 
-	if ((tmthing->flags & MF_SPRING || tmthing->type == MT_STEAM) && (thing->player))
-		; // springs and gas jets should never be able to step up onto a player
+	if ((tmthing->flags & MF_SPRING || tmthing->type == MT_STEAM || tmthing->type == MT_SPIKE || tmthing->type == MT_WALLSPIKE) && (thing->player))
+		; // springs, gas jets and springs should never be able to step up onto a player
 	// z checking at last
 	// Treat noclip things as non-solid!
 	else if ((thing->flags & (MF_SOLID|MF_NOCLIP)) == MF_SOLID
@@ -3759,25 +3759,25 @@ void P_SlideMove(mobj_t *mo)
 			v2.y = tmhitthing->y + sinradius;
 
 			// Can we box collision our way into smooth movement..?
-			if (mo->y + mo->radius <= min(v1.y, v2.y))
+			if (sinradius && mo->y + mo->radius <= min(v1.y, v2.y))
 			{
 				mo->momy = 0;
 				P_TryMove(mo, mo->x + mo->momx, min(v1.y, v2.y) - mo->radius, true);
 				return;
 			}
-			else if (mo->y - mo->radius >= max(v1.y, v2.y))
+			else if (sinradius && mo->y - mo->radius >= max(v1.y, v2.y))
 			{
 				mo->momy = 0;
 				P_TryMove(mo, mo->x + mo->momx, max(v1.y, v2.y) + mo->radius, true);
 				return;
 			}
-			else if (mo->x + mo->radius <= min(v1.x, v2.x))
+			else if (cosradius && mo->x + mo->radius <= min(v1.x, v2.x))
 			{
 				mo->momx = 0;
 				P_TryMove(mo, min(v1.x, v2.x) - mo->radius, mo->y + mo->momy, true);
 				return;
 			}
-			else if (mo->x - mo->radius >= max(v1.x, v2.x))
+			else if (cosradius && mo->x - mo->radius >= max(v1.x, v2.x))
 			{
 				mo->momx = 0;
 				P_TryMove(mo, max(v1.x, v2.x) + mo->radius, mo->y + mo->momy, true);
-- 
GitLab