]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/vehicles/raptor.qc
Fix exit from vehicle warping you back to spot you enterd it
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / vehicles / raptor.qc
index de5c7dfcd0fee235b3d86ec7ae431a39d9f78ce4..1a9a33633332787864e7da5e69ee4903ac0a7341 100644 (file)
@@ -1,7 +1,7 @@
 #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;
@@ -195,8 +195,8 @@ void raptor_think()
 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.
@@ -237,6 +237,7 @@ void raptor_land()
 
 void raptor_exit(float eject)
 {
+    vector spot;
     self.tur_head.exteriormodeltoclient = world;
 
     if(self.deadflag == DEAD_NO)
@@ -251,22 +252,34 @@ void raptor_exit(float eject)
        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)
@@ -314,7 +327,21 @@ float raptor_frame()
     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;
@@ -329,13 +356,12 @@ float raptor_frame()
         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;
 
@@ -616,7 +642,7 @@ void raptor_spawn()
     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;
@@ -729,6 +755,8 @@ void raptor_dinit()
 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;
@@ -749,7 +777,9 @@ void spawnfunc_vehicle_raptor()
     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;
 }