/usr/share/games/colobot/ai/wasp03.txt is in colobot-common 0.1.6-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | 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 la 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
}
}
}
}
}
|