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

  1. float IM_PHOSPHOR = 75;
  2. float WP_PHOSPHOR = 16;
  3.  
  4. void() PhosphorExplode =
  5. {
  6.     local entity fire;
  7.     fire=spawn();
  8.     fire.owner=self.owner;
  9.     fire.movetype=MOVETYPE_NONE;
  10.     fire.solid=SOLID_NOT;
  11.     fire.classname="phosphorflame";
  12.     fire.nextthink=time+0.1;
  13.     fire.think=FlameThink;
  14.     fire.effects=EF_BRIGHTLIGHT;
  15.     fire.blasttimer=time+10;
  16.     fire.style=0;
  17.     fire.frame=0;
  18.     setmodel(fire,"progs/flame2.mdl");
  19.     setsize(fire,'0 0 0','0 0 0');
  20.     setorigin(fire,self.origin+'0 0 16');
  21.     WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
  22.     WriteByte (MSG_BROADCAST, TE_EXPLOSION);
  23.     WriteCoord (MSG_BROADCAST, self.origin_x);
  24.     WriteCoord (MSG_BROADCAST, self.origin_y);
  25.     WriteCoord (MSG_BROADCAST, self.origin_z);
  26.     
  27.     T_NewRadiusDamage(self,self.owner,20,world,50);
  28.     BecomeExplosion();
  29. };
  30.  
  31. void() PhosphorTouch =
  32. {
  33.     if (other==self.owner)
  34.         return;
  35.     if (other.takedamage==DAMAGE_AIM)
  36.     {
  37.         PhosphorExplode();
  38.         return;
  39.     }
  40.     sound(self,CHAN_WEAPON,"weapons/bounce.wav",1,ATTN_NORM);
  41.     if (self.velocity == '0 0 0')
  42.         self.avelocity='0 0 0';
  43. };
  44.  
  45. void() W_FirePhosphor =
  46. {
  47.     local entity missile;
  48.  
  49.     if (self.currentammo<1)
  50.     {
  51.         self.weapon=W_BestWeapon();
  52.         self.ef=0;
  53.         W_SetCurrentAmmo();
  54.         return;
  55.     }    
  56.     self.ammo_rockets=self.ammo_rockets - 10;
  57.     self.currentammo=floor(self.ammo_rockets/10);
  58.     sound(self,CHAN_WEAPON,"weapons/grenade.wav",1,ATTN_NORM);
  59.     self.punchangle_x= -2;
  60.     missile=spawn();
  61.     missile.owner=self;
  62.     missile.movetype=MOVETYPE_BOUNCE;
  63.     missile.solid=SOLID_BBOX;
  64.     missile.classname="phosphorbomb";
  65.     makevectors(self.v_angle);
  66.     if(self.v_angle_x)
  67.         missile.velocity=v_forward*600+v_up*200+crandom()*v_right*10+crandom()*v_up*10;
  68.     else
  69.     {
  70.         missile.velocity=aim(self,10000);
  71.         missile.velocity=missile.velocity*600;
  72.         missile.velocity_z=200;
  73.     }
  74.     missile.avelocity='300 300 300';
  75.     missile.angles=vectoangles(missile.velocity);
  76.     missile.touch=PhosphorTouch;
  77.     missile.nextthink=time+2;
  78.     missile.think=PhosphorExplode;
  79.     setmodel(missile,"progs/grenade.mdl");
  80.     setsize(missile,'0 0 0','0 0 0');
  81.     setorigin(missile,self.origin);
  82. };