]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/vehicles/racer.qc
Merge remote branch 'origin/master' into tzork/vehicles-2
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / vehicles / racer.qc
index 2e705d212ba88291bebab6f1dd0f5df78fa478a0..a2ea179860b55114f3b8b76a1376e28298dd5579 100644 (file)
@@ -256,21 +256,16 @@ float racer_frame()
     vector df;
     float ftmp;
 
-    player          = self;
-    racer           = self.vehicle;
+       if(intermission_running)
+               return 1;
 
+    player  = self;
+    racer   = self.vehicle;
+    self    = racer;
+    
     player.BUTTON_ZOOM = player.BUTTON_CROUCH = 0;
-
-    self = racer;
-
-    /*
-    if(player.BUTTON_USE)
-    {
-        vehicles_exit(VHEF_NORMAL);
-        self = player;
-        return 0;
-    }
-    */
+    
+    vehicles_painframe();
     
     if(racer.deadflag != DEAD_NO)
     {
@@ -344,15 +339,27 @@ float racer_frame()
     // Afterburn
     if (player.BUTTON_JUMP && racer.vehicle_energy >= (autocvar_g_vehicle_racer_afterburn_cost * frametime))
     {
+        if(time - racer.wait > 0.2)
+            pointparticles(particleeffectnum("wakizashi_booster_smoke"), self.origin, '0 0 0', 1);            
+        
         racer.wait = time;
         racer.vehicle_energy -= autocvar_g_vehicle_racer_afterburn_cost * frametime;
         df += (v_forward * autocvar_g_vehicle_racer_speed_afterburn);
         
+        if(self.invincible_finished < time)
+        {            
+            traceline(self.origin, self.origin - '0 0 256', MOVE_NORMAL, self);
+            if(trace_fraction != 1.0)
+                pointparticles(particleeffectnum("smoke_small"), trace_endpos, '0 0 0', 1);
+            
+            self.invincible_finished = time + 0.1 + (random() * 0.1);
+        }
+
         if(self.strength_finished < time)
         {        
             //self.sounds = 2;
             self.strength_finished = time + 10.922667; //soundlength("vehicles/racer_boost.wav");
-            sound (self, CHAN_PAIN, "vehicles/racer_boost.wav", VOL_VEHICLEENGINE, ATTN_NORM);
+            sound (self, CHAN_PAIN, "vehicles/racer_boost.wav", VOL_VEHICLEENGINE, ATTN_NORM);            
         }        
     }
     else
@@ -487,6 +494,9 @@ void racer_enter()
     self.movetype = MOVETYPE_BOUNCE;
     self.owner.vehicle_health = (self.vehicle_health / autocvar_g_vehicle_racer_health);
     self.owner.vehicle_shield = (self.vehicle_shield / autocvar_g_vehicle_racer_shield);
+    
+    if(self.owner.flagcarried)
+       setorigin(self.owner.flagcarried, '-190 0 96');
 }
 
 void racer_exit(float eject)
@@ -496,7 +506,8 @@ void racer_exit(float eject)
     self.think      = racer_think;
     self.nextthink  = time;
     self.movetype   = MOVETYPE_TOSS;
-
+    sound (self, CHAN_PAIN, "misc/null.wav", VOL_VEHICLEENGINE, ATTN_NORM);
+    
     if not (self.owner)
         return;
 
@@ -636,6 +647,8 @@ void racer_dinit()
 
 void spawnfunc_vehicle_racer()
 {
+    self.vehicle_flags |= VHF_DMGSHAKE;
+    self.vehicle_flags |= VHF_DMGROLL;
 
     precache_sound ("weapons/laserimpact.wav");
     precache_sound ("weapons/lasergun_fire.wav");