home *** CD-ROM | disk | FTP | other *** search
- extern void object::Attack( )
- {
- int list[], i;
- object p;
- float dist;
- point dest;
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
- list[i++] = Derrick;
- list[i++] = BotFactory;
- list[i++] = PowerStation;
- list[i++] = Converter;
- list[i++] = RepairCenter;
- list[i++] = DefenseTower;
- list[i++] = ResearchCenter;
- list[i++] = RadarStation;
- list[i++] = ExchangePost;
- list[i++] = PowerPlant;
- list[i++] = AutoLab;
- list[i++] = NuclearPlant;
- list[i++] = Titanium;
- list[i++] = PowerCell;
- list[i++] = NuclearCell;
-
- while ( true )
- {
- if ( load == null ) // ne porte rien ?
- {
- p = radar(OrgaMatter); // cherche matiΦre
- if ( p == null )
- {
- jet(1); // monte
- dest = position;
- dest.x += (rand()-0.5)*10;
- dest.y += (rand()-0.5)*10;
- goto(dest); // va n'importe o∙
- wait(2);
- }
- else
- {
- dest = p.position;
- dest.z = position.z;
- dist = distance(dest, position);
- if ( dist > 1.25 )
- {
- jet(1); // monte
- goto(p.position); // va sur le matiΦre
- }
- else
- {
- jet(-1); // descend
- while ( altitude > 0 );
- grab(); // prend la matiΦre
- }
- }
- }
- else // porte matiΦre ?
- {
- jet(1); // monte
- p = radar(list, 0, 360, 0, 1000, 1, FilterOnlyLanding);
- if ( p == null )
- {
- dest = position;
- dest.x += (rand()-0.5)*10;
- dest.y += (rand()-0.5)*10;
- goto(dest); // va n'importe o∙
- wait(2);
- }
- else
- {
- dest = p.position;
- dest.z = position.z;
- dist = distance(dest, position);
- if ( dist > 1.25 )
- {
- goto(p.position); // va sur la cible
- }
- else
- {
- drop(); // lΓche la matiΦre
- }
- }
- }
- }
- }
-