]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/projectile.qc
Merge branch 'master' into diabolik/umbraplayermodel
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / projectile.qc
index 2730a322d22f52ee7a262ff128d52603ed1c44b3..6160cb3f0219713d80c3df0aee6556b0894f596e 100644 (file)
@@ -31,6 +31,11 @@ void Projectile_DrawTrail(vector to)
        self.trail_oldorigin = to;
        self.trail_oldtime = time;
 
+       // force the effect even for stationary firemine
+       if(self.cnt == PROJECTILE_FIREMINE)
+               if(from == to)
+                       from_z += 1;
+
        if (self.traileffect)
                trailparticles(self, self.traileffect, from, to);
 }
@@ -213,13 +218,15 @@ void Ent_Projectile()
                        self.velocity_x = ReadCoord();
                        self.velocity_y = ReadCoord();
                        self.velocity_z = ReadCoord();
-                       self.gravity = ReadCoord();
-
+                       if(f & 0x10)
+                               self.gravity = ReadCoord();
+                       else
+                               self.gravity = 0; // none
                        self.move_origin = self.origin;
                        self.move_velocity = self.velocity;
                }
 
-               if(time == self.spawntime || (self.count & 0x80) || (f & 0x10))
+               if(time == self.spawntime || (self.count & 0x80) || (f & 0x08))
                {
                        self.trail_oldorigin = self.origin;
                        if(!(self.count & 0x80))
@@ -268,6 +275,9 @@ void Ent_Projectile()
                        case PROJECTILE_HAGAR_BOUNCING: setmodel(self, "models/hagarmissile.mdl");self.traileffect = particleeffectnum("TR_GRENADE"); self.scale = 0.4; break;
                        case PROJECTILE_FIREBALL: self.model = ""; self.modelindex = 0; self.traileffect = particleeffectnum("fireball"); break; // particle effect is good enough
                        case PROJECTILE_FIREMINE: self.model = ""; self.modelindex = 0; self.traileffect = particleeffectnum("firemine"); break; // particle effect is good enough
+                       case PROJECTILE_TAG: setmodel(self, "models/laser.mdl"); self.traileffect = particleeffectnum("TR_ROCKET"); break;
+                       case PROJECTILE_FLAC: setmodel(self, "models/hagarmissile.mdl"); self.scale = 0.4; self.traileffect = particleeffectnum("TR_ROCKET"); break;
+                       case PROJECTILE_SEEKER: setmodel(self, "models/tagrocket.md3"); self.scale = 2; self.traileffect = particleeffectnum("TR_ROCKET"); break;
                        default:
                                error("Received invalid CSQC projectile, can't work with this!");
                                break;
@@ -304,6 +314,8 @@ void Ent_Projectile()
                                self.maxs = '0 0 -3';
                                self.move_movetype = MOVETYPE_BOUNCE;
                                self.move_touch = SUB_Null;
+                               self.move_bounce_factor = g_balance_grenadelauncher_secondary_bouncefactor;
+                               self.move_bounce_stopspeed = g_balance_grenadelauncher_secondary_bouncestop;
                                break;
                        case PROJECTILE_PORTO_RED:
                                self.colormod = '2 1 1';
@@ -337,6 +349,19 @@ void Ent_Projectile()
                                self.mins = '-4 -4 -4';
                                self.maxs = '4 4 4';
                                break;
+                       case PROJECTILE_TAG:
+                               loopsound(self, CHAN_PROJECTILE, "weapons/tag_rocket_fly.wav", VOL_BASE, ATTN_NORM);
+                               self.mins = '-2 -2 -2';
+                               self.maxs = '2 2 2';
+                               break;
+                       case PROJECTILE_FLAC:
+                               self.mins = '-2 -2 -2';
+                               self.maxs = '2 2 2';
+                               break;
+                       case PROJECTILE_SEEKER:
+                               self.mins = '-4 -4 -4';
+                               self.maxs = '4 4 4';
+                               break;
                        default:
                                break;
                }
@@ -374,9 +399,11 @@ void Projectile_Precache()
        precache_model("models/laser.mdl");
        precache_model("models/plasmatrail.mdl");
        precache_model("models/rocket.md3");
+       precache_model("models/tagrocket.md3");
        precache_model("models/tracer.mdl");
        precache_sound("weapons/electro_fly.wav");
        precache_sound("weapons/rocket_fly.wav");
        precache_sound("weapons/fireball_fly.wav");
        precache_sound("weapons/fireball_fly2.wav");
+       precache_sound("weapons/tag_rocket_fly.wav");
 }