// Nazwa: Fly // Krotki opis: Przelatuje przez petle w misjach 2.2 i 2.3 // Dlugi opis: Przelatuje przez petle w misjach 2.2 i 2.3. Wyroznia sie wykrywaniem odleglosci od ziemi podczas chlodzenia silnika. // Autor: krzys_h // Wersja: 2.0 // Data ostatniej zmiany: 2012-02-15 13:25 bool object::inRangePlus(point pos, float range) { if(this.position.z > pos.z+range) return true; return false; } bool object::inRangeMinus(point pos, float range) { if(pos.z-range > this.position.z) return true; return false; } bool object::inRange(point pos, float range) { if(pos.z-range < this.position.z && this.position.z < pos.z+range) return true; return false; } bool object::inDirectionRange(point pos, float range) { if(direction(pos) < range && direction(pos) > -range) return true; return false; } extern void object::Fly() { object item; float engine = 0; while(true) { item = radar(Target2); if(item == null) break; if(item.position.z > this.position.z) { engine = 1.0; } if(item.position.z < this.position.z) { engine = -1.0; } if(inRangeMinus(item.position, 5)) { engine = 0.5; } if(inRangePlus(item.position, 5)) { engine = -0.5; } if(inRangeMinus(item.position, 2.5)) { engine = 0.25; } if(inRangePlus(item.position, 2.5)) { engine = -0.25; } if(inRange(item.position, 1)) { engine = 0; message("Me:"+this.position.z+" Target:"+item.position.z+" Dist: "+distance2d(this.position, item.position), DisplayInfo); } else message("Me:"+this.position.z+" Target:"+item.position.z+" Dist: "+distance2d(this.position, item.position)); if(!inDirectionRange(item.position, 1)) { message("Me:"+this.position.z+" Target:"+item.position.z+" Dist: "+distance2d(this.position, item.position), DisplayWarning); turn(direction(item.position)); } if(inRange(item.position, 1)) { motor(1,1); } else { if(distance2d(this.position, item.position) > 10) { motor(1,1); } else { motor(0.5,0.5); } } jet(engine); if(this.temperature > 1-((this.position.z-topo(this.position))*0.006)) { message("Me:"+this.position.z+" Target:"+item.position.z+" Dist: "+distance2d(this.position, item.position), DisplayError); jet(-1); while( this.temperature > 0 ); } } message("FINISHED", DisplayWarning); message("FINISHED", DisplayWarning); message("FINISHED", DisplayWarning); message("FINISHED", DisplayWarning); item = radar(SpaceShip); wait(1); goto(item.position); }