64 lines
1.1 KiB
Plaintext
64 lines
1.1 KiB
Plaintext
extern void object::Attack( )
|
|
{
|
|
int enemy;
|
|
object p;
|
|
float dist;
|
|
point nav1, nav2, nav3, nav4, dest;
|
|
|
|
errmode(0); // ne stoppe pas si erreur
|
|
while ( ismovie() != 0 ) wait(1);
|
|
|
|
// enemy = WheeledGrabber;
|
|
enemy = WingedOrgaShooter;
|
|
|
|
while ( true )
|
|
{
|
|
p = radar(enemy, 0, 360, 0, 50);
|
|
if ( p == null )
|
|
{
|
|
nav1.x = position.x+2.5;
|
|
nav1.y = position.y+2.5;
|
|
nav2.x = position.x+2.5;
|
|
nav2.y = position.y-2.5;
|
|
nav3.x = position.x-2.5;
|
|
nav3.y = position.y-2.5;
|
|
nav4.x = position.x-2.5;
|
|
nav4.y = position.y+2.5;
|
|
|
|
while ( true )
|
|
{
|
|
goto(nav1);
|
|
p = radar(enemy, 0, 360, 0, 50);
|
|
if ( p != null ) break;
|
|
|
|
goto(nav2);
|
|
p = radar(enemy, 0, 360, 0, 50);
|
|
if ( p != null ) break;
|
|
|
|
goto(nav3);
|
|
p = radar(enemy, 0, 360, 0, 50);
|
|
if ( p != null ) break;
|
|
|
|
goto(nav4);
|
|
p = radar(enemy, 0, 360, 0, 50);
|
|
if ( p != null ) break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
dist = distance(p.position, position);
|
|
if ( dist <= 7.5 )
|
|
{
|
|
fire();
|
|
}
|
|
else
|
|
{
|
|
dest.x = (position.x+p.position.x)/2;
|
|
dest.y = (position.y+p.position.y)/2;
|
|
dest.z = (position.z+p.position.z)/2;
|
|
goto(dest);
|
|
}
|
|
}
|
|
}
|
|
}
|