colobot-data/ai/wasp02.txt

75 lines
1.4 KiB
Plaintext
Raw Normal View History

2012-09-13 21:35:43 +00:00
extern void object::Attack( )
{
int list[], i;
object p;
float dist;
point dest, center;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = Derrick;
while ( true )
{
if ( load == null ) // ne porte rien ?
{
2012-12-29 10:15:47 +00:00
p = radar(OrgaMatter); // cherche matière
2012-09-13 21:35:43 +00:00
if ( p == null )
{
jet(1); // monte
dest = position;
dest.x += (rand()-0.5)*10;
dest.y += (rand()-0.5)*10;
2012-12-29 10:15:47 +00:00
goto(dest); // va n'importe où
2012-09-13 21:35:43 +00:00
wait(2);
}
else
{
center = p.position;
dest = p.position;
dest.z = position.z;
dist = distance(dest, position);
if ( dist > 1.25 )
{
jet(1); // monte
2012-12-29 10:15:47 +00:00
goto(p.position); // va sur la matière
2012-09-13 21:35:43 +00:00
}
else
{
jet(-1); // descend
while ( altitude > 0 );
2012-12-29 10:15:47 +00:00
grab(); // prend la matière
2012-09-13 21:35:43 +00:00
}
}
}
2012-12-29 10:15:47 +00:00
else // porte matière ?
2012-09-13 21:35:43 +00:00
{
jet(1); // monte
p = radar(list, 0, 360, 0, 1000, 1, FilterOnlyLanding);
if ( p == null )
{
dest = center;
dest.x += (rand()-0.5)*100;
dest.y += (rand()-0.5)*100;
2012-12-29 10:15:47 +00:00
goto(dest, 0, 1, 0); // va n'importe où
2012-09-13 21:35:43 +00:00
}
else
{
dest = p.position;
dest.z = position.z;
dist = distance(dest, position);
if ( dist > 1.25 )
{
goto(p.position); // va sur la cible
}
else
{
2012-12-29 10:15:47 +00:00
drop(); // lâche la matière
2012-09-13 21:35:43 +00:00
}
}
}
}
}