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

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