diff --git a/src/p_map.c b/src/p_map.c
index 6eba4d05dca77462b7d04e0d984ce1dcd2487cbf..c7647da6ef717dbdf2fd283e1ec5dc7900c52a0d 100644
--- a/src/p_map.c
+++ b/src/p_map.c
@@ -2766,7 +2766,11 @@ boolean P_TryMove(mobj_t *thing, fixed_t x, fixed_t y, boolean allowdropoff)
 					return false; // mobj must lower itself to fit
 				}
 			}
-			else if (maxstep > 0) // Step down
+			else if (maxstep > 0 && !(
+				thing->player && (
+				P_PlayerTouchingSectorSpecial(thing->player, 1, 14)
+				|| GETSECSPECIAL(R_PointInSubsector(x, y)->sector->special, 1) == 14)
+				)) // Step down
 			{
 				// If the floor difference is MAXSTEPMOVE or less, and the sector isn't Section1:14, ALWAYS
 				// step down! Formerly required a Section1:13 sector for the full MAXSTEPMOVE, but no more.