]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Turn raptor bombs into csqc projectiles
authorJakob MG <jakob_mg@hotmail.com>
Sat, 26 Mar 2011 14:54:14 +0000 (15:54 +0100)
committerJakob MG <jakob_mg@hotmail.com>
Sat, 26 Mar 2011 14:54:14 +0000 (15:54 +0100)
qcsrc/client/projectile.qc
qcsrc/common/constants.qh
qcsrc/server/vehicles/raptor.qc

index cede03c5a082c3e756cb9378b09885212d843781..7d459f754ffda66d588431ff695d7385bfd03a7a 100644 (file)
@@ -195,7 +195,7 @@ void Ent_Projectile()
        //   effects
        //
        // projectiles don't send angles, because they always follow the velocity
-       
+
        f = ReadByte();
        self.count = (f & 0x80);
        self.iflags = (self.iflags & IFLAG_INTERNALMASK) | IFLAG_AUTOANGLES | IFLAG_ANGLES;
@@ -294,6 +294,7 @@ void Ent_Projectile()
                        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;
+                       case PROJECTILE_RAPTORBOMB: setmodel(self, "models/vehicles/raptor_bomb.dpm"); self.gravity = 1; self.traileffect = particleeffectnum("TR_GRENADE"); break;
                        default:
                                error("Received invalid CSQC projectile, can't work with this!");
                                break;
@@ -384,6 +385,10 @@ void Ent_Projectile()
                                self.mins = '-4 -4 -4';
                                self.maxs = '4 4 4';
                                break;
+            case PROJECTILE_RAPTORBOMB:
+                               self.mins = '-3 -3 -3';
+                               self.maxs = '3 3 3';
+                               break;
                        default:
                                break;
                }
@@ -406,7 +411,7 @@ void Ent_Projectile()
 
        if(!(self.count & 0x80))
                InterpolateOrigin_Note();
-       
+
        self.draw = Projectile_Draw;
        self.entremove = Ent_RemoveProjectile;
 }
@@ -424,9 +429,12 @@ void Projectile_Precache()
        precache_model("models/rocket.md3");
        precache_model("models/tagrocket.md3");
        precache_model("models/tracer.mdl");
+       precache_model("models/vehicles/raptor_bomb.dpm");
+
        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");
+
 }
index 58c6e27ca104c03880b00730e9c5c837e3235960..0d19e0320961bbc4eaf7061cf45f33260aca5237 100644 (file)
@@ -491,6 +491,7 @@ float PROJECTILE_CRYLINK_BOUNCING = 20;
 float PROJECTILE_FIREBALL = 21;
 float PROJECTILE_FIREMINE = 22;
 float PROJECTILE_BULLET_GLOWING_TRACER = 23;
+float PROJECTILE_RAPTORBOMB = 24;
 
 float SPECIES_HUMAN        =  0;
 float SPECIES_ROBOT_SOLID  =  1;
index 98da8c4ec200a0dadd524cd657cec63a87cef8a0..d4fb02ea8d77a52202c67d263f62e435423fb359 100644 (file)
@@ -120,7 +120,7 @@ void raptor_bomb_burst()
         bomblet = spawn();
         setorigin(bomblet,self.origin);
 
-        setmodel(bomblet,"models/vehicles/raptor_bomb.dpm");
+        //setmodel(bomblet,"models/vehicles/raptor_bomb.dpm");
         bomblet.scale = 0.5;
 
         bomblet.solid       = SOLID_TRIGGER;
@@ -130,11 +130,12 @@ void raptor_bomb_burst()
         bomblet.nextthink   = time + 5;
         bomblet.owner       = self.owner;
 
-        bomblet.modelflags = MF_GRENADE;
+        //bomblet.modelflags = MF_GRENADE;
 
         bomblet.velocity = normalize(d + (randomvec() * autocvar_g_vehicle_raptor_bomblet_spread)) * v;
 
-        bomblet.angles = vectoangles(bomblet.velocity);
+        //bomblet.angles = vectoangles(bomblet.velocity);
+        CSQCProjectile(bomblet, TRUE, PROJECTILE_RAPTORBOMB, TRUE);
     }
 
     remove(self);
@@ -155,9 +156,6 @@ void raptor_bombdrop()
     bomb_1 = spawn();
     bomb_2 = spawn();
 
-    setmodel(bomb_1,"models/vehicles/raptor_bomb.dpm");
-    setmodel(bomb_2,"models/vehicles/raptor_bomb.dpm");
-
     setorigin(bomb_1, gettaginfo(self, gettagindex(self, "bombmount_left")));
     setorigin(bomb_2, gettaginfo(self, gettagindex(self, "bombmount_right")));
 
@@ -171,12 +169,15 @@ void raptor_bombdrop()
     else
         bomb_1.nextthink = bomb_2.nextthink  = time + autocvar_g_vehicle_raptor_bomblet_time;
 
-    bomb_1.avelocity = bomb_2.avelocity  = '0 0 180';
+    //bomb_1.avelocity = bomb_2.avelocity  = '0 0 180';
     bomb_1.owner     = bomb_2.owner      = self;
     bomb_1.enemy     = bomb_2.enemy      = self.owner;
-    bomb_1.angles    = bomb_2.angles     = self.angles;
+    //bomb_1.angles    = bomb_2.angles     = self.angles;
     bomb_1.solid     = bomb_2.solid      = SOLID_BBOX;
 
+    CSQCProjectile(bomb_1, TRUE, PROJECTILE_RAPTORBOMB, TRUE);
+    CSQCProjectile(bomb_2, TRUE, PROJECTILE_RAPTORBOMB, TRUE);
+
     bomb_1 = spawn();
     bomb_1.owner = self;
     bomb_1.think = raptor_bombs_return;
@@ -216,7 +217,7 @@ void raptor_fire_cannon(entity gun, string tagname)
     pointparticles(particleeffectnum("raptor_cannon_muzzleflash"), bolt.origin, bolt.velocity, 1);
     //pointparticles(particleeffectnum("spiderbot_minigun_muzzleflash"), bolt.origin, bolt.velocity, 1);
 
-    CSQCProjectile(bolt, TRUE, PROJECTILE_CRYLINK   , TRUE);
+    CSQCProjectile(bolt, TRUE, PROJECTILE_CRYLINK, TRUE);
 }
 
 void raptor_think()