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

  1. void() NapalmTouch =
  2. {
  3. // stick
  4.     local float tmp;
  5.     tmp=pointcontents(self.origin);
  6.     if (other!=world) // monster or player
  7.     {
  8.         self.velocity='0 0 0';
  9.         self.avelocity='0 0 0';
  10.         self.angles=vectoangles(other.velocity);
  11.         self.think=NapalmThink;
  12.         self.th_die=NapalmDie;
  13.         self.health=1;
  14.         self.takedamage=DAMAGE_AIM;
  15.         self.chain=other;    // save target
  16.         self.nextthink=time+0.1; // hopefully this is short enough
  17.         self.avelocity='0 0 0';
  18.         self.touch=SUB_Null;
  19.         self.blasttimer=time+120;
  20.         remove(self);
  21.         return;
  22.     }
  23.     else if ((tmp==CONTENT_SKY)||(tmp==CONTENT_WATER)||(tmp==CONTENT_LAVA)||(tmp==CONTENT_SLIME))
  24.     {
  25.         remove(self);
  26.         return;
  27.     }
  28.     else
  29.     {
  30.         self.velocity='0 0 0';
  31.         self.avelocity='0 0 0';
  32.         self.angles=vectoangles('0 0 0');
  33.         self.think=SUB_Remove;
  34.         self.touch=SUB_Null;
  35.         self.th_die=NapalmDie2;
  36.         self.nextthink=time+120;
  37.     }
  38. };
  39.  
  40. void() NapalmDie =
  41. {
  42. // light up
  43.     local entity fire;
  44.     fire=spawn();
  45.     fire.owner=self.owner;
  46.     fire.movetype=MOVETYPE_NONE;
  47.     fire.solid=SOLID_NOT;
  48.     fire.classname="napalmflame";
  49.     fire.nextthink=time+0.1;
  50.     fire.think=NapalmFlameThink;
  51.     fire.effects=EF_BRIGHTLIGHT;
  52.     fire.blasttimer=time+10;
  53.     fire.view_ofs=self.view_ofs;
  54.     fire.chain=self.chain;
  55.     fire.style=0;
  56.     fire.frame=0;
  57.     setmodel(fire,"progs/flame2.mdl");
  58.     setsize(fire,'0 0 0','0 0 0');
  59.     setorigin(fire,self.origin+'0 0 16');
  60.     remove(self);
  61. };
  62.  
  63. void() NapalmDie2 =
  64. {
  65. // light up
  66.     local entity fire;
  67.     fire=spawn();
  68.     fire.owner=self.owner;
  69.     fire.movetype=MOVETYPE_NONE;
  70.     fire.solid=SOLID_NOT;
  71.     fire.classname="napalmflame";
  72.     fire.nextthink=time+0.1;
  73.     fire.think=FlameThink;
  74.     fire.effects=EF_BRIGHTLIGHT;
  75.     fire.blasttimer=time+10;
  76.     fire.style=0;
  77.     fire.frame=0;
  78.     setmodel(fire,"progs/flame2.mdl");
  79.     setsize(fire,'0 0 0','0 0 0');
  80.     setorigin(fire,self.origin+'0 0 16');
  81.     remove(self);
  82. };
  83.  
  84. void() NapalmThink =
  85. {
  86.     local float tmp;
  87.     tmp=pointcontents(self.origin);
  88.     self.origin=self.chain.origin;
  89.     self.angles=vectoangles(self.chain.velocity);
  90.     self.nextthink=time+0.1;
  91.     if (self.blasttimer<time)
  92.         remove(self);
  93.     if ((tmp==CONTENT_WATER)||(tmp==CONTENT_LAVA)||(tmp==CONTENT_SLIME))
  94.         remove(self);
  95. };
  96.