#ifdef SVQC
#define RAPTOR_MIN '-80 -80 0'
#define RAPTOR_MAX '80 80 70'
-
+//#define RAPTOR_ENGINE "sound/vehicles/raptor.wav"
float autocvar_g_vehicle_raptor_respawntime;
float autocvar_g_vehicle_raptor_movestyle;
void raptor_enter()
{
self.owner.PlayerPhysplug = raptor_takeoff;
- self.movetype = MOVETYPE_FLY;
- self.solid = SOLID_BBOX;
+ self.movetype = MOVETYPE_BOUNCEMISSILE;
+ self.solid = SOLID_SLIDEBOX;
self.owner.vehicle_health = (self.vehicle_health / autocvar_g_vehicle_raptor_health);
self.owner.vehicle_shield = (self.vehicle_shield / autocvar_g_vehicle_raptor_shield);
self.velocity_z = 1; // Nudge upwards to takeoff sequense can work.
void raptor_exit(float eject)
{
+ vector spot;
self.tur_head.exteriormodeltoclient = world;
if(self.deadflag == DEAD_NO)
makevectors(self.angles);
if(eject)
{
- setorigin(self.owner,self.origin + v_forward * 100 + '0 0 64');
+ spot = self.origin + v_forward * 100 + '0 0 64';
+ spot = vehicles_findgoodexit(spot);
+ setorigin(self.owner , spot);
self.owner.velocity = (v_up + v_forward * 0.25) * 750;
}
else
- setorigin(self.owner,self.origin - v_forward * 200 + '0 0 64');
-
+ {
+ spot = self.origin - v_forward * 200 + '0 0 64';
+ spot = vehicles_findgoodexit(spot);
+ setorigin(self.owner , spot);
+ }
+
self.owner = world;
}
float raptor_takeoff()
{
entity player, raptor;
-
+
player = self;
raptor = self.vehicle;
self = raptor;
+
+ if(self.sound_nexttime < time)
+ {
+ self.sound_nexttime = time + 7.955812; //soundlength("vehicles/raptor_fly.wav");
+ sound (self, CHAN_VOICE, "vehicles/raptor_fly.wav", VOL_BASE, ATTN_NORM);
+ }
// Takeoff sequense
if(raptor.frame < 25)
player = self;
raptor = self.vehicle;
self = raptor;
-
+
+ ftmp = vlen(self.velocity);
+ if(ftmp > autocvar_g_vehicle_raptor_speed_forward)
+ ftmp = 1;
+ else
+ ftmp = ftmp / autocvar_g_vehicle_raptor_speed_forward;
+
+ if(fabs(ftmp - self.wait) > 0.2 || self.sound_nexttime < time)
+ {
+ self.sound_nexttime = time + 7.955812; //soundlength("vehicles/raptor_fly.wav");
+ sound (self, CHAN_VOICE, "vehicles/raptor_fly.wav", 1 - ftmp, ATTN_NORM );
+ sound (self, CHAN_PLAYER, "vehicles/raptor_speed.wav", ftmp, ATTN_NORM);
+ self.wait = ftmp;
+ }
+
if(player.BUTTON_USE && raptor.deadflag == DEAD_NO)
{
self = raptor;
player.BUTTON_ATCK = player.BUTTON_ATCK2 = 0;
return 1;
}
-
crosshair_trace(player);
#if VEHICLES_VIEWROTATE_CROSSHAIR
df = vectoangles(normalize(trace_endpos - self.origin + '0 0 32'));
if(df_x > 180) df_x -= 360;
- if(df_x < -180) df_x += 360;
+ if(df_x < -180) df_x += 360;--
if(df_y > 180) df_y -= 360;
if(df_y < -180) df_y += 360;
self.vehicle_health = autocvar_g_vehicle_raptor_health;
self.vehicle_shield = autocvar_g_vehicle_raptor_shield;
self.movetype = MOVETYPE_TOSS;
- self.solid = SOLID_BBOX;
+ self.solid = SOLID_SLIDEBOX;
self.vehicle_energy = 1;
self.bomb1.gun1.avelocity_y = 90;
void spawnfunc_vehicle_raptor()
{
vehicles_configcheck("vehicle_raptor.cfg", autocvar_g_vehicle_raptor_health);
+
+
if(autocvar_g_vehicle_raptor_shield)
self.vehicle_flags |= VHF_HASSHIELD;
precache_model ("models/vehicles/clusterbomb.md3");
precache_model ("models/vehicles/clusterbomb_folded.md3");
precache_model ("models/vehicles/raptor_body.dpm");
-
+ precache_sound ("vehicles/raptor_fly.wav");
+ precache_sound ("vehicles/raptor_speed.wav");
+
self.think = raptor_dinit;
self.nextthink = time + 1;
}