diff --git a/src/b_bot.c b/src/b_bot.c
index 12cdc36a0f9050019a92a47dd7d5e304a544831f..709a280b57a16a7cc4d7d40b434ed3f7caa2cd31 100644
--- a/src/b_bot.c
+++ b/src/b_bot.c
@@ -31,7 +31,6 @@ static boolean panic = false;
 static UINT8 flymode = 0;
 static boolean spinmode = false;
 static boolean thinkfly = false;
-static mobj_t *overlay;
 
 static inline void B_ResetAI(void)
 {
@@ -336,17 +335,20 @@ static inline void B_BuildTailsTiccmd(mobj_t *sonic, mobj_t *tails, ticcmd_t *cm
 	// Thinkfly overlay
 	if (thinkfly)
 	{
-		if (overlay == NULL)
+		if (!tails->target)
 		{
-			overlay = P_SpawnMobjFromMobj(tails, 0, 0, 0, MT_OVERLAY);
-			P_SetTarget(&overlay->target, tails);
-			P_SetMobjState(overlay, S_FLIGHTINDICATOR);
+			P_SetTarget(&tails->target, P_SpawnMobjFromMobj(tails, 0, 0, 0, MT_OVERLAY));
+			if (tails->target)
+			{
+				P_SetTarget(&tails->target->target, tails);
+				P_SetMobjState(tails->target, S_FLIGHTINDICATOR);
+			}
 		}
 	}
-	else if (overlay != NULL)
+	else if (tails->target && tails->target->type == MT_OVERLAY && tails->target->state == states+S_FLIGHTINDICATOR)
 	{
-		P_RemoveMobj(overlay);
-		overlay = NULL;
+		P_RemoveMobj(tails->target);
+		P_SetTarget(&tails->target, NULL);
 	}
 
 	// Turn the virtual keypresses into ticcmd_t.