diff --git a/src/p_inter.c b/src/p_inter.c
index 4804905f5ab9aab76da877eb268840ba649bb90e..b28b98758abaf7ce1025f56077e02d66bba9950d 100644
--- a/src/p_inter.c
+++ b/src/p_inter.c
@@ -1813,21 +1813,23 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
 				return;
 			if (player->powers[pw_carry] == CR_MINECART)
 				return;
-				
-			mobj_t *mcart = P_SpawnMobj(special->x, special->y, special->z, MT_MINECART);
-			P_SetTarget(&mcart->target, toucher);
-			mcart->angle = toucher->angle = player->drawangle = special->angle;
-			mcart->friction = FRACUNIT;
+			else
+			{	
+				mobj_t *mcart = P_SpawnMobj(special->x, special->y, special->z, MT_MINECART);
+				P_SetTarget(&mcart->target, toucher);
+				mcart->angle = toucher->angle = player->drawangle = special->angle;
+				mcart->friction = FRACUNIT;
 
-			P_ResetPlayer(player);
-			player->pflags |= PF_JUMPDOWN;
-			player->powers[pw_carry] = CR_MINECART;
-			player->pflags &= ~PF_APPLYAUTOBRAKE;
-			P_SetTarget(&toucher->tracer, mcart);
-			toucher->momx = toucher->momy = toucher->momz = 0;
+				P_ResetPlayer(player);
+				player->pflags |= PF_JUMPDOWN;
+				player->powers[pw_carry] = CR_MINECART;
+				player->pflags &= ~PF_APPLYAUTOBRAKE;
+				P_SetTarget(&toucher->tracer, mcart);
+				toucher->momx = toucher->momy = toucher->momz = 0;
 
-			special->fuse = 3*TICRATE;
-			special->flags2 |= MF2_DONTDRAW;
+				special->fuse = 3*TICRATE;
+				special->flags2 |= MF2_DONTDRAW;
+			}
 			return;
 
 		case MT_MINECARTEND: