Code:

`extern void object::Main()`

{

move(5);

smove(5);

}

void object::smove(int dist)

{

point b = chkpos(dist), pos = this.position;

//while(distance2d(b, this.position)>1) //Y U NO WORK

while(true)

{

point c = chkpos(20);

if(topo(c)>this.position.z){motor(0.1,0.1); adjalt(7,8);}

else{motor(1,1);adjalt(4,5);}

}

}

void object::adjalt(int min, int max)

{

int alt = this.altitude;

if(alt<min){while(alt<min){jet(1);alt = this.altitude;}}

if(alt>max){while(alt>max){jet(-0.65);alt = this.altitude;}}

if(alt<1 && alt<min){while(alt>min){motor(0.2, 0.2); jet(1);alt = this.altitude;}}

jet(0);

}

point object::chkpos(int c) //winny bledow przy przelotach w okolicy wysokich struktur

{

int a, b, ori = this.orientation;

point t = this.position, p;

if(0 <= ori && ori <= 90){ori = 90 - ori; a = c*cos(ori); b = c*sin(ori); p.x=(t.x+a); p.y=(t.y+b);} //I

if(90 <= ori && ori <= 180){ori = 180 - ori;a = c*cos(ori); b = c*sin(ori); p.x=(t.x-a); p.y=(t.y+b);} // II

if(180 <= ori && ori <= 270){ori = 270 - ori;a = c*cos(ori); b = c*sin(ori); p.x=(t.x-a); p.y=(t.y-b);} //III

if(270 <= ori && ori <= 360){ori = 360 - ori;a = c*cos(ori); b = c*sin(ori); p.x=(t.x+a); p.y=(t.y-b);} //IV

p.z = topo(p);

return p;

}

It won't go for set distance, and sometimes it climbs obstacles properly, sometimes don't. Don't know why.

Si vis pace, para bellum.