]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/vehicles/racer.qc
Merge branch 'master' into terencehill/centerprint_stuff
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / vehicles / racer.qc
index fc528add4a0009a4e594f92f53f5f1e3193d854b..c20ba7acfdb13a87351cd8960d0b2724ee5243b9 100644 (file)
@@ -1,6 +1,5 @@
 #define RACER_MIN '-120 -120 -40'
 #define RACER_MAX '120 120 40'
-#define RACER_ENGINE "sound/vehicles/racer.wav"
 
 #ifdef SVQC
 void racer_exit(float eject);
@@ -256,13 +255,17 @@ 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;
-
+    
+    vehicles_painframe();
+    
     if(racer.deadflag != DEAD_NO)
     {
         self = player;
@@ -335,15 +338,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
@@ -490,7 +505,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;
 
@@ -530,9 +546,6 @@ void racer_spawn()
 
 void racer_blowup()
 {
-    sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
-    pointparticles(particleeffectnum("explosion_big"), self.origin, '0 0 0', 1);
-
     self.deadflag    = DEAD_DEAD;
     self.vehicle_exit(VHEF_NORMAL);
 
@@ -542,7 +555,6 @@ void racer_blowup()
                                        autocvar_g_vehicle_racer_blowup_forceintensity,
                                        DEATH_WAKIBLOWUP, world);
 
-    self.alpha = -1;
     self.nextthink  = time + autocvar_g_vehicle_racer_respawntime;
     self.think      = racer_spawn;
     self.movetype   = MOVETYPE_NONE;
@@ -559,7 +571,6 @@ void racer_blowup()
 
 void racer_deadtouch()
 {
-    dprint("Boink!\n");
     self.avelocity_x *= 0.7;
     self.cnt -= 1;
     if(self.cnt <= 0)
@@ -630,11 +641,11 @@ 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");
     precache_sound ("weapons/rocket_fire.wav");
-    precache_sound ("weapons/rocket_impact.wav");
     
     precache_sound ("vehicles/racer_idle.wav");
     precache_sound ("vehicles/racer_move.wav");