From 21a55a4702458b2abbaf3b3b20bcf55d732de24b Mon Sep 17 00:00:00 2001
From: mazmazz <mar.marcoz@outlook.com>
Date: Thu, 6 Sep 2018 08:07:13 -0400
Subject: [PATCH] Make default behavior: aimless flying flickies stay at Z
 height

---
 src/p_enemy.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/p_enemy.c b/src/p_enemy.c
index 9c42768003..5e85dae720 100644
--- a/src/p_enemy.c
+++ b/src/p_enemy.c
@@ -10819,6 +10819,7 @@ void P_InternalFlickySetColor(mobj_t *actor, UINT8 extrainfo)
 // var2 = maximum default distance away from spawn the flickies are allowed to travel. If angle != 0, then that's the radius.
 //
 // If MTF_EXTRA (MF_SLIDEME) is flagged, Flickies move independently of a target. Else, move around the target.
+// If MTF_EXTRA (MF_SLIDEME) and MTF_OBJECTSPECIAL (MF_GRENADEBOUNCE) are both flagged, Flying flickies sink from gravity. By default, they stay at constant Z height.
 // If MTF_OBJECTSPECIAL (MF_GRENADEBOUNCE) and NOT MTF_EXTRA (MF_SLIDEME) are flagged, Angle sign determines direction of circular movement.
 // If MTF_AMBUSH (MF_NOCLIPTHING) is flagged, Flickies hop in-place.
 // If MTF_AMBUSH (MF_NOCLIPTHING) and MTF_OBJECTSPECIAL (MF_GRENADEBOUNCE) is flagged, Flickies stand in-place without gravity.
@@ -11036,8 +11037,8 @@ void P_InternalFlickyFly(mobj_t *actor, fixed_t flyspeed, fixed_t targetdist, fi
 
 	if (actor->target
 		&& P_IsFlickyCenter(actor->target->type)
-		&& (actor->target->flags & MF_GRENADEBOUNCE)
-		&& (actor->target->flags & MF_SLIDEME))
+		&& !((actor->target->flags & MF_GRENADEBOUNCE)
+			&& (actor->target->flags & MF_SLIDEME)))
 		vertangle = 0;
 	else
 		vertangle = (R_PointToAngle2(0, actor->z, targetdist, chasez) >> ANGLETOFINESHIFT) & FINEMASK;
-- 
GitLab