From 0372586e4e6dfb8bf4cb9fa1bc2cfb3ad367b222 Mon Sep 17 00:00:00 2001
From: Mario <mario@smbclan.net>
Date: Tue, 10 Jan 2017 06:21:28 +1000
Subject: [PATCH] Tweak flight buff to be more reliable (only needs crouch to
 trigger change of gravity)

---
 qcsrc/common/mutators/mutator/buffs/sv_buffs.qc | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/qcsrc/common/mutators/mutator/buffs/sv_buffs.qc b/qcsrc/common/mutators/mutator/buffs/sv_buffs.qc
index 7f2f084ee9..57a5bf5793 100644
--- a/qcsrc/common/mutators/mutator/buffs/sv_buffs.qc
+++ b/qcsrc/common/mutators/mutator/buffs/sv_buffs.qc
@@ -595,10 +595,6 @@ MUTATOR_HOOKFUNCTION(buffs, PlayerJump)
 
 	if(player.buffs & BUFF_JUMP.m_itemid)
 		M_ARGV(1, float) = autocvar_g_buffs_jump_height;
-
-	if(player.buffs & BUFF_FLIGHT.m_itemid)
-	if(!IS_JUMP_HELD(player) && PHYS_INPUT_BUTTON_CROUCH(player))
-		player.gravity *= -1;
 }
 
 MUTATOR_HOOKFUNCTION(buffs, MonsterMove)
@@ -791,12 +787,25 @@ MUTATOR_HOOKFUNCTION(buffs, WeaponSpeedFactor)
 		M_ARGV(0, float) *= autocvar_g_buffs_disability_weaponspeed;
 }
 
+.bool buff_flight_crouchheld;
+
 MUTATOR_HOOKFUNCTION(buffs, PlayerPreThink)
 {
 	entity player = M_ARGV(0, entity);
 
 	if(game_stopped || IS_DEAD(player)) return;
 
+	if(player.buffs & BUFF_FLIGHT.m_itemid)
+	{
+		if(!PHYS_INPUT_BUTTON_CROUCH(player))
+			player.buff_flight_crouchheld = false;
+		else if(!player.buff_flight_crouchheld)
+		{
+			player.buff_flight_crouchheld = true;
+			player.gravity *= -1;
+		}
+	}
+
 	if(time < player.buff_disability_time)
 	if(time >= player.buff_disability_effect_time)
 	{
-- 
2.39.5