en to de translation catalogue (36 entries)

note: type: \b; header
en: Programs dispatched by Houston
de: Von Houston übermittelte Programme

note: type: Plain text
en: Following is a program that has been developed by our engineers. It allows you to switch <a object|power>power cells</a>. A charged cell needs to be placed on the ground in front of the bot.
de: Es folgt ein Programm, das von unseren Ingenieuren entwickelt wurde. Damit wechselt der Roboter selbständig seine <a object|power>Batterie</a> gegen eine vor ihm am Boden stehende aus.

note: type: Plain text
en: In order to execute this program, select the program <code>SwitchCell1</code> in the list of the programs available on the bot (on the lower left-hand corner of your screen), and click on the arrow symbol <button 21/>.
de: Um dieses Programm auszuführen, wählen Sie das Programm <code>SwitchCell1</code> in der Liste der Programme die für den Roboter verfügbar sind (in der Ecke links unten auf Ihrem Bildschirm). Klicken Sie dann auf das Pfeil-Symbol <button 21/>.

note: type: Source code
en: extern void object::SwitchCell1()
    {
    	<a cbot|grab>grab</a>(InFront);     // take the new cell in front
    	<a cbot|drop>drop</a>(Behind);      // and drop it behind
    	
    	<a cbot|grab>grab</a>(EnergyCell);  // take the cell from the bot
    	<a cbot|drop>drop</a>(InFront);     // and drop it in front
    	
    	<a cbot|grab>grab</a>(Behind);      // take the new cell
    	<a cbot|drop>drop</a>(EnergyCell);  // and drop it on the bot
    }
de: extern void object::SwitchCell1()
    {
    	<a cbot|grab>grab</a>(InFront);     // nimm die neue Batterie von vorn
    	<a cbot|drop>drop</a>(Behind);      // und stelle sie hinten ab
    	
    	<a cbot|grab>grab</a>(EnergyCell);  // nimm die Batterie vom Roboter
    	<a cbot|drop>drop</a>(InFront);     // und stelle sie vorn ab
    	
    	<a cbot|grab>grab</a>(Behind);      // nimm die neue Batterie
    	<a cbot|drop>drop</a>(EnergyCell);  // und stelle sie auf den Roboter
    }

note: type: \b; header
en: Programs dispatched by Houston
de: Von Houston übermittelte Programme

note: type: Plain text
en: We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
de: Wir haben für diese Mission kein spezielles Programm entwickelt. Allerdings können Sie Ihre eigenen Programme schreiben, falls Sie glauben, es wäre sinnvoll.

note: type: \b; header
en: Archives
de: Archiv

note: type: Plain text
en: Index of the programs dispatched in former missions:
de: Index der Programme, die in vorhergehenden Missionen gesendet wurden:

note: type: Plain text
en: Below is a program that has been developed by our engineers. It allows you to recharge the <a object|power>power cell</a> of a bot: it goes to the closest <a object|station>power station</a>, waits 5 seconds, and comes back to the initial position.
de: Unten sehen Sie ein Programm, das von unseren Ingenieuren entwickelt wurde. Es erlaubt Ihnen, die <a object|power>Batterie</a> eines Roboters aufzuladen: er geht zum nächsten <a object|station>Kraftwerk</a>, wartet 5 Sekunden und kommt zu seiner Ausgangsposition zurück.

note: type: Plain text
en: Remark: If you click on an element of the program underlined in blue, your SatCom will display a text that explains this element. The texts that follow a double slash <code>//</code> are not part of the program, but are comments that help you to understand the program.
de: Bemerkung: Wenn Sie auf ein blau unterstrichenes Element im Programm klicken, wird Ihr SatCom einen Text anzeigen, der das Element erklärt. Die Zeilen nach einem doppelten Schrägstrich <code>//</code> sind nicht Teil des Programms, es sind Kommentare die Ihnen helfen sollen das Programm zu verstehen.

note: type: Source code
en: extern void object::Recharge1()
    {
    	<a cbot|type>point</a>  start;          // variable for initial pos.
    	<a cbot|type>object</a> item;           // info. about power station
    	
    	start = position;      // store initial position
    	
    	item = <a cbot|radar>radar</a>(<a cbot|category>PowerStation</a>); // look for station
    	<a cbot|goto>goto</a>(item.position);   // go to the power station
    	<a cbot|wait>wait</a>(5);               // wait 5 seconds
    	
    	<a cbot|goto>goto</a>(start);           // go back to initial pos.
    }
de: extern void object::Recharge1()
    {
    	<a cbot|type>point</a>  start;        // Variable für Ausgangsposition
    	<a cbot|type>object</a> item;         // Info über Kraftwerk
    	
    	start = position;    // speichere Ausgangsposition
    	
    	item = <a cbot|radar>radar</a>(<a cbot|category>PowerStation</a>);// orte das Kraftwerk
    	<a cbot|goto>goto</a>(item.position); // gehe zum Kraftwerk
    	<a cbot|wait>wait</a>(5);             // warte 5 Sekunden
    	
    	<a cbot|goto>goto</a>(start);         // zurück zur Ausgangsposition
    }

note: type: Plain text
en: We have improved the recharge program. When it arrives at the <a object|station>power station</a>, the bot does not wait exactly 5 seconds, but only until the <a object|power>power cell</a> is fully charged. After the bot is back at the initial position, it displays a message on the screen.
de: Wir haben das Aufladeprogramm verbessert. Wenn er am <a object|station>Kraftwerk</a> ankommt, wartet der Roboter nicht genau 5 Sekunden, sondern nur so lange, bis sich die <a object|power>Batterie</a> vollständig aufgeladen hat. Wenn der Roboter an seiner Ausgangposition angekommen ist, gibt er eine Nachricht auf dem Bildschirm aus.

note: type: Source code
en: extern void object::Recharge2()
    {
    	<a cbot|type>point</a>  start;          // variable for initial pos.
    	<a cbot|type>object</a> item;           // info. about power station
    	
    	start = position;      // store initial position
    	
    	item = <a cbot|radar>radar</a>(<a cbot|category>PowerStation</a>); // look for station
    	<a cbot|goto>goto</a>(item.position);   // go to the power station
    	
    	<a cbot|while>while</a> ( <a cbot|object>energyCell.energyLevel</a> < 1 )
    	{
    		<a cbot|wait>wait</a>(1);           // wait until recharged
    	}
    	
    	<a cbot|goto>goto</a>(start);           // go back to initial pos.
    	<a cbot|message>message</a>("Recharge completed");
    }
de: extern void object::Recharge2()
    {
    	<a cbot|type>point</a>  start;          // Variable für Ausgangspos.
    	<a cbot|type>object</a> item;           // Info über Kraftwerk
    	
    	start = position;      // speichere Ausgangsposition
    	
    	item = <a cbot|radar>radar</a>(<a cbot|category>PowerStation</a>); // orte Kraftwerk
    	<a cbot|goto>goto</a>(item.position);   // gehe zum Kraftwerk
    	
    	<a cbot|while>while</a> ( <a cbot|object>energyCell.energyLevel</a> < 1 )
    	{
    		<a cbot|wait>wait</a>(1);           // warte bis voll geladen
    	}
    	
    	<a cbot|goto>goto</a>(start);           // zurück zur Ausgangsposition
    	<a cbot|message>message</a>("Aufladen beendet."); //Meldung
    }

note: type: Plain text
en: Below is one of the programs that has been developed by our engineers.
    It instructs a <a object|botgr>grabber</a> to retrieve the nearest chunk of <a object|titanore>titanium ore</a> and place it on the <a object|convert>converter</a>.
de: Unten sehen Sie eines der Programme, die von unseren Ingenieuren entwickelt wurden.\Es instruiert einen <a object|botgr>Transporter</a> die nächste Einheit <a object|titanore>Titanerz</a> zu holen und sie auf dem <a object|convert>Titankonverter</a> zu platzieren.

note: type: Plain text
en: In order to execute this program, select the program <code>CollectTitanium1</code> in the list of the programs available on the bot (on the lower left-hand corner of your screen), and click on the arrow symbol <button 21/>. At any moment you can stop the program and take over at the controls with the stop button <button 8/>.
de: Um dieses Programm auszuführen, wählen Sie das Programm <code>CollectTitanium1</code> in der Liste der Programme die für den Roboter verfügbar sind (in der Ecke links unten auf Ihrem Bildschirm). Klicken Sie dann auf das Pfeil-Symbol <button 21/>. Sie können das Programm jederzeit stoppen um selbst die Kontrolle  zu übernehmen. Drücken Sie dazu auf die Stop-Schaltfläche <button 8/>.

note: type: Source code
en: extern void object::CollectTitanium1()
    {
    	// 1) Variable definition.
    	<a cbot|type>object</a>  item;            // info. about objects
    	
    	// 2) Go to the titanium ore and grab it.
    	item = <a cbot|radar>radar</a>(<a cbot|category>TitaniumOre</a>);// look for titanium ore
    	<a cbot|goto>goto</a>(item.position);     // go to the position
    	<a cbot|grab>grab</a>();                  // grab the titanium
    	
    	// 3) Go to the converter and drop it.
    	item = <a cbot|radar>radar</a>(<a cbot|category>Converter</a>); // look for converter
    	<a cbot|goto>goto</a>(item.position);     // go to the position
    	<a cbot|drop>drop</a>();                  // drop the titanium
    	<a cbot|move>move</a>(-2.5);              // step back 2.5 m
    }
de: extern void object::CollectTitanium1()
    {
    	// 1) Variablen deklarieren.
    	<a cbot|type>object</a>  item;            // Info über Objekte
    	
    	// 2) Gehe zum Titanerz und greife es.
    	item = <a cbot|radar>radar</a>(<a cbot|category>TitaniumOre</a>);// suche nach Titanerz
    	<a cbot|goto>goto</a>(item.position);     // gehe zu dessen Position
    	<a cbot|grab>grab</a>();                  // greife das Titanerz
    	
    	// 3) Gehe zum Titankonverter und lege es ab.
    	item = <a cbot|radar>radar</a>(<a cbot|category>Converter</a>); // orte den Konverter
    	<a cbot|goto>goto</a>(item.position);     // gehe zu dieser Position
    	<a cbot|drop>drop</a>();                  // lege das Titanerz ab
    	<a cbot|move>move</a>(-2.5);              // gehe 2.5m zurück
    }

note: type: Plain text
en: Below is one of the programs that has been developed by our engineers.
    An upgrade on the previous program: the <a object|botgr>grabber</a>, on its way back from the converter, makes a stop, if necessary, at the <a object|station>power station</a> to recharge its power cell.
de: Unten sehen Sie eines der Programme, die von unseren Ingenieuren entwickelt wurden.
    Eine verbesserte Version des letzten Programms: der <a object|botgr>Transporter</a> macht auf dem Rückweg vom Konverter, falls notwendig, einen Stopp beim <a object|station>Kraftwerk</a>, um seine Batterie aufzuladen.

note: type: Plain text
en: This program also works on <a object|botgj>winged grabbers</a>, if the <a object|derrick>derrick</a> is on another island than the <a object|convert>converter</a>.
de: Dieses Programm funktioniert auch mit <a object|botgj>Jettransportern</a>, falls sich der <a object|derrick>Bohrturm</a> auf einer anderen Insel als der <a object|convert>Titankonverter</a> befindet.

note: type: Source code
en: extern void object::CollectTitanium2()
    {
    	// 1) Variable definition.
    	<a cbot|type>object</a>  item;            // info. about objects
    	
    	// 2) Go to the titanium ore and grab it.
    	item = <a cbot|radar>radar</a>(<a cbot|category>TitaniumOre</a>);// look for titanium ore
    	<a cbot|goto>goto</a>(item.position);     // go to the position
    	<a cbot|grab>grab</a>();                  // grab the titanium
    	
    	// 3) Go to the converter and drop it.
    	item = <a cbot|radar>radar</a>(<a cbot|category>Converter</a>); // look for converter
    	<a cbot|goto>goto</a>(item.position);     // go to the position
    	<a cbot|drop>drop</a>();                  // drop the titanium
    	<a cbot|move>move</a>(-2.5);              // step back 2.5 m
    		
    	// 4) If power cell half empty, recharges.
    	if ( energyCell.energyLevel < 0.5 )
    	{                               // if so:
    		item = <a cbot|radar>radar</a>(<a cbot|category>PowerStation</a>); // look for station
    		<a cbot|goto>goto</a>(item.position);        // go there
    		<a cbot|wait>wait</a>(5);                    // wait
    	}
    }
de: extern void object::CollectTitanium2()
    {
    	// 1) Variablen deklarieren.
    	<a cbot|type>object</a>  item;            // Info über Objekte
    	
    	// 2) Gehe zum Titanerz und greife es.
    	item = <a cbot|radar>radar</a>(<a cbot|category>TitaniumOre</a>);// suche nach Titanerz
    	<a cbot|goto>goto</a>(item.position);     // gehe zu dessen Position
    	<a cbot|grab>grab</a>();                  // greife das Titanerz
    	
    	// 3) Gehe zum Titankonverter und lege es ab.
    	item = <a cbot|radar>radar</a>(<a cbot|category>Converter</a>); // orte den Konverter
    	<a cbot|goto>goto</a>(item.position);     // gehe zu dieser Position
    	<a cbot|drop>drop</a>();                  // lege das Titanerz ab
    	<a cbot|move>move</a>(-2.5);              // gehe 2,5m zurück
    		
    	// 4) Ist die Batterie halb leer, dann aufladen.
    	if ( energyCell.energyLevel < 0.5 )
    	{                               // ist es so:
    		item = <a cbot|radar>radar</a>(<a cbot|category>PowerStation</a>); // suche Kraftwerk
    		<a cbot|goto>goto</a>(item.position);        // gehe dort hin
    		<a cbot|wait>wait</a>(5);                    // warte
    	}
    }

note: type: Plain text
en: Execute the program <code>KillAnt1</code> immediately on your <a object|botfr>wheeled shooter</a>, it will protect your west flank. Meantime you can elaborate your defense strategy.
de: Führen Sie umgehend das Programm <code>KillAnt1</code> auf Ihrem <a object|botfr>Radshooter</a> aus, es wird Ihre westliche Flanke schützen. In der Zwischenzeit können Sie Ihre Abwehrstrategie ausarbeiten.

note: type: Source code
en: extern void object::KillAnt1()
    {
    	<a cbot|type>object</a> item;             // info. about object
    	
    	<a cbot|goto>goto</a>(-30, 0);            // go west
    	<a cbot|aim>aim</a>(0);                  // aim straight
    	
    	<a cbot|while>while</a> ( true )           // repeat forever:
    	{
    		item = <a cbot|radar>radar</a>(<a cbot|category>AlienAnt</a>, 0, 360, 0, 40);
    		<a cbot|if>if</a> ( item != null )  // ant detected ?
    		{
    			<a cbot|turn>turn</a>(<a cbot|direct>direction</a>(item.position));
    			<a cbot|fire>fire</a>(0.5);       // shoot 0.5 s
    		}
    		<a cbot|wait>wait</a>(1);             // wait 1 second
    	}
    }
de: extern void object::KillAnt1()
    {
    	<a cbot|type>object</a> item;             // Info über Objekt
    	
    	<a cbot|goto>goto</a>(-30, 0);            // gehe nach Westen
    	<a cbot|aim>aim</a>(0);                  // ziele geradeaus
    	
    	<a cbot|while>while</a> ( true )           // wiederhole immer:
    	{
    		item = <a cbot|radar>radar</a>(<a cbot|category>AlienAnt</a>, 0, 360, 0, 40);
    		<a cbot|if>if</a> ( item != null )  // Ameise geortet ?
    		{
    			<a cbot|turn>turn</a>(<a cbot|direct>direction</a>(item.position));
    			<a cbot|fire>fire</a>(0.5);       // schieße 0.5 s
    		}
    		<a cbot|wait>wait</a>(1);             // warte 1 Sekunde
    	}
    }

note: type: Plain text
en: As you will need lots of titanium for this mission, we have made the program <code>CollectTitanium</code> still more efficient. It gathers a whole series of titanium cubes on a free surface, so you can let it work on its own. It also recharges itself at the <a object|station>power station</a> if necessary.
de: Da Sie für diese Mission viel Titan benötigen, haben wir das Programm <code>CollectTitanium</code> noch effizienter gemacht. Es sammelt alles Titan auf freiem Gelände, sodass Sie es von allein arbeiten lassen können. Es lädt ausserdem selbständig die Batterie beim <a object|station>Kraftwerk</a> auf, wenn notwendig.

note: type: Source code
en: extern void object::CollectTitanium3()
    {
    	// 1) Variable definition.
    	<a cbot|type>object</a>  item;            // info. about objects
    	
    	<a cbot|while>while</a> (true)             // repeat forever
    	{
    		
    		// 2) Go to the titanium ore and grab it.
    		item = <a cbot|radar>radar</a>(<a cbot|category>TitaniumOre</a>);// look for titanium
    		<a cbot|goto>goto</a>(item.position);     // go to the position
    		<a cbot|grab>grab</a>();                  // grab the titanium
    		
    		// 3) Go to the converter and drop it.
    		item = <a cbot|radar>radar</a>(<a cbot|category>Converter</a>); // look for converter
    		<a cbot|goto>goto</a>(item.position);     // go to the position
    		<a cbot|drop>drop</a>();                  // drop the titanium
    		<a cbot|move>move</a>(-2.5);              // step back 2.5 m
    		
    		// 4) Wait until titanium converted and grab it
    		<a cbot|do>do</a>
    		{
    			<a cbot|wait>wait</a>(1);              // wait for cube
    			item = <a cbot|radar>radar</a>(<a cbot|category>Titanium</a>, 0, 45, 0, 5);
    		}
    		<a cbot|while>while</a> ( item == null );
    		<a cbot|goto>goto</a>(item.position);
    		<a cbot|grab>grab</a>();                   // grab it
    		
    		// 5) Drop on a free space
    		<a cbot|goto>goto</a>(<a cbot|space>space</a>(position));    // go to free space
    		<a cbot|drop>drop</a>();                   // drop titanium
    		
    		// 6) If power cell half empty, recharges.
    		<a cbot|if>if</a> ( energyCell.energyLevel < 0.5 )
    		{                         // if so:
    			item = <a cbot|radar>radar</a>(<a cbot|category>PowerStation</a>);
    			<a cbot|if>if</a> ( item != null )   // station found ?
    			{
    				<a cbot|goto>goto</a>(item.position); // go there
    				<a cbot|while>while</a> ( energyCell.energyLevel < 1 )
    				{                 // until recharged:
    					<a cbot|wait>wait</a>(1);      // wait
    				}
    			}
    		}
    	}
    }
de: extern void object::CollectTitanium3()
    {
    	// 1) Variablen festlegen.
    	<a cbot|type>object</a>  item;            // Info über Objekte
    	
    	<a cbot|while>while</a> (true)             // wiederhole immer wieder
    	{
    		
    		// 2) Gehe zum Titanerz und nimm es.
    		item = <a cbot|radar>radar</a>(<a cbot|category>TitaniumOre</a>);// suche nach Titan
    		<a cbot|goto>goto</a>(item.position);     // gehe zur Position
    		<a cbot|grab>grab</a>();                  // greife das Titan
    		
    		// 3) Gehe zum Konverter und lege es ab.
    		item = <a cbot|radar>radar</a>(<a cbot|category>Converter</a>); // orte den Konverter
    		<a cbot|goto>goto</a>(item.position);     // gehe zur Position
    		<a cbot|drop>drop</a>();                  // lege das Titan ab
    		<a cbot|move>move</a>(-2.5);              // gehe 2.5m zurück
    		
    		// 4) Warte auf das Titan und nimm es
    		<a cbot|do>do</a>
    		{
    			<a cbot|wait>wait</a>(1);              // warte auf den Würfel
    			item = <a cbot|radar>radar</a>(<a cbot|category>Titanium</a>, 0, 45, 0, 5);
    		}
    		<a cbot|while>while</a> ( item == null );
    		<a cbot|goto>goto</a>(item.position);
    		<a cbot|grab>grab</a>();                   // nimm ihn
    		
    		// 5) Lege den Würfel auf einer freien Fläche ab
    		<a cbot|goto>goto</a>(<a cbot|space>space</a>(position));    // geh zu freier Fläche
    		<a cbot|drop>drop</a>();                   // lege das Titan ab
    		
    		// 6) Ist die Batterie halb leer, lade sie auf.
    		<a cbot|if>if</a> ( energyCell.energyLevel < 0.5 )
    		{                         // wenn es so ist:
    			item = <a cbot|radar>radar</a>(<a cbot|category>PowerStation</a>);
    			<a cbot|if>if</a> ( item != null )   // Kraftwerk gefunden ?
    			{
    				<a cbot|goto>goto</a>(item.position); // gehe dahin
    				<a cbot|while>while</a> ( energyCell.energyLevel < 1 )
    				{                 // bis voll geladen:
    					<a cbot|wait>wait</a>(1);      // warte
    				}
    			}
    		}
    	}
    }

note: type: Plain text
en: We have developed a program that takes care of recharging the power cell of a <a object|tower>defense tower</a>:
de: Wir haben ein Programm entwickelt, was dafür sorgt, dass die Batterie eines <a object|tower>Geschützturmes</a> wieder aufgeladen wird:

note: type: Bullet: '1)'
en: Go to a <a object|tower>defense tower</a>.
de: Begib dich zu einem <a object|tower>Geschützturm</a>.

note: type: Bullet: '2)'
en: Wait until the <a object|power>power cell</a> is 80% empty.
de: Warte bis die <a object|power>Batterie</a> zu 80% leer ist.

note: type: Bullet: '3)'
en: Grab the <a object|power>power cell</a> and recharge it on a <a object|station>power station</a>.
de: Nimm die <a object|power>Batterie</a> und lade sie bei einem <a object|station>Kraftwerk</a> auf.

note: type: Plain text
en: Build the <a object|station>power station</a> as close as possible to the tower in order to reduce the time when the tower has got no power cell. A good trick is to place a power cell on the ground in front of the tower. The wasp will attack the power cell, and if the first shoot misses or a wasp arrives when the defense tower has got no energy, only the power cell is destroyed and not the defense tower.
de: Bauen Sie das <a object|station>Kraftwerk</a> so nah wie möglich an den Turm, um die Zeit zu reduzieren, in der der Turm keine Batterie hat. Ein guter Trick ist, eine Batterie auf den Boden vor dem Turm zu stellen. Eine Wespe wird die Batterie attackieren und wenn der erste Schuss daneben geht oder der Turm gerade keine Energie hat, wird nur die Batterie zerstört und nicht der Geschützturm.

note: type: Source code
en: extern void object::ServiceTower1()
    {
    	<a cbot|object>object</a>  tower;               // info. about tower
    	<a cbot|object>object</a>  station;             // info. about station
    	
    	// 1) go to the defense tower
    	tower = <a cbot|radar>radar</a>(DefenseTower); // look for tower
    	<a cbot|goto>goto</a>(tower.position);        // go there
    	
    	<a cbot|while>while</a> ( true )               // repeat forever
    	{
    		// 2) wait until power cell is empty
    		<a cbot|while>while</a> ( tower.energyCell.energyLevel > 0.2 )
    		{
    			<a cbot|wait>wait</a>(2);
    		}
    		<a cbot|grab>grab</a>();                  // grab the power cell
    		
    		// 3) go to the power station to recharge
    		station = <a cbot|radar>radar</a>(PowerStation);
    		<a cbot|goto>goto</a>(station.position);  // go there
    		<a cbot|while>while</a> ( load.energyLevel < 1 )
    		{
    			<a cbot|wait>wait</a>(1);             // wait until recharged
    		}
    		
    		// 4) go back to defense tower
    		<a cbot|goto>goto</a>(tower.position);    // go to tower
    		<a cbot|drop>drop</a>();                  // drop the power cell
    	}
    }
de: extern void object::ServiceTower1()
    {
    	<a cbot|object>object</a>  tower;              // Info über Geschützturm
    	<a cbot|object>object</a>  station;            // Info über Kraftwerk
    	
    	// 1) gehe zu einem Geschützturm
    	tower = <a cbot|radar>radar</a>(DefenseTower);// suche einen Turm
    	<a cbot|goto>goto</a>(tower.position);       // gehe dort hin
    	
    	<a cbot|while>while</a> ( true )              // wiederhole unendlich
    	{
    		// 2) warte bis die Batterie leer ist
    		<a cbot|while>while</a> ( tower.energyCell.energyLevel > 0.2 )
    		{
    			<a cbot|wait>wait</a>(2);
    		}
    		<a cbot|grab>grab</a>();                 // greife die Batterie
    		
    		// 3) begib dich zum Kraftwerk um sie aufzuladen
    		station = <a cbot|radar>radar</a>(PowerStation);
    		<a cbot|goto>goto</a>(station.position); // gehe dort hin
    		<a cbot|while>while</a> ( load.energyLevel < 1 )
    		{
    			<a cbot|wait>wait</a>(1);            // warte bis voll geladen
    		}
    		
    		// 4) gehe zum Geschützturm zurück
    		<a cbot|goto>goto</a>(tower.position);   // gehe zum Turm
    		<a cbot|drop>drop</a>();                 // stelle die Batterie ab
    	}
    }

note: type: Plain text
en: According to the data transmitted by the satellite, our engineers have developed two programs. The first one guides the <a object|botshld>shielder bot</a> through the narrow valley north close to the place where the key has been located. You can follow it without fearing any attack:
de: Entsprechend den Daten die vom Satelliten übermittelt wurden, haben unsere Ingenieure zwei Programme entwickelt. Das erste führt den <a object|botshld>Schutzschild</a> durch das schmale Tal, welches zur Position, wo der Schlüssel geortet wurde, führt. Sie können ihm folgen, ohne einen Angriff befürchten zu müssen.

note: type: Source code
en: extern void object::Outward()
    {
    	<a cbot|shield>shield</a>(1,15);   // activate the shield
    	<a cbot|goto>goto</a>(6,160);    // go close to the key
    	<a cbot|shield>shield</a>(0,15);   // deactivate the shield
    }
de: extern void object::Outward()
    {
    	<a cbot|shield>shield</a>(1,15);   // aktiviere den Schild
    	<a cbot|goto>goto</a>(6,160);    // gehe in die Nähe des Schlüssels
    	<a cbot|shield>shield</a>(0,15);   // deaktiviere den Schild
    }

note: type: Plain text
en: The second program guides the <a object|botshld>shielder bot</a> back to the <a object|base>spaceship</a>:
de: Das zweite Programm führt den <a object|botshld>Schutzschild</a> zurück zum <a object|base>Raumschiff</a>:

note: type: Source code
en: extern void object::Return()
    {
    	<a cbot|shield>shield</a>(1,15);   // activate the shield
    	<a cbot|goto>goto</a>(8,60);     // go to the spaceship
    	<a cbot|shield>shield</a>(0,15);   // deactivate the shield
    }
de: extern void object::Return()
    {
    	<a cbot|shield>shield</a>(1,15);   // aktiviere den Schild
    	<a cbot|goto>goto</a>(8,60);     // gehe zum Raumschiff
    	<a cbot|shield>shield</a>(0,15);   // deaktiviere den Schild
    }

note: type: Plain text
en: Below is a program that has been developed by our engineers.
de: Unten befindet sich ein Programm das von unseren Ingenieuren entwickelt wurde.

note: type: Plain text
en: It instructs the <a object|botshld>shielder</a> to follow and protect the <a object|botphaz>phazer</a>.
de: Es instruiert den <a object|botshld>Schutzschild</a>, dem <a object|botphaz>Phazershooter</a> zu folgen und ihn zu schützen.

note: type: Source code
en: extern void object::FollowPhazer()
    {
    	<a cbot|type>object</a>    item;              // info. about phazer
    	<a cbot|type>point</a>     dest;              // position where to go
    	<a cbot|type>float</a>     dist;              // distance to phazer
    	
    	item = <a cbot|radar>radar</a>(<a cbot|category>PhazerShooter</a>);
    	<a cbot|if>if</a> ( item == null )
    	{
    		<a cbot|message>message</a>("No phazer found");
    		<a cbot|return>return</a>;                  // stop the program
    	}
    	<a cbot|shield>shield</a>(1, 25);               // activate the shield
    	
    	<a cbot|while>while</a> ( true )               // repeat forever
    	{
    		item = <a cbot|radar>radar</a>(PhazerShooter);// look for phazer
    		<a cbot|if>if</a> ( item == null )  break;
    		
    		dist = <a cbot|dist>distance</a>(item.position, position);
    		<a cbot|if>if</a> ( dist < 5 )
    		{                        // if closer than 5 m:
    			<a cbot|wait>wait</a>(1);             // wait
    		}
    		<a cbot|if>else</a>                     // 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;
    			<a cbot|goto>goto</a>(dest, 0, 1, 1); // and go there
    		}
    	}
    }
de: extern void object::FollowPhazer()
    {
    	<a cbot|type>object</a>    item;          // Info über Phazershooter
    	<a cbot|type>point</a>     dest;          // Zielposition
    	<a cbot|type>float</a>     dist;          // Abstand zum Phazershooter
    	
    	item = <a cbot|radar>radar</a>(<a cbot|category>PhazerShooter</a>);
    	<a cbot|if>if</a> ( item == null )
    	{
    		<a cbot|message>message</a>("Keinen Phazershooter gefunden.");
    		<a cbot|return>return</a>;                  // stoppe das Programm
    	}
    	<a cbot|shield>shield</a>(1, 25);               // aktiviere den Schild
    	
    	<a cbot|while>while</a> ( true )               // endlos wiederholen
    	{
    		item = <a cbot|radar>radar</a>(PhazerShooter);// orte den PS
    		<a cbot|if>if</a> ( item == null )  break;
    		
    		dist = <a cbot|dist>distance</a>(item.position, position);
    		<a cbot|if>if</a> ( dist < 5 )
    		{                        // wenn näher als 5 m:
    			<a cbot|wait>wait</a>(1);             // warte
    		}
    		<a cbot|if>else</a>                     // ansonsten:
    		{ // Berechne eine Position 5m vor dem PS
    			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;
    			<a cbot|goto>goto</a>(dest, 0, 1, 1); // und gehe dort hin
    		}
    	}
    }
