home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 51 / PCGamer51_17Demos.iso / games / colobotdemo / colobotdemo10e.exe / script / ant02.txt < prev    next >
Text File  |  2001-06-10  |  2KB  |  96 lines

  1. extern void object::Attack( )
  2. {
  3.     int        list[];
  4.     int        i;
  5.     object    p;
  6.     float    dist, prox;
  7.     point    dest;
  8.     boolean    advance = true;
  9.  
  10.     errmode(0);  // ne stoppe pas si erreur
  11.     while ( ismovie() != 0 )  wait(1);
  12.  
  13.     i = 0;
  14.     list[i++] = WingedGrabber;
  15.     list[i++] = TrackedGrabber;
  16.     list[i++] = WheeledGrabber;
  17.     list[i++] = LeggedGrabber;
  18.     list[i++] = WingedShooter;
  19.     list[i++] = TrackedShooter;
  20.     list[i++] = WheeledShooter;
  21.     list[i++] = LeggedShooter;
  22.     list[i++] = WingedOrgaShooter;
  23.     list[i++] = TrackedOrgaShooter;
  24.     list[i++] = WheeledOrgaShooter;
  25.     list[i++] = LeggedOrgaShooter;
  26.     list[i++] = WingedSniffer;
  27.     list[i++] = TrackedSniffer;
  28.     list[i++] = WheeledSniffer;
  29.     list[i++] = LeggedSniffer;
  30.     list[i++] = Thumper;
  31.     list[i++] = PhazerShooter;
  32.     list[i++] = Recycler;
  33.     list[i++] = Shielder;
  34.     list[i++] = Subber;
  35.     list[i++] = Me;
  36.     list[i++] = Derrick;
  37.     list[i++] = BotFactory;
  38.     list[i++] = PowerStation;
  39.     list[i++] = Converter;
  40.     list[i++] = RepairCenter;
  41.     list[i++] = DefenseTower;
  42.     list[i++] = ResearchCenter;
  43.     list[i++] = RadarStation;
  44.     list[i++] = ExchangePost;
  45.     list[i++] = PowerPlant;
  46.     list[i++] = AutoLab;
  47.     list[i++] = NuclearPlant;
  48.  
  49.     wait(cmdline(0));
  50.  
  51.     while ( true )
  52.     {
  53.         p = radar(list, 0, 360, 0, 1000);
  54.         if ( p == null )
  55.         {
  56.             wait(2);
  57.         }
  58.         else
  59.         {
  60.             dist = distance(p.position, position);
  61.             if ( dist <= 40 && !advance )
  62.             {
  63.                 fire(p.position);
  64.                 advance = true;
  65.             }
  66.             else
  67.             {
  68. //?                if ( RetBaseDistance() > 20 )
  69.                 {
  70.                     prox = dist-(5+rand()*5);
  71.                     if ( prox < 5 )  prox = 5;
  72.                     dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
  73.                     dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
  74.                     dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
  75.                     goto(dest);
  76.                     advance = false;
  77.                 }
  78.             }
  79.         }
  80.     }
  81. }
  82.  
  83. // Calcule la distance jusqu'α la base.
  84.  
  85. float object::RetBaseDistance()
  86. {
  87.     object    p;
  88.     float    dist;
  89.  
  90.     p = radar(SpaceShip, 0, 360, 0, 1000);
  91.     if ( p == null )  return 1000;
  92.     dist = distance(p.position, position);
  93.     return dist;
  94. }
  95.  
  96.