diff --git a/src/p_mobj.c b/src/p_mobj.c
index 77dfd192331dd2d296e17725d94f5c1e0c25a8b6..1eb503238c44acf35a2371af45fe8bd61cb39a9f 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -2373,6 +2373,12 @@ static boolean P_ZMovement(mobj_t *mo)
 			mo->z = mo->floorz;
 
 #ifdef ESLOPE
+		if (mo->standingslope) // You're still on the ground; why are we here?
+		{
+			mo->momz = 0;
+			return;
+		}
+
 		P_CheckPosition(mo, mo->x, mo->y); // Sets mo->standingslope correctly
 		if (((mo->eflags & MFE_VERTICALFLIP) ? tmceilingslope : tmfloorslope) && (mo->type != MT_STEAM))
 		{