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

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