home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / games / volume18 / xmpb / part07 / rad2.npc < prev    next >
Text File  |  1993-07-12  |  2KB  |  221 lines

  1. NPC
  2. Name = rad2npc
  3. Ship = Oldsmobile
  4. EnergyMax = 10000
  5. LShieldMax = 1200
  6. RShieldMax = 1200
  7. BShieldMax = 800
  8. Solar = 9
  9. ShortRange = 1
  10. Engine = 2
  11. Repair = 9
  12. LongRange = 1
  13. Jammer = 1
  14. TC = 1
  15.  
  16. Weapons
  17. Pulse
  18.  
  19. var
  20.     u
  21.     d
  22.     l
  23.     r
  24.     angto
  25.     aa1
  26.     aa2
  27. end
  28.  
  29. Proc dir
  30. {
  31.     if (r && u) 
  32.     {
  33.         angto=225;
  34.         set TurnTo = 225;
  35.         return;
  36.     }
  37.     if (r && d) 
  38.     {
  39.         angto=315;
  40.         set TurnTo = 315;
  41.         return;
  42.     }
  43.     if (l && u) 
  44.     {
  45.         angto=135;
  46.         set TurnTo = 135;
  47.         return;
  48.     }
  49.     if (l && d) 
  50.     {
  51.         angto=45;
  52.         set TurnTo = 45;
  53.         return;
  54.     }
  55.     if (r)
  56.     {
  57.         angto=270;
  58.         set TurnTo = 270;
  59.         return;
  60.     }
  61.     if (l)
  62.     {
  63.         angto=90;
  64.         set TurnTo = 90;
  65.         return;
  66.     }
  67.     if (d)
  68.     {
  69.         angto=0;
  70.         set TurnTo = 0;
  71.         return;
  72.     }
  73.     if (u)
  74.     {
  75.         angto=180;
  76.         set TurnTo = 180;
  77.         return;
  78.     }
  79.     return;
  80. }
  81.  
  82.  
  83. Proc attack
  84. {
  85. var
  86.         num
  87.     a1
  88.     a2
  89. end
  90.     set B1 = 1;
  91.     set B3 = 1;
  92.     a2 = EnemyAngle;
  93.     while(EnemyDist < 1000)
  94.     {
  95.         num=NumEnemies;
  96.         set SelectEnemy = 0;
  97.         set RepairToggle = 1;
  98.         set Balance = 1;
  99.  
  100.         if(! EnemyAvail)
  101.         {
  102.             set B1 = 0;
  103.             set B3 = 0;
  104.             return;
  105.         }
  106.  
  107.         a1 = a2;
  108.         a2 = EnemyAngle;
  109.         set TurnTo = EnemyAngle + (a2 - a1) * 4;
  110.     }
  111.     set B1 = 0;
  112.     set B3 = 0;
  113.     return;
  114. }
  115.  
  116. Proc aim
  117. {
  118. var
  119.     num
  120. end
  121.     num = NumEnemies;
  122.     set SelectEnemy = 0;
  123.  
  124.     aa1 = aa2;
  125.     aa2 = EnemyAngle;
  126.     set TurnTo = EnemyAngle + (aa2 - aa1) * 4;
  127.  
  128.     if(EnemyDist < 1000) 
  129.         attack();
  130.     return;
  131. }
  132.  
  133.  
  134. Proc thrust
  135. {
  136. var
  137.     num
  138.     i
  139.     thrustTime
  140. end
  141.     num = NumEnemies;
  142.     set SelectEnemy = 0;
  143.     set B3 = 1;
  144.     aa2 = EnemyAngle;
  145.     if(EnemyDist < 2000)
  146.         thrustTime = 10;
  147.     else
  148.         thrustTime = EnemyDist / 600;
  149.     i = 0;
  150.     while (i < thrustTime)
  151.     {
  152.         aim();
  153.         i = i + 1;
  154.     }
  155.     set B3 = 0;
  156.     return;
  157. }
  158.  
  159.  
  160. Proc drift
  161. {
  162. var
  163.     i
  164. end
  165.     set B3 = 0;
  166.     i = 0;
  167.     while (i < 4)
  168.     {
  169.         aim();
  170.         i = i + 1;
  171.     }
  172.     return;
  173. }
  174.  
  175.  
  176. Proc seek
  177. {
  178.     if(NumEnemies > 0)
  179.         thrust();
  180.     drift();
  181.     return;
  182. }
  183.  
  184.  
  185. State loop
  186. {
  187.     r = 0;
  188.     l = 0;
  189.     u = 0;
  190.     d = 0;
  191.  
  192.     set RepairToggle = 1;
  193.     set Balance= 1;
  194.  
  195.     if (XPos*XVel > 50000 && XVel > 0) r = 1;
  196.     if (XPos*XVel > 50000 && XVel < 0) l = 1;
  197.     if (YPos*YVel > 50000 && YVel > 0) u = 1;
  198.     if (YPos*YVel > 50000 && YVel < 0) d = 1;
  199.  
  200.     if (r || l || u || d)
  201.     {
  202.         dir();
  203.         set B1 =0;
  204.         if (angto == Angle)
  205.         {
  206.             set B3 = 1;
  207.         }
  208.     }
  209.     else
  210.         seek();
  211. }
  212.  
  213. State main
  214. {
  215.     set B2 = 1;
  216.     angto = -500;
  217.     1 -> loop;
  218. }
  219.  
  220. Start main
  221.