// TitanOreCollector // Bazuje na programie TitaniumCollector v2.0 // Created by MROCZA // // Licznik wydajności usunięty. extern void object::TitanOreCollector() { object item; object convert; point flag (0,0); errmode(0); convert = radar(Converter); if ( convert == null ) { message("Brak huty",DisplayError); return; } recharge(); while (true) { if(load == null) { while(true) { item = radar(TitaniumOre); if ( item != null ) break; message("Nie znaleziono więcej tytanu"); wait(10); } if(goto(item.position) == 211) { message("Ruda niedostępna",DisplayError); return; } if(grab()!=0) continue; } else { if(load.category != TitaniumOre) { goto(space(position)); drop(); while(true) { item = radar(TitaniumOre); if ( item != null ) break; message("Nie znaleziono więcej tytanu"); wait(10); } if(goto(item.position) == 211) { message("Ruda niedostępna",DisplayError); return; } if(grab()!=0) continue; } } if ( flag.x == 0 ) { goto(space(convert.position,15,30,6)); flag = position; } else { while(goto(flag) == 212) wait(1); } stock(); recharge(); } } ////////////////////////////////////////////////////////////////////////////////////////////////////// void object::recharge() { object item; errmode(0); if (energyCell.category == PowerCell) { if ( energyCell.energyLevel < 0.3 ) { item = radar(PowerStation); if(item != null) { while(true) { if (goto(item.position) == 000 ) break; if (goto(item.position) == 212 ) continue; message("Stacja energetyczna niedostępna",DisplayError); return; } while( energyCell.energyLevel < 1 ) wait(1); } } } else { if ( energyCell.energyLevel < 0.05 ) { float min = 0; while (true) { item = radar(NuclearCell,0,360,min,1000); if (item.energyLevel >= 0.5) break; min = distance (item.position, position) + 0.02; } while(true) { if (goto(item.position) == 000 ) break; if (goto(item.position) == 212 ) continue; message("Ogniwo atomowe niedostępne",DisplayError); return; } errmode(1); grab (InFront); goto (space(position)); drop (Behind); grab (EnergyCell); drop (InFront); grab (Behind); drop (EnergyCell); } } } ////////////////////////////////////////////////////////////////////////////////////////////////////// void object::stock() { object item; float angle; int i, j; errmode(1); item = radar(Converter); turn(direction(item.position)); jet(1); wait(0.5); move(4); jet(-1); wait(0.6); errmode(0); while(true) { angle = 0; if(category == WingedGrabber) j=9; else j=7; for(i=0; i