From b13fc205bcea1459cbb8c8a0c042ded0fae3d139 Mon Sep 17 00:00:00 2001 From: Jakob MG Date: Wed, 1 Aug 2012 02:05:47 +0200 Subject: [PATCH] Nicer exit for raptor/spider --- qcsrc/server/vehicles/raptor.qc | 20 ++++++++++++++++---- qcsrc/server/vehicles/spiderbot.qc | 24 ++++++++++++++++++------ qcsrc/server/vehicles/vehicles.qc | 6 +++--- 3 files changed, 37 insertions(+), 13 deletions(-) diff --git a/qcsrc/server/vehicles/raptor.qc b/qcsrc/server/vehicles/raptor.qc index 76caf4b27..1e2c3135a 100644 --- a/qcsrc/server/vehicles/raptor.qc +++ b/qcsrc/server/vehicles/raptor.qc @@ -250,7 +250,7 @@ void raptor_exit(float eject) if not (self.owner) return; - + makevectors(self.angles); if(eject) { @@ -262,12 +262,24 @@ void raptor_exit(float eject) } else { - self.owner.velocity = normalize(self.velocity) * autocvar_sv_maxairspeed; + if(vlen(self.velocity) > 2 * autocvar_sv_maxairspeed) + { + self.owner.velocity = normalize(self.velocity) * autocvar_sv_maxairspeed * 2; + self.owner.velocity_z += 200; + spot = self.origin + v_forward * 32 + '0 0 64'; + spot = vehicles_findgoodexit(spot); + } + else + { + self.owner.velocity = self.velocity * 0.5; + self.owner.velocity_z += 10; + spot = self.origin - v_forward * 200 + '0 0 64'; + spot = vehicles_findgoodexit(spot); + } self.owner.oldvelocity = self.owner.velocity; - spot = self.origin - v_forward * 200 + '0 0 64'; - spot = vehicles_findgoodexit(spot); setorigin(self.owner , spot); } + antilag_clear(self.owner); self.owner = world; } diff --git a/qcsrc/server/vehicles/spiderbot.qc b/qcsrc/server/vehicles/spiderbot.qc index e715f49fc..de0fab174 100644 --- a/qcsrc/server/vehicles/spiderbot.qc +++ b/qcsrc/server/vehicles/spiderbot.qc @@ -586,7 +586,7 @@ void spiderbot_exit(float eject) e = e.chain; } - self.velocity = '0 0 0'; + //self.velocity = '0 0 0'; self.think = spiderbot_think; self.nextthink = time; self.frame = 5; @@ -606,13 +606,25 @@ void spiderbot_exit(float eject) } else { - self.owner.velocity = normalize(self.velocity) * autocvar_sv_maxairspeed; - self.owner.oldvelocity = self.owner.velocity; - spot = self.origin - v_forward * 200 + '0 0 64'; - spot = vehicles_findgoodexit(spot); + if(vlen(self.velocity) > autocvar_g_vehicle_spiderbot_speed_strafe) + { + self.owner.velocity = normalize(self.velocity) * vlen(self.velocity); + self.owner.velocity_z += 200; + spot = self.origin + v_forward * 128 + '0 0 64'; + spot = vehicles_findgoodexit(spot); + } + else + { + self.owner.velocity = self.velocity * 0.5; + self.owner.velocity_z += 10; + spot = self.origin + v_forward * 256 + '0 0 64'; + spot = vehicles_findgoodexit(spot); + } + self.owner.oldvelocity = self.owner.velocity; setorigin(self.owner , spot); } - antilag_clear(self.owner); + + antilag_clear(self.owner); self.owner = world; } diff --git a/qcsrc/server/vehicles/vehicles.qc b/qcsrc/server/vehicles/vehicles.qc index c0038f410..c2d8b7709 100644 --- a/qcsrc/server/vehicles/vehicles.qc +++ b/qcsrc/server/vehicles/vehicles.qc @@ -638,7 +638,7 @@ void vehicles_enter() msg_entity = other; WriteByte (MSG_ONE, SVC_SETVIEWPORT); WriteEntity(MSG_ONE, self.vehicle_viewport); - + WriteByte (MSG_ONE, SVC_SETVIEWANGLES); if(self.tur_head) { @@ -1221,10 +1221,10 @@ float vehicle_initialize(string net_name, addstat(STAT_VEHICLESTAT_SHIELD, AS_INT, vehicle_shield); addstat(STAT_VEHICLESTAT_ENERGY, AS_INT, vehicle_energy); - addstat(STAT_VEHICLESTAT_AMMO1, AS_INT, vehicle_ammo1); + addstat(STAT_VEHICLESTAT_AMMO1, AS_INT, vehicle_ammo1); addstat(STAT_VEHICLESTAT_RELOAD1, AS_INT, vehicle_reload1); - addstat(STAT_VEHICLESTAT_AMMO2, AS_INT, vehicle_ammo2); + addstat(STAT_VEHICLESTAT_AMMO2, AS_INT, vehicle_ammo2); addstat(STAT_VEHICLESTAT_RELOAD2, AS_INT, vehicle_reload2); if(bodymodel == "") -- 2.39.2