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); } } } }