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

  1. float() crandom;
  2. void() s_explode1;
  3. void() BecomeExplosion;
  4.  
  5. float WP_FRAGROCK = 4;
  6. float IM_FRAGROCK = 72;
  7.  
  8. void() ShotRockExplode =
  9. {
  10.     local entity spike;
  11.     local float tmp=0;
  12.     while (tmp<20) {
  13.         tmp=tmp+1;
  14.         // new entity
  15.         spike=spawn();
  16.         // set owner
  17.         spike.owner=self.owner;
  18.         // moves like a spike
  19.         spike.movetype=MOVETYPE_FLYMISSILE;
  20.         spike.solid=SOLID_BBOX;
  21.         spike.velocity=self.velocity;
  22.         // add spread
  23.         spike.angles=vectoangles(spike.velocity);
  24.         makevectors(spike.angles);
  25.         spike.velocity=spike.velocity+v_right*100*crandom()+v_up*100*crandom();
  26.         spike.angles=vectoangles(spike.velocity);
  27.         spike.touch=ShrapnelTouch;
  28.         spike.classname="shrapnel";
  29.         spike.think=SUB_Remove;
  30.         spike.nextthink=time+6;
  31.         setmodel(spike,"progs/spike.mdl");
  32.         setsize(spike,'0 0 0','0 0 0');
  33.         setorigin(spike,self.origin);
  34.     }
  35.     // tell the net
  36.     WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
  37.     WriteByte (MSG_BROADCAST, TE_EXPLOSION);
  38.     WriteCoord (MSG_BROADCAST, self.origin_x);
  39.     WriteCoord (MSG_BROADCAST, self.origin_y);
  40.     WriteCoord (MSG_BROADCAST, self.origin_z);
  41.     // byebye
  42.     self.solid=SOLID_NOT;
  43.     sound(self,CHAN_WEAPON,"weapons/grenade.wav",1,ATTN_NORM);
  44.     BecomeExplosion();
  45. };
  46.     
  47. void() ShotRockTouch =
  48. {
  49.     if(pointcontents(self.origin)==CONTENT_SKY)
  50.     {
  51.         remove(self);
  52.         return;
  53.     }
  54.     ShotRockExplode();
  55. };
  56.  
  57. void() W_FireShotRock =
  58. {
  59.     local entity missile;
  60.     local float temp;    
  61.     if (self.currentammo<1)
  62.     {
  63.         self.weapon=W_BestWeapon();
  64.         self.ef=0;
  65.         W_SetCurrentAmmo();
  66.         return;
  67.     }
  68.     self.ammo_rockets=self.ammo_rockets - 1;
  69.     self.ammo_nails=self.ammo_nails - 20;
  70.     temp = floor(self.ammo_cells/10);    
  71.     self.currentammo=min(self.ammo_rockets,temp);
  72.     sound(self,CHAN_WEAPON, "weapons/sgun1.wav",1,ATTN_NORM);
  73.     self.punchangle_x= -2;
  74.     missile=spawn();
  75.     missile.owner=self;
  76.     missile.movetype = MOVETYPE_FLYMISSILE;
  77.     missile.solid = SOLID_BBOX;
  78.     makevectors(self.v_angle);
  79.     missile.velocity=aim(self,1000);
  80.     missile.velocity=missile.velocity*1000;
  81.     missile.angles=vectoangles(missile.velocity);
  82.     missile.touch=ShotRockTouch;
  83.     missile.classname="fragrocket";
  84.     missile.nextthink=time+0.2;
  85.     missile.think=ShotRockExplode;
  86.     setmodel(missile,"progs/missile.mdl");
  87.     setsize(missile,'0 0 0','0 0 0');
  88.     setorigin(missile,self.origin+v_forward*8+'0 0 16');
  89. };
  90.