diff --git a/src/dehacked.c b/src/dehacked.c
index bb17856955b2a3ad83fa83f05e78ae412ad8aac2..192f2c7126d0d39124f073f87c432c852422baa9 100644
--- a/src/dehacked.c
+++ b/src/dehacked.c
@@ -8605,6 +8605,7 @@ struct {
 	{"CR_MINECART",CR_MINECART},
 	{"CR_ROLLOUT", CR_ROLLOUT},
 	{"CR_PTERABYTE",CR_PTERABYTE},
+
 	// Ring weapons (ringweapons_t)
 	// Useful for A_GiveWeapon
 	{"RW_AUTO",RW_AUTO},
diff --git a/src/p_mobj.c b/src/p_mobj.c
index 4388c1bd6ea8fb5e86419aa53e794751154d6d66..5cd9c27e2c0dd765871a5e2896e916df65c38dc5 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -9107,6 +9107,12 @@ void P_MobjThinker(mobj_t *mobj)
 						if (!mobj->target)
 							break;
 
+						if (mobj->target->player->powers[pw_flashing])
+						{
+							P_SetTarget(&mobj->target, NULL);
+							break;
+						}
+
 						vdist = mobj->z - mobj->target->z - mobj->target->height;
 						if (vdist <= 0)
 						{
diff --git a/src/p_user.c b/src/p_user.c
index 5ce582dfc539a4d5854b911635c76c58e330bf2b..45c94827cdfd29b978a07e563bd14f332927a790 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -11930,7 +11930,7 @@ void P_PlayerAfterThink(player_t *player)
 				if (ptera->health <= 0)
 					goto dropoff;
 
-				if (P_MobjAboveLava(ptera))
+				if (P_MobjAboveLava(ptera) && ptera->movefactor <= 3*TICRATE - 10)
 					goto dropoff;
 
 				if (player->mo->eflags & MFE_VERTICALFLIP)
@@ -11939,7 +11939,7 @@ void P_PlayerAfterThink(player_t *player)
 						&& (ptera->eflags & MFE_VERTICALFLIP)) // Reverse gravity check for the carrier - Flame
 						player->mo->z = ptera->z + ptera->height + FixedMul(FRACUNIT, player->mo->scale);
 
-					if (ptera->ceilingz - ptera->z > spawnpoint->ceilingz - spawnpoint->z + 512*FRACUNIT)
+					if (ptera->ceilingz - ptera->z > spawnpoint->ceilingz - spawnpoint->z + 512*FRACUNIT && ptera->movefactor <= 3 * TICRATE - 10)
 						goto dropoff;
 				}
 				else
@@ -11948,7 +11948,7 @@ void P_PlayerAfterThink(player_t *player)
 						&& !(ptera->eflags & MFE_VERTICALFLIP)) // Correct gravity check for the carrier - Flame
 						player->mo->z = ptera->z - player->mo->height - FixedMul(FRACUNIT, player->mo->scale);
 
-					if (ptera->z - ptera->floorz > spawnpoint->z - spawnpoint->floorz + 512 * FRACUNIT)
+					if (ptera->z - ptera->floorz > spawnpoint->z - spawnpoint->floorz + 512 * FRACUNIT && ptera->movefactor <= 3 * TICRATE - 10)
 						goto dropoff;
 				}