From 8e1c65f7b42e5eb96e2bf245f8b019411d053f14 Mon Sep 17 00:00:00 2001 From: Mario Date: Tue, 17 Mar 2015 03:39:06 +1100 Subject: [PATCH] Allow true flight with flight buff --- qcsrc/common/physics.qc | 9 ++++++--- qcsrc/common/physics.qh | 2 ++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/qcsrc/common/physics.qc b/qcsrc/common/physics.qc index 01b9755b1..d2287ea18 100644 --- a/qcsrc/common/physics.qc +++ b/qcsrc/common/physics.qc @@ -1084,8 +1084,11 @@ void PM_fly(float maxspd_mod) // acceleration vector wishdir = normalize(wishvel); float wishspeed = min(vlen(wishvel), PHYS_MAXSPEED(self) * maxspd_mod); +#ifdef SVQC if (time >= self.teleport_time) +#endif PM_Accelerate(wishdir, wishspeed, wishspeed, PHYS_ACCELERATE * maxspd_mod, 1, 0, 0, 0); + PM_ClientMovement_Move(); } void PM_swim(float maxspd_mod) @@ -1166,9 +1169,9 @@ void PM_swim(float maxspd_mod) #endif } } - PM_ClientMovement_Move(); // water acceleration PM_Accelerate(wishdir, wishspeed, wishspeed, PHYS_ACCELERATE * maxspd_mod, 1, 0, 0, 0); + PM_ClientMovement_Move(); } void PM_ladder(float maxspd_mod) @@ -1216,12 +1219,12 @@ void PM_ladder(float maxspd_mod) // acceleration vector wishdir = normalize(wishvel); float wishspeed = min(vlen(wishvel), PHYS_MAXSPEED(self) * maxspd_mod); - PM_ClientMovement_Move(); #ifdef SVQC if (time >= self.teleport_time) #endif // water acceleration PM_Accelerate(wishdir, wishspeed, wishspeed, PHYS_ACCELERATE*maxspd_mod, 1, 0, 0, 0); + PM_ClientMovement_Move(); } void PM_jetpack(float maxspd_mod) @@ -1705,7 +1708,7 @@ void PM_Main() RaceCarPhysics(); #endif - else if (self.movetype == MOVETYPE_NOCLIP || self.movetype == MOVETYPE_FLY || self.movetype == MOVETYPE_FLY_WORLDONLY) + else if (self.movetype == MOVETYPE_NOCLIP || self.movetype == MOVETYPE_FLY || self.movetype == MOVETYPE_FLY_WORLDONLY || (BUFFS(self) & BUFF_FLIGHT)) PM_fly(maxspeed_mod); else if (self.waterlevel >= WATERLEVEL_SWIMMING) diff --git a/qcsrc/common/physics.qh b/qcsrc/common/physics.qh index d5b8f14ac..01b087455 100644 --- a/qcsrc/common/physics.qh +++ b/qcsrc/common/physics.qh @@ -92,6 +92,7 @@ bool IsFlying(entity a); #define WAS_ONGROUND(s) !!(s.lastflags & FL_ONGROUND) #define ITEMS(s) (s).items + #define BUFFS(s) getstati(STAT_BUFFS) #define PHYS_AMMO_FUEL(s) getstati(STAT_FUEL) @@ -260,6 +261,7 @@ bool IsFlying(entity a); #define WAS_ONGROUND(s) !!((s).lastflags & FL_ONGROUND) #define ITEMS(s) s.items + #define BUFFS(s) (s).buffs #define PHYS_AMMO_FUEL(s) s.ammo_fuel -- 2.39.2