home *** CD-ROM | disk | FTP | other *** search
/ Quake 'em / QUAKEEM.BIN / quake / programs / accqc / $guidmis.qr < prev    next >
Encoding:
Text File  |  1996-08-15  |  1.4 KB  |  50 lines

  1. Void function W_FireRocket();   // replaces W_FireRocket found in WEAPONS.QC
  2. var
  3.  missile : Object;
  4.  mpuff : Object;
  5. {
  6.   self.currentammo = self.ammo_rockets = self.ammo_rockets - 1;
  7.   sound(self, CHAN_WEAPON, "weapons/sgun1.wav", 1, ATTN_NORM);
  8.   self.punchangle_x = CONTENT_SOLID;
  9.   missile = spawn();
  10.   missile.owner = self;
  11.   missile.movetype = MOVETYPE_FLYMISSILE;
  12.   missile.solid = SOLID_BBOX;
  13.   makevectors(self.v_angle);
  14.   missile.velocity = aim(self, 1000);
  15.   missile.velocity = missile.velocity * 1000;
  16.   missile.angles = vectoangles(missile.velocity);
  17.   missile.touch = T_MissileTouch;
  18.   missile.nextthink = time + 0.1;
  19.   missile.think = CommandeGouvernail;
  20.   setmodel(missile, "progs/missile.mdl");
  21.   setsize(missile, VEC_ORIGIN, VEC_ORIGIN);
  22.   setorigin(missile, self.origin + v_forward * FL_CLIENT + [0 0 16]);
  23. }
  24.  
  25. Void function CommandeGouvernail();
  26. var
  27.  o        : Object;
  28.  PlusPres : Object;
  29.  Dist     : Real;
  30.  DistMin  : Real;
  31. {
  32.   self.nextthink = time + 0.1;
  33.   o = findradius(self.origin, DistMin = 1000);
  34.   while (o) {
  35.     if (o != self.owner) {
  36.       if (o.flags & FL_MONSTER) {
  37.         if ((Dist = vlen(o.origin-self.origin)) < DistMin) {
  38.           PlusPres = o;
  39.           DistMin = Dist;
  40.           }
  41.         }
  42.       }
  43.     o = o.chain;
  44.   }
  45.   if (DistMin < 1000) {
  46.     self.velocity = self.velocity * 0.8 + (PlusPres.origin-self.origin) * 0.2;
  47.     self.angles = vectoangles(self.velocity);
  48.   }
  49. }
  50.