diff --git a/src/p_enemy.c b/src/p_enemy.c
index 58e2a70537d18eb8940396cd45d9f69d48be640a..d0ed0a24e3463fa4afa65ce663f4835803b234d4 100644
--- a/src/p_enemy.c
+++ b/src/p_enemy.c
@@ -4189,6 +4189,10 @@ static void P_DoBoss5Death(mobj_t *mo)
 			if (!P_MobjWasRemoved(pole))
 			{
 				P_SetScale(pole, 2*FRACUNIT, true);
+				pole->angle = mo->tracer->angle;
+				pole->momx = P_ReturnThrustX(pole, pole->angle, speed);
+				pole->momy = P_ReturnThrustY(pole, pole->angle, speed);
+				
 				P_SetTarget(&pole->tracer, P_SpawnMobj(
 					pole->x, pole->y,
 					pole->z - 256*FRACUNIT,
@@ -4197,6 +4201,9 @@ static void P_DoBoss5Death(mobj_t *mo)
 				{
 					pole->tracer->flags |= MF_NOCLIPTHING;
 					P_SetScale(pole->tracer, 2*FRACUNIT, true);
+					pole->tracer->angle = mo->tracer->angle;
+					pole->tracer->momx = pole->momx;
+					pole->tracer->momy = pole->momy;
 
 					P_SetTarget(&pole->tracer->tracer, P_SpawnMobj(
 						pole->x + P_ReturnThrustX(pole, mo->tracer->angle, FRACUNIT),
@@ -4205,12 +4212,7 @@ static void P_DoBoss5Death(mobj_t *mo)
 						MT_FSGNA));
 					if (!P_MobjWasRemoved(pole->tracer->tracer))
 					{
-						pole->angle = pole->tracer->angle = mo->tracer->angle;
 						pole->tracer->tracer->angle = pole->angle - ANGLE_90;
-						pole->momx = P_ReturnThrustX(pole, pole->angle, speed);
-						pole->momy = P_ReturnThrustY(pole, pole->angle, speed);
-						pole->tracer->momx = pole->momx;
-						pole->tracer->momy = pole->momy;
 						pole->tracer->tracer->momx = pole->momx;
 						pole->tracer->tracer->momy = pole->momy;
 					}