home *** CD-ROM | disk | FTP | other *** search
/ Quake 'em / QUAKEEM.BIN / quake / programs / sgqcver3 / proxim.qc < prev    next >
Encoding:
Text File  |  1996-08-21  |  1.4 KB  |  57 lines

  1. void () ProximityTouch =
  2. {
  3.     if (other.takedamage == DAMAGE_AIM)
  4.     {
  5.         GrenadeExplode();
  6.         return;
  7.     }
  8.     sound (self, CHAN_WEAPON, "weapons/bounce.wav", 1, ATTN_NORM);
  9.     if (self.velocity == '0 0 0')
  10.         self.avelocity = '0 0 0';
  11. };
  12.  
  13. void () Proximity =
  14. {
  15.     local entity head;
  16.  
  17.     head = findradius(self.origin,100);
  18.     while(head)
  19.     {
  20.         if ( (head.health > 1) && (head.classname == "player") && !(head.items & IT_INVISIBILITY) )
  21.         {
  22.             self.nextthink = time + 0.1;
  23.             sound (self, CHAN_WEAPON, "weapons/arm.wav", 1, ATTN_NORM);
  24.             self.think = GrenadeExplode;
  25.             return;
  26.         }
  27.         head = head.chain;
  28.     }
  29.     self.nexthink = time + 0.25;
  30. };
  31.  
  32. void() DropBomb =
  33. {
  34.     local entity item;
  35.  
  36.     if (self.ammo_rockets == <2)
  37.         return;
  38.     self.ammo_rockets = self.ammo_rockets - 2;
  39.     self.flags = self.flags | FL_ATTACKED;
  40.     sound (self, CHAN_WEAPON, "weapons/bounce.wav", 1, ATTN_NORM);
  41.     item = spawn();
  42.     item.owner = self;
  43.     makevectors(self.v_angle);
  44.     setorigin(item,self.origin + '0 0 16');
  45.     item.velocity = aim(self,500);
  46.     item.velocity = item.velocity * 100;
  47.     item.flags = FL_ITEM;
  48.     item.solid = SOLID_TRIGGER;
  49.     item.classname = "proximity";
  50.     item.movetype = MOVETYPE_BOUNCE;
  51.     setmodel (item, "progs/grenade.mdl");
  52.     setsize (item, '-16 -16 0', '16 16 56');
  53.     item.touch = ProximityTouch;
  54.     item.nexthink = time + 3;
  55.     item.think = Proximity;
  56.     W_SetCurrentAmmo();
  57. };