home *** CD-ROM | disk | FTP | other *** search
/ Quake 'em / QUAKEEM.BIN / quake / programs / xtrawp19 / naprock.qc < prev    next >
Encoding:
Text File  |  1996-08-09  |  2.1 KB  |  85 lines

  1. float WP_NAPALMROCK = 128;
  2. float IM_NAPALMROCK = 78;
  3.  
  4. void() NapalmRocketExplode =
  5. {
  6.     local entity fuel;
  7.     local float tmp;
  8.     
  9.     WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
  10.     WriteByte (MSG_BROADCAST, TE_EXPLOSION);
  11.     WriteCoord (MSG_BROADCAST, self.origin_x);
  12.     WriteCoord (MSG_BROADCAST, self.origin_y);
  13.     WriteCoord (MSG_BROADCAST, self.origin_z);
  14.  
  15.     tmp=0;
  16.     while(tmp<10)
  17.     {
  18.         fuel=spawn();
  19.         fuel.owner=self.owner;
  20.         fuel.movetype=MOVETYPE_FLYMISSILE;
  21.         fuel.solid=SOLID_BBOX;
  22.         fuel.classname="napalm";
  23.         fuel.think=SUB_Null;
  24.       fuel.avelocity='300 300 300';
  25.         fuel.touch=NapalmTouch;
  26.         fuel.takedamage=DAMAGE_AIM;
  27.         fuel.health=1;
  28.         fuel.th_die=NapalmDie;
  29.         fuel.velocity=self.velocity;
  30.         fuel.angles=vectoangles(fuel.velocity);
  31.         makevectors(fuel.angles);
  32.         fuel.velocity=fuel.velocity+v_right*100*crandom()+v_up*100*crandom();
  33.         fuel.angles=vectoangles(fuel.velocity);
  34.         setmodel(fuel,"progs/spike.mdl");
  35.         setsize(fuel,'0 0 0','0 0 0');
  36.         setorigin(fuel,self.origin);
  37.         tmp=tmp+1;
  38.     }
  39.     BecomeExplosion();
  40. };
  41.  
  42. void() NapalmRocketTouch =
  43. {
  44.     if (pointcontents(self.origin)==CONTENT_SKY)
  45.     {
  46.         remove(self);
  47.         return;
  48.     }
  49.     NapalmRocketExplode();
  50. };
  51.  
  52. void() W_FireNapalmRocket =
  53. {
  54.     local entity missile;
  55.     local float temp;
  56.     
  57.     if (self.currentammo<1)
  58.     {
  59.         self.weapon=W_BestWeapon();
  60.         self.ef=0;
  61.         W_SetCurrentAmmo();
  62.         return;
  63.     }
  64.     self.ammo_rockets=self.ammo_rockets - 1;
  65.     self.ammo_napalm=self.ammo_napalm - 10;
  66.     temp=floor(self.ammo_napalm/10);
  67.     self.currentammo=min(self.ammo_rockets,temp);
  68.     sound(self,CHAN_WEAPON,"weapons/sgun1.wav",1,ATTN_NORM);
  69.     self.punchangle_x = -2;
  70.     missile=spawn();
  71.     missile.owner=self;
  72.     missile.movetype=MOVETYPE_FLYMISSILE;
  73.     missile.solid=SOLID_BBOX;
  74.     makevectors(self.v_angle);
  75.     missile.velocity=aim(self,1000);
  76.     missile.velocity=missile.velocity*1000;
  77.     missile.classname="napalmrocket";
  78.     missile.angles=vectoangles(missile.velocity);
  79.     missile.touch=NapalmRocketTouch;
  80.     missile.nextthink=time+0.2;
  81.     missile.think=NapalmRocketExplode;
  82.     setmodel(missile,"progs/missile.mdl");
  83.     setsize(missile,'0 0 0','0 0 0');
  84.     setorigin(missile,self.origin+v_forward*8+'0 0 16');
  85. };