extern void object::Attack() { object enemy; while(true) { enemy = radar(AlienAnt); // put enemy category here (i.e. AlienWorm) if(enemy != null) // if enemy exists/spotted on map moveAndDestroy(enemy); else { message("No Enemies Spotted!"); return; } } } void object::moveAndDestroy(object target) { float dir; // direction of target from shooter float dis; // distance of target from shooter float dif; // difference in altitude of target & shooter (relative to sea-level) float ang; // angle shooter must aim (-20 degrees favorable) dis = distance(position,target.position); dif = target.position.z-position.z; ang = asin(dif/dis); jet(1-(ang/-20)); // thrust until 20 degress above target dir = direction(target.position); motor(1-dir/22.5,1+dir/22.5); // move towards enemy dis = distance(position,target.position); dif = target.position.z-position.z; ang = asin(dif/dis); aim(ang); // take aim dir = direction(target.position); if(dis < 30 and dir > -10 and dir < 10) // if within range fire(0.1); }