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 ?
		{
			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
			{
				center = p.position;
				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 = center;
				dest.x += (rand()-0.5)*100;
				dest.y += (rand()-0.5)*100;
				goto(dest, 0, 1, 0);  // va n'importe où
			}
			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
				}
			}
		}
	}
}
