extern void object::FollowPhazer() { object item; // info. about phazer point dest; // position where to go float dist; // distance to phazer item = radar(PhazerShooter); if ( item == null ) { message("No phazer found"); return; // stop the program } shield(1, 25); // activate the shield while ( true ) // repeat forever { item = radar(PhazerShooter);// look for phazer if ( item == null ) break; dist = distance(item.position, position); if ( dist < 5 ) { // if closer than 5 m: wait(1); // wait } else // otherwise: { // Calculate a position 5 m before the phazer dest.x = (item.position.x-position.x)*((dist-5)/dist)+position.x; dest.y = (item.position.y-position.y)*((dist-5)/dist)+position.y; dest.z = (item.position.z-position.z)*((dist-5)/dist)+position.z; goto(dest, 0, 1, 1); // and go there } } }