diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 1800b964..7314431d 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -1,3 +1,13 @@
+*IN-DEVELOPEMENT*
+----------------
+Make licence explicit: it is GPLv3 as per the conditions of the source
+ code dump from Epsitec.
+Fix URL of colobot repository.
+Render README for Markdown.
+Ease git-based releasing.
+Handle levels iternationalisation with po4a.
+Drop translations as they are built from colobot itself.
+
----------------
2012-10-05
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 00000000..fcf5d1a7
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,21 @@
+cmake_minimum_required(VERSION 2.8)
+
+if(NOT DEFINED COLOBOT_INSTALL_DATA_DIR)
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
+ set(COLOBOT_INSTALL_DATA_DIR ${CMAKE_INSTALL_PREFIX}/data CACHE PATH "Colobot shared data directory")
+ else()
+ set(COLOBOT_INSTALL_DATA_DIR ${CMAKE_INSTALL_PREFIX}/share/games/colobot CACHE PATH "Colobot shared data directory")
+ endif()
+endif()
+
+install(DIRECTORY ai DESTINATION ${COLOBOT_INSTALL_DATA_DIR})
+install(DIRECTORY fonts DESTINATION ${COLOBOT_INSTALL_DATA_DIR})
+install(DIRECTORY help DESTINATION ${COLOBOT_INSTALL_DATA_DIR})
+install(DIRECTORY icons DESTINATION ${COLOBOT_INSTALL_DATA_DIR})
+install(DIRECTORY models DESTINATION ${COLOBOT_INSTALL_DATA_DIR})
+#install(DIRECTORY models-new DESTINATION ${COLOBOT_INSTALL_DATA_DIR})
+install(DIRECTORY music DESTINATION ${COLOBOT_INSTALL_DATA_DIR})
+install(DIRECTORY sounds DESTINATION ${COLOBOT_INSTALL_DATA_DIR})
+install(DIRECTORY textures DESTINATION ${COLOBOT_INSTALL_DATA_DIR})
+
+add_subdirectory(levels)
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..94a9ed02
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..76da942d
--- /dev/null
+++ b/README.md
@@ -0,0 +1,24 @@
+# Colobot Data Files
+
+## *IN-DEVELOPEMENT* Release
+
+This package contains the data files for the Colobot project (https://github.com/colobot/colobot).
+It includes (or will include):
+* textures, background images, etc.
+* model files,
+* sounds and music
+* some documents describing the formats
+* conversion scripts and tools for packaging
+
+This is a development release that will be modified and updated as necessary.
+File paths, names, formats are subject to change, so don't take them for granted.
+All packages released will be labeled with date of release in format RRRR-MM-DD and released as often as
+changes are made in the files.
+
+# License
+
+The source code contained here was released by Epsitec -- the original
+creator of the game -- on open source (GPLv3) license. The code was
+given and the rights granted specifically to PPC community in
+March 2012. Since then, we have been modifying the code and working on
+our goals, which are briefly summed up below.
diff --git a/README.txt b/README.txt
deleted file mode 100644
index b42a2d5a..00000000
--- a/README.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-Colobot Data Files
-
-Development Release 2012-10-05
-
-This package contains the data files for the Colobot project (https://github.com/colobot/colobot).
-It includes (or will include):
-- textures, background images, etc.
-- model files,
-- sounds and music
-- some documents describing the formats
-- conversion scripts and tools for packaging
-
-This is a development release that will be modified and updated as necessary.
-File paths, names, formats are subject to change, so don't take them for granted.
-All packages released will be labeled with date of release in format RRRR-MM-DD and released as often as
-changes are made in the files.
diff --git a/ai/ant01.txt b/ai/ant01.txt
index a8d0f224..c550bccf 100644
--- a/ai/ant01.txt
+++ b/ai/ant01.txt
@@ -1,53 +1,53 @@
-extern void object::Attack( )
-{
- object p;
- float dist, prox;
- point nav1, nav2, dest;
- boolean advance = true;
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- while ( true )
- {
- p = radar(WingedShooter, 0, 360, 0, 50);
- if ( p == null )
- {
- nav1.x = position.x-5;
- nav1.y = position.y;
- nav2.x = position.x+5;
- nav2.y = position.y;
-
- while ( true )
- {
- goto(nav1);
- p = radar(WingedShooter, 0, 360, 0, 50);
- if ( p != null ) break;
-
- goto(nav2);
- p = radar(WingedShooter, 0, 360, 0, 50);
- if ( p != null ) break;
- }
- }
- else
- {
- dist = distance(p.position, position);
- if ( dist <= 40 && !advance )
- {
- fire(p.position);
- advance = true;
- }
- else
- {
- prox = dist-5;
- if ( prox > 40 ) prox = 40;
- if ( prox < 5 ) prox = 5;
- dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
- dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
- dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
- goto(dest);
- advance = false;
- }
- }
- }
-}
+extern void object::Attack( )
+{
+ object p;
+ float dist, prox;
+ point nav1, nav2, dest;
+ boolean advance = true;
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ while ( true )
+ {
+ p = radar(WingedShooter, 0, 360, 0, 50);
+ if ( p == null )
+ {
+ nav1.x = position.x-5;
+ nav1.y = position.y;
+ nav2.x = position.x+5;
+ nav2.y = position.y;
+
+ while ( true )
+ {
+ goto(nav1);
+ p = radar(WingedShooter, 0, 360, 0, 50);
+ if ( p != null ) break;
+
+ goto(nav2);
+ p = radar(WingedShooter, 0, 360, 0, 50);
+ if ( p != null ) break;
+ }
+ }
+ else
+ {
+ dist = distance(p.position, position);
+ if ( dist <= 40 && !advance )
+ {
+ fire(p.position);
+ advance = true;
+ }
+ else
+ {
+ prox = dist-5;
+ if ( prox > 40 ) prox = 40;
+ if ( prox < 5 ) prox = 5;
+ dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
+ dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
+ dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
+ goto(dest);
+ advance = false;
+ }
+ }
+ }
+}
diff --git a/ai/ant02.txt b/ai/ant02.txt
index 9681229a..95ad3309 100644
--- a/ai/ant02.txt
+++ b/ai/ant02.txt
@@ -1,95 +1,95 @@
-extern void object::Attack( )
-{
- int list[];
- int i;
- object p;
- float dist, prox;
- point dest;
- boolean advance = true;
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
- list[i++] = Derrick;
- list[i++] = BotFactory;
- list[i++] = PowerStation;
- list[i++] = Converter;
- list[i++] = RepairCenter;
- list[i++] = DefenseTower;
- list[i++] = ResearchCenter;
- list[i++] = RadarStation;
- list[i++] = ExchangePost;
- list[i++] = PowerPlant;
- list[i++] = AutoLab;
- list[i++] = NuclearPlant;
-
- wait(cmdline(0));
-
- while ( true )
- {
- p = radar(list, 0, 360, 0, 1000);
- if ( p == null )
- {
- wait(2);
- }
- else
- {
- dist = distance(p.position, position);
- if ( dist <= 40 && !advance )
- {
- fire(p.position);
- advance = true;
- }
- else
- {
-//? if ( RetBaseDistance() > 20 )
- {
- prox = dist-(5+rand()*5);
- if ( prox < 5 ) prox = 5;
- dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
- dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
- dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
- goto(dest);
- advance = false;
- }
- }
- }
- }
-}
-
-// Calcule la distance jusqu'à la base.
-
-float object::RetBaseDistance()
-{
- object p;
- float dist;
-
- p = radar(SpaceShip, 0, 360, 0, 1000);
- if ( p == null ) return 1000;
- dist = distance(p.position, position);
- return dist;
-}
-
+extern void object::Attack( )
+{
+ int list[];
+ int i;
+ object p;
+ float dist, prox;
+ point dest;
+ boolean advance = true;
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+ list[i++] = Derrick;
+ list[i++] = BotFactory;
+ list[i++] = PowerStation;
+ list[i++] = Converter;
+ list[i++] = RepairCenter;
+ list[i++] = DefenseTower;
+ list[i++] = ResearchCenter;
+ list[i++] = RadarStation;
+ list[i++] = ExchangePost;
+ list[i++] = PowerPlant;
+ list[i++] = AutoLab;
+ list[i++] = NuclearPlant;
+
+ wait(cmdline(0));
+
+ while ( true )
+ {
+ p = radar(list, 0, 360, 0, 1000);
+ if ( p == null )
+ {
+ wait(2);
+ }
+ else
+ {
+ dist = distance(p.position, position);
+ if ( dist <= 40 && !advance )
+ {
+ fire(p.position);
+ advance = true;
+ }
+ else
+ {
+//? if ( RetBaseDistance() > 20 )
+ {
+ prox = dist-(5+rand()*5);
+ if ( prox < 5 ) prox = 5;
+ dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
+ dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
+ dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
+ goto(dest);
+ advance = false;
+ }
+ }
+ }
+ }
+}
+
+// Calcule la distance jusqu'Ã la base.
+
+float object::RetBaseDistance()
+{
+ object p;
+ float dist;
+
+ p = radar(SpaceShip, 0, 360, 0, 1000);
+ if ( p == null ) return 1000;
+ dist = distance(p.position, position);
+ return dist;
+}
+
diff --git a/ai/ant03.txt b/ai/ant03.txt
index f36e8cc8..1b4dd7a3 100644
--- a/ai/ant03.txt
+++ b/ai/ant03.txt
@@ -1,91 +1,91 @@
-extern void object::Attack( )
-{
- int list[];
- int i;
- object p;
- float dist, prox;
- point nav1, nav2, dest;
- boolean advance = true;
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
- list[i++] = Derrick;
- list[i++] = BotFactory;
- list[i++] = PowerStation;
- list[i++] = Converter;
- list[i++] = RepairCenter;
- list[i++] = DefenseTower;
- list[i++] = ResearchCenter;
- list[i++] = RadarStation;
- list[i++] = ExchangePost;
- list[i++] = PowerPlant;
- list[i++] = AutoLab;
- list[i++] = NuclearPlant;
-
- while ( true )
- {
- p = radar(list, 0, 360, 0, 40);
- if ( p == null )
- {
- nav1.x = position.x-5;
- nav1.y = position.y;
- nav2.x = position.x+5;
- nav2.y = position.y;
-
- while ( true )
- {
- goto(nav1);
- p = radar(list, 0, 360, 0, 40);
- if ( p != null ) break;
-
- goto(nav2);
- p = radar(list, 0, 360, 0, 40);
- if ( p != null ) break;
- }
- }
- else
- {
- dist = distance(p.position, position);
- if ( dist <= 40 && !advance )
- {
- fire(p.position);
- advance = true;
- }
- else
- {
- prox = dist-5;
- if ( prox > 40 ) prox = 40;
- if ( prox < 5 ) prox = 5;
- dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
- dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
- dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
- goto(dest);
- advance = false;
- }
- }
- }
-}
+extern void object::Attack( )
+{
+ int list[];
+ int i;
+ object p;
+ float dist, prox;
+ point nav1, nav2, dest;
+ boolean advance = true;
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+ list[i++] = Derrick;
+ list[i++] = BotFactory;
+ list[i++] = PowerStation;
+ list[i++] = Converter;
+ list[i++] = RepairCenter;
+ list[i++] = DefenseTower;
+ list[i++] = ResearchCenter;
+ list[i++] = RadarStation;
+ list[i++] = ExchangePost;
+ list[i++] = PowerPlant;
+ list[i++] = AutoLab;
+ list[i++] = NuclearPlant;
+
+ while ( true )
+ {
+ p = radar(list, 0, 360, 0, 40);
+ if ( p == null )
+ {
+ nav1.x = position.x-5;
+ nav1.y = position.y;
+ nav2.x = position.x+5;
+ nav2.y = position.y;
+
+ while ( true )
+ {
+ goto(nav1);
+ p = radar(list, 0, 360, 0, 40);
+ if ( p != null ) break;
+
+ goto(nav2);
+ p = radar(list, 0, 360, 0, 40);
+ if ( p != null ) break;
+ }
+ }
+ else
+ {
+ dist = distance(p.position, position);
+ if ( dist <= 40 && !advance )
+ {
+ fire(p.position);
+ advance = true;
+ }
+ else
+ {
+ prox = dist-5;
+ if ( prox > 40 ) prox = 40;
+ if ( prox < 5 ) prox = 5;
+ dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
+ dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
+ dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
+ goto(dest);
+ advance = false;
+ }
+ }
+ }
+}
diff --git a/ai/ant04.txt b/ai/ant04.txt
index 320acd8e..723ec9b8 100644
--- a/ai/ant04.txt
+++ b/ai/ant04.txt
@@ -1,59 +1,59 @@
-extern void object::Attack( )
-{
- int list[], i;
- object p;
- float dist, prox;
- point nav1, nav2, dest;
- boolean advance = true;
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
-
- nav1.x = cmdline(0);
- nav1.y = cmdline(1);
- nav2.x = cmdline(2);
- nav2.y = cmdline(3);
-
- while ( true )
- {
- while ( true )
- {
- p = radar(list, 0, 360, 0, 40);
- if ( p == null ) break;
- fire(p.position);
- }
- goto(nav1);
-
- while ( true )
- {
- p = radar(list, 0, 360, 0, 40);
- if ( p == null ) break;
- fire(p.position);
- }
- goto(nav2);
- }
-}
+extern void object::Attack( )
+{
+ int list[], i;
+ object p;
+ float dist, prox;
+ point nav1, nav2, dest;
+ boolean advance = true;
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+
+ nav1.x = cmdline(0);
+ nav1.y = cmdline(1);
+ nav2.x = cmdline(2);
+ nav2.y = cmdline(3);
+
+ while ( true )
+ {
+ while ( true )
+ {
+ p = radar(list, 0, 360, 0, 40);
+ if ( p == null ) break;
+ fire(p.position);
+ }
+ goto(nav1);
+
+ while ( true )
+ {
+ p = radar(list, 0, 360, 0, 40);
+ if ( p == null ) break;
+ fire(p.position);
+ }
+ goto(nav2);
+ }
+}
diff --git a/ai/ant05.txt b/ai/ant05.txt
index be2c8234..5bc68048 100644
--- a/ai/ant05.txt
+++ b/ai/ant05.txt
@@ -1,62 +1,62 @@
-extern void object::Attack( )
-{
- int list[], i;
- object p;
- float dist, prox;
- point nav1, nav2, dest;
- boolean advance = true;
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
-
- nav1.x = cmdline(0);
- nav1.y = cmdline(1);
- nav2.x = cmdline(2);
- nav2.y = cmdline(3);
-
- while ( true )
- {
- p = radar(list, 0, 360, 0, 40);
- if ( p == null )
- {
- while ( true )
- {
- goto(nav1);
- p = radar(list, 0, 360, 0, 40);
- if ( p != null ) break;
-
- goto(nav2);
- p = radar(list, 0, 360, 0, 40);
- if ( p != null ) break;
- }
- }
- else
- {
- fire(p.position);
- }
- }
-}
+extern void object::Attack( )
+{
+ int list[], i;
+ object p;
+ float dist, prox;
+ point nav1, nav2, dest;
+ boolean advance = true;
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+
+ nav1.x = cmdline(0);
+ nav1.y = cmdline(1);
+ nav2.x = cmdline(2);
+ nav2.y = cmdline(3);
+
+ while ( true )
+ {
+ p = radar(list, 0, 360, 0, 40);
+ if ( p == null )
+ {
+ while ( true )
+ {
+ goto(nav1);
+ p = radar(list, 0, 360, 0, 40);
+ if ( p != null ) break;
+
+ goto(nav2);
+ p = radar(list, 0, 360, 0, 40);
+ if ( p != null ) break;
+ }
+ }
+ else
+ {
+ fire(p.position);
+ }
+ }
+}
diff --git a/ai/ant06.txt b/ai/ant06.txt
index b11512cc..8813d3d5 100644
--- a/ai/ant06.txt
+++ b/ai/ant06.txt
@@ -1,18 +1,18 @@
-extern void object::Attack( )
-{
- point nav1, nav2;
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- nav1.x = cmdline(0);
- nav1.y = cmdline(1);
- nav2.x = cmdline(2);
- nav2.y = cmdline(3);
-
- while ( true )
- {
- goto(nav1);
- goto(nav2);
- }
-}
+extern void object::Attack( )
+{
+ point nav1, nav2;
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ nav1.x = cmdline(0);
+ nav1.y = cmdline(1);
+ nav2.x = cmdline(2);
+ nav2.y = cmdline(3);
+
+ while ( true )
+ {
+ goto(nav1);
+ goto(nav2);
+ }
+}
diff --git a/ai/ant07.txt b/ai/ant07.txt
index 948260ce..3d35aa88 100644
--- a/ai/ant07.txt
+++ b/ai/ant07.txt
@@ -1,86 +1,86 @@
-extern void object::Attack( )
-{
- int list[];
- int i;
- object p;
- float dist, prox;
- point nav1, nav2, dest;
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
- list[i++] = Derrick;
- list[i++] = BotFactory;
- list[i++] = PowerStation;
- list[i++] = Converter;
- list[i++] = RepairCenter;
- list[i++] = DefenseTower;
- list[i++] = ResearchCenter;
- list[i++] = RadarStation;
- list[i++] = ExchangePost;
- list[i++] = PowerPlant;
- list[i++] = AutoLab;
- list[i++] = NuclearPlant;
-
- while ( true )
- {
- p = radar(list, 0, 360, 0, 30);
- if ( p == null )
- {
- nav1.x = position.x-5;
- nav1.y = position.y;
- nav2.x = position.x+5;
- nav2.y = position.y;
-
- while ( true )
- {
- goto(nav1);
- p = radar(list, 0, 360, 0, 30);
- if ( p != null ) break;
-
- goto(nav2);
- p = radar(list, 0, 360, 0, 30);
- if ( p != null ) break;
- }
- }
- else
- {
- dist = distance(p.position, position);
- if ( dist < 5 )
- {
- fire(p.position);
- }
- else
- {
- prox = dist+5; // fuite
- dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
- dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
- dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
- goto(dest);
- }
- }
- }
-}
+extern void object::Attack( )
+{
+ int list[];
+ int i;
+ object p;
+ float dist, prox;
+ point nav1, nav2, dest;
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+ list[i++] = Derrick;
+ list[i++] = BotFactory;
+ list[i++] = PowerStation;
+ list[i++] = Converter;
+ list[i++] = RepairCenter;
+ list[i++] = DefenseTower;
+ list[i++] = ResearchCenter;
+ list[i++] = RadarStation;
+ list[i++] = ExchangePost;
+ list[i++] = PowerPlant;
+ list[i++] = AutoLab;
+ list[i++] = NuclearPlant;
+
+ while ( true )
+ {
+ p = radar(list, 0, 360, 0, 30);
+ if ( p == null )
+ {
+ nav1.x = position.x-5;
+ nav1.y = position.y;
+ nav2.x = position.x+5;
+ nav2.y = position.y;
+
+ while ( true )
+ {
+ goto(nav1);
+ p = radar(list, 0, 360, 0, 30);
+ if ( p != null ) break;
+
+ goto(nav2);
+ p = radar(list, 0, 360, 0, 30);
+ if ( p != null ) break;
+ }
+ }
+ else
+ {
+ dist = distance(p.position, position);
+ if ( dist < 5 )
+ {
+ fire(p.position);
+ }
+ else
+ {
+ prox = dist+5; // fuite
+ dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
+ dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
+ dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
+ goto(dest);
+ }
+ }
+ }
+}
diff --git a/ai/ant08.txt b/ai/ant08.txt
index 8bae4dd5..d4da51c2 100644
--- a/ai/ant08.txt
+++ b/ai/ant08.txt
@@ -1,67 +1,67 @@
-extern void object::Attack( )
-{
- int list[], i;
- object p;
- float dist, prox;
- point nav1, nav2, dest;
- boolean advance = true;
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
-
- nav1.x = cmdline(0);
- nav1.y = cmdline(1);
- nav2.x = cmdline(2);
- nav2.y = cmdline(3);
-
- while ( true )
- {
- while ( ismovie() != 0 ) // film en cours ?
- {
- wait(1);
- }
-
- p = radar(list, 0, 360, 0, 40);
- if ( p == null )
- {
- while ( true )
- {
- goto(nav1);
- p = radar(list, 0, 360, 0, 40);
- if ( p != null ) break;
-
- goto(nav2);
- p = radar(list, 0, 360, 0, 40);
- if ( p != null ) break;
- }
- }
- else
- {
- fire(p.position);
- }
- }
-}
+extern void object::Attack( )
+{
+ int list[], i;
+ object p;
+ float dist, prox;
+ point nav1, nav2, dest;
+ boolean advance = true;
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+
+ nav1.x = cmdline(0);
+ nav1.y = cmdline(1);
+ nav2.x = cmdline(2);
+ nav2.y = cmdline(3);
+
+ while ( true )
+ {
+ while ( ismovie() != 0 ) // film en cours ?
+ {
+ wait(1);
+ }
+
+ p = radar(list, 0, 360, 0, 40);
+ if ( p == null )
+ {
+ while ( true )
+ {
+ goto(nav1);
+ p = radar(list, 0, 360, 0, 40);
+ if ( p != null ) break;
+
+ goto(nav2);
+ p = radar(list, 0, 360, 0, 40);
+ if ( p != null ) break;
+ }
+ }
+ else
+ {
+ fire(p.position);
+ }
+ }
+}
diff --git a/ai/ant09.txt b/ai/ant09.txt
index 2a9c456f..40197146 100644
--- a/ai/ant09.txt
+++ b/ai/ant09.txt
@@ -1,91 +1,91 @@
-extern void object::Attack( )
-{
- int list[];
- int i;
- object p;
- float dist, prox;
- point nav1, nav2, dest;
- boolean advance = true;
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
- list[i++] = Derrick;
- list[i++] = BotFactory;
- list[i++] = PowerStation;
- list[i++] = Converter;
- list[i++] = RepairCenter;
- list[i++] = DefenseTower;
- list[i++] = ResearchCenter;
- list[i++] = RadarStation;
- list[i++] = ExchangePost;
- list[i++] = PowerPlant;
- list[i++] = AutoLab;
- list[i++] = NuclearPlant;
-
- while ( true )
- {
- p = radar(list, 0, 360, 0, 200);
- if ( p == null )
- {
- nav1.x = position.x-5;
- nav1.y = position.y;
- nav2.x = position.x+5;
- nav2.y = position.y;
-
- while ( true )
- {
- goto(nav1);
- p = radar(list, 0, 360, 0, 200);
- if ( p != null ) break;
-
- goto(nav2);
- p = radar(list, 0, 360, 0, 200);
- if ( p != null ) break;
- }
- }
- else
- {
- dist = distance(p.position, position);
- if ( dist <= 40 && !advance )
- {
- fire(p.position);
- advance = true;
- }
- else
- {
- prox = dist-5;
- if ( prox > 40 ) prox = 40;
- if ( prox < 5 ) prox = 5;
- dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
- dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
- dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
- goto(dest);
- advance = false;
- }
- }
- }
-}
+extern void object::Attack( )
+{
+ int list[];
+ int i;
+ object p;
+ float dist, prox;
+ point nav1, nav2, dest;
+ boolean advance = true;
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+ list[i++] = Derrick;
+ list[i++] = BotFactory;
+ list[i++] = PowerStation;
+ list[i++] = Converter;
+ list[i++] = RepairCenter;
+ list[i++] = DefenseTower;
+ list[i++] = ResearchCenter;
+ list[i++] = RadarStation;
+ list[i++] = ExchangePost;
+ list[i++] = PowerPlant;
+ list[i++] = AutoLab;
+ list[i++] = NuclearPlant;
+
+ while ( true )
+ {
+ p = radar(list, 0, 360, 0, 200);
+ if ( p == null )
+ {
+ nav1.x = position.x-5;
+ nav1.y = position.y;
+ nav2.x = position.x+5;
+ nav2.y = position.y;
+
+ while ( true )
+ {
+ goto(nav1);
+ p = radar(list, 0, 360, 0, 200);
+ if ( p != null ) break;
+
+ goto(nav2);
+ p = radar(list, 0, 360, 0, 200);
+ if ( p != null ) break;
+ }
+ }
+ else
+ {
+ dist = distance(p.position, position);
+ if ( dist <= 40 && !advance )
+ {
+ fire(p.position);
+ advance = true;
+ }
+ else
+ {
+ prox = dist-5;
+ if ( prox > 40 ) prox = 40;
+ if ( prox < 5 ) prox = 5;
+ dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
+ dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
+ dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
+ goto(dest);
+ advance = false;
+ }
+ }
+ }
+}
diff --git a/ai/ant10.txt b/ai/ant10.txt
index 1f5cb064..113b8a0e 100644
--- a/ai/ant10.txt
+++ b/ai/ant10.txt
@@ -1,93 +1,93 @@
-extern void object::Attack( )
-{
- int list[];
- int i;
- object p;
- float dist, prox;
- point dest;
- boolean advance = true;
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
- list[i++] = Derrick;
- list[i++] = BotFactory;
- list[i++] = PowerStation;
- list[i++] = Converter;
- list[i++] = RepairCenter;
- list[i++] = DefenseTower;
- list[i++] = ResearchCenter;
- list[i++] = RadarStation;
- list[i++] = ExchangePost;
- list[i++] = PowerPlant;
- list[i++] = AutoLab;
- list[i++] = NuclearPlant;
-
- while ( true )
- {
- p = radar(list, 0, 360, 0, 1000);
- if ( p == null )
- {
- wait(2);
- }
- else
- {
- dist = distance(p.position, position);
- if ( dist <= 40 && !advance )
- {
- fire(p.position);
- advance = true;
- }
- else
- {
-//? if ( RetBaseDistance() > 20 )
- {
- prox = dist-(5+rand()*5);
- if ( prox < 5 ) prox = 5;
- dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
- dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
- dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
- goto(dest);
- advance = false;
- }
- }
- }
- }
-}
-
-// Calcule la distance jusqu'à la base.
-
-float object::RetBaseDistance()
-{
- object p;
- float dist;
-
- p = radar(SpaceShip, 0, 360, 0, 1000);
- if ( p == null ) return 1000;
- dist = distance(p.position, position);
- return dist;
-}
-
+extern void object::Attack( )
+{
+ int list[];
+ int i;
+ object p;
+ float dist, prox;
+ point dest;
+ boolean advance = true;
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+ list[i++] = Derrick;
+ list[i++] = BotFactory;
+ list[i++] = PowerStation;
+ list[i++] = Converter;
+ list[i++] = RepairCenter;
+ list[i++] = DefenseTower;
+ list[i++] = ResearchCenter;
+ list[i++] = RadarStation;
+ list[i++] = ExchangePost;
+ list[i++] = PowerPlant;
+ list[i++] = AutoLab;
+ list[i++] = NuclearPlant;
+
+ while ( true )
+ {
+ p = radar(list, 0, 360, 0, 1000);
+ if ( p == null )
+ {
+ wait(2);
+ }
+ else
+ {
+ dist = distance(p.position, position);
+ if ( dist <= 40 && !advance )
+ {
+ fire(p.position);
+ advance = true;
+ }
+ else
+ {
+//? if ( RetBaseDistance() > 20 )
+ {
+ prox = dist-(5+rand()*5);
+ if ( prox < 5 ) prox = 5;
+ dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
+ dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
+ dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
+ goto(dest);
+ advance = false;
+ }
+ }
+ }
+ }
+}
+
+// Calcule la distance jusqu'Ã la base.
+
+float object::RetBaseDistance()
+{
+ object p;
+ float dist;
+
+ p = radar(SpaceShip, 0, 360, 0, 1000);
+ if ( p == null ) return 1000;
+ dist = distance(p.position, position);
+ return dist;
+}
+
diff --git a/ai/ant11.txt b/ai/ant11.txt
index 97fac1ee..8b68b1b1 100644
--- a/ai/ant11.txt
+++ b/ai/ant11.txt
@@ -1,95 +1,95 @@
-extern void object::Attack( )
-{
- int list[];
- int i;
- object p;
- float dist, prox;
- point dest;
- boolean advance = true;
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
- list[i++] = Derrick;
- list[i++] = BotFactory;
- list[i++] = PowerStation;
- list[i++] = Converter;
- list[i++] = RepairCenter;
- list[i++] = DefenseTower;
- list[i++] = ResearchCenter;
- list[i++] = RadarStation;
- list[i++] = ExchangePost;
- list[i++] = PowerPlant;
- list[i++] = AutoLab;
- list[i++] = NuclearPlant;
-
- wait(cmdline(0));
-
- while ( true )
- {
- p = radar(list, 0, 360, 0, 1000);
- if ( p == null )
- {
- wait(2);
- }
- else
- {
- dist = distance(p.position, position);
- if ( dist <= 20 && !advance )
- {
- fire(p.position);
- advance = true;
- }
- else
- {
-//? if ( RetBaseDistance() > 20 )
- {
- prox = dist-(5+rand()*5);
- if ( prox < 5 ) prox = 5;
- dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
- dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
- dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
- goto(dest, 0, 6);
- advance = false;
- }
- }
- }
- }
-}
-
-// Calcule la distance jusqu'à la base.
-
-float object::RetBaseDistance()
-{
- object p;
- float dist;
-
- p = radar(SpaceShip, 0, 360, 0, 1000);
- if ( p == null ) return 1000;
- dist = distance(p.position, position);
- return dist;
-}
-
+extern void object::Attack( )
+{
+ int list[];
+ int i;
+ object p;
+ float dist, prox;
+ point dest;
+ boolean advance = true;
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+ list[i++] = Derrick;
+ list[i++] = BotFactory;
+ list[i++] = PowerStation;
+ list[i++] = Converter;
+ list[i++] = RepairCenter;
+ list[i++] = DefenseTower;
+ list[i++] = ResearchCenter;
+ list[i++] = RadarStation;
+ list[i++] = ExchangePost;
+ list[i++] = PowerPlant;
+ list[i++] = AutoLab;
+ list[i++] = NuclearPlant;
+
+ wait(cmdline(0));
+
+ while ( true )
+ {
+ p = radar(list, 0, 360, 0, 1000);
+ if ( p == null )
+ {
+ wait(2);
+ }
+ else
+ {
+ dist = distance(p.position, position);
+ if ( dist <= 20 && !advance )
+ {
+ fire(p.position);
+ advance = true;
+ }
+ else
+ {
+//? if ( RetBaseDistance() > 20 )
+ {
+ prox = dist-(5+rand()*5);
+ if ( prox < 5 ) prox = 5;
+ dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
+ dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
+ dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
+ goto(dest, 0, 6);
+ advance = false;
+ }
+ }
+ }
+ }
+}
+
+// Calcule la distance jusqu'Ã la base.
+
+float object::RetBaseDistance()
+{
+ object p;
+ float dist;
+
+ p = radar(SpaceShip, 0, 360, 0, 1000);
+ if ( p == null ) return 1000;
+ dist = distance(p.position, position);
+ return dist;
+}
+
diff --git a/ai/ant12.txt b/ai/ant12.txt
index 577e9938..215a99b9 100644
--- a/ai/ant12.txt
+++ b/ai/ant12.txt
@@ -1,92 +1,92 @@
-extern void object::Attack( )
-{
- int list[], i;
- object p;
- float dist, prox;
- point nav1, nav2, dest;
- boolean lock, advance;
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
-
- nav1.x = cmdline(0);
- nav1.y = cmdline(1);
- nav2.x = cmdline(2);
- nav2.y = cmdline(3);
-
- lock = false;
- while ( !lock )
- {
- p = radar(list, 0, 360, 0, 40);
- if ( p != null )
- {
- fire(p.position);
- lock = true;
- break;
- }
- goto(nav1);
-
- p = radar(list, 0, 360, 0, 40);
- if ( p != null )
- {
- fire(p.position);
- lock = true;
- break;
- }
- goto(nav2);
- }
-
- advance = true;
- while ( true )
- {
- p = radar(list, 0, 360, 0, 1000);
- if ( p == null )
- {
- wait(1);
- }
- else
- {
- dist = distance(p.position, position);
- if ( dist <= 40 && !advance )
- {
- fire(p.position);
- advance = true;
- }
- else
- {
- prox = dist-5;
- if ( prox > 40 ) prox = 40;
- if ( prox < 5 ) prox = 5;
- dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
- dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
- dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
- goto(dest);
- advance = false;
- }
- }
- }
-}
+extern void object::Attack( )
+{
+ int list[], i;
+ object p;
+ float dist, prox;
+ point nav1, nav2, dest;
+ boolean lock, advance;
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+
+ nav1.x = cmdline(0);
+ nav1.y = cmdline(1);
+ nav2.x = cmdline(2);
+ nav2.y = cmdline(3);
+
+ lock = false;
+ while ( !lock )
+ {
+ p = radar(list, 0, 360, 0, 40);
+ if ( p != null )
+ {
+ fire(p.position);
+ lock = true;
+ break;
+ }
+ goto(nav1);
+
+ p = radar(list, 0, 360, 0, 40);
+ if ( p != null )
+ {
+ fire(p.position);
+ lock = true;
+ break;
+ }
+ goto(nav2);
+ }
+
+ advance = true;
+ while ( true )
+ {
+ p = radar(list, 0, 360, 0, 1000);
+ if ( p == null )
+ {
+ wait(1);
+ }
+ else
+ {
+ dist = distance(p.position, position);
+ if ( dist <= 40 && !advance )
+ {
+ fire(p.position);
+ advance = true;
+ }
+ else
+ {
+ prox = dist-5;
+ if ( prox > 40 ) prox = 40;
+ if ( prox < 5 ) prox = 5;
+ dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
+ dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
+ dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
+ goto(dest);
+ advance = false;
+ }
+ }
+ }
+}
diff --git a/ai/antatt30.txt b/ai/antatt30.txt
index 1cad35eb..366e6b11 100644
--- a/ai/antatt30.txt
+++ b/ai/antatt30.txt
@@ -1,145 +1,145 @@
-extern void object::Attack( )
-{
- int list[], i; // liste des objets cherchés
- object target; // info sur la cible
- point lastPos; // dernière position (pr test si bloquée)
- float distTar; // distance de la cible
- float dirTar; // direction de la cible
- float r; // valeur aléatoire
- float mp; // puissance moteur
- float tangle; // angle d'esquive en cas d'eau
- boolean ifmove; // si on avance en tirant ou pas
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
- list[i++] = Derrick;
- list[i++] = BotFactory;
- list[i++] = PowerStation;
- list[i++] = Converter;
- list[i++] = RepairCenter;
- list[i++] = DefenseTower;
- list[i++] = ResearchCenter;
- list[i++] = RadarStation;
- list[i++] = ExchangePost;
- list[i++] = PowerPlant;
- list[i++] = AutoLab;
- list[i++] = NuclearPlant;
-
- wait(cmdline(0)); // attend pour entrer en action
- lastPos = position; // initialise
- ifmove = true;
- while ( true ) // répète à l'infini
- {
- target = radar(list);
- dirTar = direction(target.position);
- distTar = distance(position, target.position);
- if(distTar<30)
- {
- turn(dirTar);
- fire(target.position);
- target = radar(list);
- turn(direction(target.position));
- for(int i=0; i<3; i=i+1)
- {
- if(topo(position)<2 or distance(position, target.position) < 8 or !ifmove)
- {
- ifmove = false;
- }
- else
- {
- lastPos = position;
- motor(1,1);
- wait(0.5);
- if (distance(position, lastPos) < 0.2) ifmove = false;
- }
- }
- }
- else
- {
- ifmove = true;
- if (distance(lastPos, position) < 0.2)
- { //si elle est bloquée par obstacle
- lastPos = position;
- turn(rand()*360-180);
- motor(1,1);
- wait(1);
- target = radar(list);
- turn(direction(target.position));
- }
- else
- {
- lastPos = position;
- if (topo(position)>1)
- {
- mp = direction(target.position)/180;
- //if (mp>1) mp = 1;
- //if (mp<-1) mp = -1;
- if (mp>0)
- {
- motor(1-mp,1);
- }
- else
- {
- motor(1,1+mp);
- }
- wait(1);
- }
- else
- {
- motor (-0.5, -0.5);
- wait(1.5);
- target = radar(list);
- turn(direction(target.position));
- tangle = 0;
- do
- {
- tangle = tangle + 22.5;
- if (tp(tangle) == 0) break;
- tangle = -tangle;
- if (tp(tangle) == 0) break;
- tangle = -tangle;
- if (tangle > 180) break;
- }
- while (true);
- turn(tangle);
- motor(1,1);
- wait(2);
- }
- }
- }
- }
-}
-
-int object::tp(float angle)
-{
- point tpoint;
-
- tpoint.x = position.x + cos(orientation + angle)*10;
- tpoint.y = position.y + sin(orientation + angle)*10;
- tpoint.z = 0;
- if (topo(tpoint) < 1.5) return(1); else return(0);
-}
+extern void object::Attack( )
+{
+ int list[], i; // liste des objets cherchés
+ object target; // info sur la cible
+ point lastPos; // dernière position (pr test si bloquée)
+ float distTar; // distance de la cible
+ float dirTar; // direction de la cible
+ float r; // valeur aléatoire
+ float mp; // puissance moteur
+ float tangle; // angle d'esquive en cas d'eau
+ boolean ifmove; // si on avance en tirant ou pas
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+ list[i++] = Derrick;
+ list[i++] = BotFactory;
+ list[i++] = PowerStation;
+ list[i++] = Converter;
+ list[i++] = RepairCenter;
+ list[i++] = DefenseTower;
+ list[i++] = ResearchCenter;
+ list[i++] = RadarStation;
+ list[i++] = ExchangePost;
+ list[i++] = PowerPlant;
+ list[i++] = AutoLab;
+ list[i++] = NuclearPlant;
+
+ wait(cmdline(0)); // attend pour entrer en action
+ lastPos = position; // initialise
+ ifmove = true;
+ while ( true ) // répète à l'infini
+ {
+ target = radar(list);
+ dirTar = direction(target.position);
+ distTar = distance(position, target.position);
+ if(distTar<30)
+ {
+ turn(dirTar);
+ fire(target.position);
+ target = radar(list);
+ turn(direction(target.position));
+ for(int i=0; i<3; i=i+1)
+ {
+ if(topo(position)<2 or distance(position, target.position) < 8 or !ifmove)
+ {
+ ifmove = false;
+ }
+ else
+ {
+ lastPos = position;
+ motor(1,1);
+ wait(0.5);
+ if (distance(position, lastPos) < 0.2) ifmove = false;
+ }
+ }
+ }
+ else
+ {
+ ifmove = true;
+ if (distance(lastPos, position) < 0.2)
+ { //si elle est bloquée par obstacle
+ lastPos = position;
+ turn(rand()*360-180);
+ motor(1,1);
+ wait(1);
+ target = radar(list);
+ turn(direction(target.position));
+ }
+ else
+ {
+ lastPos = position;
+ if (topo(position)>1)
+ {
+ mp = direction(target.position)/180;
+ //if (mp>1) mp = 1;
+ //if (mp<-1) mp = -1;
+ if (mp>0)
+ {
+ motor(1-mp,1);
+ }
+ else
+ {
+ motor(1,1+mp);
+ }
+ wait(1);
+ }
+ else
+ {
+ motor (-0.5, -0.5);
+ wait(1.5);
+ target = radar(list);
+ turn(direction(target.position));
+ tangle = 0;
+ do
+ {
+ tangle = tangle + 22.5;
+ if (tp(tangle) == 0) break;
+ tangle = -tangle;
+ if (tp(tangle) == 0) break;
+ tangle = -tangle;
+ if (tangle > 180) break;
+ }
+ while (true);
+ turn(tangle);
+ motor(1,1);
+ wait(2);
+ }
+ }
+ }
+ }
+}
+
+int object::tp(float angle)
+{
+ point tpoint;
+
+ tpoint.x = position.x + cos(orientation + angle)*10;
+ tpoint.y = position.y + sin(orientation + angle)*10;
+ tpoint.z = 0;
+ if (topo(tpoint) < 1.5) return(1); else return(0);
+}
diff --git a/ai/antattaw.txt b/ai/antattaw.txt
index ee2e5a17..bd4f9c99 100644
--- a/ai/antattaw.txt
+++ b/ai/antattaw.txt
@@ -1,145 +1,145 @@
-extern void object::Attack( )
-{
- int list[], i; // liste des objets cherchés
- object target; // info sur la cible
- point lastPos; // dernière position (pr test si bloquée)
- float distTar; // distance de la cible
- float dirTar; // direction de la cible
- float r; // valeur aléatoire
- float mp; // puissance moteur
- float tangle; // angle d'esquive en cas d'eau
- boolean ifmove; // si on avance en tirant ou pas
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
- list[i++] = Derrick;
- list[i++] = BotFactory;
- list[i++] = PowerStation;
- list[i++] = Converter;
- list[i++] = RepairCenter;
- list[i++] = DefenseTower;
- list[i++] = ResearchCenter;
- list[i++] = RadarStation;
- list[i++] = ExchangePost;
- list[i++] = PowerPlant;
- list[i++] = AutoLab;
- list[i++] = NuclearPlant;
-
- wait(cmdline(0)); // attend pour entrer en action
- lastPos = position; // initialise
- ifmove = true;
- while ( true ) // répète à l'infini
- {
- target = radar(list);
- dirTar = direction(target.position);
- distTar = distance(position, target.position);
- if(distTar<40)
- {
- turn(dirTar);
- fire(target.position);
- target = radar(list);
- turn(direction(target.position));
- for(int i=0; i<3; i=i+1)
- {
- if(topo(position)<2 or distance(position, target.position) < 8 or !ifmove)
- {
- ifmove = false;
- }
- else
- {
- lastPos = position;
- motor(1,1);
- wait(0.5);
- if (distance(position, lastPos) < 0.2) ifmove = false;
- }
- }
- }
- else
- {
- ifmove = true;
- if (distance(lastPos, position) < 0.2)
- { //si elle est bloquée par obstacle
- lastPos = position;
- turn(rand()*360-180);
- motor(1,1);
- wait(1);
- target = radar(list);
- turn(direction(target.position));
- }
- else
- {
- lastPos = position;
- if (topo(position)>1)
- {
- mp = direction(target.position)/180;
- //if (mp>1) mp = 1;
- //if (mp<-1) mp = -1;
- if (mp>0)
- {
- motor(1-mp,1);
- }
- else
- {
- motor(1,1+mp);
- }
- wait(1);
- }
- else
- {
- motor (-0.5, -0.5);
- wait(1.5);
- target = radar(list);
- turn(direction(target.position));
- tangle = 0;
- do
- {
- tangle = tangle + 22.5;
- if (tp(tangle) == 0) break;
- tangle = -tangle;
- if (tp(tangle) == 0) break;
- tangle = -tangle;
- if (tangle > 180) break;
- }
- while (true);
- turn(tangle);
- motor(1,1);
- wait(2);
- }
- }
- }
- }
-}
-
-int object::tp(float angle)
-{
- point tpoint;
-
- tpoint.x = position.x + cos(orientation + angle)*10;
- tpoint.y = position.y + sin(orientation + angle)*10;
- tpoint.z = 0;
- if (topo(tpoint) < 1.5) return(1); else return(0);
-}
+extern void object::Attack( )
+{
+ int list[], i; // liste des objets cherchés
+ object target; // info sur la cible
+ point lastPos; // dernière position (pr test si bloquée)
+ float distTar; // distance de la cible
+ float dirTar; // direction de la cible
+ float r; // valeur aléatoire
+ float mp; // puissance moteur
+ float tangle; // angle d'esquive en cas d'eau
+ boolean ifmove; // si on avance en tirant ou pas
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+ list[i++] = Derrick;
+ list[i++] = BotFactory;
+ list[i++] = PowerStation;
+ list[i++] = Converter;
+ list[i++] = RepairCenter;
+ list[i++] = DefenseTower;
+ list[i++] = ResearchCenter;
+ list[i++] = RadarStation;
+ list[i++] = ExchangePost;
+ list[i++] = PowerPlant;
+ list[i++] = AutoLab;
+ list[i++] = NuclearPlant;
+
+ wait(cmdline(0)); // attend pour entrer en action
+ lastPos = position; // initialise
+ ifmove = true;
+ while ( true ) // répète à l'infini
+ {
+ target = radar(list);
+ dirTar = direction(target.position);
+ distTar = distance(position, target.position);
+ if(distTar<40)
+ {
+ turn(dirTar);
+ fire(target.position);
+ target = radar(list);
+ turn(direction(target.position));
+ for(int i=0; i<3; i=i+1)
+ {
+ if(topo(position)<2 or distance(position, target.position) < 8 or !ifmove)
+ {
+ ifmove = false;
+ }
+ else
+ {
+ lastPos = position;
+ motor(1,1);
+ wait(0.5);
+ if (distance(position, lastPos) < 0.2) ifmove = false;
+ }
+ }
+ }
+ else
+ {
+ ifmove = true;
+ if (distance(lastPos, position) < 0.2)
+ { //si elle est bloquée par obstacle
+ lastPos = position;
+ turn(rand()*360-180);
+ motor(1,1);
+ wait(1);
+ target = radar(list);
+ turn(direction(target.position));
+ }
+ else
+ {
+ lastPos = position;
+ if (topo(position)>1)
+ {
+ mp = direction(target.position)/180;
+ //if (mp>1) mp = 1;
+ //if (mp<-1) mp = -1;
+ if (mp>0)
+ {
+ motor(1-mp,1);
+ }
+ else
+ {
+ motor(1,1+mp);
+ }
+ wait(1);
+ }
+ else
+ {
+ motor (-0.5, -0.5);
+ wait(1.5);
+ target = radar(list);
+ turn(direction(target.position));
+ tangle = 0;
+ do
+ {
+ tangle = tangle + 22.5;
+ if (tp(tangle) == 0) break;
+ tangle = -tangle;
+ if (tp(tangle) == 0) break;
+ tangle = -tangle;
+ if (tangle > 180) break;
+ }
+ while (true);
+ turn(tangle);
+ motor(1,1);
+ wait(2);
+ }
+ }
+ }
+ }
+}
+
+int object::tp(float angle)
+{
+ point tpoint;
+
+ tpoint.x = position.x + cos(orientation + angle)*10;
+ tpoint.y = position.y + sin(orientation + angle)*10;
+ tpoint.z = 0;
+ if (topo(tpoint) < 1.5) return(1); else return(0);
+}
diff --git a/ai/antattsw.txt b/ai/antattsw.txt
index 80b9bd7a..1d7a300b 100644
--- a/ai/antattsw.txt
+++ b/ai/antattsw.txt
@@ -1,145 +1,145 @@
-extern void object::Attack( )
-{
- int list[], i; // liste des objets cherchés
- object target; // info sur la cible
- point lastPos; // dernière position (pr test si bloquée)
- float distTar; // distance de la cible
- float dirTar; // direction de la cible
- float r; // valeur aléatoire
- float mp; // puissance moteur
- float tangle; // angle d'esquive en cas d'eau
- boolean ifmove; // si on avance en tirant ou pas
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
- list[i++] = Derrick;
- list[i++] = BotFactory;
- list[i++] = PowerStation;
- list[i++] = Converter;
- list[i++] = RepairCenter;
- list[i++] = DefenseTower;
- list[i++] = ResearchCenter;
- list[i++] = RadarStation;
- list[i++] = ExchangePost;
- list[i++] = PowerPlant;
- list[i++] = AutoLab;
- list[i++] = NuclearPlant;
-
-// wait(cmdline(0)); // attend pour entrer en action
- lastPos = position; // initialise
- ifmove = true;
- while ( true ) // répète à l'infini
- {
- target = radar(list);
- dirTar = direction(target.position);
- distTar = distance(position, target.position);
- if(distTar<40)
- {
- turn(dirTar);
- fire(target.position);
- target = radar(list);
- turn(direction(target.position));
- for(int i=0; i<3; i=i+1)
- {
- if(topo(position)<2 or distance(position, target.position) < 8 or !ifmove)
- {
- ifmove = false;
- }
- else
- {
- lastPos = position;
- motor(1,1);
- wait(0.5);
- if (distance(position, lastPos) < 0.2) ifmove = false;
- }
- }
- }
- else
- {
- ifmove = true;
- if (distance(lastPos, position) < 0.2)
- { //si elle est bloquée par obstacle
- lastPos = position;
- turn(rand()*360-180);
- motor(1,1);
- wait(1);
- target = radar(list);
- turn(direction(target.position));
- }
- else
- {
- lastPos = position;
- if (topo(position)>1)
- {
- mp = direction(target.position)/180;
- //if (mp>1) mp = 1;
- //if (mp<-1) mp = -1;
- if (mp>0)
- {
- motor(1-mp,1);
- }
- else
- {
- motor(1,1+mp);
- }
- wait(1);
- }
- else
- {
- motor (-0.5, -0.5);
- wait(1.5);
- target = radar(list);
- turn(direction(target.position));
- tangle = 0;
- do
- {
- tangle = tangle + 22.5;
- if (tp(tangle) == 0) break;
- tangle = -tangle;
- if (tp(tangle) == 0) break;
- tangle = -tangle;
- if (tangle > 180) break;
- }
- while (true);
- turn(tangle);
- motor(1,1);
- wait(2);
- }
- }
- }
- }
-}
-
-int object::tp(float angle)
-{
- point tpoint;
-
- tpoint.x = position.x + cos(orientation + angle)*10;
- tpoint.y = position.y + sin(orientation + angle)*10;
- tpoint.z = 0;
- if (topo(tpoint) < 1.5) return(1); else return(0);
-}
+extern void object::Attack( )
+{
+ int list[], i; // liste des objets cherchés
+ object target; // info sur la cible
+ point lastPos; // dernière position (pr test si bloquée)
+ float distTar; // distance de la cible
+ float dirTar; // direction de la cible
+ float r; // valeur aléatoire
+ float mp; // puissance moteur
+ float tangle; // angle d'esquive en cas d'eau
+ boolean ifmove; // si on avance en tirant ou pas
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+ list[i++] = Derrick;
+ list[i++] = BotFactory;
+ list[i++] = PowerStation;
+ list[i++] = Converter;
+ list[i++] = RepairCenter;
+ list[i++] = DefenseTower;
+ list[i++] = ResearchCenter;
+ list[i++] = RadarStation;
+ list[i++] = ExchangePost;
+ list[i++] = PowerPlant;
+ list[i++] = AutoLab;
+ list[i++] = NuclearPlant;
+
+// wait(cmdline(0)); // attend pour entrer en action
+ lastPos = position; // initialise
+ ifmove = true;
+ while ( true ) // répète à l'infini
+ {
+ target = radar(list);
+ dirTar = direction(target.position);
+ distTar = distance(position, target.position);
+ if(distTar<40)
+ {
+ turn(dirTar);
+ fire(target.position);
+ target = radar(list);
+ turn(direction(target.position));
+ for(int i=0; i<3; i=i+1)
+ {
+ if(topo(position)<2 or distance(position, target.position) < 8 or !ifmove)
+ {
+ ifmove = false;
+ }
+ else
+ {
+ lastPos = position;
+ motor(1,1);
+ wait(0.5);
+ if (distance(position, lastPos) < 0.2) ifmove = false;
+ }
+ }
+ }
+ else
+ {
+ ifmove = true;
+ if (distance(lastPos, position) < 0.2)
+ { //si elle est bloquée par obstacle
+ lastPos = position;
+ turn(rand()*360-180);
+ motor(1,1);
+ wait(1);
+ target = radar(list);
+ turn(direction(target.position));
+ }
+ else
+ {
+ lastPos = position;
+ if (topo(position)>1)
+ {
+ mp = direction(target.position)/180;
+ //if (mp>1) mp = 1;
+ //if (mp<-1) mp = -1;
+ if (mp>0)
+ {
+ motor(1-mp,1);
+ }
+ else
+ {
+ motor(1,1+mp);
+ }
+ wait(1);
+ }
+ else
+ {
+ motor (-0.5, -0.5);
+ wait(1.5);
+ target = radar(list);
+ turn(direction(target.position));
+ tangle = 0;
+ do
+ {
+ tangle = tangle + 22.5;
+ if (tp(tangle) == 0) break;
+ tangle = -tangle;
+ if (tp(tangle) == 0) break;
+ tangle = -tangle;
+ if (tangle > 180) break;
+ }
+ while (true);
+ turn(tangle);
+ motor(1,1);
+ wait(2);
+ }
+ }
+ }
+ }
+}
+
+int object::tp(float angle)
+{
+ point tpoint;
+
+ tpoint.x = position.x + cos(orientation + angle)*10;
+ tpoint.y = position.y + sin(orientation + angle)*10;
+ tpoint.z = 0;
+ if (topo(tpoint) < 1.5) return(1); else return(0);
+}
diff --git a/ai/antec.txt b/ai/antec.txt
index 54d52f7b..d1902e9b 100644
--- a/ai/antec.txt
+++ b/ai/antec.txt
@@ -1,115 +1,115 @@
-extern void object::Attack( )
-{
- int list[], i; // liste des objets cherchés
- object target; // info sur la cible
- point center; // coordonnées du centre de la zone
- point lastPos; // dernière position (pr test si bloquée)
- float distCent; // rayon de la zone
- float distLim; // rayon à ne pas dépasser
- float r; // valeur aléatoire
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
-
- center.x = cmdline(0); // prend les coordonnée
- center.y = cmdline(1); // du centre de la zone
- center.z = 0; // à exclure
- distCent = cmdline(2); // rayon de la zone
- distLim = cmdline(3);
-
- lastPos = position; // initialise
- turn(rand()*360-180);
- motor(1,1); // en avant toute
- while ( true ) // répère à l'infini
- {
- target = radar(list, 0, 360, 0, 40);
- if (target == null or topo(position)<0)// pas de cible à proximité
- { // ou pieds dans l'eau
- if (distance2d(position, center) < distCent
- or distance2d(position, center) > distLim
- or topo(position)<0)
- { // si la fourmi est dans la zone interdite
- motor(0, 0); //s'arrête
- wait(0.5); //marque un arrêt
- motor (-0.5, -0.5);//recule lentement
- wait (1.5); //attend qu'ait reculé
- if (distance2d(position, center) < distCent+20)
- { //si trop proche du centre
- if (direction(center)>0) turn(direction(center)-180); else turn(direction(center)+180);
- motor (1, 1); //puis en avant toute
- do
- {
- wait(1);
- }
- while (distance2d(position, center) < distCent or topo(position)<0);
- }
- else
- { //si trop loin du centre
- turn(direction(center));
- motor (1, 1); //puis en avant toute
- do
- {
- wait(1); //tant que pas dans la zone
- }
- while (distance2d(position, center) > distLim or topo(position)<0);
- }
- }
- else
- { //si elle est bien dans la zone
- if (distance2d(lastPos, position) < 0.2)
- { //si elle est bloquée par obstacle
- turn(rand()*360-180);
- motor(1,1);
- wait(1);
- }
- r = rand();
- if (r > 0.7)
- { //dans un cas sur dix
- motor (1, 0.8);// tourne à droite
- wait(rand()*3);// pendant un moment
- motor (1, 1); // puis tout droit
- }
- if (r < 0.3)
- { //dans un cas sur dix
- motor (0.8, 1);// tourne à gauche
- wait(rand()*3);// pendant un moment
- motor (1, 1); // puis tout droit
- }
- lastPos = position;
- wait(1); //attend un moment
- }
- }
- else
- { // si cible à proximité
- turn(direction(target.position));
- fire(target.position); // et tire deux fois
- motor(1,1); // avance
- wait(1.5); // pendant 1.5 s
- }
- }
-}
-
+extern void object::Attack( )
+{
+ int list[], i; // liste des objets cherchés
+ object target; // info sur la cible
+ point center; // coordonnées du centre de la zone
+ point lastPos; // dernière position (pr test si bloquée)
+ float distCent; // rayon de la zone
+ float distLim; // rayon à ne pas dépasser
+ float r; // valeur aléatoire
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+
+ center.x = cmdline(0); // prend les coordonnée
+ center.y = cmdline(1); // du centre de la zone
+ center.z = 0; // Ã exclure
+ distCent = cmdline(2); // rayon de la zone
+ distLim = cmdline(3);
+
+ lastPos = position; // initialise
+ turn(rand()*360-180);
+ motor(1,1); // en avant toute
+ while ( true ) // répère à l'infini
+ {
+ target = radar(list, 0, 360, 0, 40);
+ if (target == null or topo(position)<0)// pas de cible à proximité
+ { // ou pieds dans l'eau
+ if (distance2d(position, center) < distCent
+ or distance2d(position, center) > distLim
+ or topo(position)<0)
+ { // si la fourmi est dans la zone interdite
+ motor(0, 0); //s'arrête
+ wait(0.5); //marque un arrêt
+ motor (-0.5, -0.5);//recule lentement
+ wait (1.5); //attend qu'ait reculé
+ if (distance2d(position, center) < distCent+20)
+ { //si trop proche du centre
+ if (direction(center)>0) turn(direction(center)-180); else turn(direction(center)+180);
+ motor (1, 1); //puis en avant toute
+ do
+ {
+ wait(1);
+ }
+ while (distance2d(position, center) < distCent or topo(position)<0);
+ }
+ else
+ { //si trop loin du centre
+ turn(direction(center));
+ motor (1, 1); //puis en avant toute
+ do
+ {
+ wait(1); //tant que pas dans la zone
+ }
+ while (distance2d(position, center) > distLim or topo(position)<0);
+ }
+ }
+ else
+ { //si elle est bien dans la zone
+ if (distance2d(lastPos, position) < 0.2)
+ { //si elle est bloquée par obstacle
+ turn(rand()*360-180);
+ motor(1,1);
+ wait(1);
+ }
+ r = rand();
+ if (r > 0.7)
+ { //dans un cas sur dix
+ motor (1, 0.8);// tourne à droite
+ wait(rand()*3);// pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ if (r < 0.3)
+ { //dans un cas sur dix
+ motor (0.8, 1);// tourne à gauche
+ wait(rand()*3);// pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ lastPos = position;
+ wait(1); //attend un moment
+ }
+ }
+ else
+ { // si cible à proximité
+ turn(direction(target.position));
+ fire(target.position); // et tire deux fois
+ motor(1,1); // avance
+ wait(1.5); // pendant 1.5 s
+ }
+ }
+}
+
diff --git a/ai/antice.txt b/ai/antice.txt
index dd9fc6cb..f2d22f73 100644
--- a/ai/antice.txt
+++ b/ai/antice.txt
@@ -1,110 +1,110 @@
-extern void object::Attack( )
-{
- int list[], i; // liste des objets cherchés
- object target; // info sur la cible
- point center; // coordonnées du centre de la zone
- point lastPos; // dernière position (pr test si bloquée)
- float distCent; // rayon de la zone
- float r; // valeur aléatoire
- float stdHight; // Altitude du point de départ
- float tolHight; // tolérance acceptée par rapport à stdHight
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
-// list[i++] = Me;
-
- center.x = cmdline(0); // prend les coordonnée
- center.y = cmdline(1); // du centre de la zone
- center.z = 0; // à patrouiller
- distCent = cmdline(2); // rayon de la zone
- stdHight = topo(position);//L'altitude dont il ne faut pas s'écarter
- tolHight = 9;
-
- lastPos = position; // initialise
- motor(1,1); // en avant toute
- while ( true ) // répère à l'infini
- {
- target = radar(WingedShooter);
- if (target.position.y < 20
- or abs(topo(position)-stdHight) > tolHight)//pas de cible à proximité
- { // ou s'écarte trop de l'altitude de départ
- if (distance2d(position, center) > distCent or
- abs(topo(position)-stdHight) > tolHight)
- { // si la fourmi est en dehors de la zone
- motor(0, 0); //s'arrête
- wait(0.5); //marque un arrêt
- motor (-0.5, -0.5);//recule lentement
- wait (1.5); //attend qu'ait reculé
- turn(direction(center));
- motor (1, 1); //puis en avant toute
- do
- {
- lastPos = position;
- wait(1); //tant que pas dans la zone
- if (distance2d(lastPos, position) < 0.2)
- { //si elle est bloquée par obstacle
- turn(rand()*360-180);
- motor(1,1);
- wait(1);
- turn(direction(center));
- }
- }
- while (distance2d(position, center) > distCent or
- abs(topo(position)-stdHight) > tolHight);
- }
- else
- { //si elle est bien dans la zone
- if (distance2d(lastPos, position) < 0.2)
- { //si elle est bloquée par obstacle
- turn(rand()*360-180);
- motor(1,1);
- wait(1);
- }
- r = rand();
- if (r > 0.6)
- { //dans un cas sur dix
- motor (1, 0.5);// tourne à droite
- wait(rand()*3);// pendant un moment
- motor (1, 1); // puis tout droit
- }
- if (r < 0.4)
- { //dans un cas sur dix
- motor (0.5, 1);// tourne à gauche
- wait(rand()*3);// pendant un moment
- motor (1, 1); // puis tout droit
- }
- lastPos = position;
- wait(1); //attend un moment
- }
- }
- else
- { // si cible à proximité
- turn(direction(target.position));
- fire(target.position); // tourne vers la cible
- }
- }
-}
-
+extern void object::Attack( )
+{
+ int list[], i; // liste des objets cherchés
+ object target; // info sur la cible
+ point center; // coordonnées du centre de la zone
+ point lastPos; // dernière position (pr test si bloquée)
+ float distCent; // rayon de la zone
+ float r; // valeur aléatoire
+ float stdHight; // Altitude du point de départ
+ float tolHight; // tolérance acceptée par rapport à stdHight
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+// list[i++] = Me;
+
+ center.x = cmdline(0); // prend les coordonnée
+ center.y = cmdline(1); // du centre de la zone
+ center.z = 0; // Ã patrouiller
+ distCent = cmdline(2); // rayon de la zone
+ stdHight = topo(position);//L'altitude dont il ne faut pas s'écarter
+ tolHight = 9;
+
+ lastPos = position; // initialise
+ motor(1,1); // en avant toute
+ while ( true ) // répère à l'infini
+ {
+ target = radar(WingedShooter);
+ if (target.position.y < 20
+ or abs(topo(position)-stdHight) > tolHight)//pas de cible à proximité
+ { // ou s'écarte trop de l'altitude de départ
+ if (distance2d(position, center) > distCent or
+ abs(topo(position)-stdHight) > tolHight)
+ { // si la fourmi est en dehors de la zone
+ motor(0, 0); //s'arrête
+ wait(0.5); //marque un arrêt
+ motor (-0.5, -0.5);//recule lentement
+ wait (1.5); //attend qu'ait reculé
+ turn(direction(center));
+ motor (1, 1); //puis en avant toute
+ do
+ {
+ lastPos = position;
+ wait(1); //tant que pas dans la zone
+ if (distance2d(lastPos, position) < 0.2)
+ { //si elle est bloquée par obstacle
+ turn(rand()*360-180);
+ motor(1,1);
+ wait(1);
+ turn(direction(center));
+ }
+ }
+ while (distance2d(position, center) > distCent or
+ abs(topo(position)-stdHight) > tolHight);
+ }
+ else
+ { //si elle est bien dans la zone
+ if (distance2d(lastPos, position) < 0.2)
+ { //si elle est bloquée par obstacle
+ turn(rand()*360-180);
+ motor(1,1);
+ wait(1);
+ }
+ r = rand();
+ if (r > 0.6)
+ { //dans un cas sur dix
+ motor (1, 0.5);// tourne à droite
+ wait(rand()*3);// pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ if (r < 0.4)
+ { //dans un cas sur dix
+ motor (0.5, 1);// tourne à gauche
+ wait(rand()*3);// pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ lastPos = position;
+ wait(1); //attend un moment
+ }
+ }
+ else
+ { // si cible à proximité
+ turn(direction(target.position));
+ fire(target.position); // tourne vers la cible
+ }
+ }
+}
+
diff --git a/ai/antich.txt b/ai/antich.txt
index 58edf6ae..76b0d57d 100644
--- a/ai/antich.txt
+++ b/ai/antich.txt
@@ -1,110 +1,110 @@
-extern void object::Attack( )
-{
- int list[], i; // liste des objets cherchés
- object target; // info sur la cible
- point center; // coordonnées du centre de la zone
- point lastPos; // dernière position (pr test si bloquée)
- float distCent; // rayon de la zone
- float r; // valeur aléatoire
- float stdHight; // Altitude du point de départ
- float tolHight; // tolérance acceptée par rapport à stdHight
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
-
- center.x = cmdline(0); // prend les coordonnée
- center.y = cmdline(1); // du centre de la zone
- center.z = 0; // à patrouiller
- distCent = cmdline(2); // rayon de la zone
- stdHight = topo(position);//L'altitude dont il ne faut pas s'écarter
- tolHight = 1;
-
- lastPos = position; // initialise
- motor(1,1); // en avant toute
- while ( true ) // répère à l'infini
- {
- target = radar(list, 0, 360, 0, 40);
- if (target == null
- or abs(topo(position)-stdHight) > tolHight)//pas de cible à proximité
- { // ou s'écarte trop de l'altitude de départ
- if (distance2d(position, center) > distCent or
- abs(topo(position)-stdHight) > tolHight)
- { // si la fourmi est en dehors de la zone
- motor(0, 0); //s'arrête
- wait(0.5); //marque un arrêt
- motor (-0.5, -0.5);//recule lentement
- wait (1.5); //attend qu'ait reculé
- turn(direction(center));
- motor (1, 1); //puis en avant toute
- do
- {
- lastPos = position;
- wait(1); //tant que pas dans la zone
- if (distance2d(lastPos, position) < 0.2)
- { //si elle est bloquée par obstacle
- turn(rand()*360-180);
- motor(1,1);
- wait(1);
- turn(direction(center));
- }
- }
- while (distance2d(position, center) > distCent or
- abs(topo(position)-stdHight) > tolHight);
- }
- else
- { //si elle est bien dans la zone
- if (distance2d(lastPos, position) < 0.2)
- { //si elle est bloquée par obstacle
- turn(rand()*360-180);
- motor(1,1);
- wait(1);
- }
- r = rand();
- if (r > 0.6)
- { //dans un cas sur dix
- motor (1, 0.5);// tourne à droite
- wait(rand()*3);// pendant un moment
- motor (1, 1); // puis tout droit
- }
- if (r < 0.4)
- { //dans un cas sur dix
- motor (0.5, 1);// tourne à gauche
- wait(rand()*3);// pendant un moment
- motor (1, 1); // puis tout droit
- }
- lastPos = position;
- wait(1); //attend un moment
- }
- }
- else
- { // si cible à proximité
- turn(direction(target.position));
- fire(target.position); // tourne vers la cible
- }
- }
-}
-
+extern void object::Attack( )
+{
+ int list[], i; // liste des objets cherchés
+ object target; // info sur la cible
+ point center; // coordonnées du centre de la zone
+ point lastPos; // dernière position (pr test si bloquée)
+ float distCent; // rayon de la zone
+ float r; // valeur aléatoire
+ float stdHight; // Altitude du point de départ
+ float tolHight; // tolérance acceptée par rapport à stdHight
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+
+ center.x = cmdline(0); // prend les coordonnée
+ center.y = cmdline(1); // du centre de la zone
+ center.z = 0; // Ã patrouiller
+ distCent = cmdline(2); // rayon de la zone
+ stdHight = topo(position);//L'altitude dont il ne faut pas s'écarter
+ tolHight = 1;
+
+ lastPos = position; // initialise
+ motor(1,1); // en avant toute
+ while ( true ) // répère à l'infini
+ {
+ target = radar(list, 0, 360, 0, 40);
+ if (target == null
+ or abs(topo(position)-stdHight) > tolHight)//pas de cible à proximité
+ { // ou s'écarte trop de l'altitude de départ
+ if (distance2d(position, center) > distCent or
+ abs(topo(position)-stdHight) > tolHight)
+ { // si la fourmi est en dehors de la zone
+ motor(0, 0); //s'arrête
+ wait(0.5); //marque un arrêt
+ motor (-0.5, -0.5);//recule lentement
+ wait (1.5); //attend qu'ait reculé
+ turn(direction(center));
+ motor (1, 1); //puis en avant toute
+ do
+ {
+ lastPos = position;
+ wait(1); //tant que pas dans la zone
+ if (distance2d(lastPos, position) < 0.2)
+ { //si elle est bloquée par obstacle
+ turn(rand()*360-180);
+ motor(1,1);
+ wait(1);
+ turn(direction(center));
+ }
+ }
+ while (distance2d(position, center) > distCent or
+ abs(topo(position)-stdHight) > tolHight);
+ }
+ else
+ { //si elle est bien dans la zone
+ if (distance2d(lastPos, position) < 0.2)
+ { //si elle est bloquée par obstacle
+ turn(rand()*360-180);
+ motor(1,1);
+ wait(1);
+ }
+ r = rand();
+ if (r > 0.6)
+ { //dans un cas sur dix
+ motor (1, 0.5);// tourne à droite
+ wait(rand()*3);// pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ if (r < 0.4)
+ { //dans un cas sur dix
+ motor (0.5, 1);// tourne à gauche
+ wait(rand()*3);// pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ lastPos = position;
+ wait(1); //attend un moment
+ }
+ }
+ else
+ { // si cible à proximité
+ turn(direction(target.position));
+ fire(target.position); // tourne vers la cible
+ }
+ }
+}
+
diff --git a/ai/antich2.txt b/ai/antich2.txt
index 239e5749..1a9ca9a8 100644
--- a/ai/antich2.txt
+++ b/ai/antich2.txt
@@ -1,113 +1,113 @@
-extern void object::Attack( )
-{
- int list[], i; // liste des objets cherchés
- object target; // info sur la cible
- point center; // coordonnées du centre de la zone
- point lastPos; // dernière position (pr test si bloquée)
- float distCent; // rayon de la zone
- float r; // valeur aléatoire
- float stdHight; // Altitude du point de départ
- float tolHight; // tolérance acceptée par rapport à stdHight
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
-
- center.x = cmdline(0); // prend les coordonnée
- center.y = cmdline(1); // du centre de la zone
- center.z = 0; // à patrouiller
- distCent = cmdline(2); // rayon de la zone
- stdHight = topo(position);//L'altitude dont il ne faut pas s'écarter
- tolHight = cmdline(3); // tolérance admise
-
- lastPos = position; // initialise
- motor(1,1); // en avant toute
- while ( true ) // répère à l'infini
- {
- target = radar(list, 0, 360, 0, 40);
- if (target == null
- or topo(position)-stdHight > tolHight
- or stdHight-topo(position) > tolHight)//pas de cible à proximité
- { // ou s'écarte trop de l'altitude de départ
- if (distance2d(position, center) > distCent
- or abs(topo(position)-stdHight) > tolHight)
- { // si la fourmi est en dehors de la zone
- motor(0, 0); //s'arrête
- wait(0.5); //marque un arrêt
- motor (-0.5, -0.5);//recule lentement
- wait (1.5); //attend qu'ait reculé
- turn(direction(center));
- motor (1, 1); //puis en avant toute
- do
- {
- lastPos = position;
- wait(1); //tant que pas dans la zone
- if (distance2d(lastPos, position) < 0.2)
- { //si elle est bloquée par obstacle
- turn(rand()*360-180);
- motor(1,1);
- wait(1);
- turn(direction(center));
- }
- }
- while (distance2d(position, center) > distCent or
- abs(topo(position)-stdHight) > tolHight);
- }
- else
- { //si elle est bien dans la zone
- if (distance2d(lastPos, position) < 0.2)
- { //si elle est bloquée par obstacle
- turn(rand()*360-180);
- motor(1,1);
- wait(1);
- }
- r = rand();
- if (r > 0.6)
- { //dans un cas sur dix
- motor (1, 0.7);// tourne à droite
- wait(rand()*3);// pendant un moment
- motor (1, 1); // puis tout droit
- }
- if (r < 0.4)
- { //dans un cas sur dix
- motor (0.7, 1);// tourne à gauche
- wait(rand()*3);// pendant un moment
- motor (1, 1); // puis tout droit
- }
- lastPos = position;
- wait(1); //attend un moment
- }
- }
- else
- { // si cible à proximité
- turn(direction(target.position));
- fire(target.position); // tourne vers la cible
- motor(1,1); // avance
- wait(1.5); // pendant 1.5 s
- }
- }
-}
-
+extern void object::Attack( )
+{
+ int list[], i; // liste des objets cherchés
+ object target; // info sur la cible
+ point center; // coordonnées du centre de la zone
+ point lastPos; // dernière position (pr test si bloquée)
+ float distCent; // rayon de la zone
+ float r; // valeur aléatoire
+ float stdHight; // Altitude du point de départ
+ float tolHight; // tolérance acceptée par rapport à stdHight
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+
+ center.x = cmdline(0); // prend les coordonnée
+ center.y = cmdline(1); // du centre de la zone
+ center.z = 0; // Ã patrouiller
+ distCent = cmdline(2); // rayon de la zone
+ stdHight = topo(position);//L'altitude dont il ne faut pas s'écarter
+ tolHight = cmdline(3); // tolérance admise
+
+ lastPos = position; // initialise
+ motor(1,1); // en avant toute
+ while ( true ) // répère à l'infini
+ {
+ target = radar(list, 0, 360, 0, 40);
+ if (target == null
+ or topo(position)-stdHight > tolHight
+ or stdHight-topo(position) > tolHight)//pas de cible à proximité
+ { // ou s'écarte trop de l'altitude de départ
+ if (distance2d(position, center) > distCent
+ or abs(topo(position)-stdHight) > tolHight)
+ { // si la fourmi est en dehors de la zone
+ motor(0, 0); //s'arrête
+ wait(0.5); //marque un arrêt
+ motor (-0.5, -0.5);//recule lentement
+ wait (1.5); //attend qu'ait reculé
+ turn(direction(center));
+ motor (1, 1); //puis en avant toute
+ do
+ {
+ lastPos = position;
+ wait(1); //tant que pas dans la zone
+ if (distance2d(lastPos, position) < 0.2)
+ { //si elle est bloquée par obstacle
+ turn(rand()*360-180);
+ motor(1,1);
+ wait(1);
+ turn(direction(center));
+ }
+ }
+ while (distance2d(position, center) > distCent or
+ abs(topo(position)-stdHight) > tolHight);
+ }
+ else
+ { //si elle est bien dans la zone
+ if (distance2d(lastPos, position) < 0.2)
+ { //si elle est bloquée par obstacle
+ turn(rand()*360-180);
+ motor(1,1);
+ wait(1);
+ }
+ r = rand();
+ if (r > 0.6)
+ { //dans un cas sur dix
+ motor (1, 0.7);// tourne à droite
+ wait(rand()*3);// pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ if (r < 0.4)
+ { //dans un cas sur dix
+ motor (0.7, 1);// tourne à gauche
+ wait(rand()*3);// pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ lastPos = position;
+ wait(1); //attend un moment
+ }
+ }
+ else
+ { // si cible à proximité
+ turn(direction(target.position));
+ fire(target.position); // tourne vers la cible
+ motor(1,1); // avance
+ wait(1.5); // pendant 1.5 s
+ }
+ }
+}
+
diff --git a/ai/anticp.txt b/ai/anticp.txt
index ce4caf2a..c990f571 100644
--- a/ai/anticp.txt
+++ b/ai/anticp.txt
@@ -1,216 +1,216 @@
-extern void object::Attack( )
-{
- int list[], i; // liste des objets cherchés
- object target; // info sur la cible
- point center; // coordonnées du centre de la zone
- point lastPos; // dernière position (pr test si bloquée)
- float distCent; // rayon de la zone
- float r; // valeur aléatoire
- float distTar; // distance de la cible
- float dirTar; // direction de la cible
- float mp; // puissance moteur
- float tangle; // angle d'esquive en cas d'eau
- boolean ifmove; // si on avance en tirant ou pas
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
-
- center.x = cmdline(0); // prend les coordonnée
- center.y = cmdline(1); // du centre de la zone
- center.z = 0; // à patrouiller
- distCent = cmdline(2); // rayon de la zone
-
- lastPos = position; // initialise
- motor(1,1); // en avant toute
- while (radar(list, 0, 360, 0, 40) == null) // répète jusqu'à contact
- {
- target = radar(list, 0, 360, 0, 40);
- if (target == null or topo(position)<0)// pas de cible à proximité
- { // ou pieds dans l'eau
- if (distance2d(position, center) > distCent or topo(position)<0)
- { // si la fourmi est en dehors de la zone
- motor(0, 0); //s'arrête
- wait(0.5); //marque un arrêt
- motor (-0.5, -0.5);//recule lentement
- wait (1.5); //attend qu'ait reculé
- if (direction(center)>0) motor (0,1); else motor (1,0);
- do wait(0.2); //tourne vers le centre
- while (direction(center) > 20
- or direction(center) < -20);
- //tant que pas orienté vers le centre
- motor (1, 1); //puis en avant toute
- do
- {
- lastPos = position;
- wait(0.5); //tant que pas dans la zone
- if (distance2d(lastPos, position) < 0.2)
- { //si elle est bloquée par obstacle
- turn(rand()*360-180);
- motor(1,1);
- wait(1);
- turn(direction(center));
- }
- }
- while (distance2d(position, center) > distCent or topo(position)<0);
- }
- else
- { //si elle est bien dans la zone
- if (distance2d(lastPos, position) < 0.2)
- { //si elle est bloquée par obstacle
- turn(rand()*360-180);
- motor(1,1);
- wait(1);
- }
- r = rand();
- if (r > 0.9)
- { //dans un cas sur dix
- motor (1, 0.5);// tourne à droite
- wait(rand()*3);// pendant un moment
- motor (1, 1); // puis tout droit
- }
- if (r < 0.1)
- { //dans un cas sur dix
- motor (0.5, 1);// tourne à gauche
- wait(rand()*3);// pendant un moment
- motor (1, 1); // puis tout droit
- }
- lastPos = position;
- wait(0.2); //attend un moment
- }
- }
- else
- { // si cible à proximité
- turn(direction(target.position));
- fire(target.position); // tourne vers la cible
- fire(target.position); // et tire deux fois
- motor(1,1); // avance
- wait(1.5); // pendant 1.5 s
- }
- }
-
- //a eu un contact avec l'astronaute
- lastPos = position; // initialise
- ifmove = true;
- while ( true ) // répète à l'infini
- {
- target = radar(list);
- dirTar = direction(target.position);
- distTar = distance(position, target.position);
- if (target != null)
- {
- if(distTar<40)
- {
- turn(dirTar);
- fire(target.position);
- target = radar(list);
- turn(direction(target.position));
- for(int i=0; i<3; i=i+1)
- {
- if(topo(position)<1.5 or distance(position, target.position) < 8 or !ifmove)
- {
- ifmove = false;
- }
- else
- {
- lastPos = position;
- motor(1,1);
- wait(1);
- if (distance(position, lastPos) < 0.2) ifmove = false;
- }
- }
- }
- else
- {
- ifmove = true;
- if (distance(lastPos, position) < 0.2)
- { //si elle est bloquée par obstacle
- lastPos = position;
- turn(rand()*360-180);
- motor(1,1);
- wait(1);
- target = radar(list);
- turn(direction(target.position));
- }
- else
- {
- lastPos = position;
- if (topo(position)>1.5)
- {
- mp = direction(target.position)/180;
- //if (mp>1) mp = 1;
- //if (mp<-1) mp = -1;
- if (mp>0)
- {
- motor(1-mp,1);
- }
- else
- {
- motor(1,1+mp);
- }
- wait(1);
- }
- else
- {
- motor (-0.5, -0.5);
- wait(1.5);
- target = radar(list);
- turn(direction(target.position));
- tangle = 0;
- do
- {
- tangle = tangle + 22.5;
- if (tp(tangle) == 0) break;
- tangle = -tangle;
- if (tp(tangle) == 0) break;
- tangle = -tangle;
- if (tangle > 180) break;
- }
- while (true);
- turn(tangle);
- motor(1,1);
- wait(2);
- }
- }
- }
- }
- else
- {
- wait(1);
- }
- }
-}
-
-int object::tp(float angle)
-{
- point tpoint;
-
- tpoint.x = position.x + cos(orientation + angle)*10;
- tpoint.y = position.y + sin(orientation + angle)*10;
- tpoint.z = 0;
- if (topo(tpoint) < 2) return(1); else return(0);
-}
-
+extern void object::Attack( )
+{
+ int list[], i; // liste des objets cherchés
+ object target; // info sur la cible
+ point center; // coordonnées du centre de la zone
+ point lastPos; // dernière position (pr test si bloquée)
+ float distCent; // rayon de la zone
+ float r; // valeur aléatoire
+ float distTar; // distance de la cible
+ float dirTar; // direction de la cible
+ float mp; // puissance moteur
+ float tangle; // angle d'esquive en cas d'eau
+ boolean ifmove; // si on avance en tirant ou pas
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+
+ center.x = cmdline(0); // prend les coordonnée
+ center.y = cmdline(1); // du centre de la zone
+ center.z = 0; // Ã patrouiller
+ distCent = cmdline(2); // rayon de la zone
+
+ lastPos = position; // initialise
+ motor(1,1); // en avant toute
+ while (radar(list, 0, 360, 0, 40) == null) // répète jusqu'à contact
+ {
+ target = radar(list, 0, 360, 0, 40);
+ if (target == null or topo(position)<0)// pas de cible à proximité
+ { // ou pieds dans l'eau
+ if (distance2d(position, center) > distCent or topo(position)<0)
+ { // si la fourmi est en dehors de la zone
+ motor(0, 0); //s'arrête
+ wait(0.5); //marque un arrêt
+ motor (-0.5, -0.5);//recule lentement
+ wait (1.5); //attend qu'ait reculé
+ if (direction(center)>0) motor (0,1); else motor (1,0);
+ do wait(0.2); //tourne vers le centre
+ while (direction(center) > 20
+ or direction(center) < -20);
+ //tant que pas orienté vers le centre
+ motor (1, 1); //puis en avant toute
+ do
+ {
+ lastPos = position;
+ wait(0.5); //tant que pas dans la zone
+ if (distance2d(lastPos, position) < 0.2)
+ { //si elle est bloquée par obstacle
+ turn(rand()*360-180);
+ motor(1,1);
+ wait(1);
+ turn(direction(center));
+ }
+ }
+ while (distance2d(position, center) > distCent or topo(position)<0);
+ }
+ else
+ { //si elle est bien dans la zone
+ if (distance2d(lastPos, position) < 0.2)
+ { //si elle est bloquée par obstacle
+ turn(rand()*360-180);
+ motor(1,1);
+ wait(1);
+ }
+ r = rand();
+ if (r > 0.9)
+ { //dans un cas sur dix
+ motor (1, 0.5);// tourne à droite
+ wait(rand()*3);// pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ if (r < 0.1)
+ { //dans un cas sur dix
+ motor (0.5, 1);// tourne à gauche
+ wait(rand()*3);// pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ lastPos = position;
+ wait(0.2); //attend un moment
+ }
+ }
+ else
+ { // si cible à proximité
+ turn(direction(target.position));
+ fire(target.position); // tourne vers la cible
+ fire(target.position); // et tire deux fois
+ motor(1,1); // avance
+ wait(1.5); // pendant 1.5 s
+ }
+ }
+
+ //a eu un contact avec l'astronaute
+ lastPos = position; // initialise
+ ifmove = true;
+ while ( true ) // répète à l'infini
+ {
+ target = radar(list);
+ dirTar = direction(target.position);
+ distTar = distance(position, target.position);
+ if (target != null)
+ {
+ if(distTar<40)
+ {
+ turn(dirTar);
+ fire(target.position);
+ target = radar(list);
+ turn(direction(target.position));
+ for(int i=0; i<3; i=i+1)
+ {
+ if(topo(position)<1.5 or distance(position, target.position) < 8 or !ifmove)
+ {
+ ifmove = false;
+ }
+ else
+ {
+ lastPos = position;
+ motor(1,1);
+ wait(1);
+ if (distance(position, lastPos) < 0.2) ifmove = false;
+ }
+ }
+ }
+ else
+ {
+ ifmove = true;
+ if (distance(lastPos, position) < 0.2)
+ { //si elle est bloquée par obstacle
+ lastPos = position;
+ turn(rand()*360-180);
+ motor(1,1);
+ wait(1);
+ target = radar(list);
+ turn(direction(target.position));
+ }
+ else
+ {
+ lastPos = position;
+ if (topo(position)>1.5)
+ {
+ mp = direction(target.position)/180;
+ //if (mp>1) mp = 1;
+ //if (mp<-1) mp = -1;
+ if (mp>0)
+ {
+ motor(1-mp,1);
+ }
+ else
+ {
+ motor(1,1+mp);
+ }
+ wait(1);
+ }
+ else
+ {
+ motor (-0.5, -0.5);
+ wait(1.5);
+ target = radar(list);
+ turn(direction(target.position));
+ tangle = 0;
+ do
+ {
+ tangle = tangle + 22.5;
+ if (tp(tangle) == 0) break;
+ tangle = -tangle;
+ if (tp(tangle) == 0) break;
+ tangle = -tangle;
+ if (tangle > 180) break;
+ }
+ while (true);
+ turn(tangle);
+ motor(1,1);
+ wait(2);
+ }
+ }
+ }
+ }
+ else
+ {
+ wait(1);
+ }
+ }
+}
+
+int object::tp(float angle)
+{
+ point tpoint;
+
+ tpoint.x = position.x + cos(orientation + angle)*10;
+ tpoint.y = position.y + sin(orientation + angle)*10;
+ tpoint.z = 0;
+ if (topo(tpoint) < 2) return(1); else return(0);
+}
+
diff --git a/ai/antics.txt b/ai/antics.txt
index a6b82563..4d038605 100644
--- a/ai/antics.txt
+++ b/ai/antics.txt
@@ -1,103 +1,103 @@
-extern void object::Attack( )
-{
- int list[], i; // liste des objets cherchés
- object target; // info sur la cible
- point center; // coordonnées du centre de la zone
- point lastPos; // dernière position (pr test si bloquée)
- float distCent; // rayon de la zone
- float r; // valeur aléatoire
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
-
- center.x = cmdline(0); // prend les coordonnée
- center.y = cmdline(1); // du centre de la zone
- center.z = 0; // à patrouiller
- distCent = cmdline(2); // rayon de la zone
-
- lastPos = position; // initialise
- motor(1,1); // en avant toute
- while ( true ) // répère à l'infini
- {
- target = radar(list, 0, 360, 0, 40);
- if (target == null or topo(position)<0)// pas de cible à proximité
- { // ou pieds dans l'eau
- if (distance2d(position, center) > distCent or topo(position)<0)
- { // si la fourmi est en dehors de la zone
- motor(0, 0); //s'arrête
- wait(0.5); //marque un arrêt
- motor (-0.5, -0.5);//recule lentement
- wait (1.5); //attend qu'ait reculé
- turn(direction(center));
- motor (1, 1); //puis en avant toute
- do
- {
- lastPos = position;
- wait(1); //tant que pas dans la zone
- if (distance2d(lastPos, position) < 0.2)
- { //si elle est bloquée par obstacle
- turn(rand()*360-180);
- motor(1,1);
- wait(1);
- turn(direction(center));
- }
- }
- while (distance2d(position, center) > distCent or topo(position)<0);
- }
- else
- { //si elle est bien dans la zone
- if (distance2d(lastPos, position) < 0.2)
- { //si elle est bloquée par obstacle
- turn(rand()*360-180);
- motor(1,1);
- wait(1);
- }
- r = rand();
- if (r > 0.6)
- { //dans un cas sur dix
- motor (1, 0.5);// tourne à droite
- wait(rand()*3);// pendant un moment
- motor (1, 1); // puis tout droit
- }
- if (r < 0.4)
- { //dans un cas sur dix
- motor (0.5, 1);// tourne à gauche
- wait(rand()*3);// pendant un moment
- motor (1, 1); // puis tout droit
- }
- lastPos = position;
- wait(1); //attend un moment
- }
- }
- else
- { // si cible à proximité
- turn(direction(target.position));
- fire(target.position); // tourne vers la cible
- }
- }
-}
-
+extern void object::Attack( )
+{
+ int list[], i; // liste des objets cherchés
+ object target; // info sur la cible
+ point center; // coordonnées du centre de la zone
+ point lastPos; // dernière position (pr test si bloquée)
+ float distCent; // rayon de la zone
+ float r; // valeur aléatoire
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+
+ center.x = cmdline(0); // prend les coordonnée
+ center.y = cmdline(1); // du centre de la zone
+ center.z = 0; // Ã patrouiller
+ distCent = cmdline(2); // rayon de la zone
+
+ lastPos = position; // initialise
+ motor(1,1); // en avant toute
+ while ( true ) // répère à l'infini
+ {
+ target = radar(list, 0, 360, 0, 40);
+ if (target == null or topo(position)<0)// pas de cible à proximité
+ { // ou pieds dans l'eau
+ if (distance2d(position, center) > distCent or topo(position)<0)
+ { // si la fourmi est en dehors de la zone
+ motor(0, 0); //s'arrête
+ wait(0.5); //marque un arrêt
+ motor (-0.5, -0.5);//recule lentement
+ wait (1.5); //attend qu'ait reculé
+ turn(direction(center));
+ motor (1, 1); //puis en avant toute
+ do
+ {
+ lastPos = position;
+ wait(1); //tant que pas dans la zone
+ if (distance2d(lastPos, position) < 0.2)
+ { //si elle est bloquée par obstacle
+ turn(rand()*360-180);
+ motor(1,1);
+ wait(1);
+ turn(direction(center));
+ }
+ }
+ while (distance2d(position, center) > distCent or topo(position)<0);
+ }
+ else
+ { //si elle est bien dans la zone
+ if (distance2d(lastPos, position) < 0.2)
+ { //si elle est bloquée par obstacle
+ turn(rand()*360-180);
+ motor(1,1);
+ wait(1);
+ }
+ r = rand();
+ if (r > 0.6)
+ { //dans un cas sur dix
+ motor (1, 0.5);// tourne à droite
+ wait(rand()*3);// pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ if (r < 0.4)
+ { //dans un cas sur dix
+ motor (0.5, 1);// tourne à gauche
+ wait(rand()*3);// pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ lastPos = position;
+ wait(1); //attend un moment
+ }
+ }
+ else
+ { // si cible à proximité
+ turn(direction(target.position));
+ fire(target.position); // tourne vers la cible
+ }
+ }
+}
+
diff --git a/ai/antict.txt b/ai/antict.txt
index 86a75d99..be1d53b3 100644
--- a/ai/antict.txt
+++ b/ai/antict.txt
@@ -1,105 +1,105 @@
-extern void object::Attack( )
-{
- int list[], i; // liste des objets cherchés
- object target; // info sur la cible
- point center; // coordonnées du centre de la zone
- point lastPos; // dernière position (pr test si bloquée)
- float distCent; // rayon de la zone
- float r; // valeur aléatoire
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
-
- center.x = cmdline(0); // prend les coordonnée
- center.y = cmdline(1); // du centre de la zone
- center.z = 0; // à patrouiller
- distCent = cmdline(2); // rayon de la zone
-
- lastPos = position; // initialise
- motor(1,1); // en avant toute
- while ( true ) // répète à l'infini
- {
- target = radar(list, 0, 360, 0, 40);
- if (target == null or topo(position)<0)// pas de cible à proximité
- { // ou pieds dans l'eau
- if (distance2d(position, center) > distCent or topo(position)<0)
- { // si la fourmi est en dehors de la zone
- motor(0, 0); //s'arrête
- wait(0.5); //marque un arrêt
- motor (-0.5, -0.5);//recule lentement
- wait (1.5); //attend qu'ait reculé
- turn(direction(center));
- motor (1, 1); //puis en avant toute
- do
- {
- lastPos = position;
- wait(0.5); //tant que pas dans la zone
- if (distance2d(lastPos, position) < 0.2)
- { //si elle est bloquée par obstacle
- turn(rand()*360-180);
- motor(1,1);
- wait(1);
- turn(direction(center));
- }
- }
- while (distance2d(position, center) > distCent or topo(position)<0);
- }
- else
- { //si elle est bien dans la zone
- if (distance2d(lastPos, position) < 0.2)
- { //si elle est bloquée par obstacle
- turn(rand()*360-180);
- motor(1,1);
- wait(1);
- }
- r = rand();
- if (r > 0.6)
- { //dans un cas sur dix
- motor (1, 0.7);// tourne à droite
- wait(rand()*3);// pendant un moment
- motor (1, 1); // puis tout droit
- }
- if (r < 0.4)
- { //dans un cas sur dix
- motor (0.7, 1);// tourne à gauche
- wait(rand()*3);// pendant un moment
- motor (1, 1); // puis tout droit
- }
- lastPos = position;
- wait(1); //attend un moment
- }
- }
- else
- { // si cible à proximité
- turn(direction(target.position));
- fire(target.position); // et tire deux fois
- motor(1,1); // avance
- wait(1.5); // pendant 1.5 s
- }
- }
-}
-
+extern void object::Attack( )
+{
+ int list[], i; // liste des objets cherchés
+ object target; // info sur la cible
+ point center; // coordonnées du centre de la zone
+ point lastPos; // dernière position (pr test si bloquée)
+ float distCent; // rayon de la zone
+ float r; // valeur aléatoire
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+
+ center.x = cmdline(0); // prend les coordonnée
+ center.y = cmdline(1); // du centre de la zone
+ center.z = 0; // Ã patrouiller
+ distCent = cmdline(2); // rayon de la zone
+
+ lastPos = position; // initialise
+ motor(1,1); // en avant toute
+ while ( true ) // répète à l'infini
+ {
+ target = radar(list, 0, 360, 0, 40);
+ if (target == null or topo(position)<0)// pas de cible à proximité
+ { // ou pieds dans l'eau
+ if (distance2d(position, center) > distCent or topo(position)<0)
+ { // si la fourmi est en dehors de la zone
+ motor(0, 0); //s'arrête
+ wait(0.5); //marque un arrêt
+ motor (-0.5, -0.5);//recule lentement
+ wait (1.5); //attend qu'ait reculé
+ turn(direction(center));
+ motor (1, 1); //puis en avant toute
+ do
+ {
+ lastPos = position;
+ wait(0.5); //tant que pas dans la zone
+ if (distance2d(lastPos, position) < 0.2)
+ { //si elle est bloquée par obstacle
+ turn(rand()*360-180);
+ motor(1,1);
+ wait(1);
+ turn(direction(center));
+ }
+ }
+ while (distance2d(position, center) > distCent or topo(position)<0);
+ }
+ else
+ { //si elle est bien dans la zone
+ if (distance2d(lastPos, position) < 0.2)
+ { //si elle est bloquée par obstacle
+ turn(rand()*360-180);
+ motor(1,1);
+ wait(1);
+ }
+ r = rand();
+ if (r > 0.6)
+ { //dans un cas sur dix
+ motor (1, 0.7);// tourne à droite
+ wait(rand()*3);// pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ if (r < 0.4)
+ { //dans un cas sur dix
+ motor (0.7, 1);// tourne à gauche
+ wait(rand()*3);// pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ lastPos = position;
+ wait(1); //attend un moment
+ }
+ }
+ else
+ { // si cible à proximité
+ turn(direction(target.position));
+ fire(target.position); // et tire deux fois
+ motor(1,1); // avance
+ wait(1.5); // pendant 1.5 s
+ }
+ }
+}
+
diff --git a/ai/anticv.txt b/ai/anticv.txt
index 3c4236bd..468197b7 100644
--- a/ai/anticv.txt
+++ b/ai/anticv.txt
@@ -1,106 +1,106 @@
-extern void object::Attack( )
-{
- int list[], i; // liste des objets cherchés
- object target; // info sur la cible
- point center; // coordonnées du centre de la zone
- point lastPos; // dernière position (pr test si bloquée)
- float distCent; // rayon de la zone
- float r; // valeur aléatoire
- float mp; // vitesse maxi
- float minAlt; // altitude minimale (danger lave!)
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
-
- center.x = cmdline(0); // prend les coordonnée
- center.y = cmdline(1); // du centre de la zone
- center.z = 0; // à patrouiller
- distCent = cmdline(2); // rayon de la zone
- mp = 0.4;
- minAlt = cmdline(3);
-
- lastPos = position; // initialise
- motor(mp, mp); // en avant toute
- while ( true ) // répère à l'infini
- {
- target = radar(list, 0, 360, 0, 40);
- if (target == null or topo(position) distCent or topo(position) distCent or topo(position) 0.6)
- { //dans un cas sur dix
- motor (mp, mp*0.5);// tourne à droite
- wait(rand()*2);// pendant un moment
- motor (mp, mp); // puis tout droit
- }
- if (r < 0.4)
- { //dans un cas sur dix
- motor (mp*0.5, mp);// tourne à gauche
- wait(rand()*2);// pendant un moment
- motor (mp, mp); // puis tout droit
- }
- lastPos = position;
- if(r>0.4 and r<0.6) wait(1);//attend un moment
- }
- }
- else
- { // si cible à proximité
- turn(direction(target.position));
- fire(target.position); // tourne vers la cible
- }
- }
-}
+extern void object::Attack( )
+{
+ int list[], i; // liste des objets cherchés
+ object target; // info sur la cible
+ point center; // coordonnées du centre de la zone
+ point lastPos; // dernière position (pr test si bloquée)
+ float distCent; // rayon de la zone
+ float r; // valeur aléatoire
+ float mp; // vitesse maxi
+ float minAlt; // altitude minimale (danger lave!)
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+
+ center.x = cmdline(0); // prend les coordonnée
+ center.y = cmdline(1); // du centre de la zone
+ center.z = 0; // Ã patrouiller
+ distCent = cmdline(2); // rayon de la zone
+ mp = 0.4;
+ minAlt = cmdline(3);
+
+ lastPos = position; // initialise
+ motor(mp, mp); // en avant toute
+ while ( true ) // répère à l'infini
+ {
+ target = radar(list, 0, 360, 0, 40);
+ if (target == null or topo(position) distCent or topo(position) distCent or topo(position) 0.6)
+ { //dans un cas sur dix
+ motor (mp, mp*0.5);// tourne à droite
+ wait(rand()*2);// pendant un moment
+ motor (mp, mp); // puis tout droit
+ }
+ if (r < 0.4)
+ { //dans un cas sur dix
+ motor (mp*0.5, mp);// tourne à gauche
+ wait(rand()*2);// pendant un moment
+ motor (mp, mp); // puis tout droit
+ }
+ lastPos = position;
+ if(r>0.4 and r<0.6) wait(1);//attend un moment
+ }
+ }
+ else
+ { // si cible à proximité
+ turn(direction(target.position));
+ fire(target.position); // tourne vers la cible
+ }
+ }
+}
diff --git a/ai/antsurp1.txt b/ai/antsurp1.txt
index e0e98aa9..4d74b696 100644
--- a/ai/antsurp1.txt
+++ b/ai/antsurp1.txt
@@ -1,48 +1,48 @@
-extern void object::Attack( )
-{
- int list[], i; // liste des objets cherchés
- object target; // info sur la cible
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
-
- while (true)
- {
- while (radar(list, 0, 360, 0, 20) == null) wait(1);
- move(5);
- target = radar(list, 0, 360, 0, 40);
- while (target != null)
- {
- fire(target.position);
- target = radar(list, 0, 360, 0, 40);
- }
- turn(90 - orientation);
- move(5);
- turn(180);
- }
-}
-
+extern void object::Attack( )
+{
+ int list[], i; // liste des objets cherchés
+ object target; // info sur la cible
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+
+ while (true)
+ {
+ while (radar(list, 0, 360, 0, 20) == null) wait(1);
+ move(5);
+ target = radar(list, 0, 360, 0, 40);
+ while (target != null)
+ {
+ fire(target.position);
+ target = radar(list, 0, 360, 0, 40);
+ }
+ turn(90 - orientation);
+ move(5);
+ turn(180);
+ }
+}
+
diff --git a/ai/antsurp2.txt b/ai/antsurp2.txt
index 13925404..8c70be1b 100644
--- a/ai/antsurp2.txt
+++ b/ai/antsurp2.txt
@@ -1,40 +1,40 @@
-extern void object::Attack( )
-{
- int list[], i; // liste des objets cherchés
- object target; // info sur la cible
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
-
- while (true)
- {
- while (radar(list, 0, 360, 0, 40) == null) wait(1);
- target = radar(list, 0, 360, 0, 40);
- fire(target.position);
- }
-}
-
+extern void object::Attack( )
+{
+ int list[], i; // liste des objets cherchés
+ object target; // info sur la cible
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+
+ while (true)
+ {
+ while (radar(list, 0, 360, 0, 40) == null) wait(1);
+ target = radar(list, 0, 360, 0, 40);
+ fire(target.position);
+ }
+}
+
diff --git a/ai/antt41.txt b/ai/antt41.txt
index ddc39722..e59520d9 100644
--- a/ai/antt41.txt
+++ b/ai/antt41.txt
@@ -1,137 +1,137 @@
-extern void object::Attack( )
-{
- int list[], i; // liste des objets cherchés
- object target; // info sur la cible
- object queen; // info sur la reine
- point center; // coordonnées du centre de la zone
- float distCent; // rayon de la zone
- float r; // valeur aléatoire
- int ifTarget; // si on a trouvé une cible et quel genre
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
-
- center.x = -65; // prend les coordonnée
- center.y = 255; // du centre de la zone
- center.z = 0; // à patrouiller
- distCent = 140; // rayon de la zone
-
- motor(1,1); // en avant toute
- ifTarget = 0; // pas de cible précise
- while ( true ) // répète à l'infini
- {
- queen = radar(AlienQueen);
- if (rand() < 0.2 and queen != null) ifTarget = 2;//on retourne vers la reine
- if (queen == null and ifTarget == 2) ifTarget = 0;
- target = radar(list, 0, 360, 0, 40);
- if (target != null)
- {
- shoot(target.position);
- }
- else
- {
- if (ifTarget == 2)
- {
- if(distance2d(position, queen.position)>8) head(queen.position);
- else ifTarget = 0;
- }
- else Random(center, distCent);
- }
- }
-}
-
-void object::head(point tarPos)
-{
- float mp;// puissance du moteur
- mp = direction(tarPos)/180;
- //if (mp>1) mp = 1;
- //if (mp<-1) mp = -1;
- if (mp>0)
- {
- motor(1-mp,1);
- }
- else
- {
- motor(1,1+mp);
- }
- wait(1);
-}
-
-void object::Random(point center, float distCent)
-{
- if (distance2d(position, center) > distCent or topo(position)<2)
- {
- HorsZone(center, distCent);
- }
- else
- {
- DansZone();
- }
-}
-
-void object::HorsZone(point center, float distCent)
-{ // si la fourmi est en dehors de la zone
- motor(0, 0); //s'arrête
- wait(0.5); //marque un arrêt
- motor (-0.5, -0.5);//recule lentement
- wait (1.5); //attend qu'ait reculé
- turn(direction(center));
- motor (1, 1); //puis en avant toute
- do
- {
- wait(1); //tant que pas dans la zone
- }
- while (distance2d(position, center) > distCent or topo(position)<2);
-}
-
-void object::DansZone()
-{ //si elle est bien dans la zone
- float r = rand();
- if (r > 0.6)
- { //dans un cas sur dix
- motor (1, 0.7); // tourne à droite
- wait(rand()*3); // pendant un moment
- motor (1, 1); // puis tout droit
- }
- if (r < 0.4)
- { //dans un cas sur dix
- motor (0.7, 1); // tourne à gauche
- wait(rand()*3); // pendant un moment
- motor (1, 1); // puis tout droit
- }
- motor(1,1);
- wait(1); // attend un moment
-}
-
-void object::shoot(point tarPos)
-{ // si cible à proximité
- turn(direction(tarPos));
- fire(tarPos); // tourne vers la cible
- fire(tarPos); // et tire deux fois
- motor(1,1); // avance
- wait(1.5); // pendant 1.5 s
-}
+extern void object::Attack( )
+{
+ int list[], i; // liste des objets cherchés
+ object target; // info sur la cible
+ object queen; // info sur la reine
+ point center; // coordonnées du centre de la zone
+ float distCent; // rayon de la zone
+ float r; // valeur aléatoire
+ int ifTarget; // si on a trouvé une cible et quel genre
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+
+ center.x = -65; // prend les coordonnée
+ center.y = 255; // du centre de la zone
+ center.z = 0; // Ã patrouiller
+ distCent = 140; // rayon de la zone
+
+ motor(1,1); // en avant toute
+ ifTarget = 0; // pas de cible précise
+ while ( true ) // répète à l'infini
+ {
+ queen = radar(AlienQueen);
+ if (rand() < 0.2 and queen != null) ifTarget = 2;//on retourne vers la reine
+ if (queen == null and ifTarget == 2) ifTarget = 0;
+ target = radar(list, 0, 360, 0, 40);
+ if (target != null)
+ {
+ shoot(target.position);
+ }
+ else
+ {
+ if (ifTarget == 2)
+ {
+ if(distance2d(position, queen.position)>8) head(queen.position);
+ else ifTarget = 0;
+ }
+ else Random(center, distCent);
+ }
+ }
+}
+
+void object::head(point tarPos)
+{
+ float mp;// puissance du moteur
+ mp = direction(tarPos)/180;
+ //if (mp>1) mp = 1;
+ //if (mp<-1) mp = -1;
+ if (mp>0)
+ {
+ motor(1-mp,1);
+ }
+ else
+ {
+ motor(1,1+mp);
+ }
+ wait(1);
+}
+
+void object::Random(point center, float distCent)
+{
+ if (distance2d(position, center) > distCent or topo(position)<2)
+ {
+ HorsZone(center, distCent);
+ }
+ else
+ {
+ DansZone();
+ }
+}
+
+void object::HorsZone(point center, float distCent)
+{ // si la fourmi est en dehors de la zone
+ motor(0, 0); //s'arrête
+ wait(0.5); //marque un arrêt
+ motor (-0.5, -0.5);//recule lentement
+ wait (1.5); //attend qu'ait reculé
+ turn(direction(center));
+ motor (1, 1); //puis en avant toute
+ do
+ {
+ wait(1); //tant que pas dans la zone
+ }
+ while (distance2d(position, center) > distCent or topo(position)<2);
+}
+
+void object::DansZone()
+{ //si elle est bien dans la zone
+ float r = rand();
+ if (r > 0.6)
+ { //dans un cas sur dix
+ motor (1, 0.7); // tourne à droite
+ wait(rand()*3); // pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ if (r < 0.4)
+ { //dans un cas sur dix
+ motor (0.7, 1); // tourne à gauche
+ wait(rand()*3); // pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ motor(1,1);
+ wait(1); // attend un moment
+}
+
+void object::shoot(point tarPos)
+{ // si cible à proximité
+ turn(direction(tarPos));
+ fire(tarPos); // tourne vers la cible
+ fire(tarPos); // et tire deux fois
+ motor(1,1); // avance
+ wait(1.5); // pendant 1.5 s
+}
diff --git a/ai/antt42.txt b/ai/antt42.txt
index e05d061d..6c6f5cbe 100644
--- a/ai/antt42.txt
+++ b/ai/antt42.txt
@@ -1,132 +1,132 @@
-extern void object::Attack( )
-{
- int list[], i; // liste des objets cherchés
- object target; // info sur la cible
- point center; // coordonnées du centre de la zone
- float distCent; // rayon de la zone
- float r; // valeur aléatoire
- int ifTarget; // si on a trouvé une cible et quel genre
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
-
- center.x = -65; // prend les coordonnée
- center.y = 255; // du centre de la zone
- center.z = 0; // à patrouiller
- distCent = 140; // rayon de la zone
-
- motor(1,1); // en avant toute
- ifTarget = 0; // pas de cible précise
- while ( true ) // répète à l'infini
- {
- target = radar(list);
- if(target.position.y > 65)
- {
- if(distance2d(position, target.position)<40)
- {
- shoot(target.position);
- }
- else
- {
- head(target.position);
- }
- }
- else Random(center, distCent);
- }
-}
-
-void object::head(point tarPos)
-{
- float mp;// puissance du moteur
- mp = direction(tarPos)/180;
- //if (mp>1) mp = 1;
- //if (mp<-1) mp = -1;
- if (mp>0)
- {
- motor(1-mp,1);
- }
- else
- {
- motor(1,1+mp);
- }
- wait(1);
-}
-
-void object::Random(point center, float distCent)
-{
- if (distance2d(position, center) > distCent or topo(position)<2)
- {
- HorsZone(center, distCent);
- }
- else
- {
- DansZone();
- }
-}
-
-void object::HorsZone(point center, float distCent)
-{ // si la fourmi est en dehors de la zone
- motor(0, 0); //s'arrête
- wait(0.5); //marque un arrêt
- motor (-0.5, -0.5);//recule lentement
- wait (1.5); //attend qu'ait reculé
- turn(direction(center));
- motor (1, 1); //puis en avant toute
- do
- {
- wait(1); //tant que pas dans la zone
- }
- while (distance2d(position, center) > distCent or topo(position)<2);
-}
-
-void object::DansZone()
-{ //si elle est bien dans la zone
- float r = rand();
- if (r > 0.8)
- { //dans un cas sur dix
- motor (1, 0.8); // tourne à droite
- wait(rand()*2); // pendant un moment
- motor (1, 1); // puis tout droit
- }
- if (r < 0.2)
- { //dans un cas sur dix
- motor (0.8, 1); // tourne à gauche
- wait(rand()*2); // pendant un moment
- motor (1, 1); // puis tout droit
- }
- motor(1,1);
- wait(1); //attend un moment
-}
-
-void object::shoot(point tarPos)
-{ // si cible à proximité
- turn(direction(tarPos));
- fire(tarPos); // tourne vers la cible
- fire(tarPos); // et tire deux fois
- motor(1,1); // avance
- wait(1.5); // pendant 1.5 s
-}
+extern void object::Attack( )
+{
+ int list[], i; // liste des objets cherchés
+ object target; // info sur la cible
+ point center; // coordonnées du centre de la zone
+ float distCent; // rayon de la zone
+ float r; // valeur aléatoire
+ int ifTarget; // si on a trouvé une cible et quel genre
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+
+ center.x = -65; // prend les coordonnée
+ center.y = 255; // du centre de la zone
+ center.z = 0; // Ã patrouiller
+ distCent = 140; // rayon de la zone
+
+ motor(1,1); // en avant toute
+ ifTarget = 0; // pas de cible précise
+ while ( true ) // répète à l'infini
+ {
+ target = radar(list);
+ if(target.position.y > 65)
+ {
+ if(distance2d(position, target.position)<40)
+ {
+ shoot(target.position);
+ }
+ else
+ {
+ head(target.position);
+ }
+ }
+ else Random(center, distCent);
+ }
+}
+
+void object::head(point tarPos)
+{
+ float mp;// puissance du moteur
+ mp = direction(tarPos)/180;
+ //if (mp>1) mp = 1;
+ //if (mp<-1) mp = -1;
+ if (mp>0)
+ {
+ motor(1-mp,1);
+ }
+ else
+ {
+ motor(1,1+mp);
+ }
+ wait(1);
+}
+
+void object::Random(point center, float distCent)
+{
+ if (distance2d(position, center) > distCent or topo(position)<2)
+ {
+ HorsZone(center, distCent);
+ }
+ else
+ {
+ DansZone();
+ }
+}
+
+void object::HorsZone(point center, float distCent)
+{ // si la fourmi est en dehors de la zone
+ motor(0, 0); //s'arrête
+ wait(0.5); //marque un arrêt
+ motor (-0.5, -0.5);//recule lentement
+ wait (1.5); //attend qu'ait reculé
+ turn(direction(center));
+ motor (1, 1); //puis en avant toute
+ do
+ {
+ wait(1); //tant que pas dans la zone
+ }
+ while (distance2d(position, center) > distCent or topo(position)<2);
+}
+
+void object::DansZone()
+{ //si elle est bien dans la zone
+ float r = rand();
+ if (r > 0.8)
+ { //dans un cas sur dix
+ motor (1, 0.8); // tourne à droite
+ wait(rand()*2); // pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ if (r < 0.2)
+ { //dans un cas sur dix
+ motor (0.8, 1); // tourne à gauche
+ wait(rand()*2); // pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ motor(1,1);
+ wait(1); //attend un moment
+}
+
+void object::shoot(point tarPos)
+{ // si cible à proximité
+ turn(direction(tarPos));
+ fire(tarPos); // tourne vers la cible
+ fire(tarPos); // et tire deux fois
+ motor(1,1); // avance
+ wait(1.5); // pendant 1.5 s
+}
diff --git a/ai/antt43.txt b/ai/antt43.txt
index 388295a7..6589aa64 100644
--- a/ai/antt43.txt
+++ b/ai/antt43.txt
@@ -1,132 +1,132 @@
-extern void object::Attack( )
-{
- int list[], i; // liste des objets cherchés
- object target; // info sur la cible
- point center; // coordonnées du centre de la zone
- float distCent; // rayon de la zone
- float r; // valeur aléatoire
- int ifTarget; // si on a trouvé une cible et quel genre
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
-
- center.x = -65; // prend les coordonnée
- center.y = 255; // du centre de la zone
- center.z = 0; // à patrouiller
- distCent = 140; // rayon de la zone
-
- motor(1,1); // en avant toute
- ifTarget = 0; // pas de cible précise
- while ( true ) // répète à l'infini
- {
- target = radar(list);
- if(target.position.y > 180)
- {
- if(distance2d(position, target.position)<40)
- {
- shoot(target.position);
- }
- else
- {
- head(target.position);
- }
- }
- else Random(center, distCent);
- }
-}
-
-void object::head(point tarPos)
-{
- float mp;// puissance du moteur
- mp = direction(tarPos)/180;
- //if (mp>1) mp = 1;
- //if (mp<-1) mp = -1;
- if (mp>0)
- {
- motor(1-mp,1);
- }
- else
- {
- motor(1,1+mp);
- }
- wait(1);
-}
-
-void object::Random(point center, float distCent)
-{
- if (distance2d(position, center) > distCent or topo(position)<2)
- {
- HorsZone(center, distCent);
- }
- else
- {
- DansZone();
- }
-}
-
-void object::HorsZone(point center, float distCent)
-{ // si la fourmi est en dehors de la zone
- motor(0, 0); //s'arrête
- wait(0.5); //marque un arrêt
- motor (-0.5, -0.5);//recule lentement
- wait (1.5); //attend qu'ait reculé
- turn(direction(center));
- motor (1, 1); //puis en avant toute
- do
- {
- wait(1); //tant que pas dans la zone
- }
- while (distance2d(position, center) > distCent or topo(position)<2);
-}
-
-void object::DansZone()
-{ //si elle est bien dans la zone
- float r = rand();
- if (r > 0.8)
- { //dans un cas sur dix
- motor (1, 0.8); // tourne à droite
- wait(rand()*2); // pendant un moment
- motor (1, 1); // puis tout droit
- }
- if (r < 0.2)
- { //dans un cas sur dix
- motor (0.8, 1); // tourne à gauche
- wait(rand()*2); // pendant un moment
- motor (1, 1); // puis tout droit
- }
- motor(1,1);
- wait(1); // attend un moment
-}
-
-void object::shoot(point tarPos)
-{ // si cible à proximité
- turn(direction(tarPos));
- fire(tarPos); // tourne vers la cible
- fire(tarPos); // et tire deux fois
- motor(1,1); // avance
- wait(1.5); // pendant 1.5 s
-}
+extern void object::Attack( )
+{
+ int list[], i; // liste des objets cherchés
+ object target; // info sur la cible
+ point center; // coordonnées du centre de la zone
+ float distCent; // rayon de la zone
+ float r; // valeur aléatoire
+ int ifTarget; // si on a trouvé une cible et quel genre
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+
+ center.x = -65; // prend les coordonnée
+ center.y = 255; // du centre de la zone
+ center.z = 0; // Ã patrouiller
+ distCent = 140; // rayon de la zone
+
+ motor(1,1); // en avant toute
+ ifTarget = 0; // pas de cible précise
+ while ( true ) // répète à l'infini
+ {
+ target = radar(list);
+ if(target.position.y > 180)
+ {
+ if(distance2d(position, target.position)<40)
+ {
+ shoot(target.position);
+ }
+ else
+ {
+ head(target.position);
+ }
+ }
+ else Random(center, distCent);
+ }
+}
+
+void object::head(point tarPos)
+{
+ float mp;// puissance du moteur
+ mp = direction(tarPos)/180;
+ //if (mp>1) mp = 1;
+ //if (mp<-1) mp = -1;
+ if (mp>0)
+ {
+ motor(1-mp,1);
+ }
+ else
+ {
+ motor(1,1+mp);
+ }
+ wait(1);
+}
+
+void object::Random(point center, float distCent)
+{
+ if (distance2d(position, center) > distCent or topo(position)<2)
+ {
+ HorsZone(center, distCent);
+ }
+ else
+ {
+ DansZone();
+ }
+}
+
+void object::HorsZone(point center, float distCent)
+{ // si la fourmi est en dehors de la zone
+ motor(0, 0); //s'arrête
+ wait(0.5); //marque un arrêt
+ motor (-0.5, -0.5);//recule lentement
+ wait (1.5); //attend qu'ait reculé
+ turn(direction(center));
+ motor (1, 1); //puis en avant toute
+ do
+ {
+ wait(1); //tant que pas dans la zone
+ }
+ while (distance2d(position, center) > distCent or topo(position)<2);
+}
+
+void object::DansZone()
+{ //si elle est bien dans la zone
+ float r = rand();
+ if (r > 0.8)
+ { //dans un cas sur dix
+ motor (1, 0.8); // tourne à droite
+ wait(rand()*2); // pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ if (r < 0.2)
+ { //dans un cas sur dix
+ motor (0.8, 1); // tourne à gauche
+ wait(rand()*2); // pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ motor(1,1);
+ wait(1); // attend un moment
+}
+
+void object::shoot(point tarPos)
+{ // si cible à proximité
+ turn(direction(tarPos));
+ fire(tarPos); // tourne vers la cible
+ fire(tarPos); // et tire deux fois
+ motor(1,1); // avance
+ wait(1.5); // pendant 1.5 s
+}
diff --git a/ai/charge1.txt b/ai/charge1.txt
index f676b523..d95d9d08 100644
--- a/ai/charge1.txt
+++ b/ai/charge1.txt
@@ -1,13 +1,13 @@
-extern void object::Recharge1()
-{
- point start; // variable for initial pos.
- object item; // info. about power station
-
- start = position; // store initial position
-
- item = radar(PowerStation); // look for station
- goto(item.position); // go to the power station
- wait(5); // wait 5 seconds
-
- goto(start); // go back to initial pos.
-}
+extern void object::Recharge1()
+{
+ point start; // variable for initial pos.
+ object item; // info. about power station
+
+ start = position; // store initial position
+
+ item = radar(PowerStation); // look for station
+ goto(item.position); // go to the power station
+ wait(5); // wait 5 seconds
+
+ goto(start); // go back to initial pos.
+}
diff --git a/ai/charge2.txt b/ai/charge2.txt
index b0e3487d..7fefae8c 100644
--- a/ai/charge2.txt
+++ b/ai/charge2.txt
@@ -1,18 +1,18 @@
-extern void object::Recharge2()
-{
- point start; // variable for initial pos.
- object item; // info. about power station
-
- start = position; // store initial position
-
- item = radar(PowerStation); // look for station
- goto(item.position); // go to the power station
-
- while ( energyCell.energyLevel < 1 )
- {
- wait(1); // wait until recharged
- }
-
- goto(start); // go back to initial pos.
- message("Recharge completed");
-}
+extern void object::Recharge2()
+{
+ point start; // variable for initial pos.
+ object item; // info. about power station
+
+ start = position; // store initial position
+
+ item = radar(PowerStation); // look for station
+ goto(item.position); // go to the power station
+
+ while ( energyCell.energyLevel < 1 )
+ {
+ wait(1); // wait until recharged
+ }
+
+ goto(start); // go back to initial pos.
+ message("Recharge completed");
+}
diff --git a/ai/charge3.txt b/ai/charge3.txt
index 855726b9..3c91822f 100644
--- a/ai/charge3.txt
+++ b/ai/charge3.txt
@@ -1,18 +1,18 @@
-extern void object::Recharge3()
-{
- point start; // variable for initial pos.
- object item; // info. about power station
-
- start = position; // store initial position
-
- item = radar(PowerCaptor); // look for station
- goto(item.position); // go to the power station
-
- while ( energyCell.energyLevel < 1 )
- {
- wait(1); // wait until recharged
- }
-
- goto(start); // go back to initial pos.
- message("Recharge completed");
-}
+extern void object::Recharge3()
+{
+ point start; // variable for initial pos.
+ object item; // info. about power station
+
+ start = position; // store initial position
+
+ item = radar(PowerCaptor); // look for station
+ goto(item.position); // go to the power station
+
+ while ( energyCell.energyLevel < 1 )
+ {
+ wait(1); // wait until recharged
+ }
+
+ goto(start); // go back to initial pos.
+ message("Recharge completed");
+}
diff --git a/ai/convert.txt b/ai/convert.txt
index 8983d670..48834ca2 100644
--- a/ai/convert.txt
+++ b/ai/convert.txt
@@ -1,57 +1,57 @@
-extern void object::Convert( )
-{
- object p;
- point pConvert;
-
- p = radar(Converter);
- if ( p == null )
- {
- message("Vous devez d'abord construire un convertisseur");
- return;
- }
- pConvert = p.position;
-
- while ( true )
- {
- if ( load.category != TitaniumOre )
- {
- p = radar(TitaniumOre);
- if ( p == null )
- {
- message("Minerai pas trouvé");
- return;
- }
- goto(p.position);
- grab(); // prend minerai
-
- p = radar(Converter);
- if ( p == null )
- {
- message("Convertisseur pas trouvé");
- return;
- }
- goto(p.position);
- drop(); // dépose minerai
- move(-4);
- wait(15); // attend conversion
- move(4);
- grab(); // prend métal
- move(-4);
- }
-
- p = radar(SpaceShip);
- if ( p == null )
- {
- message("Vaisseau spatial pas trouvé");
- return;
- }
- goto(p.position);
- drop(); // dépose minerai
-
- if ( energyCell.energyLevel < 0.25 )
- {
- message("Veuillez changer la pile");
- return;
- }
- }
-}
+extern void object::Convert( )
+{
+ object p;
+ point pConvert;
+
+ p = radar(Converter);
+ if ( p == null )
+ {
+ message("Vous devez d'abord construire un convertisseur");
+ return;
+ }
+ pConvert = p.position;
+
+ while ( true )
+ {
+ if ( load.category != TitaniumOre )
+ {
+ p = radar(TitaniumOre);
+ if ( p == null )
+ {
+ message("Minerai pas trouvé");
+ return;
+ }
+ goto(p.position);
+ grab(); // prend minerai
+
+ p = radar(Converter);
+ if ( p == null )
+ {
+ message("Convertisseur pas trouvé");
+ return;
+ }
+ goto(p.position);
+ drop(); // dépose minerai
+ move(-4);
+ wait(15); // attend conversion
+ move(4);
+ grab(); // prend métal
+ move(-4);
+ }
+
+ p = radar(SpaceShip);
+ if ( p == null )
+ {
+ message("Vaisseau spatial pas trouvé");
+ return;
+ }
+ goto(p.position);
+ drop(); // dépose minerai
+
+ if ( energyCell.energyLevel < 0.25 )
+ {
+ message("Veuillez changer la pile");
+ return;
+ }
+ }
+}
diff --git a/ai/exchg1.txt b/ai/exchg1.txt
index 1e0f1284..da8534b3 100644
--- a/ai/exchg1.txt
+++ b/ai/exchg1.txt
@@ -1,11 +1,11 @@
-extern void object::SwitchCell1()
-{
- grab(InFront); // take the new cell in front
- drop(Behind); // and drop it behind
-
- grab(EnergyCell); // take the cell from the bot
- drop(InFront); // and drop it in front
-
- grab(Behind); // take the new cell
- drop(EnergyCell); // and drop it on the bot
-}
+extern void object::SwitchCell1()
+{
+ grab(InFront); // take the new cell in front
+ drop(Behind); // and drop it behind
+
+ grab(EnergyCell); // take the cell from the bot
+ drop(InFront); // and drop it in front
+
+ grab(Behind); // take the new cell
+ drop(EnergyCell); // and drop it on the bot
+}
diff --git a/ai/flash.txt b/ai/flash.txt
index f84668fd..0d89e989 100644
--- a/ai/flash.txt
+++ b/ai/flash.txt
@@ -1,8 +1,8 @@
-extern void object::Flash( )
-{
- while ( true )
- {
- if ( energyCell.energyLevel == 0 ) break;
- wait(1);
- }
-}
+extern void object::Flash( )
+{
+ while ( true )
+ {
+ if ( energyCell.energyLevel == 0 ) break;
+ wait(1);
+ }
+}
diff --git a/ai/human01.txt b/ai/human01.txt
index 55d87ede..caf1dfee 100644
--- a/ai/human01.txt
+++ b/ai/human01.txt
@@ -1,47 +1,47 @@
-extern void object::Activity( )
-{
- float d1, d2;
-
- errmode(0); // ne stoppe pas si erreur
-
- while ( true )
- {
- d1 = 2+rand()*2;
- d2 = 1+rand()*3;
-
- turn(-50);
- turn(110);
- turn(30);
- move(d1);
- wait(0.5);
- turn(-90);
- if ( rand() < 0.5 )
- {
- wait(2+rand()*2);
- }
- else
- {
- turn(-60);
- turn(110);
- turn(-50);
- }
- turn(-90);
- move(d1+d2);
- wait(0.5);
- turn(90);
- if ( rand() < 0.5 )
- {
- wait(2+rand()*2);
- }
- else
- {
- turn(-30);
- turn(60);
- turn(-30);
- }
- turn(90);
- move(d2);
- wait(0.5);
- turn(-90);
- }
-}
+extern void object::Activity( )
+{
+ float d1, d2;
+
+ errmode(0); // ne stoppe pas si erreur
+
+ while ( true )
+ {
+ d1 = 2+rand()*2;
+ d2 = 1+rand()*3;
+
+ turn(-50);
+ turn(110);
+ turn(30);
+ move(d1);
+ wait(0.5);
+ turn(-90);
+ if ( rand() < 0.5 )
+ {
+ wait(2+rand()*2);
+ }
+ else
+ {
+ turn(-60);
+ turn(110);
+ turn(-50);
+ }
+ turn(-90);
+ move(d1+d2);
+ wait(0.5);
+ turn(90);
+ if ( rand() < 0.5 )
+ {
+ wait(2+rand()*2);
+ }
+ else
+ {
+ turn(-30);
+ turn(60);
+ turn(-30);
+ }
+ turn(90);
+ move(d2);
+ wait(0.5);
+ turn(-90);
+ }
+}
diff --git a/ai/human02.txt b/ai/human02.txt
index 7a60a1c1..b8533e8b 100644
--- a/ai/human02.txt
+++ b/ai/human02.txt
@@ -1,16 +1,16 @@
-extern void object::Activity( )
-{
- errmode(0); // ne stoppe pas si erreur
-
- while ( true )
- {
- turn(-144);
- move(2);
- turn(-90);
- wait(5+rand()*8);
- turn(-90);
- move(2);
- turn(-36);
- wait(2+rand()*5);
- }
-}
+extern void object::Activity( )
+{
+ errmode(0); // ne stoppe pas si erreur
+
+ while ( true )
+ {
+ turn(-144);
+ move(2);
+ turn(-90);
+ wait(5+rand()*8);
+ turn(-90);
+ move(2);
+ turn(-36);
+ wait(2+rand()*5);
+ }
+}
diff --git a/ai/human03.txt b/ai/human03.txt
index ffc8774f..64977eaa 100644
--- a/ai/human03.txt
+++ b/ai/human03.txt
@@ -1,22 +1,22 @@
-extern void object::Activity( )
-{
- float dist;
-
- errmode(0); // ne stoppe pas si erreur
-
- while ( true )
- {
- dist = 2+rand()*3;
-
- turn(90);
- move(dist);
- wait(0.5);
- turn(-90);
- wait(2+rand()*3);
- turn(-90);
- move(dist);
- wait(0.5);
- turn(90);
- wait(1+rand()*1);
- }
-}
+extern void object::Activity( )
+{
+ float dist;
+
+ errmode(0); // ne stoppe pas si erreur
+
+ while ( true )
+ {
+ dist = 2+rand()*3;
+
+ turn(90);
+ move(dist);
+ wait(0.5);
+ turn(-90);
+ wait(2+rand()*3);
+ turn(-90);
+ move(dist);
+ wait(0.5);
+ turn(90);
+ wait(1+rand()*1);
+ }
+}
diff --git a/ai/human04.txt b/ai/human04.txt
index 247a77e9..02a36bba 100644
--- a/ai/human04.txt
+++ b/ai/human04.txt
@@ -1,10 +1,10 @@
-extern void object::Activity( )
-{
- errmode(0); // ne stoppe pas si erreur
-
- while ( true )
- {
- goto(15,-6, 0,0,1);
- goto(2,-6, 0,0,1);
- }
-}
+extern void object::Activity( )
+{
+ errmode(0); // ne stoppe pas si erreur
+
+ while ( true )
+ {
+ goto(15,-6, 0,0,1);
+ goto(2,-6, 0,0,1);
+ }
+}
diff --git a/ai/human05.txt b/ai/human05.txt
index 7521fed6..52cbe85d 100644
--- a/ai/human05.txt
+++ b/ai/human05.txt
@@ -1,13 +1,13 @@
-extern void object::Activity( )
-{
- errmode(0); // ne stoppe pas si erreur
-
- while ( true )
- {
- wait(2);
- goto(-13,-16, 0,0,1);
- turn(180);
- goto(14,-12, 0,0,1);
- turn(180);
- }
-}
+extern void object::Activity( )
+{
+ errmode(0); // ne stoppe pas si erreur
+
+ while ( true )
+ {
+ wait(2);
+ goto(-13,-16, 0,0,1);
+ turn(180);
+ goto(14,-12, 0,0,1);
+ turn(180);
+ }
+}
diff --git a/ai/human06.txt b/ai/human06.txt
index d7d5fbd1..38965523 100644
--- a/ai/human06.txt
+++ b/ai/human06.txt
@@ -1,29 +1,29 @@
-extern void object::Activity( )
-{
- errmode(0); // ne stoppe pas si erreur
-
- while ( true )
- {
- goto(-10,-12, 0,0,1);
- wait(1);
- grab();
- turn(180);
- goto( -3,-12, 0,0,1);
- drop();
- wait(1);
- turn(180);
-
- goto(-10,-12, 0,0,1);
- turn(180);
- goto( -3,-12, 0,0,1);
- wait(1);
- grab();
- turn(180);
-
- goto(-10,-12, 0,0,1);
- drop();
- turn(180);
- goto( -3,-12, 0,0,1);
- turn(180);
- }
-}
+extern void object::Activity( )
+{
+ errmode(0); // ne stoppe pas si erreur
+
+ while ( true )
+ {
+ goto(-10,-12, 0,0,1);
+ wait(1);
+ grab();
+ turn(180);
+ goto( -3,-12, 0,0,1);
+ drop();
+ wait(1);
+ turn(180);
+
+ goto(-10,-12, 0,0,1);
+ turn(180);
+ goto( -3,-12, 0,0,1);
+ wait(1);
+ grab();
+ turn(180);
+
+ goto(-10,-12, 0,0,1);
+ drop();
+ turn(180);
+ goto( -3,-12, 0,0,1);
+ turn(180);
+ }
+}
diff --git a/ai/human07.txt b/ai/human07.txt
index 4510eb35..43f27e9b 100644
--- a/ai/human07.txt
+++ b/ai/human07.txt
@@ -1,23 +1,23 @@
-extern void object::Activity( )
-{
- errmode(0); // ne stoppe pas si erreur
-
- while ( true )
- {
- motor(-0.2, 0.2);
- wait(1);
- motor(0.2, -0.2);
- wait(1);
- motor(0, 0);
- wait(4);
-
- motor(0.4, -0.4);
- wait(2);
- motor(0, 0);
- wait(1);
- motor(-0.4, 0.4);
- wait(2);
- motor(0, 0);
- wait(1);
- }
-}
+extern void object::Activity( )
+{
+ errmode(0); // ne stoppe pas si erreur
+
+ while ( true )
+ {
+ motor(-0.2, 0.2);
+ wait(1);
+ motor(0.2, -0.2);
+ wait(1);
+ motor(0, 0);
+ wait(4);
+
+ motor(0.4, -0.4);
+ wait(2);
+ motor(0, 0);
+ wait(1);
+ motor(-0.4, 0.4);
+ wait(2);
+ motor(0, 0);
+ wait(1);
+ }
+}
diff --git a/ai/kill1.txt b/ai/kill1.txt
index 1672745e..708ca081 100644
--- a/ai/kill1.txt
+++ b/ai/kill1.txt
@@ -1,18 +1,18 @@
-extern void object::KillAnt1()
-{
- object item; // info. about object
-
- goto(-30, 0); // go west
- aim(0); // aim straight
-
- while ( true ) // repeat forever:
- {
- item = radar(AlienAnt, 0, 360, 0, 40);
- if ( item != null ) // ant detected ?
- {
- turn(direction(item.position));
- fire(0.5); // shoot 0.5 s
- }
- wait(1); // wait 1 second
- }
-}
+extern void object::KillAnt1()
+{
+ object item; // info. about object
+
+ goto(-30, 0); // go west
+ aim(0); // aim straight
+
+ while ( true ) // repeat forever:
+ {
+ item = radar(AlienAnt, 0, 360, 0, 40);
+ if ( item != null ) // ant detected ?
+ {
+ turn(direction(item.position));
+ fire(0.5); // shoot 0.5 s
+ }
+ wait(1); // wait 1 second
+ }
+}
diff --git a/ai/lady01.txt b/ai/lady01.txt
index fb9cce93..8612edf3 100644
--- a/ai/lady01.txt
+++ b/ai/lady01.txt
@@ -1,48 +1,48 @@
-extern void object::Produce( )
-{
- point path[4];
- int i;
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- path[0].x = cmdline(0);
- path[0].y = cmdline(1);
- path[1].x = cmdline(2);
- path[1].y = cmdline(3);
- path[2].x = cmdline(4);
- path[2].y = cmdline(5);
- path[3].x = cmdline(6);
- path[3].y = cmdline(7);
-
- i = 1;
- while ( true )
- {
- goto(path[i%4]);
-
- if ( i%5 == 4 && WaspCount() < 2 )
- {
- produce(position, orientation, AlienWasp, "wasp01.txt");
- }
-
- i ++;
- }
-}
-
-int object::WaspCount()
-{
- object item;
- int total = 0;
- int i = 0;
-
- while ( true )
- {
- item = retobject(i++);
- if ( item == null ) return total;
-
- if ( item.category == AlienWasp )
- {
- total ++;
- }
- }
-}
+extern void object::Produce( )
+{
+ point path[4];
+ int i;
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ path[0].x = cmdline(0);
+ path[0].y = cmdline(1);
+ path[1].x = cmdline(2);
+ path[1].y = cmdline(3);
+ path[2].x = cmdline(4);
+ path[2].y = cmdline(5);
+ path[3].x = cmdline(6);
+ path[3].y = cmdline(7);
+
+ i = 1;
+ while ( true )
+ {
+ goto(path[i%4]);
+
+ if ( i%5 == 4 && WaspCount() < 2 )
+ {
+ produce(position, orientation, AlienWasp, "wasp01.txt");
+ }
+
+ i ++;
+ }
+}
+
+int object::WaspCount()
+{
+ object item;
+ int total = 0;
+ int i = 0;
+
+ while ( true )
+ {
+ item = retobject(i++);
+ if ( item == null ) return total;
+
+ if ( item.category == AlienWasp )
+ {
+ total ++;
+ }
+ }
+}
diff --git a/ai/lady02.txt b/ai/lady02.txt
index 775c1d3e..22b3ee2e 100644
--- a/ai/lady02.txt
+++ b/ai/lady02.txt
@@ -1,74 +1,74 @@
-extern void object::Produce( )
-{
- point path[7];
- int i;
- float r;
-
- errmode(0); // ne stoppe pas si erreur
- ipf(10); // 10 instructions / second
- while ( ismovie() != 0 ) wait(1);
-
- path[0].x = cmdline(0);
- path[0].y = cmdline(1);
- path[1].x = cmdline(2);
- path[1].y = cmdline(3);
- path[2].x = cmdline(4);
- path[2].y = cmdline(5);
- path[3].x = cmdline(6);
- path[3].y = cmdline(7);
- path[4].x = cmdline(8);
- path[4].y = cmdline(9);
- path[5].x = cmdline(10);
- path[5].y = cmdline(11);
- path[6].x = cmdline(12);
- path[6].y = cmdline(13);
-
- i = 1;
- while ( true )
- {
- goto(path[i%7]);
-
- if ( rand() < 0.2 ) // attaqueuse 1x / 5
- {
- produce(position, orientation, AlienAnt, "antattsw.txt");
- }
- else
- {
- if ( AlienCount() < 10 )
- {
- r = rand();
- if( r < 0.3 )
- {
- produce(position, orientation, AlienAnt, "antt41.txt");
- }
- if( r >= 0.6 )
- {
- produce(position, orientation, AlienAnt, "antt42.txt");
- }
- if( r < 0.6 and r >= 0.3 )
- {
- produce(position, orientation, AlienAnt, "antt43.txt");
- }
- }
- }
- i ++;
- }
-}
-
-int object::AlienCount()
-{
- object item;
- int total = 0;
- int i = 0;
-
- while ( true )
- {
- item = retobject(i++);
- if ( item == null ) return total;
-
- if ( item.category == AlienAnt )
- {
- total ++;
- }
- }
-}
+extern void object::Produce( )
+{
+ point path[7];
+ int i;
+ float r;
+
+ errmode(0); // ne stoppe pas si erreur
+ ipf(10); // 10 instructions / second
+ while ( ismovie() != 0 ) wait(1);
+
+ path[0].x = cmdline(0);
+ path[0].y = cmdline(1);
+ path[1].x = cmdline(2);
+ path[1].y = cmdline(3);
+ path[2].x = cmdline(4);
+ path[2].y = cmdline(5);
+ path[3].x = cmdline(6);
+ path[3].y = cmdline(7);
+ path[4].x = cmdline(8);
+ path[4].y = cmdline(9);
+ path[5].x = cmdline(10);
+ path[5].y = cmdline(11);
+ path[6].x = cmdline(12);
+ path[6].y = cmdline(13);
+
+ i = 1;
+ while ( true )
+ {
+ goto(path[i%7]);
+
+ if ( rand() < 0.2 ) // attaqueuse 1x / 5
+ {
+ produce(position, orientation, AlienAnt, "antattsw.txt");
+ }
+ else
+ {
+ if ( AlienCount() < 10 )
+ {
+ r = rand();
+ if( r < 0.3 )
+ {
+ produce(position, orientation, AlienAnt, "antt41.txt");
+ }
+ if( r >= 0.6 )
+ {
+ produce(position, orientation, AlienAnt, "antt42.txt");
+ }
+ if( r < 0.6 and r >= 0.3 )
+ {
+ produce(position, orientation, AlienAnt, "antt43.txt");
+ }
+ }
+ }
+ i ++;
+ }
+}
+
+int object::AlienCount()
+{
+ object item;
+ int total = 0;
+ int i = 0;
+
+ while ( true )
+ {
+ item = retobject(i++);
+ if ( item == null ) return total;
+
+ if ( item.category == AlienAnt )
+ {
+ total ++;
+ }
+ }
+}
diff --git a/ai/run1.txt b/ai/run1.txt
index d61a7bf4..ee95ba50 100644
--- a/ai/run1.txt
+++ b/ai/run1.txt
@@ -1,49 +1,49 @@
-extern void object::Run()
-{
- point circuit[];
- int i, max;
-
- i = 0;
- circuit[i].x = 35; circuit[i].y = 55; circuit[i++].z = 10;
- circuit[i].x = 37; circuit[i].y = 90; circuit[i++].z = 10;
- circuit[i].x = 98; circuit[i].y = 82; circuit[i++].z = 10;
- circuit[i].x = 134; circuit[i].y = 104; circuit[i++].z = 10;
- circuit[i].x = 112; circuit[i].y = 161; circuit[i++].z = 10;
- circuit[i].x = 148; circuit[i].y = 190; circuit[i++].z = 10;
- circuit[i].x = 205; circuit[i].y = 216; circuit[i++].z = 10;
- circuit[i].x = 244; circuit[i].y = 219; circuit[i++].z = 10;
- circuit[i].x = 255; circuit[i].y = 76; circuit[i++].z = 4;
- circuit[i].x = 185; circuit[i].y = 45; circuit[i++].z = 10;
- circuit[i].x = 162; circuit[i].y = -1; circuit[i++].z = 10;
- circuit[i].x = 139; circuit[i].y = -45; circuit[i++].z = 90;
- circuit[i].x = 165; circuit[i].y = -80; circuit[i++].z = 10;
- circuit[i].x = 235; circuit[i].y =-134; circuit[i++].z = 10;
- circuit[i].x = 226; circuit[i].y =-203; circuit[i++].z = 10;
- circuit[i].x = 185; circuit[i].y =-262; circuit[i++].z = 90;
- circuit[i].x = 173; circuit[i].y =-300; circuit[i++].z = 90;
- circuit[i].x = 144; circuit[i].y =-340; circuit[i++].z = 90;
- circuit[i].x = 35; circuit[i].y =-322; circuit[i++].z = 10;
- circuit[i].x = -27; circuit[i].y =-240; circuit[i++].z = 10;
- circuit[i].x = -87; circuit[i].y =-250; circuit[i++].z = 10;
- circuit[i].x =-137; circuit[i].y =-259; circuit[i++].z = 10;
- circuit[i].x =-182; circuit[i].y =-274; circuit[i++].z = 10;
- max = i;
-
-// for ( i=0 ; i 25 ) prox = 25;
- dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
- dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
- dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
- goto(dest);
- }
- }
- }
-}
+extern void object::Attack( )
+{
+ int list[];
+ int i;
+ object p;
+ float dist, prox;
+ point dest;
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+ list[i++] = Derrick;
+ list[i++] = BotFactory;
+ list[i++] = PowerStation;
+ list[i++] = Converter;
+ list[i++] = RepairCenter;
+ list[i++] = DefenseTower;
+ list[i++] = AlienNest;
+ list[i++] = ResearchCenter;
+ list[i++] = RadarStation;
+ list[i++] = ExchangePost;
+ list[i++] = PowerPlant;
+ list[i++] = AutoLab;
+ list[i++] = NuclearPlant;
+
+ while ( true )
+ {
+ p = radar(list, 0, 360, 0, 30);
+ if ( p == null )
+ {
+ wait(2);
+ }
+ else
+ {
+ dist = distance(p.position, position);
+ if ( dist <= 10 )
+ {
+ fire();
+ }
+ else
+ {
+ prox = dist-5;
+ if ( prox > 25 ) prox = 25;
+ dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
+ dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
+ dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
+ goto(dest);
+ }
+ }
+ }
+}
diff --git a/ai/spider03.txt b/ai/spider03.txt
index b290313f..584ad068 100644
--- a/ai/spider03.txt
+++ b/ai/spider03.txt
@@ -1,59 +1,59 @@
-extern void object::Attack( )
-{
- int list[], i;
- object p;
- float dist, prox;
- point nav1, nav2, dest;
- boolean advance = true;
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
-
- nav1.x = cmdline(0);
- nav1.y = cmdline(1);
- nav2.x = cmdline(2);
- nav2.y = cmdline(3);
-
- while ( true )
- {
- while ( true )
- {
- p = radar(list, 0, 360, 0, 10);
- if ( p == null ) break;
- fire();
- }
- goto(nav1);
-
- while ( true )
- {
- p = radar(list, 0, 360, 0, 10);
- if ( p == null ) break;
- fire();
- }
- goto(nav2);
- }
-}
+extern void object::Attack( )
+{
+ int list[], i;
+ object p;
+ float dist, prox;
+ point nav1, nav2, dest;
+ boolean advance = true;
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+
+ nav1.x = cmdline(0);
+ nav1.y = cmdline(1);
+ nav2.x = cmdline(2);
+ nav2.y = cmdline(3);
+
+ while ( true )
+ {
+ while ( true )
+ {
+ p = radar(list, 0, 360, 0, 10);
+ if ( p == null ) break;
+ fire();
+ }
+ goto(nav1);
+
+ while ( true )
+ {
+ p = radar(list, 0, 360, 0, 10);
+ if ( p == null ) break;
+ fire();
+ }
+ goto(nav2);
+ }
+}
diff --git a/ai/spidict.txt b/ai/spidict.txt
index f4cd7da3..d584bfba 100644
--- a/ai/spidict.txt
+++ b/ai/spidict.txt
@@ -1,102 +1,102 @@
-extern void object::Attack( )
-{
- int list[], i; // liste des objets cherchés
- object target; // info sur la cible
- point center; // coordonnées du centre de la zone
- point lastPos; // dernière position (pr test si bloquée)
- float distCent; // rayon de la zone
- float r; // valeur aléatoire
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
-
- center.x = cmdline(0); // prend les coordonnée
- center.y = cmdline(1); // du centre de la zone
- center.z = 0; // à patrouiller
- distCent = cmdline(2); // rayon de la zone
-
- lastPos = position; // initialise
- motor(1,1); // en avant toute
- while ( true ) // répère à l'infini
- {
- target = radar(list, 0, 360, 0, 10);
- if (target == null or topo(position)<0)// pas de cible à proximité
- { // ou pieds dans l'eau
- if (distance2d(position, center) > distCent or topo(position)<0)
- { // si la fourmi est en dehors de la zone
- motor(0, 0); //s'arrête
- wait(0.5); //marque un arrêt
- motor (-0.5, -0.5);//recule lentement
- wait (1.5); //attend qu'ait reculé
- turn(direction(center));
- motor (1, 1); //puis en avant toute
- do
- {
- lastPos = position;
- wait(1); //tant que pas dans la zone
- if (distance2d(lastPos, position) < 0.2)
- { //si elle est bloquée par obstacle
- turn(rand()*360-180);
- motor(1,1);
- wait(1);
- turn(direction(center));
- }
- }
- while (distance2d(position, center) > distCent or topo(position)<0);
- }
- else
- { //si elle est bien dans la zone
- if (distance2d(lastPos, position) < 0.2)
- { //si elle est bloquée par obstacle
- turn(rand()*360-180);
- motor(1,1);
- wait(1);
- }
- r = rand();
- if (r > 0.6)
- { //dans un cas sur dix
- motor (1, 0.7);// tourne à droite
- wait(rand()*3);// pendant un moment
- motor (1, 1); // puis tout droit
- }
- if (r < 0.4)
- { //dans un cas sur dix
- motor (0.7, 1);// tourne à gauche
- wait(rand()*3);// pendant un moment
- motor (1, 1); // puis tout droit
- }
- lastPos = position;
- wait(1); //attend un moment
- }
- }
- else
- { // si cible à proximité
- fire();
- }
- }
-}
-
+extern void object::Attack( )
+{
+ int list[], i; // liste des objets cherchés
+ object target; // info sur la cible
+ point center; // coordonnées du centre de la zone
+ point lastPos; // dernière position (pr test si bloquée)
+ float distCent; // rayon de la zone
+ float r; // valeur aléatoire
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+
+ center.x = cmdline(0); // prend les coordonnée
+ center.y = cmdline(1); // du centre de la zone
+ center.z = 0; // Ã patrouiller
+ distCent = cmdline(2); // rayon de la zone
+
+ lastPos = position; // initialise
+ motor(1,1); // en avant toute
+ while ( true ) // répère à l'infini
+ {
+ target = radar(list, 0, 360, 0, 10);
+ if (target == null or topo(position)<0)// pas de cible à proximité
+ { // ou pieds dans l'eau
+ if (distance2d(position, center) > distCent or topo(position)<0)
+ { // si la fourmi est en dehors de la zone
+ motor(0, 0); //s'arrête
+ wait(0.5); //marque un arrêt
+ motor (-0.5, -0.5);//recule lentement
+ wait (1.5); //attend qu'ait reculé
+ turn(direction(center));
+ motor (1, 1); //puis en avant toute
+ do
+ {
+ lastPos = position;
+ wait(1); //tant que pas dans la zone
+ if (distance2d(lastPos, position) < 0.2)
+ { //si elle est bloquée par obstacle
+ turn(rand()*360-180);
+ motor(1,1);
+ wait(1);
+ turn(direction(center));
+ }
+ }
+ while (distance2d(position, center) > distCent or topo(position)<0);
+ }
+ else
+ { //si elle est bien dans la zone
+ if (distance2d(lastPos, position) < 0.2)
+ { //si elle est bloquée par obstacle
+ turn(rand()*360-180);
+ motor(1,1);
+ wait(1);
+ }
+ r = rand();
+ if (r > 0.6)
+ { //dans un cas sur dix
+ motor (1, 0.7);// tourne à droite
+ wait(rand()*3);// pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ if (r < 0.4)
+ { //dans un cas sur dix
+ motor (0.7, 1);// tourne à gauche
+ wait(rand()*3);// pendant un moment
+ motor (1, 1); // puis tout droit
+ }
+ lastPos = position;
+ wait(1); //attend un moment
+ }
+ }
+ else
+ { // si cible à proximité
+ fire();
+ }
+ }
+}
+
diff --git a/ai/strain1.txt b/ai/strain1.txt
index 78704a2b..c54326cf 100644
--- a/ai/strain1.txt
+++ b/ai/strain1.txt
@@ -1,20 +1,20 @@
-extern void object::Attack( )
-{
- point traject[10];
- int nb, i;
-
- errmode(0);
- nb = cmdline(0)+1;
-
- traject[0] = position;
- for ( i=1 ; i 9)
- {
- jet(-1);
- }
-
- wait(0.2);
- }
-
- fire(1);
- }
-
-}
-
+extern void object::Solution()
+{
+
+ object item;
+
+ aim(-20);
+
+ while (true)
+ {
+
+ while (radar(AlienAnt, 0, 360, 0, 20) == null)
+ {
+ item = radar(AlienAnt);
+ turn(direction(item.position));
+ motor(1,1);
+ jet(0);
+
+ if (position.z-topo(position) < 6)
+ {
+ jet(1);
+ }
+
+ if (position.z-topo(position) > 9)
+ {
+ jet(-1);
+ }
+
+ wait(0.2);
+ }
+
+ fire(1);
+ }
+
+}
+
diff --git a/ai/tcell1.txt b/ai/tcell1.txt
index 826b592f..f74c5385 100644
--- a/ai/tcell1.txt
+++ b/ai/tcell1.txt
@@ -1,14 +1,14 @@
-extern void object::Solution()
-{
-
- grab();
- turn(90);
- drop();
-
- turn(-180);
-
- grab();
- turn(90);
- drop();
-
-}
+extern void object::Solution()
+{
+
+ grab();
+ turn(90);
+ drop();
+
+ turn(-180);
+
+ grab();
+ turn(90);
+ drop();
+
+}
diff --git a/ai/tcell2.txt b/ai/tcell2.txt
index 39ad3f5b..8a78660f 100644
--- a/ai/tcell2.txt
+++ b/ai/tcell2.txt
@@ -1,18 +1,18 @@
-extern void object::Solution()
-{
-
- object item;
-
- while(true)
- {
- item = radar(PowerCell);
- goto(item.position);
- grab();
-
- item = radar(WingedShooter);
- goto(item.position);
- drop();
-
- }
-
-}
+extern void object::Solution()
+{
+
+ object item;
+
+ while(true)
+ {
+ item = radar(PowerCell);
+ goto(item.position);
+ grab();
+
+ item = radar(WingedShooter);
+ goto(item.position);
+ drop();
+
+ }
+
+}
diff --git a/ai/tchasse1.txt b/ai/tchasse1.txt
index be40cd96..f8bf2b9e 100644
--- a/ai/tchasse1.txt
+++ b/ai/tchasse1.txt
@@ -1,33 +1,32 @@
-extern void object::Solution( )
-{
- aim(-3);
- while ( true )
- {
- object target;
- float a, b;
-
- target = radar(TargetBot);
- if ( target == null ) break;
- a = direction(target.position);
- turn(a);
-
- target = radar(TargetBot);
- if ( target == null ) break;
- b = direction(target.position);
- if ( a == b ) // standing still ?
- {
- wait(0.2);
-
- target = radar(TargetBot);
- if ( target == null ) break;
- a = direction(target.position);
-
- if ( a == b )
- {
- fire(2);
- wait(2);
- }
- }
- }
-}
-
\ No newline at end of file
+extern void object::Solution( )
+{
+ aim(-3);
+ while ( true )
+ {
+ object target;
+ float a, b;
+
+ target = radar(TargetBot);
+ if ( target == null ) break;
+ a = direction(target.position);
+ turn(a);
+
+ target = radar(TargetBot);
+ if ( target == null ) break;
+ b = direction(target.position);
+ if ( a == b ) // standing still ?
+ {
+ wait(0.2);
+
+ target = radar(TargetBot);
+ if ( target == null ) break;
+ a = direction(target.position);
+
+ if ( a == b )
+ {
+ fire(2);
+ wait(2);
+ }
+ }
+ }
+}
diff --git a/ai/tchasse2.txt b/ai/tchasse2.txt
index 2dc5b8c5..4d6351bb 100644
--- a/ai/tchasse2.txt
+++ b/ai/tchasse2.txt
@@ -1,10 +1,10 @@
-extern void object::Chasse( )
-{
- while ( true )
- {
- float x = 10+rand()*20;
- float y = -62;
- goto(x,y,0);
- wait(1);
- }
-}
+extern void object::Chasse( )
+{
+ while ( true )
+ {
+ float x = 10+rand()*20;
+ float y = -62;
+ goto(x,y,0);
+ wait(1);
+ }
+}
diff --git a/ai/tchasse3.txt b/ai/tchasse3.txt
index 78ec9c47..aaad9199 100644
--- a/ai/tchasse3.txt
+++ b/ai/tchasse3.txt
@@ -1,10 +1,10 @@
-extern void object::Chasse( )
-{
- while ( true )
- {
- float x = 33;
- float y = -85+rand()*20;
- goto(x,y,0);
- wait(1);
- }
-}
+extern void object::Chasse( )
+{
+ while ( true )
+ {
+ float x = 33;
+ float y = -85+rand()*20;
+ goto(x,y,0);
+ wait(1);
+ }
+}
diff --git a/ai/tchasse4.txt b/ai/tchasse4.txt
index 697fc251..34c99ed9 100644
--- a/ai/tchasse4.txt
+++ b/ai/tchasse4.txt
@@ -1,10 +1,10 @@
-extern void object::Chasse( )
-{
- while ( true )
- {
- float x = 10+rand()*20;
- float y = -88;
- goto(x,y,0);
- wait(1);
- }
-}
+extern void object::Chasse( )
+{
+ while ( true )
+ {
+ float x = 10+rand()*20;
+ float y = -88;
+ goto(x,y,0);
+ wait(1);
+ }
+}
diff --git a/ai/tchasse5.txt b/ai/tchasse5.txt
index 4860f775..3713b88b 100644
--- a/ai/tchasse5.txt
+++ b/ai/tchasse5.txt
@@ -1,10 +1,10 @@
-extern void object::Chasse( )
-{
- while ( true )
- {
- float x = 7;
- float y = -85+rand()*20;
- goto(x,y,0);
- wait(1);
- }
-}
+extern void object::Chasse( )
+{
+ while ( true )
+ {
+ float x = 7;
+ float y = -85+rand()*20;
+ goto(x,y,0);
+ wait(1);
+ }
+}
diff --git a/ai/tdragst.txt b/ai/tdragst.txt
index a055f4b9..bff6308b 100644
--- a/ai/tdragst.txt
+++ b/ai/tdragst.txt
@@ -1,17 +1,16 @@
-extern void object::Solution( )
-{
- point start;
- start = position; // remember starting position
-
- motor(1, 1); // full throttle
-
- while ( true ) // repeat forever
- {
- float len = distance(position, start);
- if ( len > 25-2 )
- {
- motor( (25-len)/2, (25-len)/2 );
- }
- }
-}
-
\ No newline at end of file
+extern void object::Solution( )
+{
+ point start;
+ start = position; // remember starting position
+
+ motor(1, 1); // full throttle
+
+ while ( true ) // repeat forever
+ {
+ float len = distance(position, start);
+ if ( len > 25-2 )
+ {
+ motor( (25-len)/2, (25-len)/2 );
+ }
+ }
+}
diff --git a/ai/tevite.txt b/ai/tevite.txt
index 744a8b77..20443b18 100644
--- a/ai/tevite.txt
+++ b/ai/tevite.txt
@@ -1,19 +1,19 @@
-extern void object::Solution( )
-{
- while ( true )
- {
- float left, right;
-
- left = radar(WayPoint, 45, 120, 0, 20);
- right = radar(WayPoint, -45, 120, 0, 20);
-
- if ( left == 0 && right == 0 ) // nothing ?
- {
- turn(180); // turn around
- }
- else
- {
- motor(left, right);
- }
- }
-}
+extern void object::Solution( )
+{
+ while ( true )
+ {
+ float left, right;
+
+ left = radar(WayPoint, 45, 120, 0, 20);
+ right = radar(WayPoint, -45, 120, 0, 20);
+
+ if ( left == 0 && right == 0 ) // nothing ?
+ {
+ turn(180); // turn around
+ }
+ else
+ {
+ motor(left, right);
+ }
+ }
+}
diff --git a/ai/texch1.txt b/ai/texch1.txt
index 107b5667..01a61c8a 100644
--- a/ai/texch1.txt
+++ b/ai/texch1.txt
@@ -1,11 +1,11 @@
-extern void object::Solution( )
-{
- float dir;
-
- for ( int i=0 ; i<5 ; i=i+1 )
- {
- move(20);
- dir = receive("Direction");
- turn(dir);
- }
-}
+extern void object::Solution( )
+{
+ float dir;
+
+ for ( int i=0 ; i<5 ; i=i+1 )
+ {
+ move(20);
+ dir = receive("Direction");
+ turn(dir);
+ }
+}
diff --git a/ai/texch2.txt b/ai/texch2.txt
index 0a2fdd28..6a02ca2d 100644
--- a/ai/texch2.txt
+++ b/ai/texch2.txt
@@ -1,16 +1,16 @@
-extern void object::Solution( )
-{
- float dir, len;
-
- while ( true )
- {
- dir = receive("Direction");
- if ( dir == nan ) break;
-
- len = receive("Length");
- if ( len == nan ) break;
-
- turn(dir);
- move(len);
- }
-}
+extern void object::Solution( )
+{
+ float dir, len;
+
+ while ( true )
+ {
+ dir = receive("Direction");
+ if ( dir == nan ) break;
+
+ len = receive("Length");
+ if ( len == nan ) break;
+
+ turn(dir);
+ move(len);
+ }
+}
diff --git a/ai/tfollow1.txt b/ai/tfollow1.txt
index c07b2e08..f954d9b8 100644
--- a/ai/tfollow1.txt
+++ b/ai/tfollow1.txt
@@ -1,33 +1,33 @@
-extern void object::Solution( )
-{
- while ( true )
- {
- object target;
- float dir, len;
-
- target = radar(TargetBot);
- if ( target == null )
- {
- motor(0, 0); // stop
- break;
- }
-
- len = distance(position, target.position);
- if ( len < 5 ) // too close ?
- {
- motor(len/5-1, len/5-1); // move backward
- }
- else
- {
- dir = direction(target.position);
- if ( dir < 0 ) // on the right ?
- {
- motor(1, 1+dir/90);
- }
- else // on the left ?
- {
- motor(1-dir/90, 1);
- }
- }
- }
-}
+extern void object::Solution( )
+{
+ while ( true )
+ {
+ object target;
+ float dir, len;
+
+ target = radar(TargetBot);
+ if ( target == null )
+ {
+ motor(0, 0); // stop
+ break;
+ }
+
+ len = distance(position, target.position);
+ if ( len < 5 ) // too close ?
+ {
+ motor(len/5-1, len/5-1); // move backward
+ }
+ else
+ {
+ dir = direction(target.position);
+ if ( dir < 0 ) // on the right ?
+ {
+ motor(1, 1+dir/90);
+ }
+ else // on the left ?
+ {
+ motor(1-dir/90, 1);
+ }
+ }
+ }
+}
diff --git a/ai/tfollow2.txt b/ai/tfollow2.txt
index 819bb376..fa3d7d61 100644
--- a/ai/tfollow2.txt
+++ b/ai/tfollow2.txt
@@ -1,43 +1,42 @@
-extern void object::Hare( )
-{
- int nb = 0;
-
- while ( true )
- {
- point dest;
- float dist;
- object bot;
-
- do
- {
- dest.x = 8+rand()*24;
- dest.y = -89.5+rand()*24;
- dist = distance(dest, position);
- }
- while ( dist < 10 );
- goto(dest);
- wait(2);
-
- bot = radar(PracticeBot, 0, 360, 0, 10);
- if ( bot == null )
- {
- nb = 0;
- message("Failure, you are too far away. Start again 10x.");
- }
- else
- {
- nb ++;
- if ( nb < 10 )
- {
- message("Distance OK, "+(10-nb)+" more to come");
- }
- else
- {
- message("Well done, let's go home.");
- goto(-2, -77.5, 0);
- break;
- }
- }
- }
-}
-
\ No newline at end of file
+extern void object::Hare( )
+{
+ int nb = 0;
+
+ while ( true )
+ {
+ point dest;
+ float dist;
+ object bot;
+
+ do
+ {
+ dest.x = 8+rand()*24;
+ dest.y = -89.5+rand()*24;
+ dist = distance(dest, position);
+ }
+ while ( dist < 10 );
+ goto(dest);
+ wait(2);
+
+ bot = radar(PracticeBot, 0, 360, 0, 10);
+ if ( bot == null )
+ {
+ nb = 0;
+ message("Failure, you are too far away. Start again 10x.");
+ }
+ else
+ {
+ nb ++;
+ if ( nb < 10 )
+ {
+ message("Distance OK, "+(10-nb)+" more to come");
+ }
+ else
+ {
+ message("Well done, let's go home.");
+ goto(-2, -77.5, 0);
+ break;
+ }
+ }
+ }
+}
diff --git a/ai/tfor.txt b/ai/tfor.txt
index ef1cc0af..8a68d3f6 100644
--- a/ai/tfor.txt
+++ b/ai/tfor.txt
@@ -1,10 +1,10 @@
-extern void object::Solution( )
-{
- for ( int i=0 ; i<6 ; i=i+1 ) // repeat 6 times
- {
- move(5); // move 5m forward
- turn(90); // quarter turn left
- fire(1); // shoot
- turn(-90); // quarter turn right
- }
-}
+extern void object::Solution( )
+{
+ for ( int i=0 ; i<6 ; i=i+1 ) // repeat 6 times
+ {
+ move(5); // move 5m forward
+ turn(90); // quarter turn left
+ fire(1); // shoot
+ turn(-90); // quarter turn right
+ }
+}
diff --git a/ai/tfor2.txt b/ai/tfor2.txt
index 611b3f2e..d24cdc44 100644
--- a/ai/tfor2.txt
+++ b/ai/tfor2.txt
@@ -1,10 +1,10 @@
-extern void object::Solution( )
-{
- for ( int i=0 ; i<4 ; i=i+1 ) // repeat 4 times
- {
- move(10); // move 10m forward
- turn(90); // quarter turn left
- fire(1); // destroy the target
- turn(-180); // turns around
- }
-}
+extern void object::Solution( )
+{
+ for ( int i=0 ; i<4 ; i=i+1 ) // repeat 4 times
+ {
+ move(10); // move 10m forward
+ turn(90); // quarter turn left
+ fire(1); // destroy the target
+ turn(-180); // turns around
+ }
+}
diff --git a/ai/titan1.txt b/ai/titan1.txt
index 496565c2..c1608036 100644
--- a/ai/titan1.txt
+++ b/ai/titan1.txt
@@ -1,16 +1,16 @@
-extern void object::CollectTitanium1()
-{
- // 1) Variable definition.
- object item; // info. about objects
-
- // 2) Go to the titanium ore and grab it.
- item = radar(TitaniumOre);// look for titanium ore
- goto(item.position); // go to the position
- grab(); // grab the titanium
-
- // 3) Go to the converter and drop it.
- item = radar(Converter); // look for converter
- goto(item.position); // go to the position
- drop(); // drop the titanium
- move(-2.5); // step back 2.5 m
-}
+extern void object::CollectTitanium1()
+{
+ // 1) Variable definition.
+ object item; // info. about objects
+
+ // 2) Go to the titanium ore and grab it.
+ item = radar(TitaniumOre);// look for titanium ore
+ goto(item.position); // go to the position
+ grab(); // grab the titanium
+
+ // 3) Go to the converter and drop it.
+ item = radar(Converter); // look for converter
+ goto(item.position); // go to the position
+ drop(); // drop the titanium
+ move(-2.5); // step back 2.5 m
+}
diff --git a/ai/titan2.txt b/ai/titan2.txt
index 14ab0a5a..6e23265f 100644
--- a/ai/titan2.txt
+++ b/ai/titan2.txt
@@ -1,24 +1,24 @@
-extern void object::CollectTitanium2()
-{
- // 1) Variable definition.
- object item; // info. about objects
-
- // 2) Go to the titanium ore and grab it.
- item = radar(TitaniumOre);// look for titanium ore
- goto(item.position); // go to the position
- grab(); // grab the titanium
-
- // 3) Go to the converter and drop it.
- item = radar(Converter); // look for converter
- goto(item.position); // go to the position
- drop(); // drop the titanium
- move(-2.5); // step back 2.5 m
-
- // 4) If power cell half empty, recharges.
- if ( energyCell.energyLevel < 0.5 )
- { // if so:
- item = radar(PowerStation); // look for station
- goto(item.position); // go there
- wait(5); // wait
- }
-}
+extern void object::CollectTitanium2()
+{
+ // 1) Variable definition.
+ object item; // info. about objects
+
+ // 2) Go to the titanium ore and grab it.
+ item = radar(TitaniumOre);// look for titanium ore
+ goto(item.position); // go to the position
+ grab(); // grab the titanium
+
+ // 3) Go to the converter and drop it.
+ item = radar(Converter); // look for converter
+ goto(item.position); // go to the position
+ drop(); // drop the titanium
+ move(-2.5); // step back 2.5 m
+
+ // 4) If power cell half empty, recharges.
+ if ( energyCell.energyLevel < 0.5 )
+ { // if so:
+ item = radar(PowerStation); // look for station
+ goto(item.position); // go there
+ wait(5); // wait
+ }
+}
diff --git a/ai/titan3.txt b/ai/titan3.txt
index cd818b86..b7afe5b5 100644
--- a/ai/titan3.txt
+++ b/ai/titan3.txt
@@ -1,48 +1,48 @@
-extern void object::CollectTitanium3()
-{
- // 1) Variable definition.
- object item; // info. about objects
-
- while (true) // repeat forever
- {
- // 2) Go to the titanium ore and grab it.
- item = radar(TitaniumOre);// look for titanium ore
- goto(item.position); // go to the position
- grab(); // grab the titanium
-
- // 3) Go to the converter and drop it.
- item = radar(Converter); // look for converter
- goto(item.position); // go to the position
- drop(); // drop the titanium
- move(-2.5); // step back 2.5 m
-
- // 4) Wait until titanium converted and grabs
- do
- {
- wait(1); // wait for cube
- item = radar(Titanium, 0, 45, 0, 5);
- }
- while ( item == null );
-
- goto(item.position);
- grab(); // take it
-
- // 5) Go to free space and drop it
- goto(space(position)); // go to free space
- drop(); // drop titanium
-
- // If power cell half empty, recharges.
- if ( energyCell.energyLevel < 0.5 )
- { // if so:
- item = radar(PowerStation);
- if ( item != null ) // station found ?
- {
- goto(item.position); // go there
- while ( energyCell.energyLevel < 1 )
- { // until recharged:
- wait(1); // wait
- }
- }
- }
- }
-}
+extern void object::CollectTitanium3()
+{
+ // 1) Variable definition.
+ object item; // info. about objects
+
+ while (true) // repeat forever
+ {
+ // 2) Go to the titanium ore and grab it.
+ item = radar(TitaniumOre);// look for titanium ore
+ goto(item.position); // go to the position
+ grab(); // grab the titanium
+
+ // 3) Go to the converter and drop it.
+ item = radar(Converter); // look for converter
+ goto(item.position); // go to the position
+ drop(); // drop the titanium
+ move(-2.5); // step back 2.5 m
+
+ // 4) Wait until titanium converted and grabs
+ do
+ {
+ wait(1); // wait for cube
+ item = radar(Titanium, 0, 45, 0, 5);
+ }
+ while ( item == null );
+
+ goto(item.position);
+ grab(); // take it
+
+ // 5) Go to free space and drop it
+ goto(space(position)); // go to free space
+ drop(); // drop titanium
+
+ // If power cell half empty, recharges.
+ if ( energyCell.energyLevel < 0.5 )
+ { // if so:
+ item = radar(PowerStation);
+ if ( item != null ) // station found ?
+ {
+ goto(item.position); // go there
+ while ( energyCell.energyLevel < 1 )
+ { // until recharged:
+ wait(1); // wait
+ }
+ }
+ }
+ }
+}
diff --git a/ai/titan4.txt b/ai/titan4.txt
index d7d61f84..16617972 100644
--- a/ai/titan4.txt
+++ b/ai/titan4.txt
@@ -1,50 +1,50 @@
-extern void object::CollectTitanium4()
-{
- // 1) Variable definition.
- object item; // info. about objects
-
- while (true) // repeat forever
- {
- // 2) Go to the titanium ore and grab it.
- item = radar(TitaniumOre);// look for titanium ore
- goto(item.position); // go to the position
- grab(); // grab the titanium
-
- // 3) Go to the converter and drop it.
- item = radar(Converter); // look for converter
- goto(item.position); // go to the position
- drop(); // drop the titanium
- move(-2.5); // step back 2.5 m
-
- // 4) Wait until titanium converted and grabs
- do
- {
- wait(1); // wait for cube
- item = radar(Titanium, 0, 45, 0, 5);
- }
- while ( item == null );
-
- goto(item.position);
- grab(); // take it
-
- // 5) Go to free space and drop it
- goto(space(position)); // go to free space
- drop(); // drop titanium
-
- // If power cell half empty, recharges.
- if ( energyCell.energyLevel < 0.5 )
- { // if so:
- item = radar(PowerCaptor);
- if ( item != null ) // station found ?
- {
- goto(item.position); // go there
- while ( energyCell.energyLevel < 1 )
- { // until recharged:
- wait(1); // wait
- }
- }
- }
- }
-}
-
-
+extern void object::CollectTitanium4()
+{
+ // 1) Variable definition.
+ object item; // info. about objects
+
+ while (true) // repeat forever
+ {
+ // 2) Go to the titanium ore and grab it.
+ item = radar(TitaniumOre);// look for titanium ore
+ goto(item.position); // go to the position
+ grab(); // grab the titanium
+
+ // 3) Go to the converter and drop it.
+ item = radar(Converter); // look for converter
+ goto(item.position); // go to the position
+ drop(); // drop the titanium
+ move(-2.5); // step back 2.5 m
+
+ // 4) Wait until titanium converted and grabs
+ do
+ {
+ wait(1); // wait for cube
+ item = radar(Titanium, 0, 45, 0, 5);
+ }
+ while ( item == null );
+
+ goto(item.position);
+ grab(); // take it
+
+ // 5) Go to free space and drop it
+ goto(space(position)); // go to free space
+ drop(); // drop titanium
+
+ // If power cell half empty, recharges.
+ if ( energyCell.energyLevel < 0.5 )
+ { // if so:
+ item = radar(PowerCaptor);
+ if ( item != null ) // station found ?
+ {
+ goto(item.position); // go there
+ while ( energyCell.energyLevel < 1 )
+ { // until recharged:
+ wait(1); // wait
+ }
+ }
+ }
+ }
+}
+
+
diff --git a/ai/tlaby1.txt b/ai/tlaby1.txt
index e6dc01a1..a6c2a63f 100644
--- a/ai/tlaby1.txt
+++ b/ai/tlaby1.txt
@@ -1,26 +1,26 @@
-extern void object::Solution( )
-{
- object front, left, right;
-
- front = radar(Barrier, 0, 45, 0, 5);
- left = radar(Barrier, 90, 45, 0, 5);
- right = radar(Barrier, -90, 45, 0, 5);
-
- if ( front == null )
- {
- move(5);
- return;
- }
- if ( left == null )
- {
- turn(90);
- move(5);
- return;
- }
- if ( right == null )
- {
- turn(-90);
- move(5);
- return;
- }
-}
+extern void object::Solution( )
+{
+ object front, left, right;
+
+ front = radar(Barrier, 0, 45, 0, 5);
+ left = radar(Barrier, 90, 45, 0, 5);
+ right = radar(Barrier, -90, 45, 0, 5);
+
+ if ( front == null )
+ {
+ move(5);
+ return;
+ }
+ if ( left == null )
+ {
+ turn(90);
+ move(5);
+ return;
+ }
+ if ( right == null )
+ {
+ turn(-90);
+ move(5);
+ return;
+ }
+}
diff --git a/ai/tlaby2.txt b/ai/tlaby2.txt
index 74208a08..d365ba84 100644
--- a/ai/tlaby2.txt
+++ b/ai/tlaby2.txt
@@ -1,28 +1,28 @@
-extern void object::Solution( )
-{
- while ( true )
- {
- object front, left, right;
-
- front = radar(Barrier, 0, 45, 0, 5);
- left = radar(Barrier, 90, 45, 0, 5);
- right = radar(Barrier, -90, 45, 0, 5);
-
- if ( front == null )
- {
- move(5);
- continue;
- }
- if ( left == null )
- {
- turn(90);
- continue;
- }
- if ( right == null )
- {
- turn(-90);
- continue;
- }
- break;
- }
-}
+extern void object::Solution( )
+{
+ while ( true )
+ {
+ object front, left, right;
+
+ front = radar(Barrier, 0, 45, 0, 5);
+ left = radar(Barrier, 90, 45, 0, 5);
+ right = radar(Barrier, -90, 45, 0, 5);
+
+ if ( front == null )
+ {
+ move(5);
+ continue;
+ }
+ if ( left == null )
+ {
+ turn(90);
+ continue;
+ }
+ if ( right == null )
+ {
+ turn(-90);
+ continue;
+ }
+ break;
+ }
+}
diff --git a/ai/tmove1.txt b/ai/tmove1.txt
index 6d79d09a..d2de1ab1 100644
--- a/ai/tmove1.txt
+++ b/ai/tmove1.txt
@@ -1,10 +1,10 @@
-extern void object::Solution( )
-{
- move(20); // go to checkpoint 1
- turn(90);
- move(20); // go to checkpoint 2
- turn(-90);
- move(20); // go to checkpoint 3
- turn(-90);
- move(20); // go to finishing pad
-}
+extern void object::Solution( )
+{
+ move(20); // go to checkpoint 1
+ turn(90);
+ move(20); // go to checkpoint 2
+ turn(-90);
+ move(20); // go to checkpoint 3
+ turn(-90);
+ move(20); // go to finishing pad
+}
diff --git a/ai/tmove2.txt b/ai/tmove2.txt
index 0b2989bf..eb10f51a 100644
--- a/ai/tmove2.txt
+++ b/ai/tmove2.txt
@@ -1,15 +1,15 @@
-extern void object::Solution( )
-{
- float dist, dir;
-
- dist = 20;
- dir = 90;
-
- move(dist); // go to checkpoint 1
- turn(dir);
- move(dist); // go to checkpoint 2
- turn(-dir);
- move(dist); // go to checkpoint 3
- turn(-dir);
- move(dist); // goeto finishing pad
-}
+extern void object::Solution( )
+{
+ float dist, dir;
+
+ dist = 20;
+ dir = 90;
+
+ move(dist); // go to checkpoint 1
+ turn(dir);
+ move(dist); // go to checkpoint 2
+ turn(-dir);
+ move(dist); // go to checkpoint 3
+ turn(-dir);
+ move(dist); // goeto finishing pad
+}
diff --git a/ai/tmove3.txt b/ai/tmove3.txt
index 4bfee335..7c40796c 100644
--- a/ai/tmove3.txt
+++ b/ai/tmove3.txt
@@ -1,15 +1,15 @@
-extern void object::Solution( )
-{
- float dist, dir;
-
- dist = 20;
- dir = 90;
-
- move(dist);
- turn(dir);
- move(dist*2);
- turn(dir);
- move(dist);
- turn(dir);
- move(dist);
-}
+extern void object::Solution( )
+{
+ float dist, dir;
+
+ dist = 20;
+ dir = 90;
+
+ move(dist);
+ turn(dir);
+ move(dist*2);
+ turn(dir);
+ move(dist);
+ turn(dir);
+ move(dist);
+}
diff --git a/ai/tower1.txt b/ai/tower1.txt
index e22cbcae..a9254fbb 100644
--- a/ai/tower1.txt
+++ b/ai/tower1.txt
@@ -1,31 +1,31 @@
-extern void object::ServiceTower1()
-{
- object tower; // info. about tower
- object station; // info. about station
-
- // 1) go to the defense tower
- tower = radar(DefenseTower); // look for tower
- goto(tower.position); // go there
-
- while ( true ) // repeat forever
- {
- // 2) wait until power cell is empty
- while ( tower.energyCell.energyLevel > 0.2 )
- {
- wait(2);
- }
- grab(); // grab the power cell
-
- // 3) go to the power station to recharge
- station = radar(PowerStation);
- goto(station.position); // go there
- while ( load.energyLevel < 1 )
- {
- wait(1); // wait until recharged
- }
-
- // 4) go back to defense tower
- goto(tower.position); // go to tower
- drop(); // drop the power cell
- }
-}
+extern void object::ServiceTower1()
+{
+ object tower; // info. about tower
+ object station; // info. about station
+
+ // 1) go to the defense tower
+ tower = radar(DefenseTower); // look for tower
+ goto(tower.position); // go there
+
+ while ( true ) // repeat forever
+ {
+ // 2) wait until power cell is empty
+ while ( tower.energyCell.energyLevel > 0.2 )
+ {
+ wait(2);
+ }
+ grab(); // grab the power cell
+
+ // 3) go to the power station to recharge
+ station = radar(PowerStation);
+ goto(station.position); // go there
+ while ( load.energyLevel < 1 )
+ {
+ wait(1); // wait until recharged
+ }
+
+ // 4) go back to defense tower
+ goto(tower.position); // go to tower
+ drop(); // drop the power cell
+ }
+}
diff --git a/ai/tproc1.txt b/ai/tproc1.txt
index 445a724a..0228378e 100644
--- a/ai/tproc1.txt
+++ b/ai/tproc1.txt
@@ -1,15 +1,14 @@
-extern void object::Solution( )
-{
- Square(15);
- Square(25);
-}
-
-void object::Square(float length)
-{
- for ( int i=0 ; i<4 ; i=i+1 )
- {
- move(length);
- turn(90);
- }
-}
-
\ No newline at end of file
+extern void object::Solution( )
+{
+ Square(15);
+ Square(25);
+}
+
+void object::Square(float length)
+{
+ for ( int i=0 ; i<4 ; i=i+1 )
+ {
+ move(length);
+ turn(90);
+ }
+}
diff --git a/ai/tproc2.txt b/ai/tproc2.txt
index b64df6ec..31f63098 100644
--- a/ai/tproc2.txt
+++ b/ai/tproc2.txt
@@ -1,18 +1,18 @@
-void object::Part(float length)
-{
- for ( int i=0 ; i<2 ; i=i+1 )
- {
- move(length);
- turn(90);
- }
-}
-
-extern void object::Solution( )
-{
- float rest = 25;
- while ( rest > 0 )
- {
- Part(rest);
- rest = rest-5;
- }
-}
+void object::Part(float length)
+{
+ for ( int i=0 ; i<2 ; i=i+1 )
+ {
+ move(length);
+ turn(90);
+ }
+}
+
+extern void object::Solution( )
+{
+ float rest = 25;
+ while ( rest > 0 )
+ {
+ Part(rest);
+ rest = rest-5;
+ }
+}
diff --git a/ai/tprot1.txt b/ai/tprot1.txt
index 2fee3cb8..a23f3589 100644
--- a/ai/tprot1.txt
+++ b/ai/tprot1.txt
@@ -1,24 +1,24 @@
-extern void object::Solution( )
-{
- object item;
- float dir, dist;
-
- while ( true )
- {
- do
- {
- item = radar(AlienAnt, 0, 360, 0, 100);
- }
- while ( item == null );
-
- dir = direction(item.position);
- turn(dir);
-
- dist = distance(item.position, position);
- if ( dist < 40 )
- {
- fire(0.2);
- wait(2);
- }
- }
-}
+extern void object::Solution( )
+{
+ object item;
+ float dir, dist;
+
+ while ( true )
+ {
+ do
+ {
+ item = radar(AlienAnt, 0, 360, 0, 100);
+ }
+ while ( item == null );
+
+ dir = direction(item.position);
+ turn(dir);
+
+ dist = distance(item.position, position);
+ if ( dist < 40 )
+ {
+ fire(0.2);
+ wait(2);
+ }
+ }
+}
diff --git a/ai/tprot1a.txt b/ai/tprot1a.txt
index 3c6b5a5c..aae701ab 100644
--- a/ai/tprot1a.txt
+++ b/ai/tprot1a.txt
@@ -1,53 +1,53 @@
-extern void object::Attack( )
-{
- object p;
- float dist, prox;
- point nav1, nav2, dest;
- boolean advance = true;
-
- wait(5);
-
- while ( true )
- {
- p = radar(WheeledShooter);
- if ( p == null )
- {
- nav1.x = position.x-5;
- nav1.y = position.y;
- nav2.x = position.x+5;
- nav2.y = position.y;
-
- while ( true )
- {
- goto(nav1);
- p = radar(WheeledShooter);
- if ( p != null ) break;
-
- goto(nav2);
- p = radar(WheeledShooter);
- if ( p != null ) break;
- }
- }
- else
- {
- dist = distance(p.position, position);
- if ( dist <= 25 && !advance )
- {
- fire(p.position);
- advance = true;
- wait(2);
- }
- else
- {
- prox = dist-5;
- if ( prox > 25 ) prox = 25;
- if ( prox < 15 ) prox = 15;
- dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
- dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
- dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
- goto(dest);
- advance = false;
- }
- }
- }
-}
+extern void object::Attack( )
+{
+ object p;
+ float dist, prox;
+ point nav1, nav2, dest;
+ boolean advance = true;
+
+ wait(5);
+
+ while ( true )
+ {
+ p = radar(WheeledShooter);
+ if ( p == null )
+ {
+ nav1.x = position.x-5;
+ nav1.y = position.y;
+ nav2.x = position.x+5;
+ nav2.y = position.y;
+
+ while ( true )
+ {
+ goto(nav1);
+ p = radar(WheeledShooter);
+ if ( p != null ) break;
+
+ goto(nav2);
+ p = radar(WheeledShooter);
+ if ( p != null ) break;
+ }
+ }
+ else
+ {
+ dist = distance(p.position, position);
+ if ( dist <= 25 && !advance )
+ {
+ fire(p.position);
+ advance = true;
+ wait(2);
+ }
+ else
+ {
+ prox = dist-5;
+ if ( prox > 25 ) prox = 25;
+ if ( prox < 15 ) prox = 15;
+ dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
+ dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
+ dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
+ goto(dest);
+ advance = false;
+ }
+ }
+ }
+}
diff --git a/ai/tradar1.txt b/ai/tradar1.txt
index afad79e3..1148deaf 100644
--- a/ai/tradar1.txt
+++ b/ai/tradar1.txt
@@ -1,26 +1,25 @@
-extern void object::Solution( )
-{
- while ( true )
- {
- object spot;
- float dir;
-
- spot = radar(WayPoint);
- if ( spot == null ) // no more ?
- {
- motor(0, 0); // stops
- break;
- }
-
- dir = direction(spot.position);
- if ( dir < 0 ) // on the right ?
- {
- motor(1, 1+dir/90);
- }
- else // on the left ?
- {
- motor(1-dir/90, 1);
- }
- }
-}
-
\ No newline at end of file
+extern void object::Solution( )
+{
+ while ( true )
+ {
+ object spot;
+ float dir;
+
+ spot = radar(WayPoint);
+ if ( spot == null ) // no more ?
+ {
+ motor(0, 0); // stops
+ break;
+ }
+
+ dir = direction(spot.position);
+ if ( dir < 0 ) // on the right ?
+ {
+ motor(1, 1+dir/90);
+ }
+ else // on the left ?
+ {
+ motor(1-dir/90, 1);
+ }
+ }
+}
diff --git a/ai/tradar2.txt b/ai/tradar2.txt
index 262c8133..a43910ba 100644
--- a/ai/tradar2.txt
+++ b/ai/tradar2.txt
@@ -1,32 +1,32 @@
-extern void object::Sow( )
-{
- while ( true )
- {
- float x, y;
- x = 8+rand()*24;
- y = -89.5+rand()*24;
- goto(x,y,0);
- produce(position, 0, WayPoint, "");
-
- while ( Compte(WayPoint) >= 20 )
- {
- wait(2);
- }
- }
-}
-
-int Compte(int cat)
-{
- int i, total;
- object p;
-
- total = 0;
- for ( i=0 ; i<10000 ; i++ )
- {
- p = retobject(i);
- if ( p == null ) break;
- if ( p.category == cat ) total ++;
- }
- return total;
-}
-
+extern void object::Sow( )
+{
+ while ( true )
+ {
+ float x, y;
+ x = 8+rand()*24;
+ y = -89.5+rand()*24;
+ goto(x,y,0);
+ produce(position, 0, WayPoint, "");
+
+ while ( Compte(WayPoint) >= 20 )
+ {
+ wait(2);
+ }
+ }
+}
+
+int Compte(int cat)
+{
+ int i, total;
+ object p;
+
+ total = 0;
+ for ( i=0 ; i<10000 ; i++ )
+ {
+ p = retobject(i);
+ if ( p == null ) break;
+ if ( p.category == cat ) total ++;
+ }
+ return total;
+}
+
diff --git a/ai/tremot1a.txt b/ai/tremot1a.txt
index ab0769c1..7b1fa965 100644
--- a/ai/tremot1a.txt
+++ b/ai/tremot1a.txt
@@ -1,14 +1,14 @@
-extern void object::Remote( )
-{
- send("order", 1, 100); // send "grab" order
- wait(5);
-
- send("order", 3, 100); // send "move(10)" order
- wait(5);
-
- send("order", 2, 100); // send "drop" order
- wait(5);
-
- send("order", 4, 100); // send "move(-10)" order
- wait(5);
-}
+extern void object::Remote( )
+{
+ send("order", 1, 100); // send "grab" order
+ wait(5);
+
+ send("order", 3, 100); // send "move(10)" order
+ wait(5);
+
+ send("order", 2, 100); // send "drop" order
+ wait(5);
+
+ send("order", 4, 100); // send "move(-10)" order
+ wait(5);
+}
diff --git a/ai/tremot1b.txt b/ai/tremot1b.txt
index eacc089d..89247d68 100644
--- a/ai/tremot1b.txt
+++ b/ai/tremot1b.txt
@@ -1,46 +1,46 @@
-extern void object::Slave( )
-{
- float order;
-
- errmode(0); // don't stop on errors
-
- while ( true )
- {
- // wait for order completion ...
- while ( !testinfo("order", 100) )
- {
- wait(1);
- }
-
- // get the order
- order = receive("order", 100);
-
- if ( order == 1 )
- {
- message("grab( )");
- grab();
- }
- else if ( order == 2 )
- {
- message("drop( )");
- drop();
- }
- else if ( order == 3 )
- {
- message("move(10)");
- move(10);
- }
- else if ( order == 4 )
- {
- message("move(-10)");
- move(-10);
- }
- else
- {
- message("Unknown order");
- }
-
- // signal "end of work"
- deleteinfo("order", 100);
- }
-}
+extern void object::Slave( )
+{
+ float order;
+
+ errmode(0); // don't stop on errors
+
+ while ( true )
+ {
+ // wait for order completion ...
+ while ( !testinfo("order", 100) )
+ {
+ wait(1);
+ }
+
+ // get the order
+ order = receive("order", 100);
+
+ if ( order == 1 )
+ {
+ message("grab( )");
+ grab();
+ }
+ else if ( order == 2 )
+ {
+ message("drop( )");
+ drop();
+ }
+ else if ( order == 3 )
+ {
+ message("move(10)");
+ move(10);
+ }
+ else if ( order == 4 )
+ {
+ message("move(-10)");
+ move(-10);
+ }
+ else
+ {
+ message("Unknown order");
+ }
+
+ // signal "end of work"
+ deleteinfo("order", 100);
+ }
+}
diff --git a/ai/tremot2a.txt b/ai/tremot2a.txt
index 1fdc1cd4..b1e12718 100644
--- a/ai/tremot2a.txt
+++ b/ai/tremot2a.txt
@@ -1,25 +1,25 @@
-extern void object::Remote( )
-{
- SendToPost(1, 20); // move(20);
- SendToPost(2, 90); // turn(90);
- SendToPost(1, 20); // move(20);
- SendToPost(2, 90); // turn(90);
- SendToPost(1, 10); // move(10);
- SendToPost(2, 90); // turn(90);
- SendToPost(1, 10); // move(10);
- SendToPost(2,-90); // turn(-90);
- SendToPost(1, 10); // move(10);
-}
-
-void object::SendToPost(float order, float param)
-{
- // send the order and the parameter
- send("order", order, 100);
- send("param", param, 100);
-
- // wait for end of work
- while ( testinfo("order", 100) )
- {
- wait(1);
- }
-}
+extern void object::Remote( )
+{
+ SendToPost(1, 20); // move(20);
+ SendToPost(2, 90); // turn(90);
+ SendToPost(1, 20); // move(20);
+ SendToPost(2, 90); // turn(90);
+ SendToPost(1, 10); // move(10);
+ SendToPost(2, 90); // turn(90);
+ SendToPost(1, 10); // move(10);
+ SendToPost(2,-90); // turn(-90);
+ SendToPost(1, 10); // move(10);
+}
+
+void object::SendToPost(float order, float param)
+{
+ // send the order and the parameter
+ send("order", order, 100);
+ send("param", param, 100);
+
+ // wait for end of work
+ while ( testinfo("order", 100) )
+ {
+ wait(1);
+ }
+}
diff --git a/ai/tremot2b.txt b/ai/tremot2b.txt
index d4104754..670bd9a4 100644
--- a/ai/tremot2b.txt
+++ b/ai/tremot2b.txt
@@ -1,35 +1,35 @@
-extern void object::Slave( )
-{
- float order, param;
-
- while ( true )
- {
- // wait for order ...
- while ( !testinfo("order", 100) )
- {
- wait(1);
- }
-
- // read the order and the parameter
- order = receive("order", 100);
- param = receive("param", 100);
-
- if ( order == 1 )
- {
- message("move("+param+")");
- move(param);
- }
- else if ( order == 2 )
- {
- message("turn("+param+")");
- turn(param);
- }
- else
- {
- message("Unknown order");
- }
-
- // signal "end of work"
- deleteinfo("order", 100);
- }
-}
+extern void object::Slave( )
+{
+ float order, param;
+
+ while ( true )
+ {
+ // wait for order ...
+ while ( !testinfo("order", 100) )
+ {
+ wait(1);
+ }
+
+ // read the order and the parameter
+ order = receive("order", 100);
+ param = receive("param", 100);
+
+ if ( order == 1 )
+ {
+ message("move("+param+")");
+ move(param);
+ }
+ else if ( order == 2 )
+ {
+ message("turn("+param+")");
+ turn(param);
+ }
+ else
+ {
+ message("Unknown order");
+ }
+
+ // signal "end of work"
+ deleteinfo("order", 100);
+ }
+}
diff --git a/ai/tremot3a.txt b/ai/tremot3a.txt
index a238f3bd..3d7ae997 100644
--- a/ai/tremot3a.txt
+++ b/ai/tremot3a.txt
@@ -1,22 +1,22 @@
-extern void object::Remote3( )
-{
- SendOrder("move(20)");
- SendOrder("turn(90)");
- SendOrder("move(20)");
- SendOrder("turn(90)");
- SendOrder("move(10)");
- SendOrder("turn(90)");
- SendOrder("move(10)");
- SendOrder("turn(-90)");
- SendOrder("move(10)");
-}
-
-void object::SendOrder(string order)
-{
- exchange list();
-
- while ( list.put(order) == false )
- {
- wait(1);
- }
-}
+extern void object::Remote3( )
+{
+ SendOrder("move(20)");
+ SendOrder("turn(90)");
+ SendOrder("move(20)");
+ SendOrder("turn(90)");
+ SendOrder("move(10)");
+ SendOrder("turn(90)");
+ SendOrder("move(10)");
+ SendOrder("turn(-90)");
+ SendOrder("move(10)");
+}
+
+void object::SendOrder(string order)
+{
+ exchange list();
+
+ while ( list.put(order) == false )
+ {
+ wait(1);
+ }
+}
diff --git a/ai/tremot3b.txt b/ai/tremot3b.txt
index 97f75a11..c8965a4a 100644
--- a/ai/tremot3b.txt
+++ b/ai/tremot3b.txt
@@ -1,52 +1,52 @@
-public class exchange
-{
- static private string m_order = "";
-
- // Put an order
- synchronized bool put(string order)
- {
- if ( m_order == "" )
- {
- m_order = order;
- return true;
- }
- else
- {
- return false;
- }
- }
-
- // Get an order
- synchronized string get()
- {
- string ret = m_order;
- m_order = "";
- return ret;
- }
-}
-
-extern void object::Slave3( )
-{
- exchange list();
- string todo;
-
- while ( true )
- {
- while ( true )
- {
- todo = list.get();
- if ( todo != "" ) break;
- wait(1);
- }
- message(todo);
-
- if ( strfind(todo, "move") == 0 )
- {
- move(strval(strmid(todo,5)));
- }
- if ( strfind(todo, "turn") == 0 )
- {
- turn(strval(strmid(todo,5)));
- }
- }
-}
+public class exchange
+{
+ static private string m_order = "";
+
+ // Put an order
+ synchronized bool put(string order)
+ {
+ if ( m_order == "" )
+ {
+ m_order = order;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ // Get an order
+ synchronized string get()
+ {
+ string ret = m_order;
+ m_order = "";
+ return ret;
+ }
+}
+
+extern void object::Slave3( )
+{
+ exchange list();
+ string todo;
+
+ while ( true )
+ {
+ while ( true )
+ {
+ todo = list.get();
+ if ( todo != "" ) break;
+ wait(1);
+ }
+ message(todo);
+
+ if ( strfind(todo, "move") == 0 )
+ {
+ move(strval(strmid(todo,5)));
+ }
+ if ( strfind(todo, "turn") == 0 )
+ {
+ turn(strval(strmid(todo,5)));
+ }
+ }
+}
diff --git a/ai/tremot4a.txt b/ai/tremot4a.txt
index fcbe5cb5..be18ba6f 100644
--- a/ai/tremot4a.txt
+++ b/ai/tremot4a.txt
@@ -1,26 +1,26 @@
-extern void object::Remote4( )
-{
- SendOrder(1, 20); // move(20);
- SendOrder(2, 90); // turn(90);
- SendOrder(1, 20); // move(20);
- SendOrder(2, 90); // turn(90);
- SendOrder(1, 10); // move(10);
- SendOrder(2, 90); // turn(90);
- SendOrder(1, 10); // move(10);
- SendOrder(2,-90); // turn(-90);
- SendOrder(1, 10); // move(10);
-}
-
-void object::SendOrder(float order, float param)
-{
- exchange list();
- order todo();
-
- todo.m_type = order;
- todo.m_param = param;
-
- while ( list.put(todo) == false )
- {
- wait(1);
- }
-}
+extern void object::Remote4( )
+{
+ SendOrder(1, 20); // move(20);
+ SendOrder(2, 90); // turn(90);
+ SendOrder(1, 20); // move(20);
+ SendOrder(2, 90); // turn(90);
+ SendOrder(1, 10); // move(10);
+ SendOrder(2, 90); // turn(90);
+ SendOrder(1, 10); // move(10);
+ SendOrder(2,-90); // turn(-90);
+ SendOrder(1, 10); // move(10);
+}
+
+void object::SendOrder(float order, float param)
+{
+ exchange list();
+ order todo();
+
+ todo.m_type = order;
+ todo.m_param = param;
+
+ while ( list.put(todo) == false )
+ {
+ wait(1);
+ }
+}
diff --git a/ai/tremot4b.txt b/ai/tremot4b.txt
index c3ab383a..0296b812 100644
--- a/ai/tremot4b.txt
+++ b/ai/tremot4b.txt
@@ -1,68 +1,68 @@
-public class order
-{
- int m_type = nan;
- float m_param;
-}
-
-public class exchange
-{
- static private order m_order = new order;
-
- // Put an order
- synchronized bool put(order a)
- {
- if ( m_order.m_type == nan )
- {
- m_order = a;
- return true;
- }
- else
- {
- return false;
- }
- }
-
- // Get an order
- synchronized order get()
- {
- return m_order;
- }
-
- // Delete an order.
- synchronized void delete()
- {
- m_order.m_type = nan;
- }
-}
-
-extern void object::Slave4( )
-{
- exchange list();
- order todo;
-
- while ( true )
- {
- while ( true )
- {
- todo = list.get();
- if ( todo.m_type != nan ) break;
- wait(1);
- }
-
- if ( todo.m_type == 1 )
- {
- message("move("+todo.m_param+")");
- move(todo.m_param);
- }
- else if ( todo.m_type == 2 )
- {
- message("turn("+todo.m_param+")");
- turn(todo.m_param);
- }
- else
- {
- message("Unknown order");
- }
- list.delete();
- }
-}
+public class order
+{
+ int m_type = nan;
+ float m_param;
+}
+
+public class exchange
+{
+ static private order m_order = new order;
+
+ // Put an order
+ synchronized bool put(order a)
+ {
+ if ( m_order.m_type == nan )
+ {
+ m_order = a;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ // Get an order
+ synchronized order get()
+ {
+ return m_order;
+ }
+
+ // Delete an order.
+ synchronized void delete()
+ {
+ m_order.m_type = nan;
+ }
+}
+
+extern void object::Slave4( )
+{
+ exchange list();
+ order todo;
+
+ while ( true )
+ {
+ while ( true )
+ {
+ todo = list.get();
+ if ( todo.m_type != nan ) break;
+ wait(1);
+ }
+
+ if ( todo.m_type == 1 )
+ {
+ message("move("+todo.m_param+")");
+ move(todo.m_param);
+ }
+ else if ( todo.m_type == 2 )
+ {
+ message("turn("+todo.m_param+")");
+ turn(todo.m_param);
+ }
+ else
+ {
+ message("Unknown order");
+ }
+ list.delete();
+ }
+}
diff --git a/ai/tremot5a.txt b/ai/tremot5a.txt
index 04e0d56c..57c7cf23 100644
--- a/ai/tremot5a.txt
+++ b/ai/tremot5a.txt
@@ -1,22 +1,22 @@
-extern void object::Remote5( )
-{
- SendOrder(1, 20); // move(20);
- SendOrder(2, 90); // turn(90);
- SendOrder(1, 20); // move(20);
- SendOrder(2, 90); // turn(90);
- SendOrder(1, 10); // move(10);
- SendOrder(2, 90); // turn(90);
- SendOrder(1, 10); // move(10);
- SendOrder(2,-90); // turn(-90);
- SendOrder(1, 10); // move(10);
-}
-
-void object::SendOrder(float order, float param)
-{
- exchange list();
- order todo();
-
- todo.m_type = order;
- todo.m_param = param;
- list.put(todo);
-}
+extern void object::Remote5( )
+{
+ SendOrder(1, 20); // move(20);
+ SendOrder(2, 90); // turn(90);
+ SendOrder(1, 20); // move(20);
+ SendOrder(2, 90); // turn(90);
+ SendOrder(1, 10); // move(10);
+ SendOrder(2, 90); // turn(90);
+ SendOrder(1, 10); // move(10);
+ SendOrder(2,-90); // turn(-90);
+ SendOrder(1, 10); // move(10);
+}
+
+void object::SendOrder(float order, float param)
+{
+ exchange list();
+ order todo();
+
+ todo.m_type = order;
+ todo.m_param = param;
+ list.put(todo);
+}
diff --git a/ai/tremot5b.txt b/ai/tremot5b.txt
index 4a16f983..211949af 100644
--- a/ai/tremot5b.txt
+++ b/ai/tremot5b.txt
@@ -1,62 +1,62 @@
-public class order
-{
- int m_type;
- float m_param;
-}
-
-public class exchange
-{
- static private order m_fifo[] = null;
-
- // Put an order into the fifo
- synchronized void put(order a)
- {
- m_fifo[sizeof(m_fifo)] = a;
- }
-
- // Get an order from the fifo
- synchronized order get()
- {
- if ( sizeof(m_fifo) == 0 ) return null;
-
- order a = m_fifo[0];
- order copy[] = null;
- for ( int i=1 ; i item.position.z)
- {
- jet(-0.3);
- }
-
- if(position.z < item.position.z - 1)
- {
- jet(0.3);
- }
-
- wait(0.2);
- }
- item = radar(AlienWasp);
- turn(direction(item.position));
- fire(1);
- }
-
-}
+extern void object::Solution()
+{
+
+ object item;
+
+ aim(0);
+
+ while (true)
+ {
+ while(radar(AlienWasp, 0, 360, 0, 20) == null)
+ {
+ item = radar(AlienWasp);
+ turn(direction(item.position));
+ motor(1,1);
+
+ jet(0);
+ if(position.z > item.position.z)
+ {
+ jet(-0.3);
+ }
+
+ if(position.z < item.position.z - 1)
+ {
+ jet(0.3);
+ }
+
+ wait(0.2);
+ }
+ item = radar(AlienWasp);
+ turn(direction(item.position));
+ fire(1);
+ }
+
+}
diff --git a/ai/twasp2.txt b/ai/twasp2.txt
index 016e539e..cc91930c 100644
--- a/ai/twasp2.txt
+++ b/ai/twasp2.txt
@@ -1,56 +1,56 @@
-extern void object::Solution()
-{
-
- object item;
- float angle;
-
- aim(0);
-
- while (true)
- {
- while(radar(AlienWasp, 0, 360, 0, 20) == null)
- {
- item = radar(AlienWasp);
- turn(direction(item.position));
- motor(1,1);
-
- jet(0);
- if(position.z > item.position.z)
- {
- jet(-0.3);
- }
-
- if(position.z < item.position.z - 1)
- {
- jet(0.3);
- }
-
- wait(0.2);
- }
- item = radar(AlienWasp);
- angle = direction(item.position);
- turn(angle);
- if (angle < 0)
- {
- motor(1,0.5);
- }
- else
- {
- motor(0.5,1);
- }
-
- jet(0);
- if(position.z > item.position.z)
- {
- jet(-0.3);
- }
-
- if(position.z < item.position.z - 1)
- {
- jet(0.3);
- }
-
- fire(1);
- }
-
-}
+extern void object::Solution()
+{
+
+ object item;
+ float angle;
+
+ aim(0);
+
+ while (true)
+ {
+ while(radar(AlienWasp, 0, 360, 0, 20) == null)
+ {
+ item = radar(AlienWasp);
+ turn(direction(item.position));
+ motor(1,1);
+
+ jet(0);
+ if(position.z > item.position.z)
+ {
+ jet(-0.3);
+ }
+
+ if(position.z < item.position.z - 1)
+ {
+ jet(0.3);
+ }
+
+ wait(0.2);
+ }
+ item = radar(AlienWasp);
+ angle = direction(item.position);
+ turn(angle);
+ if (angle < 0)
+ {
+ motor(1,0.5);
+ }
+ else
+ {
+ motor(0.5,1);
+ }
+
+ jet(0);
+ if(position.z > item.position.z)
+ {
+ jet(-0.3);
+ }
+
+ if(position.z < item.position.z - 1)
+ {
+ jet(0.3);
+ }
+
+ fire(1);
+ }
+
+}
diff --git a/ai/wait.txt b/ai/wait.txt
index 5d8f66fe..f850dc29 100644
--- a/ai/wait.txt
+++ b/ai/wait.txt
@@ -1,7 +1,7 @@
-extern void object::Wait( )
-{
- while ( true )
- {
- wait(2);
- }
-}
+extern void object::Wait( )
+{
+ while ( true )
+ {
+ wait(2);
+ }
+}
diff --git a/ai/wasp01.txt b/ai/wasp01.txt
index 12944f01..ca62fcc9 100644
--- a/ai/wasp01.txt
+++ b/ai/wasp01.txt
@@ -1,110 +1,110 @@
-extern void object::Attack( )
-{
- int list[], i;
- object p;
- float dist;
- point dest;
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
- list[i++] = Derrick;
- list[i++] = BotFactory;
- list[i++] = PowerStation;
- list[i++] = Converter;
- list[i++] = RepairCenter;
- list[i++] = DefenseTower;
- list[i++] = ResearchCenter;
- list[i++] = RadarStation;
- list[i++] = ExchangePost;
- list[i++] = PowerPlant;
- list[i++] = AutoLab;
- list[i++] = NuclearPlant;
- list[i++] = Titanium;
- list[i++] = PowerCell;
- list[i++] = NuclearCell;
-
- while ( true )
- {
- if ( load == null ) // ne porte rien ?
- {
- p = radar(OrgaMatter); // cherche matière
- if ( p == null )
- {
- jet(1); // monte
- dest = position;
- dest.x += (rand()-0.5)*10;
- dest.y += (rand()-0.5)*10;
- goto(dest); // va n'importe où
- wait(2);
- }
- else
- {
- dest = p.position;
- dest.z = position.z;
- dist = distance(dest, position);
- if ( dist > 1.25 )
- {
- jet(1); // monte
- goto(p.position); // va sur le matière
- }
- else
- {
- jet(-1); // descend
- while ( altitude > 0 );
- grab(); // prend la matière
- }
- }
- }
- else // porte matière ?
- {
- jet(1); // monte
- p = radar(list, 0, 360, 0, 1000, 1, FilterOnlyLanding);
- if ( p == null )
- {
- dest = position;
- dest.x += (rand()-0.5)*10;
- dest.y += (rand()-0.5)*10;
- goto(dest); // va n'importe où
- wait(2);
- }
- else
- {
- dest = p.position;
- dest.z = position.z;
- dist = distance(dest, position);
- if ( dist > 1.25 )
- {
- goto(p.position); // va sur la cible
- }
- else
- {
- drop(); // lâche la matière
- }
- }
- }
- }
-}
+extern void object::Attack( )
+{
+ int list[], i;
+ object p;
+ float dist;
+ point dest;
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+ list[i++] = Derrick;
+ list[i++] = BotFactory;
+ list[i++] = PowerStation;
+ list[i++] = Converter;
+ list[i++] = RepairCenter;
+ list[i++] = DefenseTower;
+ list[i++] = ResearchCenter;
+ list[i++] = RadarStation;
+ list[i++] = ExchangePost;
+ list[i++] = PowerPlant;
+ list[i++] = AutoLab;
+ list[i++] = NuclearPlant;
+ list[i++] = Titanium;
+ list[i++] = PowerCell;
+ list[i++] = NuclearCell;
+
+ while ( true )
+ {
+ if ( load == null ) // ne porte rien ?
+ {
+ p = radar(OrgaMatter); // cherche matière
+ if ( p == null )
+ {
+ jet(1); // monte
+ dest = position;
+ dest.x += (rand()-0.5)*10;
+ dest.y += (rand()-0.5)*10;
+ goto(dest); // va n'importe où
+ wait(2);
+ }
+ else
+ {
+ dest = p.position;
+ dest.z = position.z;
+ dist = distance(dest, position);
+ if ( dist > 1.25 )
+ {
+ jet(1); // monte
+ goto(p.position); // va sur le matière
+ }
+ else
+ {
+ jet(-1); // descend
+ while ( altitude > 0 );
+ grab(); // prend la matière
+ }
+ }
+ }
+ else // porte matière ?
+ {
+ jet(1); // monte
+ p = radar(list, 0, 360, 0, 1000, 1, FilterOnlyLanding);
+ if ( p == null )
+ {
+ dest = position;
+ dest.x += (rand()-0.5)*10;
+ dest.y += (rand()-0.5)*10;
+ goto(dest); // va n'importe où
+ wait(2);
+ }
+ else
+ {
+ dest = p.position;
+ dest.z = position.z;
+ dist = distance(dest, position);
+ if ( dist > 1.25 )
+ {
+ goto(p.position); // va sur la cible
+ }
+ else
+ {
+ drop(); // lâche la matière
+ }
+ }
+ }
+ }
+}
diff --git a/ai/wasp02.txt b/ai/wasp02.txt
index a6c02e63..fdea70fc 100644
--- a/ai/wasp02.txt
+++ b/ai/wasp02.txt
@@ -1,74 +1,74 @@
-extern void object::Attack( )
-{
- int list[], i;
- object p;
- float dist;
- point dest, center;
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = Derrick;
-
- while ( true )
- {
- if ( load == null ) // ne porte rien ?
- {
- p = radar(OrgaMatter); // cherche matière
- if ( p == null )
- {
- jet(1); // monte
- dest = position;
- dest.x += (rand()-0.5)*10;
- dest.y += (rand()-0.5)*10;
- goto(dest); // va n'importe où
- wait(2);
- }
- else
- {
- center = p.position;
- dest = p.position;
- dest.z = position.z;
- dist = distance(dest, position);
- if ( dist > 1.25 )
- {
- jet(1); // monte
- goto(p.position); // va sur la matière
- }
- else
- {
- jet(-1); // descend
- while ( altitude > 0 );
- grab(); // prend la matière
- }
- }
- }
- else // porte matière ?
- {
- jet(1); // monte
- p = radar(list, 0, 360, 0, 1000, 1, FilterOnlyLanding);
- if ( p == null )
- {
- dest = center;
- dest.x += (rand()-0.5)*100;
- dest.y += (rand()-0.5)*100;
- goto(dest, 0, 1, 0); // va n'importe où
- }
- else
- {
- dest = p.position;
- dest.z = position.z;
- dist = distance(dest, position);
- if ( dist > 1.25 )
- {
- goto(p.position); // va sur la cible
- }
- else
- {
- drop(); // lâche la matière
- }
- }
- }
- }
-}
+extern void object::Attack( )
+{
+ int list[], i;
+ object p;
+ float dist;
+ point dest, center;
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = Derrick;
+
+ while ( true )
+ {
+ if ( load == null ) // ne porte rien ?
+ {
+ p = radar(OrgaMatter); // cherche matière
+ if ( p == null )
+ {
+ jet(1); // monte
+ dest = position;
+ dest.x += (rand()-0.5)*10;
+ dest.y += (rand()-0.5)*10;
+ goto(dest); // va n'importe où
+ wait(2);
+ }
+ else
+ {
+ center = p.position;
+ dest = p.position;
+ dest.z = position.z;
+ dist = distance(dest, position);
+ if ( dist > 1.25 )
+ {
+ jet(1); // monte
+ goto(p.position); // va sur la matière
+ }
+ else
+ {
+ jet(-1); // descend
+ while ( altitude > 0 );
+ grab(); // prend la matière
+ }
+ }
+ }
+ else // porte matière ?
+ {
+ jet(1); // monte
+ p = radar(list, 0, 360, 0, 1000, 1, FilterOnlyLanding);
+ if ( p == null )
+ {
+ dest = center;
+ dest.x += (rand()-0.5)*100;
+ dest.y += (rand()-0.5)*100;
+ goto(dest, 0, 1, 0); // va n'importe où
+ }
+ else
+ {
+ dest = p.position;
+ dest.z = position.z;
+ dist = distance(dest, position);
+ if ( dist > 1.25 )
+ {
+ goto(p.position); // va sur la cible
+ }
+ else
+ {
+ drop(); // lâche la matière
+ }
+ }
+ }
+ }
+}
diff --git a/ai/wasp03.txt b/ai/wasp03.txt
index bbc732f1..f181e480 100644
--- a/ai/wasp03.txt
+++ b/ai/wasp03.txt
@@ -1,110 +1,110 @@
-extern void object::Attack( )
-{
- int list[], i;
- object p;
- float dist;
- point dest;
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = Me;
- list[i++] = Derrick;
- list[i++] = BotFactory;
- list[i++] = PowerStation;
- list[i++] = Converter;
- list[i++] = RepairCenter;
- list[i++] = DefenseTower;
- list[i++] = ResearchCenter;
- list[i++] = RadarStation;
- list[i++] = ExchangePost;
- list[i++] = PowerPlant;
- list[i++] = AutoLab;
- list[i++] = NuclearPlant;
- list[i++] = Titanium;
-// list[i++] = PowerCell;
- list[i++] = NuclearCell;
-
- while ( true )
- {
- if ( load == null ) // ne porte rien ?
- {
- p = radar(OrgaMatter); // cherche matière
- if ( p == null )
- {
- jet(1); // monte
- dest = position;
- dest.x += (rand()-0.5)*10;
- dest.y += (rand()-0.5)*10;
- goto(dest); // va n'importe où
- wait(2);
- }
- else
- {
- dest = p.position;
- dest.z = position.z;
- dist = distance(dest, position);
- if ( dist > 1.25 )
- {
- jet(1); // monte
- goto(p.position); // va sur la matière
- }
- else
- {
- jet(-1); // descend
- while ( altitude > 0 );
- grab(); // prend la matière
- }
- }
- }
- else // porte matière ?
- {
- jet(1); // monte
- p = radar(list, 0, 360, 0, 1000, 1, FilterOnlyLanding);
- if ( p == null )
- {
- dest = position;
- dest.x += (rand()-0.5)*10;
- dest.y += (rand()-0.5)*10;
- goto(dest); // va n'importe où
- wait(2);
- }
- else
- {
- dest = p.position;
- dest.z = position.z;
- dist = distance(dest, position);
- if ( dist > 1.25 )
- {
- goto(p.position); // va sur la cible
- }
- else
- {
- drop(); // lâche la matière
- }
- }
- }
- }
-}
+extern void object::Attack( )
+{
+ int list[], i;
+ object p;
+ float dist;
+ point dest;
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = Me;
+ list[i++] = Derrick;
+ list[i++] = BotFactory;
+ list[i++] = PowerStation;
+ list[i++] = Converter;
+ list[i++] = RepairCenter;
+ list[i++] = DefenseTower;
+ list[i++] = ResearchCenter;
+ list[i++] = RadarStation;
+ list[i++] = ExchangePost;
+ list[i++] = PowerPlant;
+ list[i++] = AutoLab;
+ list[i++] = NuclearPlant;
+ list[i++] = Titanium;
+// list[i++] = PowerCell;
+ list[i++] = NuclearCell;
+
+ while ( true )
+ {
+ if ( load == null ) // ne porte rien ?
+ {
+ p = radar(OrgaMatter); // cherche matière
+ if ( p == null )
+ {
+ jet(1); // monte
+ dest = position;
+ dest.x += (rand()-0.5)*10;
+ dest.y += (rand()-0.5)*10;
+ goto(dest); // va n'importe où
+ wait(2);
+ }
+ else
+ {
+ dest = p.position;
+ dest.z = position.z;
+ dist = distance(dest, position);
+ if ( dist > 1.25 )
+ {
+ jet(1); // monte
+ goto(p.position); // va sur la matière
+ }
+ else
+ {
+ jet(-1); // descend
+ while ( altitude > 0 );
+ grab(); // prend la matière
+ }
+ }
+ }
+ else // porte matière ?
+ {
+ jet(1); // monte
+ p = radar(list, 0, 360, 0, 1000, 1, FilterOnlyLanding);
+ if ( p == null )
+ {
+ dest = position;
+ dest.x += (rand()-0.5)*10;
+ dest.y += (rand()-0.5)*10;
+ goto(dest); // va n'importe où
+ wait(2);
+ }
+ else
+ {
+ dest = p.position;
+ dest.z = position.z;
+ dist = distance(dest, position);
+ if ( dist > 1.25 )
+ {
+ goto(p.position); // va sur la cible
+ }
+ else
+ {
+ drop(); // lâche la matière
+ }
+ }
+ }
+ }
+}
diff --git a/ai/waspe1.txt b/ai/waspe1.txt
index ed80ce5d..d5b092ce 100644
--- a/ai/waspe1.txt
+++ b/ai/waspe1.txt
@@ -1,36 +1,36 @@
-extern void object::Guêpes()
-{
-float p;// puissance max des moteurs
-float r;// nombre aléatoire
-point c;// centre de la zone permise
-
-c.x = 0;
-c.y = 0;
-c.z = 0;
-
-p = 1;
-jet( rand()*4 + 1);
-
-while (true)
-{
-if (distance(position, c) > 275)
-{
-if (direction(c) > 0) motor(0.7*p, p); else motor(p, 0.7*p);
-while (abs(direction(c)) > 30) wait(1);
-}
-
-motor(p,p);
-r = rand();
-if (r < 0.4)
-{
-motor(p, p-rand()*0.8);
-}
-if (r > 0.6)
-{
-motor(p-rand()*0.8, p);
-}
-if (r <= 0.7 and r >= 0.3) jet(rand()*4 + 1);
-
-wait(1);
-}
-}
+extern void object::Guêpes()
+{
+float p;// puissance max des moteurs
+float r;// nombre aléatoire
+point c;// centre de la zone permise
+
+c.x = 0;
+c.y = 0;
+c.z = 0;
+
+p = 1;
+jet( rand()*4 + 1);
+
+while (true)
+{
+if (distance(position, c) > 275)
+{
+if (direction(c) > 0) motor(0.7*p, p); else motor(p, 0.7*p);
+while (abs(direction(c)) > 30) wait(1);
+}
+
+motor(p,p);
+r = rand();
+if (r < 0.4)
+{
+motor(p, p-rand()*0.8);
+}
+if (r > 0.6)
+{
+motor(p-rand()*0.8, p);
+}
+if (r <= 0.7 and r >= 0.3) jet(rand()*4 + 1);
+
+wait(1);
+}
+}
diff --git a/ai/win904a.txt b/ai/win904a.txt
index c2fd8d18..4da560ee 100644
--- a/ai/win904a.txt
+++ b/ai/win904a.txt
@@ -1,17 +1,17 @@
-extern void object::Win( )
-{
- errmode(0); // ne stoppe pas si erreur
-
- while ( true )
- {
- goto( 5, -28, 0,1,1);
- goto( 0, -16, 0,1,1);
- goto( -2, 2, 0,1,1);
- goto(-15, -5, 0,1,1);
- goto( -2, 2, 0,0,1);
- turn(-90);
- goto( 0, -16, 0,1,1);
- goto( 0, -28, 0,1,1);
- goto( 10, -47, 0,1,1);
- }
-}
+extern void object::Win( )
+{
+ errmode(0); // ne stoppe pas si erreur
+
+ while ( true )
+ {
+ goto( 5, -28, 0,1,1);
+ goto( 0, -16, 0,1,1);
+ goto( -2, 2, 0,1,1);
+ goto(-15, -5, 0,1,1);
+ goto( -2, 2, 0,0,1);
+ turn(-90);
+ goto( 0, -16, 0,1,1);
+ goto( 0, -28, 0,1,1);
+ goto( 10, -47, 0,1,1);
+ }
+}
diff --git a/ai/win904b.txt b/ai/win904b.txt
index 8a68f39e..73929f2e 100644
--- a/ai/win904b.txt
+++ b/ai/win904b.txt
@@ -1,10 +1,10 @@
-extern void object::Win( )
-{
- errmode(0); // ne stoppe pas si erreur
-
- while ( true )
- {
- goto( 13, 4, 0,0,1);
- goto(-12, 13, 0,0,1);
- }
-}
+extern void object::Win( )
+{
+ errmode(0); // ne stoppe pas si erreur
+
+ while ( true )
+ {
+ goto( 13, 4, 0,0,1);
+ goto(-12, 13, 0,0,1);
+ }
+}
diff --git a/ai/win904c.txt b/ai/win904c.txt
index d5fdf411..d4bbcd6f 100644
--- a/ai/win904c.txt
+++ b/ai/win904c.txt
@@ -1,11 +1,11 @@
-extern void object::Win( )
-{
- errmode(0); // ne stoppe pas si erreur
-
- while ( true )
- {
- goto(5, 40, 8);
- wait(5);
- goto(-8, -124, 8);
- }
-}
+extern void object::Win( )
+{
+ errmode(0); // ne stoppe pas si erreur
+
+ while ( true )
+ {
+ goto(5, 40, 8);
+ wait(5);
+ goto(-8, -124, 8);
+ }
+}
diff --git a/ai/wingsh02.txt b/ai/wingsh02.txt
index 54508910..b83a51b9 100644
--- a/ai/wingsh02.txt
+++ b/ai/wingsh02.txt
@@ -1,37 +1,37 @@
-extern void object::Attaque1()
-{
-
-object alien;
-
-while(true)
-{
-if(energyCell != null) if(energyCell.energyLevel > 0.5) break;
-}
-
-aim(-20);
-
-while(true)
-{
-jet(0.4);
-while(position.z - topo(position) < 1.5)
-{
-wait(1);
-}
-
-alien = radar(AlienAnt, 0, 360, 0, 1000, -1);
-if (alien == null) break;
-turn(direction(alien.position));
-motor(1,1);
-while(distance(position, alien.position) > 50)
-{
-wait(0.2);
-alien = radar(AlienAnt, 0, 360, 0, 1000, -1);
-if (alien == null) break;
-turn(direction(alien.position));
-motor(1,1);
-}
-fire(3);
-wait(4);
-}
-
-}
+extern void object::Attaque1()
+{
+
+object alien;
+
+while(true)
+{
+if(energyCell != null) if(energyCell.energyLevel > 0.5) break;
+}
+
+aim(-20);
+
+while(true)
+{
+jet(0.4);
+while(position.z - topo(position) < 1.5)
+{
+wait(1);
+}
+
+alien = radar(AlienAnt, 0, 360, 0, 1000, -1);
+if (alien == null) break;
+turn(direction(alien.position));
+motor(1,1);
+while(distance(position, alien.position) > 50)
+{
+wait(0.2);
+alien = radar(AlienAnt, 0, 360, 0, 1000, -1);
+if (alien == null) break;
+turn(direction(alien.position));
+motor(1,1);
+}
+fire(3);
+wait(4);
+}
+
+}
diff --git a/ai/wingshoo.txt b/ai/wingshoo.txt
index 7237ff8f..47acc1c1 100644
--- a/ai/wingshoo.txt
+++ b/ai/wingshoo.txt
@@ -1,34 +1,34 @@
-extern void object::Attaque1()
-{
-
-object alien;
-
-while(true)
-{
-if(energyCell != null) if(energyCell.energyLevel > 0.5) break;
-}
-
-aim(-20);
-
-while(true)
-{
-jet(0.4);
-while(position.z - topo(position) < 1.5)
-{
-wait(1);
-}
-
-alien = radar(AlienSpider);
-turn(direction(alien.position));
-motor(1,1);
-while(distance(position, alien.position) > 15)
-{
-alien = radar(AlienSpider);
-turn(direction(alien.position));
-motor(1,1);
-wait(0.2);
-}
-fire(1);
-}
-
-}
+extern void object::Attaque1()
+{
+
+object alien;
+
+while(true)
+{
+if(energyCell != null) if(energyCell.energyLevel > 0.5) break;
+}
+
+aim(-20);
+
+while(true)
+{
+jet(0.4);
+while(position.z - topo(position) < 1.5)
+{
+wait(1);
+}
+
+alien = radar(AlienSpider);
+turn(direction(alien.position));
+motor(1,1);
+while(distance(position, alien.position) > 15)
+{
+alien = radar(AlienSpider);
+turn(direction(alien.position));
+motor(1,1);
+wait(0.2);
+}
+fire(1);
+}
+
+}
diff --git a/ai/worm01.txt b/ai/worm01.txt
index 3e3148f0..e88c3638 100644
--- a/ai/worm01.txt
+++ b/ai/worm01.txt
@@ -1,31 +1,31 @@
-extern void object::Attack( )
-{
- int enemy;
- object p;
- float dist, prox;
- point dest;
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- enemy = WheeledGrabber;
-
- while ( true )
- {
- p = radar(enemy); // cherche cible
- if ( p == null )
- {
- wait(2);
- }
- else
- {
- dist = distance(p.position, position);
- prox = dist/2; // on se rapproche
- if ( prox < 2.5 ) prox = 2.5; // pas trop tout de même
- dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
- dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
- dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
- goto(dest); // va sur la cible
- }
- }
-}
+extern void object::Attack( )
+{
+ int enemy;
+ object p;
+ float dist, prox;
+ point dest;
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ enemy = WheeledGrabber;
+
+ while ( true )
+ {
+ p = radar(enemy); // cherche cible
+ if ( p == null )
+ {
+ wait(2);
+ }
+ else
+ {
+ dist = distance(p.position, position);
+ prox = dist/2; // on se rapproche
+ if ( prox < 2.5 ) prox = 2.5; // pas trop tout de même
+ dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
+ dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
+ dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
+ goto(dest); // va sur la cible
+ }
+ }
+}
diff --git a/ai/worm02.txt b/ai/worm02.txt
index 1be4a8a5..a0b68706 100644
--- a/ai/worm02.txt
+++ b/ai/worm02.txt
@@ -1,111 +1,111 @@
-extern void object::Attack( )
-{
- int list[];
- int i;
- object p;
- float dim, dist, prox;
- point nav1, nav2, nav3, nav4, dest, center;
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = RadarStation;
-// list[i++] = DefenseTower;
-
- while ( true )
- {
- p = TargetSearch(list); // cherche cible
- if ( p == null )
- {
- dim = 1+rand()*2;
- nav1.x = position.x+dim;
- nav1.y = position.y+dim;
- nav2.x = position.x+dim;
- nav2.y = position.y-dim;
- nav3.x = position.x-dim;
- nav3.y = position.y-dim;
- nav4.x = position.x-dim;
- nav4.y = position.y+dim;
-
- while ( true )
- {
- goto(nav1);
- p = TargetSearch(list);
- if ( p != null ) break;
-
- goto(nav2);
- p = TargetSearch(list);
- if ( p != null ) break;
-
- goto(nav3);
- p = TargetSearch(list);
- if ( p != null ) break;
-
- goto(nav4);
- p = TargetSearch(list);
- if ( p != null ) break;
- }
- }
- else
- {
- dist = distance(p.position, position);
- prox = dist/2; // on se rapproche
- if ( prox < 2.5 )
- {
- dest.x = position.x+(rand()-0.5)*8;
- dest.y = position.y+(rand()-0.5)*8;
- dest.z = position.z;
- }
- else
- {
- dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
- dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
- dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
- }
- goto(dest); // va sur la cible
- }
- }
-}
-
-// Cherche une cible sur l'île. Si la cible est plus loin,
-// elle est ignorée.
-
-object object::TargetSearch(int[] list)
-{
- object p;
- point center;
- float dist;
-
- p = radar(list);
- if ( p == null ) return null;
-
- center.x = 0;
- center.y = 100; // sommet de l'île
- center.z = p.position.z;
- dist = distance(p.position, center);
- if ( dist > 80 ) return null; // ignore si trop loin
-
- return p;
-}
+extern void object::Attack( )
+{
+ int list[];
+ int i;
+ object p;
+ float dim, dist, prox;
+ point nav1, nav2, nav3, nav4, dest, center;
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = RadarStation;
+// list[i++] = DefenseTower;
+
+ while ( true )
+ {
+ p = TargetSearch(list); // cherche cible
+ if ( p == null )
+ {
+ dim = 1+rand()*2;
+ nav1.x = position.x+dim;
+ nav1.y = position.y+dim;
+ nav2.x = position.x+dim;
+ nav2.y = position.y-dim;
+ nav3.x = position.x-dim;
+ nav3.y = position.y-dim;
+ nav4.x = position.x-dim;
+ nav4.y = position.y+dim;
+
+ while ( true )
+ {
+ goto(nav1);
+ p = TargetSearch(list);
+ if ( p != null ) break;
+
+ goto(nav2);
+ p = TargetSearch(list);
+ if ( p != null ) break;
+
+ goto(nav3);
+ p = TargetSearch(list);
+ if ( p != null ) break;
+
+ goto(nav4);
+ p = TargetSearch(list);
+ if ( p != null ) break;
+ }
+ }
+ else
+ {
+ dist = distance(p.position, position);
+ prox = dist/2; // on se rapproche
+ if ( prox < 2.5 )
+ {
+ dest.x = position.x+(rand()-0.5)*8;
+ dest.y = position.y+(rand()-0.5)*8;
+ dest.z = position.z;
+ }
+ else
+ {
+ dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
+ dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
+ dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
+ }
+ goto(dest); // va sur la cible
+ }
+ }
+}
+
+// Cherche une cible sur l'île. Si la cible est plus loin,
+// elle est ignorée.
+
+object object::TargetSearch(int[] list)
+{
+ object p;
+ point center;
+ float dist;
+
+ p = radar(list);
+ if ( p == null ) return null;
+
+ center.x = 0;
+ center.y = 100; // sommet de l'île
+ center.z = p.position.z;
+ dist = distance(p.position, center);
+ if ( dist > 80 ) return null; // ignore si trop loin
+
+ return p;
+}
diff --git a/ai/worm03.txt b/ai/worm03.txt
index 522bfca1..f41dd3e6 100644
--- a/ai/worm03.txt
+++ b/ai/worm03.txt
@@ -1,90 +1,90 @@
-extern void object::Attack( )
-{
- int list[];
- int i;
- object p;
- float dim, dist, prox;
- point nav1, nav2, nav3, nav4, dest;
-
- errmode(0); // ne stoppe pas si erreur
- while ( ismovie() != 0 ) wait(1);
-
- i = 0;
- list[i++] = WingedGrabber;
- list[i++] = TrackedGrabber;
- list[i++] = WheeledGrabber;
- list[i++] = LeggedGrabber;
- list[i++] = WingedShooter;
- list[i++] = TrackedShooter;
- list[i++] = WheeledShooter;
- list[i++] = LeggedShooter;
- list[i++] = WingedOrgaShooter;
- list[i++] = TrackedOrgaShooter;
- list[i++] = WheeledOrgaShooter;
- list[i++] = LeggedOrgaShooter;
- list[i++] = WingedSniffer;
- list[i++] = TrackedSniffer;
- list[i++] = WheeledSniffer;
- list[i++] = LeggedSniffer;
- list[i++] = Thumper;
- list[i++] = PhazerShooter;
- list[i++] = Recycler;
- list[i++] = Shielder;
- list[i++] = Subber;
- list[i++] = RadarStation;
-// list[i++] = DefenseTower;
-
- while ( true )
- {
- p = radar(list, 0, 360, 0, 60); // cherche cible
- if ( p == null )
- {
- dim = 1+rand()*2;
- nav1.x = position.x+dim;
- nav1.y = position.y+dim;
- nav2.x = position.x+dim;
- nav2.y = position.y-dim;
- nav3.x = position.x-dim;
- nav3.y = position.y-dim;
- nav4.x = position.x-dim;
- nav4.y = position.y+dim;
-
- while ( true )
- {
- goto(nav1);
- p = radar(list, 0, 360, 0, 60);
- if ( p != null ) break;
-
- goto(nav2);
- p = radar(list, 0, 360, 0, 60);
- if ( p != null ) break;
-
- goto(nav3);
- p = radar(list, 0, 360, 0, 60);
- if ( p != null ) break;
-
- goto(nav4);
- p = radar(list, 0, 360, 0, 60);
- if ( p != null ) break;
- }
- }
- else
- {
- dist = distance(p.position, position);
- prox = dist/2; // on se rapproche
- if ( prox < 2.5 )
- {
- dest.x = position.x+(rand()-0.5)*8;
- dest.y = position.y+(rand()-0.5)*8;
- dest.z = position.z;
- }
- else
- {
- dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
- dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
- dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
- }
- goto(dest); // va sur la cible
- }
- }
-}
+extern void object::Attack( )
+{
+ int list[];
+ int i;
+ object p;
+ float dim, dist, prox;
+ point nav1, nav2, nav3, nav4, dest;
+
+ errmode(0); // ne stoppe pas si erreur
+ while ( ismovie() != 0 ) wait(1);
+
+ i = 0;
+ list[i++] = WingedGrabber;
+ list[i++] = TrackedGrabber;
+ list[i++] = WheeledGrabber;
+ list[i++] = LeggedGrabber;
+ list[i++] = WingedShooter;
+ list[i++] = TrackedShooter;
+ list[i++] = WheeledShooter;
+ list[i++] = LeggedShooter;
+ list[i++] = WingedOrgaShooter;
+ list[i++] = TrackedOrgaShooter;
+ list[i++] = WheeledOrgaShooter;
+ list[i++] = LeggedOrgaShooter;
+ list[i++] = WingedSniffer;
+ list[i++] = TrackedSniffer;
+ list[i++] = WheeledSniffer;
+ list[i++] = LeggedSniffer;
+ list[i++] = Thumper;
+ list[i++] = PhazerShooter;
+ list[i++] = Recycler;
+ list[i++] = Shielder;
+ list[i++] = Subber;
+ list[i++] = RadarStation;
+// list[i++] = DefenseTower;
+
+ while ( true )
+ {
+ p = radar(list, 0, 360, 0, 60); // cherche cible
+ if ( p == null )
+ {
+ dim = 1+rand()*2;
+ nav1.x = position.x+dim;
+ nav1.y = position.y+dim;
+ nav2.x = position.x+dim;
+ nav2.y = position.y-dim;
+ nav3.x = position.x-dim;
+ nav3.y = position.y-dim;
+ nav4.x = position.x-dim;
+ nav4.y = position.y+dim;
+
+ while ( true )
+ {
+ goto(nav1);
+ p = radar(list, 0, 360, 0, 60);
+ if ( p != null ) break;
+
+ goto(nav2);
+ p = radar(list, 0, 360, 0, 60);
+ if ( p != null ) break;
+
+ goto(nav3);
+ p = radar(list, 0, 360, 0, 60);
+ if ( p != null ) break;
+
+ goto(nav4);
+ p = radar(list, 0, 360, 0, 60);
+ if ( p != null ) break;
+ }
+ }
+ else
+ {
+ dist = distance(p.position, position);
+ prox = dist/2; // on se rapproche
+ if ( prox < 2.5 )
+ {
+ dest.x = position.x+(rand()-0.5)*8;
+ dest.y = position.y+(rand()-0.5)*8;
+ dest.z = position.z;
+ }
+ else
+ {
+ dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
+ dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
+ dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
+ }
+ goto(dest); // va sur la cible
+ }
+ }
+}
diff --git a/ai/ws_ftp.log b/ai/ws_ftp.log
deleted file mode 100644
index 23582dd6..00000000
--- a/ai/ws_ftp.log
+++ /dev/null
@@ -1,2 +0,0 @@
-101.07.28 21:13 B d:\Robot\projet1\english\script\ttrap1.txt --> 212.23.248.127 /web/download/colobot/program ttrap1.txt
-101.07.28 21:13 B d:\Robot\projet1\english\script\ttrap2.txt --> 212.23.248.127 /web/download/colobot/program ttrap2.txt
diff --git a/help/D/authors.txt b/help/D/authors.txt
new file mode 100644
index 00000000..392b4ee5
--- /dev/null
+++ b/help/D/authors.txt
@@ -0,0 +1,7 @@
+Development team: Beta tester core team:
+
+- Daniel Roux - Adrien Roux - Michael Jubin
+- Denis Dumoulin - Didier Raboud - Daniel Sauthier
+- Otto Kölbl - Nicolas Beuchat - Nicolas Stubi
+- Michael Walz - Joël Roux - Patrick Thévoz
+- Didier Gertsch
diff --git a/help/D/cbot.txt b/help/D/cbot.txt
new file mode 100644
index 00000000..87b2a004
--- /dev/null
+++ b/help/D/cbot.txt
@@ -0,0 +1,91 @@
+\b;Programming - the CBOT language
+The CBOT language is very close in structure and syntax to C++ and Java. It has been adapted for the specific purposes of COLOBOT, and for an efficient pedagogical approach.
+This language is made up of instructions (see below), \l;blocks\u cbot\bloc;, \l;functions\u cbot\function;, \l;classes\u cbot\class;, \l;variables\u cbot\var;, \l;arrays\u cbot\array;, \l;expressions\u cbot\expr; and \l;conditions\u cbot\cond;.
+
+o \c;\token;Instructions\norm;\n;
+In the program editor, an instruction in the CBOT language is always displayed on an orange background. If an instruction hasn't got an orange background, this means that it has been misspelled. Instruction names are always written in lower case.
+
+o \c;\type;Type\norm;\n;
+The \l;type\u cbot\type; of a variable appears with a green background.
+
+o \c;\const;Constants\norm;\n;
+Constants like \l;categories\u cbot\category; are displayed with a red background.
+
+\t;Instructions in the CBOT language:
+\c;\l;extern\u cbot\extern; \n;Indicate the main function
+\c;\l;if\u cbot\if; \n;Choice structure
+\c;\l;else\u cbot\if; \n;Alternative choice structure
+\c;\l;for\u cbot\for; \n;Loop structure
+\c;\l;while\u cbot\while; \n;Control structure
+\c;\l;do\u cbot\do; \n;Control structure
+\c;\l;break\u cbot\break; \n;Exit from a loop
+\c;\l;continue\u cbot\continue; \n;Continues the loop
+\c;\l;return\u cbot\return; \n;Exit from a function
+\c;\l;sizeof\u cbot\sizeof; \n;Size of an array
+
+\t;Specific instructions for bots:
+\c;\l;radar\u cbot\radar; \n;Object detection
+\c;\l;direction\u cbot\direct; \n;Calculates a rotation angle
+\c;\l;distance\u cbot\dist; \n;Calculates a distance
+\c;\l;distance2d\u cbot\dist2d; \n;Calculates a distance
+\c;\l;wait\u cbot\wait; \n;Waits
+\c;\l;move\u cbot\move; \n;Moves forward or backward
+\c;\l;turn\u cbot\turn; \n;Turns
+\c;\l;goto\u cbot\goto; \n;Goes to a given position
+\c;\l;motor\u cbot\motor; \n;Direct motor control
+\c;\l;jet\u cbot\jet; \n;Direct jet engine control
+\c;\l;message\u cbot\message; \n;Displays a message
+\c;\l;retobject\u cbot\retobj; \n;Returns an object from a function
+\c;\l;errmode\u cbot\errmode; \n;Error treatement control
+\c;\l;abstime\u cbot\abstime; \n;Returns the absolute time
+
+\t;Instructions about topology:
+\c;\l;space\u cbot\space; \n;Calculates a free space
+\c;\l;topo\u cbot\topo; \n;Returns the altitude of a point
+\c;\l;flatground\u cbot\flatgrnd; \n;Returns radius of a flat area
+
+\t;Instructions specific to some bots:
+\c;\l;grab\u cbot\grab; \n;Picks up an object
+\c;\l;drop\u cbot\drop; \n;Puts down an object
+\c;\l;sniff\u cbot\sniff; \n;Sounds the subsoil
+\c;\l;thump\u cbot\thump; \n;Overturns alien insects
+\c;\l;recycle\u cbot\recycle; \n;Recycles a derelict bot
+\c;\l;shield\u cbot\shield; \n;Extends or withdraws the shield
+\c;\l;fire\u cbot\fire; \n;Fires the cannon
+\c;\l;aim\u cbot\aim; \n;Vertical angle of the cannon
+
+\t;Specific instructions for exchange posts:
+\c;\l;receive\u cbot\receive; \n;Receives an information
+\c;\l;send\u cbot\send; \n;Sends a new information
+\c;\l;testinfo\u cbot\testinfo; \n;Tests if an information exists
+\c;\l;deleteinfo\u cbot\delinfo; \n;Deletes an existing information
+
+\t;Specific instructions for classes:
+\c;\l;class\u cbot\class; \n;Class declararion
+\c;\l;public\u cbot\public; \n;Declares a public function
+\c;\l;private\u cbot\private; \n;Declares a private class member
+\c;\l;static\u cbot\static; \n;Declares a static class member
+\c;\l;synchronized\u cbot\synchro; \n;Prevents simultaneous execution
+\c;\l;new\u cbot\new; \n;Creates a new instance
+\c;\l;this\u cbot\this; \n;Reference to the current instance
+
+\t;Specific instructions for strings:
+\c;\l;strlen\u cbot\strlen; \n;Gets string length
+\c;\l;strleft\u cbot\strleft; \n;Extracts left part
+\c;\l;strright\u cbot\strright; \n;Extracts right part
+\c;\l;strmid\u cbot\strmid; \n;Extracts center part
+\c;\l;strfind\u cbot\strfind; \n;Finds a substring.
+\c;\l;strval\u cbot\strval; \n;Converts string to number
+\c;\l;strupper\u cbot\strupper; \n;Converts to upper case
+\c;\l;strlower\u cbot\strlower; \n;Converts to lower case
+
+\t;Specific instructions for files:
+\c;\l;open\u cbot\open; \n;Opens a file
+\c;\l;close\u cbot\close; \n;Closes a file
+\c;\l;writeln\u cbot\writeln; \n;Writes line to a file
+\c;\l;readln\u cbot\readln; \n;Reads line from a file
+\c;\l;eof\u cbot\eof; \n;Tests if end of file
+\c;\l;deletefile\u cbot\deletef; \n;Deletes a file
+
+\t;See also
+\l;Types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/abstime.txt b/help/D/cbot/abstime.txt
new file mode 100644
index 00000000..bdfe4c90
--- /dev/null
+++ b/help/D/cbot/abstime.txt
@@ -0,0 +1,11 @@
+\b;Instruction \c;abstime\n;
+Syntax¦:
+\s;\c;abstime ( );\n;
+
+Return the time in seconds elapsed since the beginning of the mission.
+
+\t;Return: \c;\l;float\u cbot\float;\n;
+Time in seconds.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/aim.txt b/help/D/cbot/aim.txt
new file mode 100644
index 00000000..8d1e460f
--- /dev/null
+++ b/help/D/cbot/aim.txt
@@ -0,0 +1,21 @@
+\b;Instruction \c;aim\n;
+Syntax :
+\s;\c;aim ( angle );\n;
+
+This instruction sets the vertical angle of the cannon. The following robots are equipped with a cannon:
+o \l;Shooter\u object\botfr;
+o \l;Orga shooter\u object\botor;
+o \l;Phazer shooter\u object\botphaz;
+
+When controlling the robot through programming, the only way to turn the gun left or right is to turn the whole robot with the instruction \c;\l;turn\u cbot\turn;\n;.
+
+\t;angle: \c;\l;float\u cbot\float;\n;
+Angle in degrees of the gun relative to the robot. A positive value orients the gun upward. For shooters and orga shooters, the angle must range from \c;-20\n; to \c;+20\n; degrees. For phazer shooters, the angle must range from \c;-20\n; to \c;45\n; degrees.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Zero if everything is OK, a value different from zero if the rotation could not be performed:
+\c;== 0 \n;The gun has now got the desired orientation
+\c;!= 0 \n;rotation impossible
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/array.txt b/help/D/cbot/array.txt
new file mode 100644
index 00000000..152bed55
--- /dev/null
+++ b/help/D/cbot/array.txt
@@ -0,0 +1,31 @@
+\b;Arrays
+An array is basically a collection of variables of the same type or class. You can use N dimensionnal arrays in the CBOT language. Each dimension is limited to 9999 elements. You must use square brackets \c;[]\n; after the type name or the variable name to declare an array.
+\c;
+\s;int [ ] a; // an array of int
+\s;int a [12]; // an array of int limited to 12 elements
+\s;string s[3]; // an array of 3 strings
+\s;float xy[][]; // an 2 dimensionnal array of floats
+\n;
+Actually when the CBOT interpreter encounters an array declaration, it just creates a \c;\l;null\u cbot\null;\n; \l;reference\u cbot\pointer;:
+\c;
+\s;int a[5]; // a is now a null reference
+\n;
+As soon as you put values into the array, the elements are created and the reference is initialized:
+\c;
+\s;a[2] = 213; // a points to
+\s; // 3 élements [0], [1] et [2]
+\n;
+After this operation, \c;a\n; contains a reference to the elements of the array. Elements \c;[0]\n; and \c;[1]\n; are created but not initialized because an array cannot contain empty elements. The \c;\l;sizeof\u cbot\sizeof;\n; instruction allows you to obtain the number of elements contained in an array.
+
+When an array is declared with a maximum size, the program will stop as soon as there is an access beyond the maximum array size. No error is signalled during compilation even if the error is obvious:
+\c;
+\s;{
+\s; int a[5];
+\s; a[7] = 123; // no error at compile time
+\s; // but error at run time
+\s;}
+\n;
+If you pass an array as parameter to a \l;function\u cbot\function;, the function only receives a \l;reference\u cbot\pointer; to the array. That means if you modify an array element in the function, the element of the array that has been passed the function will be actuallay modified.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/bloc.txt b/help/D/cbot/bloc.txt
new file mode 100644
index 00000000..287536ea
--- /dev/null
+++ b/help/D/cbot/bloc.txt
@@ -0,0 +1,49 @@
+\b;Blocks
+You can use braces \c;{ }\n; to group a number of instructions together in order to make one single block out of them, for example:
+\c;
+\s; {
+\s; float t;
+\s; t = a;
+\s; a = b;
+\s; b = t; // switches round a and b
+\s; }
+\n;
+Every instruction in the block is followed by a \l;semicolon\u cbot\term;, but the block itself is not.
+Let us take the following example with the instruction \c;\l;if\u cbot\if;\n; to illustrate the use of blocks in a program:
+\c;
+\s; if ( a < b )
+\s; \n;instruction 1\c;;
+\s; \n;instruction 2\c;;
+\s; \n;instruction 3\c;;
+\n;
+If the \l;condition\u cbot\cond; is true, instructions 1, 2 and 3 are performed. If the condition is false, only instruction 1 is ignored, instructions 2 and 3 are performed. The fact that instruction 2 is lined up with instruction 1 does not matter.
+If you want to perform instructions 1 and 2 only if the condition is true, you have to bracket them together in a block:
+\c;
+\s; if ( a < b )
+\s; {
+\s; \n;instruction 1\c;;
+\s; \n;instruction 2\c;;
+\s; }
+\s; \n;instruction 3\c;;
+\n;
+Blocks may be needed with instructions \c;\l;if\u cbot\if;\n;, \c;\l;while\u cbot\while;\n; and \c;\l;for\u cbot\for;\n;, in order to group several instructions that should be performed only if a condition is true, or repeated several times.
+You can fit blocks into other blocks, on as many levels as you need. Here is an example of imbrication on two levels :
+\c;
+\s; if ( a > b )
+\s; {
+\s; int i = 0;
+\s; while ( i < 18 )
+\s; {
+\s; move(10);
+\s; turn(5);
+\s; i = i+1;
+\s; }
+\s; }
+\n;
+You had better line up the open brace \c;{\n; with the closing brace \c;}\n; in order to improve readability, but it is not compulsory. The following example takes less space, is equivalent to the previous example, but it is not advisable to write your programs in the following style :
+\c;
+\s; if(a>b) { int i=0; while(i<18) {
+\s; move(10);turn(5);i=i+1; }}
+\n;
+\t;See also
+\l;Instructions\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/bool.txt b/help/D/cbot/bool.txt
new file mode 100644
index 00000000..b97ab9d4
--- /dev/null
+++ b/help/D/cbot/bool.txt
@@ -0,0 +1,5 @@
+\b;Type \c;bool\n;
+In a variable of this type you can put a boolean value, that is a value that can take only two states: true or false.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/break.txt b/help/D/cbot/break.txt
new file mode 100644
index 00000000..2833e6c2
--- /dev/null
+++ b/help/D/cbot/break.txt
@@ -0,0 +1,25 @@
+\b;Instruction \c;break\n;
+Syntax :
+\s;\c;while ( condition )
+\s;{
+\s; break;
+\s;}
+\n;
+With this instruction, you can get out immediately of a \c;\l;while\u cbot\while;\n; or \c;\l;for\u cbot\for;\n; loop.
+
+Here is an example:
+\s;\c;int i = 0;
+\s;while ( true )
+\s;{
+\s; \n;Instructions ...\c;
+\s; i = i+1;
+\s; if ( i >= 10 )
+\s; {
+\s; break;
+\s; }
+\s; \n;more instructions ...\c;
+\s;}
+\n;
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/category.txt b/help/D/cbot/category.txt
new file mode 100644
index 00000000..6dd7f3c2
--- /dev/null
+++ b/help/D/cbot/category.txt
@@ -0,0 +1,108 @@
+\b;Value \c;Categories\n;
+Categories represent the names of objects in the CBOT language. Everything in COLOBOT is an object: robots, buildings, raw materials, etc., even yourself.
+
+In a program, categories are always displayed on a \const;red background\norm;. If a category isn't highlighted in red, it is misspelled. Caps and lower cases should be kept as is.
+
+Below are the different categories available :
+
+\t;Buildings :
+
+\button 176; \c;\l;Houston\u object\Huston; \n;Mission Control
+\button 171; \c;\l;SpaceShip\u object\base; \n;Spaceship
+\button 160; \c;\l;BotFactory\u object\factory; \n;Robot Factory
+\button 163; \c;\l;ResearchCenter\u object\research; \n;Research Center
+\button 168; \c;\l;RadarStation\u object\radar; \n;Radar
+\button 172; \c;\l;ExchangePost\u object\exchange; \n;Information Exchange Post
+\button 169; \c;\l;RepairCenter\u object\repair; \n;Repair Center
+\button 165; \c;\l;DefenseTower\u object\tower; \n;Defense Tower
+\button 166; \c;\l;AutoLab\u object\labo; \n;Organic Matter Analyzer
+\button 164; \c;\l;PowerStation\u object\station; \n;Power Station
+\button 167; \c;\l;PowerPlant\u object\energy; \n;Power Cell Factory
+\button 170; \c;\l;NuclearPlant\u object\nuclear; \n;Nuclear Plant
+\button 162; \c;\l;Converter\u object\convert; \n;Titanium Converter
+\button 161; \c;\l;Derrick\u object\derrick; \n;Derrick
+\button 174; \c;\l;PowerCaptor\u object\captor; \n;Parabolic Lightning Conductor
+\button 175; \c;\l;Vault\u object\safe; \n;Vault
+ \c;\l;StartArea\u object\start; \n;Starting Pad
+ \c;\l;GoalArea\u object\goal; \n;Finishing Pad
+ \c;\l;AlienNest\u object\nest; \n;Alien Nest
+
+
+\t;Portable Objects :
+
+ \c;\l;TitaniumOre\u object\titanore; \n;Titanium Ore
+ \c;\l;UraniumOre\u object\uranore; \n;Uranium Ore
+ \c;\l;Titanium\u object\titan; \n;Cube of converted Titanium
+ \c;\l;PowerCell\u object\power; \n;Regular Power Cell
+ \c;\l;NuclearCell\u object\atomic; \n;Nuclear Power Cell
+ \c;\l;OrgaMatter\u object\bullet; \n;Organic Matter
+ \c;\l;BlackBox\u object\bbox; \n;Black Box
+ \c;\l;TNT\u object\tnt; \n;Explosive device
+ \c;\l;KeyA..D\u object\key; \n;Keys A, B, C and D
+
+
+\t;Robots :
+
+\button 158; \c;\l;PracticeBot\u object\bottr; \n;Practice Bot
+\button 173; \c;\l;TargetBot\u object\bottarg; \n;Target Bot
+
+\button 137; \c;\l;WheeledGrabber\u object\botgr; \n;Wheeled Grabber
+\button 138; \c;\l;TrackedGrabber\u object\botgc; \n;Tracked Grabber
+\button 139; \c;\l;WingedGrabber\u object\botgj; \n;Winged Grabber
+\button 150; \c;\l;LeggedGrabber\u object\botgs; \n;Legged Grabber
+
+\button 140; \c;\l;WheeledSniffer\u object\botsr; \n;Wheeled Sniffer
+\button 141; \c;\l;TrackedSniffer\u object\botsc; \n;Tracked Sniffer
+\button 142; \c;\l;WingedSniffer\u object\botsj; \n;Winged Sniffer
+\button 152; \c;\l;LeggedSniffer\u object\botss; \n;Legged Sniffer
+
+\button 143; \c;\l;WheeledShooter\u object\botfr; \n;Wheeled Shooter
+\button 144; \c;\l;TrackedShooter\u object\botfc; \n;Tracked Shooter
+\button 145; \c;\l;WingedShooter\u object\botfj; \n;Winged Shooter
+\button 151; \c;\l;LeggedShooter\u object\botfs; \n;Legged Shooter
+
+\button 153; \c;\l;WheeledOrgaShooter\u object\botor; \n;Wheeled Orga Shooter
+\button 154; \c;\l;TrackedOrgaShooter\u object\botoc; \n;Tracked Orga Shooter
+\button 155; \c;\l;WingedOrgaShooter\u object\botoj; \n;Winged Orga Shooter
+\button 156; \c;\l;LeggedOrgaShooter\u object\botos; \n;Legged Orga Shooter
+
+\button 149; \c;\l;Subber\u object\botsub; \n;Subber
+\button 148; \c;\l;Recycler\u object\botrecy; \n;Recycler
+\button 157; \c;\l;Shielder\u object\botshld; \n;Shielder
+\button 146; \c;\l;Thumper\u object\bottump; \n;Thumper
+\button 147; \c;\l;PhazerShooter\u object\botphaz; \n;Phazer Shooter
+
+
+\t;Enemies :
+
+ \c;\l;AlienQueen\u object\mother; \n;Alien Queen
+ \c;\l;AlienEgg\u object\egg; \n;Alien Egg
+ \c;\l;AlienAnt\u object\ant; \n;Ant
+ \c;\l;AlienSpider\u object\spider; \n;Spider
+ \c;\l;AlienWasp\u object\wasp; \n;Wasp
+ \c;\l;AlienWorm\u object\worm; \n;Worm
+
+
+\t;Miscellaneous :
+
+\button 136; \c;\l;Me\u object\human; \n;You!
+ \c;\l;Mine\u object\mine; \n;Mine
+ \c;\l;Barrier\u object\barrier; \n;Barrier
+ \c;\l;Wreck\u object\wreck; \n;Derelict bot
+ \c;\l;Ruin\u object\ruin; \n;Derelict building
+
+
+\t;Flags and Other Indicators :
+
+ \c;\l;BlueFlag\u object\flag; \n;Blue Flag
+ \c;\l;RedFlag\u object\flag; \n;Red Flag
+ \c;\l;GreenFlag\u object\flag; \n;Green Flag
+ \c;\l;YellowFlag\u object\flag; \n;Yellow Flag
+ \c;\l;VioletFlag\u object\flag; \n;Violet Flag
+ \c;\l;WayPoint\u object\waypoint; \n;Checkpoint
+ \c;\l;EnergySite\u object\enerspot; \n;Underground Energy Deposit
+ \c;\l;TitaniumSite\u object\stonspot; \n;Underground Titanium Deposit
+ \c;\l;UraniumSite\u object\uranspot; \n;Underground Uranium Deposit
+
+\t;See also
+\l;CBOT Language\u cbot; and \l;Variables\u cbot\type;.
diff --git a/help/D/cbot/class.txt b/help/D/cbot/class.txt
new file mode 100644
index 00000000..942d7b0e
--- /dev/null
+++ b/help/D/cbot/class.txt
@@ -0,0 +1,72 @@
+\b;Instruction \c;class\n;
+This allows you to declare a class definition using following syntax:
+\c;
+\s;public class ClassName
+\s;{
+\s; declarations;
+\s;}
+\n;
+Classes can only be \l;public\u cbot\public;, that is they can be used from all bots in a mission. Class members are also public, that is they are accessible from outside the class. Class members can be fields or functions (also called methods), for example the followin class \c;MyClass\n; contains 4 fields (a, b, x and s) and one method (MyFunction).
+\c;
+\s;public class MyClass
+\s;{
+\s; int a, b;
+\s; float x = 3.33;
+\s; string s = "hello";
+\s; float MyFunction( float value )
+\s; {
+\s; return (value*x)-1;
+\s; }
+\s;}
+\n;
+As shown in this exemple the class members can be initialized (\c;x=3.33\n;). You can also define a constructor which is a special method having the same name as the class name. This method will be called automatically at creation time of a class instance. You can also declare more than one method with the same name but different parameters.
+\c;
+\s;public class MyClass
+\s;{
+\s; int a, b;
+\s; void MyClass( )
+\s; {
+\s; a = 2; b = 3;
+\s; }
+\s; void MyClass( int a, int b )
+\s; {
+\s; this.a = a; this.b = b;
+\s; }
+\s;}
+\n;
+In this example two constructors are declared for \c;MyClass\n;, one without parameters and the other one with two parameters. As the names of the parameters of the second constructor are the same as the names of the two members \c;a\n; et \c;b\n; we must use the \c;\l;this\u cbot\this;.a\n; and \c;\l;this\u cbot\this;.b\n; to avoid confusion with the parameters. Another more simpler solution would be to give different names to the parameters.
+\c;
+\s;void Test( )
+\s;{
+\s; MyClass item1(); // constr. w/o parameters
+\s; MyClass item2(4, 5); // constr. with 2 parameters
+\s; MyClass item3; // no constructor called,
+\s; // therefore item3 == null
+\s;}
+\n;
+You can also define a destructor. This must be a \c;void\n; fonction without parameters that has the same name as the class name but prefixed by the ~ character. The destructor is called automatically as soon as the class instance is no more referenced by anyone.
+\c;
+\s;public class MyClass
+\s;{
+\s; static private int counter = 0; // instance counter
+\s; void MyClass( )
+\s; {
+\s; counter ++; // one instance more
+\s; }
+\s; void ~MyClass( )
+\s; {
+\s; counter --; // one instance less
+\s; }
+\s;}
+\s;void Test()
+\s;{
+\s; MyClass item1( ); // counter = 1
+\s; MyClass item2( ); // counter = 2
+\s; item1 = null; // counter = 1
+\s;} // counter = 0
+\n;
+If you pass a class instance as parameter to a \l;function\u cbot\function;, the function only receives a \l;reference\u cbot\pointer; to the instance. That means if you modify the instance in the function, the instance that has been passed to the function will be actuallay modified.
+
+\t;See also
+\c;\l;public\u cbot\public;\n;, \c;\l;private\u cbot\private;\n;, \c;\l;static\u cbot\static;\n;, \c;\l;synchronized\u cbot\synchro;\n;, \c;\l;new\u cbot\new;\n;, \c;\l;reference\u cbot\pointer;\n;, \c;\l;this\u cbot\this;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/close.txt b/help/D/cbot/close.txt
new file mode 100644
index 00000000..bca89ae3
--- /dev/null
+++ b/help/D/cbot/close.txt
@@ -0,0 +1,8 @@
+\b;Instruction \c;close\n;
+Close a file opened previously with \c;\l;open\u cbot\open;\n;. This is a method of the \c;\l;file\u cbot\file;\n; class; therefore you cannot write \c;close()\n; but only \c;handle.close()\n;¦:
+\c;
+\s; handle.close();
+\n;
+\t;See also
+\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;readln\u cbot\readln;\n;, \c;\l;writeln\u cbot\writeln;\n; and \c;\l;eof\u cbot\eof;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/cond.txt b/help/D/cbot/cond.txt
new file mode 100644
index 00000000..f6f41794
--- /dev/null
+++ b/help/D/cbot/cond.txt
@@ -0,0 +1,29 @@
+\b;Conditions
+A condition is a special \l;expression\u cbot\expr; that returns a \l;boolean\u cbot\bool; value, that can only be either \c;\l;true\u cbot\true;\n; or \c;\l;false\u cbot\false;\n;. With a condition, you can choose f. ex. if the instructions in a \c;\l;while\u cbot\while;\n; loop must be repeated again, or if the instruction in a \c;\l;if\u cbot\if;\n; bloc must be executed.
+Here are some operators that you can use in conditions to compare two values :
+
+\c;a == b \n;\c;a\n; equals \c;b\n;
+\c;a != b \n;\c;a\n; is different from \c;b\n;
+\c;a < b \n;\c;a\n; smaller than \c;b\n;
+\c;a <= b \n;\c;a\n; smaller than or equal to \c;b\n;
+\c;a > b \n;\c;a\n; greater than \c;b\n;
+\c;a >= b \n;\c;a\n; greater than or equal to \c;b\n;
+
+For example :
+
+\c;12 == 12 \n;returns true
+\c;45 != 47 \n;returns true
+\c;99 == 98 \n;returns false
+\c;12 < -1 \n;returns false
+\c;12 >= 10 \n;returns true
+\c;12 >= 12 \n;returns true
+
+\t;Remarque
+Be careful not to confuse the equality comparison \c;==\n; with the assignment of a \l;variable\u cbot\var; \c;=\n;.
+
+\c;a == b\n; is an expression that compares \c;a\n; with \c;b\n;.
+\c;a = b\n; is an expression that copies the value of \c;b\n; into \c;a\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/D/cbot/continue.txt b/help/D/cbot/continue.txt
new file mode 100644
index 00000000..d516aa78
--- /dev/null
+++ b/help/D/cbot/continue.txt
@@ -0,0 +1,25 @@
+\b;Instruction \c;continue\n;
+Syntax :
+\s;\c;while ( condition )
+\s;{
+\s; continue;
+\s;}
+\n;
+With this instruction, you can jump over the rest of instructions in the \c;\l;bloc\u cbot\bloc;\n; of a \c;\l;while\u cbot\while;\n; or \c;\l;for\u cbot\for;\n; loop: The execution will resume at the beginning of the bloc, the next time the loop is repeated.
+
+Here is an example:
+\s;\c;int i = 0;
+\s;while ( i < 5 )
+\s;{
+\s; i = i+1;
+\s; if ( i == 3 )
+\s; {
+\s; continue;
+\s; }
+\s; \n;Instructions ...\c;
+\s;}
+\n;
+The instructions will only be executed for the values of \c;i\n; 1, 2, 4 and 5.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/deletef.txt b/help/D/cbot/deletef.txt
new file mode 100644
index 00000000..dc6e93f9
--- /dev/null
+++ b/help/D/cbot/deletef.txt
@@ -0,0 +1,10 @@
+\b;Instruction \c;deletefile\n;
+The deletefile instruction deletes an existing file in the files/ folder.
+
+Files can only be deleted in the files/ folder which is located in the folder where Colobot has been installed. You cannot not delete files that are located elsewhere than in the files/ folder.
+
+Syntax¦:
+\s;\c;deletefile ( filename );\n;
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/delinfo.txt b/help/D/cbot/delinfo.txt
new file mode 100644
index 00000000..6d93b26b
--- /dev/null
+++ b/help/D/cbot/delinfo.txt
@@ -0,0 +1,15 @@
+\b;Instruction \c;deleteinfo\n;
+Syntax¦:
+\s;\c;deleteinfo ( name, power );\n;
+
+Delete an existing information in the closest \l;information exchange post\u object\exchange;.
+
+\t;name: \c;string\n;
+Name of the information to be deleted. This name is a string: it must be written in quotation marks "¦".
+
+\t;power: \c;float\n;
+Power of the transmitter, which corresponds to the maximal distance between the sender and the exchange post. If the distance is longer, the information won't be deleted. Default value is 10 metres.
+
+\t;See also
+\c;\l;receive\u cbot\receive;\n;, \c;\l;send\u cbot\send;\n; and \c;\l;testinfo\u cbot\testinfo;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/direct.txt b/help/D/cbot/direct.txt
new file mode 100644
index 00000000..d400e805
--- /dev/null
+++ b/help/D/cbot/direct.txt
@@ -0,0 +1,15 @@
+\b;Instruction \c;direction\n;
+Syntax :
+\s;\c;direction ( pos );\n;
+
+Calculates the rotation that a robot must perform in order to point towards a given position.
+
+\t;pos: \c;\l;point\u cbot\point;\n;
+Position towards which the robot must point.
+
+\t;Return value: \c;\l;float\u cbot\float;\n;
+Angle of the rotation that must be performed. -90 means f. ex. a rotation of 90 degrees to the right.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/D/cbot/dist.txt b/help/D/cbot/dist.txt
new file mode 100644
index 00000000..a4183d44
--- /dev/null
+++ b/help/D/cbot/dist.txt
@@ -0,0 +1,30 @@
+\b;Instruction \c;distance\n;
+With the instruction \c;distance( , )\n; you can calculate the distance between two positions.
+
+\b;Basic use
+If you write \c;position\n; alone, this gives you the position of the bot that executes the program. If you write the name of a variable followed by \c;.position\n;, this gives you the position of the object described in the variable.
+
+Here is a program that moves forward, covering exactly the distance between the bot and the closest ant:
+\c;
+\s; item = \l;radar\u cbot\radar;(AlienAnt);
+\s; \l;move\u cbot\move;(distance(position, item.position));
+\n;
+This is of course pure suicide. Better to stop 40 meters before, in order to be at shooting range:
+\c;
+\s; item = radar(AlienAnt);
+\s; move(distance(position, item.position) - 40);
+\n;
+\b;For specialists
+Syntax:
+\s;\c;distance ( pos1, pos2 );\n;
+
+Calculates the distance between two positions.
+
+\t;pos1, pos2: \c;\l;point\u cbot\point;\n;
+Coordinates of the two positions.
+
+\t;Return value: \c;\l;float\u cbot\float;\n;
+Distance between the two positions.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/dist2d.txt b/help/D/cbot/dist2d.txt
new file mode 100644
index 00000000..89ea1cb2
--- /dev/null
+++ b/help/D/cbot/dist2d.txt
@@ -0,0 +1,14 @@
+\b;Instruction \c;distance2d\n;
+Syntax:
+\s;\c;distance2d ( pos1, pos2 );\n;
+
+Calculates the distance between two positions (ignores the z coordinate).
+
+\t;pos1, pos2: \c;\l;point\u cbot\point;\n;
+Coordinates of the two positions.
+
+\t;Return value: \c;\l;float\u cbot\float;\n;
+Distance between the two positions.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/do.txt b/help/D/cbot/do.txt
new file mode 100644
index 00000000..391745c6
--- /dev/null
+++ b/help/D/cbot/do.txt
@@ -0,0 +1,28 @@
+\b;Instruction \c;do - while\n;
+Syntax:
+\s;\c;do
+\s;{
+\s; \n;Instructions ...\c;
+\s;}
+\s;while ( condition );
+\n;
+This instruction allows you to perform several times the instructions inside the \l;block\u cbot\bloc;. The instructions are executed at least once, because the condition is tested only afterwards.
+Be careful not to confuse the instruction \c;do { } while ( );\n; with the instruction \c;\l;while\u cbot\while; ( ) { }\n;; the latter tests the condition before the instructions in the block are executed.
+
+\t;\c;condition\n;
+The instructions in the block are performed over and over again, as long as the \l;condition\u cbot\cond; is true.
+
+Here is an example :
+\s;\c;do
+\s;{
+\s; p = radar(TitaniumOre);
+\s;}
+\s;while ( p == null );
+\n;
+\t;Attention
+Always put a \l;semicolon\u cbot\term; at the end of the line \c;while ( )\n;.
+
+The instructions \c;\l;break\u cbot\break;\n; and \c;\l;continue\u cbot\continue;\n; can be useful inside a block following the instruction \c;do { }\n;.
+
+\t;See also
+\l;Instructions\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/drop.txt b/help/D/cbot/drop.txt
new file mode 100644
index 00000000..9b383dd1
--- /dev/null
+++ b/help/D/cbot/drop.txt
@@ -0,0 +1,29 @@
+\b;Instruction \c;drop\n;
+The instruction \c;drop();\n; instructs the bot to drop whatever the operating arm is carrying on the ground, on the platform of a building or on the power cell location of a bot.
+
+\b;Basic use
+The instruction \c;drop();\n; written in this form drops the object in front of the bot. Here is a short program that grabs an object in front of the bot and drops it 5 meters further:
+\c;
+\s; \l;grab\u cbot\grab;();
+\s; \l;move\u cbot\move;(5);
+\s; drop();
+\n;
+\b;For specialists
+Syntax:
+\s;\c;drop ( oper );\n;
+
+This instruction appeals to the operating arm of a \l;grabber bot\u object\botgr;, in order to drop what it is holding.
+
+\t;oper: \c;\l;int\u cbot\int;\n; (default value\c;InFront\n;)
+Oper indicates where the robot should drop the object. If no indication is given, the object is dropped in front of the bot.
+\c;InFront \n; Drops in front (default value).
+\c;Behind \n; Drops behind.
+\c;EnergyCell\n; Drops on the bot's own power cell location.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Normally an error stops the program. You can prevent the program from stopping on errors by using the \c;\l;errmode\u cbot\errmode;(0)\n; instruction. A value different from zero if an error occurred is then returned by \c;drop();\n;.
+\c;== 0 \n;object was dropped
+\c;!= 0 \n;error, no object was dropped
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/eof.txt b/help/D/cbot/eof.txt
new file mode 100644
index 00000000..30c2f4c3
--- /dev/null
+++ b/help/D/cbot/eof.txt
@@ -0,0 +1,15 @@
+\b;Instruction \c;eof\n;
+Test the end of file condition of an open file. This is a method of the \c;\l;file\u cbot\file;\n; class; therefore you cannot write \c;eof()\n; but only \c;handle.eof()\n;¦:
+\c;
+\s; if ( handle.eof() )
+\n;
+Example¦:
+\c;
+\s; while ( not handle.eof() )
+\s; {
+\s; s = handle.readln();
+\s; }
+\n;
+\t;See also
+\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n; and \c;\l;writeln\u cbot\writeln;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/errmode.txt b/help/D/cbot/errmode.txt
new file mode 100644
index 00000000..8b4286ab
--- /dev/null
+++ b/help/D/cbot/errmode.txt
@@ -0,0 +1,33 @@
+\b;Instruction \c;errmode\n;
+The \c;errmode();\n; instruction allows you to chose if the program should stop when an error occurs in one of the following instructions: \c;\l;goto\u cbot\goto;\n;, \c;\l;move\u cbot\move;\n;, \c;\l;grab\u cbot\grab;\n;, \c;\l;drop\u cbot\drop;\n;, etc.
+
+\b;For specialists
+Syntax¦:
+\s;\c;errmode ( mode );\n;
+
+Normally the program is stopped when an error occurs. If you use the instruction \c;errmode(0);\n; at the beginning of the program, the instructions listed above return a value different from zero if the instruction could not be performed.
+
+\t;mode: \c;\l;float\u cbot\float;\n; (\c;1\n; per default)
+Error treatment mode.
+\c;0\n; -> continues program execution and returns a non zero value
+\c;1\n; -> stops the program (default behavior)
+
+Exemple 1¦:
+\s;\c;errmode(0);
+\s;while ( goto(pos) != 0 )
+\s;{
+\s; wait(2);
+\s;}
+\n;
+Exemple 2¦:
+\s;\c;errmode(0);
+\s;int err;
+\s;err = goto(pos);
+\s;if ( err != 0 )
+\s;{
+\s; \n;goto did not perform correctly ...\c;
+\s; \n;take some appropriate action ...\c;
+\s;}
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/expr.txt b/help/D/cbot/expr.txt
new file mode 100644
index 00000000..1ff8bc73
--- /dev/null
+++ b/help/D/cbot/expr.txt
@@ -0,0 +1,88 @@
+\b;Expressions
+Expressions can include the following operators:
+
+\c;+\n; addition
+\c;-\n; subtraction
+\c;*\n; multiplication
+\c;/\n; division
+\c;%\n; remainder of the division (only for the type \c;\l;int\u cbot\int;\n;)
+
+With the addition operator \c;+\n;, you can not only add numbers, you can also append \l;strings\u cbot\string;.
+\c;
+\s; int i = 12+3; // returns 15
+\s; string s = "a"+"bc"; // returns "abc"
+\s; int i = 2-5; // returns -3
+\s; float f = 3.01*10; // returns 30.1
+\s; int i = 5/3; // returns 1
+\s; float f = 5/3; // returns 1.67
+\s; float f = 5/0; // returns an error
+\s; int i = 13%5; // returns 3
+\s; int i = -8%3; // returns -2
+\n;
+An expression can include constants or \l;variables\u cbot\var;. For example:
+
+\s;\c; 12+dist\n;
+
+Multiplications and divisions are performed before additions and subtractions. In order to be sure that the operations are performed in the right order, use brackets:
+\c;
+\s; 12*a+b/c \n;is equivalent to\c; (12*a)+(b/c)
+\s; 2.5*(dist+range)
+\n;
+In order to improve readability, you can put as many spaces as you want:
+\c;
+\s; 12*a + b/c
+\s; 2.5 * (dist+range)
+\n;
+Here is a list of mathematical functions:
+
+\c;sin(angle) \n;sinus
+\c;cos(angle) \n;cosinus
+\c;tan(angle) \n;tangent
+\c;asin(value) \n;arc-sinus
+\c;acos(value) \n;arc-cosinus
+\c;atan(value) \n;arc-tangente
+\c;sqrt(value) \n;square root
+\c;pow(x, y) \n;x power y
+\c;rand() \n;random value ranging between 0 and 1
+
+Angles are in degrees.
+
+\t;Compound assignment operators (for specialists)
+Besides the \c;=\n; operators for variable assignment there are several compound-assignment operators.
+
+The compound-assignment operators combine the \c;=\n; assignment operator with another binary operator such as \c;+\n; or \c;-\n;. Compound-assignment operators perform the operation specified by the additional operator and then assign the result to the left operand. For example, a compound-assignment expression such as
+
+\c;\s;expression1 += expression2
+
+is equivalent to
+
+\c;\s;expression1 = expression1 + expression2
+
+\c;+=\n; addition
+\c;-=\n; subtraction
+\c;*=\n; multiplication
+\c;/=\n; division
+\c;%=\n; remainder of the division (only for the type \c;\l;int\u cbot\int;\n;)
+
+\t;Prefix and posfix increment- and decrement operators (for specialists)
+The operators \c;++\n; and \c;--\n; allow you to increment (++) or to decrement (--) a variable in very compact and efficient manner.
+
+For example to increment the variable \c;a\n; you can write
+\c;\s; a++ ;
+\n;instead of
+\c;\s; a = a + 1 ;
+\n;
+The value of the expression \c;a++\n; is the value of the variable \c;a\n; before the increment. If you use the prefix operator \c;++a\n; the value of the expression is the value of the variable \c;a\n; after the increment. The same holds for the \c;--\n; decrement operator.
+
+Exemples:
+\c;\s; a = 2 ;
+\s; b = a++ ;
+\s; // now b contains 2 and a contains 3
+
+\c;\s; a = 2 ;
+\s; b = ++a ;
+\s; // now b contains 3 and a contains 3
+\n;
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/extern.txt b/help/D/cbot/extern.txt
new file mode 100644
index 00000000..08d2cba1
--- /dev/null
+++ b/help/D/cbot/extern.txt
@@ -0,0 +1,30 @@
+\b;Instruction \c;extern\n;
+The \c;extern\n; instruction determines the \l;function\u cbot\function; that acts as main program of a robot. The name of the function declared with \c;extern\n; will apear in the program list in the lower left corner of the screen.
+\c;
+\s;extern void object::MowDown( )
+\s;{
+\s; while ( true )
+\s; {
+\s; fire(1);
+\s; turn(10);
+\s; }
+\s;}
+\n;
+If the program contains other functions, only the main function must be preceded by \c;extern\n;.
+\c;
+\s;extern void object::Square( )
+\s;{
+\s; for ( int i=0 ; i<4 ; i++ )
+\s; {
+\s; Line(10);
+\s; }
+\s;}
+\s;
+\s;void object::Line(float dist)
+\s;{
+\s; move(dist);
+\s; turn(90);
+\s;}
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/false.txt b/help/D/cbot/false.txt
new file mode 100644
index 00000000..e5b1ffa9
--- /dev/null
+++ b/help/D/cbot/false.txt
@@ -0,0 +1,6 @@
+\b;Type \c;false\n;
+This value means that a condition is not true; it is one of the two values that a \l;boolean\u cbot\bool; \l;variable\u cbot\var; can take.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/D/cbot/file.txt b/help/D/cbot/file.txt
new file mode 100644
index 00000000..44bac38f
--- /dev/null
+++ b/help/D/cbot/file.txt
@@ -0,0 +1,18 @@
+\b;Type \c;file\n;
+This type is used for accessing files in the files/ folder.
+\c;
+\s; file handle();
+\n;
+Use the syntax above for declaring a file handle. You must use () to create an instance of the \c;file\n; class. Without the () the handle would have the value \c;\l;null\u cbot\null;\n;.
+
+Files can only be created and opened in the files/ folder which is located in the folder where Colobot has been installed. You cannot not create or open files elsewhere than in the files/ folder.
+
+\b;For specialists
+\c;file\n; is actually not a simple type but a class. \c;open\n;, \c;close\n;, \c;writeln\n; etc. are methods of the \c;file\n; class. This is the reason why we always write \c;handle.method()\n;¦:
+\c;
+\s; handle.open("test.txt", "w");
+\s; handle.close();
+\n;
+\t;See also
+\c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n;, \c;\l;writeln\u cbot\writeln;\n; and \c;\l;eof\u cbot\eof;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/fire.txt b/help/D/cbot/fire.txt
new file mode 100644
index 00000000..fad947a6
--- /dev/null
+++ b/help/D/cbot/fire.txt
@@ -0,0 +1,31 @@
+\b;Instruction \c;fire\n;
+The instruction \c;fire();\n; fires the bot's onboard cannon.
+
+\b;Basic use
+Generally this instruction is used to shoot one-second bursts:
+\c;
+\s; fire(1);
+\n;
+\b;For specialists
+Syntax:
+\s;\c;fire ( time );\n;
+
+Fires the gun, with a burst that lasts a certain time. The longer the burst, the more energy it needs. This instruction can be used with the following bot types:
+o \l;Shooter\u object\botfr;
+o \l;Orga shooter\u object\botor;
+o \l;Phazer shooter\u object\botphaz;
+
+When controlling the robot through programming, the only way to turn the gun left or right is to turn the whole robot with the instruction \c;\l;turn\u cbot\turn;\n;.
+
+In order to move the gun upward or downward, use the instruction \c;\l;aim\u cbot\aim;\n;.
+
+\t;time: \c;\l;float\u cbot\float;\n;
+Duration of the burst. Generally, the value given is 1. Shorter bursts can also be performed in order to spare time and energy.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Zero if OK, or a value different from zero if an error occurred.
+\c;== 0 \n;the cannon has been fired
+\c;!= 0 \n;error, the cannon could not be fired
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/flatgrnd.txt b/help/D/cbot/flatgrnd.txt
new file mode 100644
index 00000000..ae821eb4
--- /dev/null
+++ b/help/D/cbot/flatgrnd.txt
@@ -0,0 +1,17 @@
+\b;Instruction \c;flatground\n;
+Syntax¦:
+\s;\c;flatground ( center, rmax );\n;
+
+Calculates the maximal radius of a flat zone on which a building ca be built.
+
+\t;center: \c;\l;point\u cbot\point;\n;
+Center of the circlular zone.
+
+\t;rmax: \c;\l;float\u cbot\float;\n;
+Maximal radius.
+
+\t;Return value: \c;\l;float\u cbot\float;\n;
+Radius of the flat zone (always between 0 and rmax).
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/float.txt b/help/D/cbot/float.txt
new file mode 100644
index 00000000..77876058
--- /dev/null
+++ b/help/D/cbot/float.txt
@@ -0,0 +1,25 @@
+\b;Type \c;float\n;
+Use this type for most variables that contains numbers. Variables of this type can contain positive and negative numbers, whole or real numbers, for example:
+\c;
+\s; 12.9
+\s; 1.125
+\s; 0.002
+\s; -4.1
+\n;
+If you need only whole numbers (f. ex. 12 or -5000), you should rather use the type \c;\l;int\u cbot\int;\n;.
+
+\t;Attention
+Do not insert space or colon characters into a number. To separate the whole part from the fractional part, use a dot.
+\c;
+\s; Write and not
+\s; 12.56 12 . 56
+\s; -54.34 -54,34
+\s;12895.69 12,895.69
+\n;
+\t;For specialists
+Floating point numbers are represented in Colobot with 32 bits.
+The highest value that can be represented is 3.4E+38.
+The smallest value that can be represented is 3.4E-38.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/for.txt b/help/D/cbot/for.txt
new file mode 100644
index 00000000..2465dd72
--- /dev/null
+++ b/help/D/cbot/for.txt
@@ -0,0 +1,40 @@
+\b;Instruction \c;for\n;
+Syntax:
+\s;\c;for ( before ; condition ; end )
+\s;{
+\s; \n;Instructions ...\c;
+\s;}
+\n;
+This instruction allows you to execute a certain number of times the instructions contained in the \l;block\u cbot\bloc;.
+
+\t;\c;before\n;
+This instruction is executed before the first loop instance.
+
+\t;\c;condition\n;
+This \l;condition\u cbot\cond; determines if another instance of the loop must be executed. It is tested before every instance of the loop.
+
+\t;\c;end\n;
+This instruction is executed at the end of every instance of the loop.
+
+Example: count from 1 to 4
+\c;\s;\c;for ( i = 0 ; i <= 4 ; i++ )
+\s;{
+\s; message(i) ;
+\s;}
+\n;
+The following example is strictly equivalent to a \c;for\n;-loop, but it uses the instruction \c;\l;while\u cbot\while;\n;:
+\s;\c;before;
+\s;while ( condition )
+\s;{
+\s; \n;Instructions ...\c;
+\s; end;
+\s;}
+\n;
+\t;Attention
+Do not put a \l;semicolon\u cbot\term; at the end of the line \c;for ( )\n;.
+
+The instructions \c;\l;break\u cbot\break;\n; and \c;\l;continue\u cbot\continue;\n; can be useful inside a block following the instruction \c;for \n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/D/cbot/function.txt b/help/D/cbot/function.txt
new file mode 100644
index 00000000..9b403896
--- /dev/null
+++ b/help/D/cbot/function.txt
@@ -0,0 +1,85 @@
+\b;Functions
+With functions you can divide your program into several parts, each of them will execute a specific task.
+Let's imagine following program¦:
+\c;
+\s;extern void object::Remote( )
+\s;{
+\s; send("order", 1, 100);
+\s; wait(5);
+\s; send("order", 3, 100);
+\s; wait(5);
+\s; send("order", 2, 100);
+\s; wait(5);
+\s; send("order", 4, 100);
+\s; wait(5);
+\s;}
+\n;
+\c;send\n; and \c;wait\n; are repeated several times. So it would be a good thing if we created a function that executes these two instructions:
+\c;
+\s;void object::SendToPost( float op )
+\s;{
+\s; send("order", op, 100);
+\s; wait(5);
+\s;}
+\s;extern void object::Remote( )
+\s;{
+\s; SendToPost(1);
+\s; SendToPost(3);
+\s; SendToPost(2);
+\s; SendToPost(4);
+\s;}
+\n;
+A function can have paramteters¦:
+\c;
+\s;void Example( int a, float x, string s )
+\n;
+The \c;Exemple\n; function will reveive un integer \c;a\n;, a floating point number \c;x\n; and a string \c;s\n;. Parameters are "passed by value", that is the values of parameter variables in a function are copies of the values the caller specified as variables. If you pass an \c;int\n; to a function, its parameter is a copy of whatever value was being passed as argument, and the function can change its parameter value without affecting values in the code that invoked the function.
+
+If you pass a \l;class\u cbot\class; instance or an \l;array\u cbot\array; as parameter to a function, the function only receives a \l;reference\u cbot\pointer; to the instance or the array. That means if you modify the instance or the array in the function, the instance or the array that has been specified by the caller will be actuallay modified.
+
+A function can also return a result with the \c;\l;return\u cbot\return;\n; instruction. Therefore the function must be declared no longer as void but as a type:
+\c;
+\s;float Mean( float a, float b )
+\s;{
+\s; return (a+b)/2;
+\s;}
+\s;
+\s;extern void object::Test( )
+\s;{
+\s; float value;
+\s; value = Mean(2, 6);
+\s; message( value ); // will display 4
+\s;}
+\n;
+Some other examples¦:
+\c;
+\s;float Pi( )
+\s;{
+\s; return 3.1415;
+\s;}
+\s;
+\s;string Sign( float a )
+\s;{
+\s; if ( a > 0 ) return "positive";
+\s; if ( a < 0 ) return "négative";
+\s; return "null";
+\s;}
+\n;
+You can declare several functions with the same name but different parameters¦:
+\c;
+\s;float Pythagoras( float a, float b )
+\s;{
+\s; return sqrt((a*a)+(b*b));
+\s;}
+\s;
+\s;float Pythagoras( float a, float b, float c )
+\s;{
+\s; return sqrt((a*a)+(b*b)+(c*c));
+\s;}
+\n;
+CBOT will call either the one or the other function depending on the paramteres passed.
+
+You can also declare a function \l;public\u cbot\public; so it can be used by other bots.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/goto.txt b/help/D/cbot/goto.txt
new file mode 100644
index 00000000..7657012c
--- /dev/null
+++ b/help/D/cbot/goto.txt
@@ -0,0 +1,35 @@
+\b;Instruction \c;goto\n;
+The instruction \c;goto();\n; instructs the bot to reach a given position.
+
+\b;Basic use
+The most current use consists in moving the bot to an object located with the instruction \c;\l;radar\u cbot\radar;();\n;. If the information returned by the \c;\l;radar\u cbot\radar;();\n; has been stored in a certain variable, write the name of the variable followed by \c;.position\n; in order to get the position of the object. Here is an example of a program that looks for a \l;titanium cube\u object\titan;, goes to the position and grabs it:
+\c;
+\s; item = \l;radar\u cbot\radar;(Titanium);
+\s; goto(item.position);
+\s; \l;grab\u cbot\grab;();
+\n;
+\b;For specialists
+Syntax:
+\s;\c;goto ( position, altitude, goal, crash );\n;
+
+Tells the robot to go to the given position, avoiding all the obstacles if this is possible.
+
+\t;pos: \c;\l;point\u cbot\point;\n;
+Coordinates of the goal position.
+
+\t;altitude: \c;\l;float\u cbot\float;\n;
+Flight altitude for \l;winged bots\u object\botgj;. The altitude is useful only for \l;winged bots\u object\botgj;. From the initial altitude, the bot climbs higher until it reaches the specified hight. When arriving close to destination, it goes down to touch the ground at the given position. If no value is given, an altitude of 10 meters is the default value. On very short moves, even winged bot stay on the ground. For all bot except winged bots, this parameter is ignored.
+
+\t;goal: \c;\l;int\u cbot\int;\n; (default value \c;0\n;)
+This parameter tells the bot how it must reach the goal:
+\c;0\n; stops exactly at the goal position
+\c;1\n; goes close to the goal position, without stopping.
+If no value is given, \c;1\n; (precision) is the default value.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Normally an error stops the program. You can prevent the program from stopping on errors by using the \c;\l;errmode\u cbot\errmode;(0)\n; instruction. A value different from zero if an error occurred is then returned by \c;goto()\n;.
+\c;== 0 \n;Goal position reached
+\c;!= 0 \n;Goal position impossible to reach
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/grab.txt b/help/D/cbot/grab.txt
new file mode 100644
index 00000000..5cc81374
--- /dev/null
+++ b/help/D/cbot/grab.txt
@@ -0,0 +1,29 @@
+\b;Instruction \c;grab\n;
+The instruction \c;grab();\n; instructs the bot to use the operating arm to grab an object located on the ground, on the platform of a building or on the power cell location of a bot.
+
+\b;Basic use
+The instruction \c;grab();\n; written in this form grabs the object located in front of the bot. Here is a short program that grabs an object in front of the bot and drops it 5 meters further:
+\c;
+\s; grab();
+\s; \l;move\u cbot\move;(5);
+\s; \l;drop\u cbot\drop;();
+\n;
+\b;For specialists
+Syntax:
+\s;\c;grab ( oper );\n;
+
+This instruction appeals to the operating arm of a \l;grabber bot\u object\botgr;, in order to grab the closest object.
+
+\t;oper: \c;\l;int\u cbot\int;\n; (default value\c;InFront\n;)
+Oper indicates where the bot should look for an object to grab. If no indication is given, the object is picked up in front of the bot.
+\c;InFront \n; Grabs in front (default value).
+\c;Behind \n; Grabs behind.
+\c;EnergyCell\n; Grabs the bot's own power cell.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Normally an error stops the program. You can prevent the program from stopping on errors by using the \c;\l;errmode\u cbot\errmode;(0)\n; instruction. A value different from zero if an error occurred is then returned by \c;grab();\n;.
+\c;== 0 \n;an object was grabbed
+\c;!= 0 \n;error, no object was grabbed
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/if.txt b/help/D/cbot/if.txt
new file mode 100644
index 00000000..ad2ed990
--- /dev/null
+++ b/help/D/cbot/if.txt
@@ -0,0 +1,40 @@
+\b;Instructions \c;if\n; and \c;else\n;
+With the instruction \c;if() {}\n; you can execute a set of instructions only if a certain condition is true. Write the condition in brackets \c;()\n;, and the instructions in braces \c;{}\n;.
+
+\b;Basic use
+Here is a concrete example: The bot will shoot only if the target is closer than 40 meters:
+\c;
+\s; item = \l;radar\u cbot\radar;(AlienAnt);
+\s; if (\l;distance\u cbot\dist;(position, item.position) < 40)
+\s; {
+\s; fire(1);
+\s; }
+\n;
+You can also test if an object exists at all. If the instruction \c;\l;radar\u cbot\radar;();\n; does not find the requested object, it returns the value \c;null\n;. So you can test if an object does not exists with the condition \c;(item == null)\n;, or test if it exists with \c;(item != null)\n;. Two equal signs \c;==\n; test equality, an exclamation mark followed by an equal sign \c;!=\n; test inequality. Here is a test that will go to rechage the \l;power cell\u object\power; only if there is a \l;power station\u object\station;:
+\c;
+\s; item = \l;radar\u cbot\radar;(PowerStation);
+\s; if (item != null)
+\s; {
+\s; \l;goto\u cbot\goto;(item.position);
+\s; \l;wait\u cbot\wait;(5);
+\s; }
+\n;
+\b;For specialists
+Syntax:
+\s;\c;if ( condition )
+\s;{
+\s; \n;Instructions A ...\c;
+\s;}
+\s;else
+\s;{
+\s; \n;Instructions B ...\c;
+\s;}
+\n;
+With this conditional structure you can execute a \l;bloc\u cbot\bloc; A or a \l;bloc\u cbot\bloc; B depending on a \l;condition\u cbot\cond;. If the condition is true, bloc A is executed. If the condition is false, bloc B is executed.
+Part \c;else { }\n; is not compulsory.
+
+\t;Attention
+Do not put a \l;semicolon\u cbot\term; at the end of the line \c;if ( )\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/int.txt b/help/D/cbot/int.txt
new file mode 100644
index 00000000..deb86d9e
--- /dev/null
+++ b/help/D/cbot/int.txt
@@ -0,0 +1,20 @@
+\b;Type \c;int\n;
+Use this type for variables that contain only whole numbers, negative or positive. For example:
+\c;
+\s; 12
+\s; 1000
+\s; -4
+\n;
+To represent real numbers like 12.05 or -0.005, use the type \c;\l;float\u cbot\float;\n;.
+
+\t;Attention
+Do not put space or colon signs inside a number.
+
+\t;For specialists
+Numbers of the type \c;int\n; are represented with 32 bits.
+The highest number that can be represented is (2^31)-1, that is 2'147'483'647.
+The smallest number that can be represented is -(2^31), that is -2'147'483'648.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/D/cbot/jet.txt b/help/D/cbot/jet.txt
new file mode 100644
index 00000000..71e8da2d
--- /dev/null
+++ b/help/D/cbot/jet.txt
@@ -0,0 +1,16 @@
+\b;Instruction \c;jet\n;
+Syntax:
+\s;\c;jet ( power );\n;
+
+Direct control of the jet of a \l;winged bot\u object\botgj;. The jet is what makes the bot fly. Use this instruction in order to take off, climb, descend or land.
+
+\t;power: \c;\l;float\u cbot\float;\n;
+Power of the jet, ranges between \c;-1\n; and \c;+1\n;. \c;jet(1);\n; instructs the bot to climb as fast as possible, \c;jet(-1);\n; descends as fast as possible, \c;jet(0);\n; stabilizes the altitude. In order to get slower altitude changes, use intermediate values, for example \c;jet(0.3);\n;.
+
+
+\t;Return value: \c;\l;void\u cbot\void;\n;
+None.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/D/cbot/message.txt b/help/D/cbot/message.txt
new file mode 100644
index 00000000..01d0f706
--- /dev/null
+++ b/help/D/cbot/message.txt
@@ -0,0 +1,25 @@
+\b;Instruction \c;message\n;
+Syntax:
+\s;\c;message ( text, type );\n;
+
+Prints a message on top of the screen. After a few seconds, the message disappears automatically.
+
+\t;text: \c;\l;string\u cbot\string;\n;
+Text that is to be displayed. It is possible to append several texts and/or values with the operator \c;+\n;:
+\c;message("Not found");\n;
+\c;message(angle);\n;
+\c;message(n + " object(s) found");\n;
+\c;message("Distance = " + dist + " meters");\n;
+
+\t;type: \c;\l;int\u cbot\int;\n; (default value \c;DisplayMessage\n;)
+Type of the message, that determines the background color.
+o \c;DisplayMessage\n; Standard message on yellow background.
+o \c;DisplayInfo \n; Information on green background.
+o \c;DisplayWarning\n; Warning on blue background.
+o \c;DisplayError \n; Error on red background.
+
+\t;Return value: \c;\l;void\u cbot\void;\n;
+None.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/motor.txt b/help/D/cbot/motor.txt
new file mode 100644
index 00000000..712a1ff3
--- /dev/null
+++ b/help/D/cbot/motor.txt
@@ -0,0 +1,39 @@
+\b;Instruction \c;motor\n;
+The instruction \c;motor( , );\n; sets the speed for the left-hand and the right-hand motor of the bot.
+
+\b;Basic use
+The speed given to the motors will remain constant during the execution of the following instructions. Thanks to this characteristic it is possible to perform a rotation during the instruction \c;\l;fire\u cbot\fire;();\n;. This will sweep a whole zone with only one burst. Here is an example that will sweep the zone in front of the bot:
+\c;
+\s; \l;turn\u cbot\turn;(45); // turns 45 degrees left
+\s; motor(0.5, -0.5); // slow rotation to the right
+\s; \l;fire\u cbot\fire;(2); // fire
+\s; motor(0,0); // stops the rotation
+\n;
+With the left-hand motor turning half-speed forward and the right-hand motor turning half-speed backward, the bot will turn slowly on itself during the 2-second-burst.
+
+\b;For specialists
+Syntax :
+\s;\c;motor ( left, right );\n;
+
+Gives speed instructions to the right and left motors of the robot. The motors will keep this speed until a new motor instruction is performed, or until a \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n; or \c;\l;goto\u cbot\goto;\n; instruction is performed.
+
+\t;left: \c;\l;float\u cbot\float;\n;
+Speed instruction for the left motor; the value must range between -1 and 1.
+
+\t;right: \c;\l;float\u cbot\float;\n;
+Speed instruction for the right motor; the value must range between -1 and 1.
+
+Examples :
+\c;motor(1, 1);\n; moves forward with highest possible speed.
+\c;motor(-0.5, -0.5);\n; moves backward with half speed.
+\c;motor(1, -1);\n; turns right as fast as possible.
+
+Note :
+\c;motor(2, 2);\n; will not move forward any faster than \c;motor(1, 1)\n;
+\c;motor(-2, -2);\n; will not move backward any faster than \c;motor(-1, -1)\n;
+
+\t;Return value: \c;\l;void\u cbot\void;\n;
+None.
+
+\t;See also
+\l;Instructions\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/move.txt b/help/D/cbot/move.txt
new file mode 100644
index 00000000..74177b22
--- /dev/null
+++ b/help/D/cbot/move.txt
@@ -0,0 +1,22 @@
+\b;Instruction \c;move\n;
+The instruction \c;move();\n; instructs the bot to move forward or backward while keeping the same orientation. In brackets you must specify the length of the move in meters.
+
+\b;Basic use
+If you want the bot to move forward 30 meters, write \c;move(30);\n;. In order to move the bot backward after it dropped a chunk of \l;titanium ore\u object\titanore; on the \l;converter\u object\convert;, write \c;move(-2.5);\n;.
+
+\b;For specialists
+Syntax:
+\s;\c;move ( length );\n;
+
+Moves forward or backward of a given distance, always keeping the current orientation of the bot.
+
+\t;length: \c;\l;float\u cbot\float;\n;
+Length of the move, in meters. A negative value makes the bot move backward.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Normally an error stops the program. You can prevent the program from stopping on errors by using the \c;\l;errmode\u cbot\errmode;(0)\n; instruction. A value different from zero if an error occurred is then returned by \c;move()\n;.
+\c;== 0 \n;Move executed
+\c;!= 0 \n;error, the instruction was not performed correctly
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/nan.txt b/help/D/cbot/nan.txt
new file mode 100644
index 00000000..f4732189
--- /dev/null
+++ b/help/D/cbot/nan.txt
@@ -0,0 +1,16 @@
+\b;Type \c;nan\n;
+This special value indicates that a \l;variable\u cbot\var; of type \c;\l;int\u cbot\int;\n; or \c;\l;float\u cbot\float;\n; contains no number, but "nothing".
+For example, if the instruction \c;\l;receive\u cbot\receive;\n; can not get the requested information, it returns \c;nan\n; :
+\c;
+\s; value = receive("Length");
+\s; if ( value == nan ) // not found ?
+\s; {
+\s;
+\s; }
+\n;
+\t;Dictionnary
+\c;nan\n; = Not A Number
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/D/cbot/new.txt b/help/D/cbot/new.txt
new file mode 100644
index 00000000..97261784
--- /dev/null
+++ b/help/D/cbot/new.txt
@@ -0,0 +1,21 @@
+\b;Instruction \c;new\n; (for specialists)
+The \c;new\n; operator creates a \l;class\u cbot\class; instance:
+\c;\s; MyClass item; // now item is a null reference
+\s; item = new MyClass(); // now item is a reference
+\s; // to a new class instance
+\n;
+If you want to create a new instance at declaration time you can ommit the new \c;new\n; operator by putting () after the declaration:
+
+Instead of:
+\c;\s; MyClass item = new MyClass();
+\n;you can write:
+\c;\s; MyClass item();
+\n;
+If your class has a constructor with parameters you can write:
+\c;\s; MyClass item = new MyClass(2, 3);
+\n;or:
+\c;\s; MyClass item(2, 3);
+\n;
+\t;See also
+\c;\l;class\u cbot\class;\n;, \c;\l;reference\u cbot\pointer;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/null.txt b/help/D/cbot/null.txt
new file mode 100644
index 00000000..6e5219da
--- /dev/null
+++ b/help/D/cbot/null.txt
@@ -0,0 +1,7 @@
+\b;Type \c;null\n;
+This special value indicates that the variable containing it does not reference an instance.
+
+\t;See also
+\l;References\u cbot\pointer;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/D/cbot/object.txt b/help/D/cbot/object.txt
new file mode 100644
index 00000000..242de885
--- /dev/null
+++ b/help/D/cbot/object.txt
@@ -0,0 +1,70 @@
+\b;Type \c;object\n;
+Use this type for variables that contain the characteristics of an object, be it a bot, a building, some raw material, an enemy, etc.
+
+\c;\l;int\u cbot\int; object.category \n;\l;Category\u cbot\category; of the object
+\c;\l;point\u cbot\point; object.position \n;Position of the object (x,y,z)
+\c;\l;float\u cbot\float; object.orientation \n;Orientation of the object (0..360)
+\c;\l;float\u cbot\float; object.pitch \n;Forward/backward angle of the object
+\c;\l;float\u cbot\float; object.roll \n;Right/left angle of the object
+\c;\l;float\u cbot\float; object.energyLevel \n;Energy level (0..1)
+\c;\l;float\u cbot\float; object.shieldLevel \n;Shield level (0..1)
+\c;\l;float\u cbot\float; object.temperature \n;Jet temperature (0..1)
+\c;\l;float\u cbot\float; object.altitude \n;Altitude above ground
+\c;\l;float\u cbot\float; object.lifeTime \n;Lifetime of the object
+\c;object object.energyCell \n;Power cell on the bot
+\c;object object.load \n;Object carried by the bot
+
+\s;\c;category\n;
+The \n;\l;category\u cbot\category; of an object allows you to know what it is, f. ex. what kind of bot, building, enemy, etc.
+
+\s;\c;position\n;
+Position of the object on the planet, in meters. The coordinates \c;x\n; and \c;y\n; correspond to the location on a map, the \c;z\n; coordinate corresponds to the altitude above (respectively below) sea level.
+
+\s;\c;orientation\n;
+Orientation of the object, in degrees. The orientation tells you what direction the object is facing. An orientation of \c;0\n; corresponds to an object facing eastwards, thus following the positive \c;x\n; axis. The orientation is measured counterclockwise.
+
+\s;\c;pitch\n;
+Forward/backward angle of the robot. A pitch of \c;0\n; means that the bot is standing on flat ground. A positive inclination means that it is facing upwards, a negative inclination means that it is facing downwards.
+
+\s;\c;roll\n;
+Left/right angle of the bot, in degrees. A positive value means that the bot is leaning to the left side, a negative value means that it is leaning to the right side.
+
+\s;\c;energyLevel\n;
+Energy level, between 0 and 1. A normal \l;power cell\u object\power; that is fully charged returns the value \c;1\n;. A \l;nuclear power cell\u object\atomic; never returns a value higher than 1, it just lasts longer. Attention: The energy level of a bot is always zero, because the energy is not contained in the bot, but in the power cell. To know the energy level of the power cell of a bot, you must write \c;energyCell.energyLevel\n;.
+
+\s;\c;shieldLevel\n;
+Shield level of a robot or building. A level \c;1\n; indicates that the shield is still perfect. Every time that the bot or building gets a bullet or collides with another object, the shield level decreases. When the level reaches \c;0\n;, the next bullet or collision will destroy the bot or building.
+Bots can re-energize their shield on a \l;repair center\u object\repair;. The shield of a building is repaired if it lays inside the protection sphere of a \l;shielder\u object\botshld;.
+
+\s;\c;temperature\n;
+Temperature of the jet of \l;winged bots\u object\botgj;. \c;0\n; corresponds to a cold jet. When used, the temperature increases progressively. When it reaches the value \c;1\n;, the jet is overheated and stops working, until it cooled down a little.
+
+\s;\c;altitude\n;
+The \c;z\n; coordinate of the position indicates the altitude above sea level, whereas the \c;altitude\n; indicates the height above ground. This value is meaningful only for \l;winged bots\u object\botgj; and for \l;wasps\u object\wasp;. For all other objects, this value is zero.
+
+\s;\c;lifeTime\n;
+The age of the object in seconds since it's creation.
+
+\s;\c;energyCell\n;
+This information is special, because it returns the information about another object, in this case the power pack. This means that energyCell contains all the characteristics of a normal object, for example \c;category\n; (PowerCell or NuclearCell), \c;position\n; (the position of the cell), etc.
+If you want to know the energy level of a robot, you must not check \c;energyLevel\n;, but \c;energyCell.energyLevel\n;.
+If the bot has bot no power cell, \c;energyCell\n; returns \c;null\n;.
+
+\s;\c;load\n;
+This information also returns the description of a whole object: the description of the object carried by a \l;grabber\u object\botgr;. If it carries nothing, \c;load\n; returns \c;null\n;.
+
+\b;Examples
+The type \c;object\n; returns the special value \c;\l;null\u cbot\null;\n; when the object does not exist. For example:
+\c;
+\s; object a;
+\s; a = radar(BotGrabberRoller);
+\s; if ( a == null ) // object does not exist ?
+\s; {
+\s; }
+\s; if ( a.position.z > 50 ) // is it on a mountain ?
+\s; {
+\s; }
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/D/cbot/open.txt b/help/D/cbot/open.txt
new file mode 100644
index 00000000..8af2abd4
--- /dev/null
+++ b/help/D/cbot/open.txt
@@ -0,0 +1,20 @@
+\b;Instruction \c;open\n;
+Open a text file in the files/ folder. This is a method of the \c;\l;file\u cbot\file;\n; class. This is the reason why we always write \c;handle.open()\n;¦:
+\c;
+\s; handle.open("test.txt", "w");
+\n;
+To open a file, proceed as follows¦:
+\c;
+\s; file handle();
+\s; handle.open("filename", "w");
+\s; handle.writeln("abc");
+\s; handle.close();
+\n;
+\c;"r"\n; mode: open for reading.
+\c;"w"\n; mode: open for writing.
+
+Files can only be created and opened in the files/ folder which is located in the folder where Colobot has been installed. You cannot not create or open files that are located elsewhere than in the files/ folder.
+
+\t;See also
+\c;\l;file\u cbot\file;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n;, \c;\l;writeln\u cbot\writeln;\n; and \c;\l;eof\u cbot\eof;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/openfile.txt b/help/D/cbot/openfile.txt
new file mode 100644
index 00000000..6e8d59e1
--- /dev/null
+++ b/help/D/cbot/openfile.txt
@@ -0,0 +1,11 @@
+\b;Instruction \c;openfile\n;
+\c;openfile();\n; opens an text file in the files/ folder. This is not a method of the \c;\l;file\u cbot\file;\n; class but openfile returne a \l;reference\u cbot\pointer; to a new instance of the file class. You must supply two parameters, the filename and the opening mode.
+\c;
+\s;file handle = openfile("filename", "r");
+\n;
+\c;"r"\n; mode: open for reading.
+\c;"w"\n; mode: open for writing.
+
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/point.txt b/help/D/cbot/point.txt
new file mode 100644
index 00000000..916be40f
--- /dev/null
+++ b/help/D/cbot/point.txt
@@ -0,0 +1,36 @@
+\b;Type \c;point\n;
+Variables of this type contain the coordinates of a point in space. This type is made of three values that represent the \c;x\n;, \c;y\n; and \c;z\n; coordinates.
+\c;x\n; and \c;y\n; correspond to the place on the ground. The positive \c;x\n; axis faces towards east, the positive \c;y\n; axis faces towards north.
+The \c;z\n; value corresponds to the altitude above sea level.
+
+If you want to declare a variable of type point, you can write:
+\c;
+\s; point a (10, 20, 30);
+\n;
+You can also set the variable taking one value after another:
+\c;
+\s; point b;
+\s; b.x = 10;
+\s; b.y = 20;
+\s; b.z = 30;
+\n;
+With these examples, the following \l;condition\u cbot\cond; is true:
+\c;
+\s; if ( a == b )
+\s; {
+\s; }
+\n;
+The following declaration :
+\c;
+\s; point c (4, 7);
+\n;
+Is equivalent to :
+\c;
+\s; point c;
+\s; c.x = 4;
+\s; c.y = 7;
+\s; c.z = 0;
+\n;
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/pointer.txt b/help/D/cbot/pointer.txt
new file mode 100644
index 00000000..3d7b348c
--- /dev/null
+++ b/help/D/cbot/pointer.txt
@@ -0,0 +1,53 @@
+\b;References (for specialists)
+CBOT uses references for \l;classes\u cbot\class; and \l;arrays\u cbot\array;. Any class variable actually contains a reference to the instance. The instance actually contains the class fields. Several references can reference the same instance. A \c;\l;null\u cbot\null;\n; reference references nothing. You can compare an instance to a suitcase and a reference to a carrier. Each time we need a new suitcase we create a new instance with a carrier. But a suitcase can be carried by more than one carrier. A carrier who carries no suitcase is a \c;\l;null\u cbot\null;\n; reference.
+
+Example:
+\c;\s;{
+\s; MyClass item1(); // create a new instance
+\s; // referenced by item1
+\s; MyClass item2; // create a null reference
+\s; item2 = item1; // copy the reference,
+\s; // item2 and item1 now reference
+\s; // the same instance
+\s; item1.a = 12; // modifies the instance
+\s; // referenced by item1 (and item2)
+\s; message(item2.a);// displays 12
+\s;}
+\n;
+If you pass a \l;class\u cbot\class; instance as parameter to a function, the function only receives a reference to the instance. That means if you modify the instance in the function, the instance that has been specified by the caller will be actuallay modified.
+
+\c;\s;void Test( MyClass item )
+\s;{
+\s; item.a = 12; // modify the original instance
+\s; item = new MyClass(); // new local instance
+\s; item.a = 33; // modifie the local instance
+\s;}
+\n;
+Calling the fucntion \c;Test()\n;¦:
+\c;\s;{
+\s; MyClass toto();
+\s; Test(toto);
+\s; message(toto.a); // displays 12
+\s;}
+\n;
+The instance containing the field \c;a = 33\n; is referenced only by the newly created instance \c;item\n; inside the fucntion \c;Test\n;. At the end of \c;Test\n; this newly created instance referenced by \c;item\n; is automatically deleted.
+
+A function can return an instance¦:
+\c;\s;MyClass Test2( )
+\s;{
+\s; MyClass item = new MyClass();
+\s; item.x = 33;
+\s; return item;
+\s;}
+\n;
+Call the function like this:
+\c;\s;{
+\s; MyClass toto;
+\s; toto = Test2(); // toto will contain a reference to
+\s; // the instance created by Test2()
+\s; message(toto.a); // displays 33
+\s;}
+\n;
+\t;See also
+\c;\l;class\u cbot\class;\n;, \c;\l;new\u cbot\new;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/private.txt b/help/D/cbot/private.txt
new file mode 100644
index 00000000..5a2921a2
--- /dev/null
+++ b/help/D/cbot/private.txt
@@ -0,0 +1,19 @@
+\b;Instruction \c;private\n; (for specialists)
+\l;Class\u cbot\class; members can be \l;public\u cbot\public; (by default) or private. A member can be declared privat by putting \c;private\n; before the type declaration of the member. Private members are not accessible from outside the class definition.
+\c;
+\s;public class MyClass
+\s;{
+\s; int b; // public by défault
+\s; public int a; // als public
+\s; private point position; // privat
+\s;}
+\s;void Test()
+\s;{
+\s; MyClass item;
+\s; item.a = item.b = 12; // ok
+\s; message( item.position ); // this is an error
+\s;}
+\n;
+\t;See also
+\c;\l;class\u cbot\class;\n;, \c;\l;public\u cbot\public;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/public.txt b/help/D/cbot/public.txt
new file mode 100644
index 00000000..d7e8d920
--- /dev/null
+++ b/help/D/cbot/public.txt
@@ -0,0 +1,51 @@
+\b;Instruction \c;public\n; (for specialists)
+This instruction has two distinct purposes¦:
+
+1) Make a function available to other bots.
+2) Make a class member accessible from outside the class definition.
+
+\b;Instruction \c;public\n; for functions
+If you put \c;public\n; before a \l;function\u cbot\function; definition, you can make the function available to programs in other bots in the same mission.
+
+For example in the first bot we would have¦:
+\c;
+\s;public void object::Segment(float dist, float angle)
+\s;{
+\s; move(dist);
+\s; turn(angle);
+\s;}
+\n;
+And in another bot we would have¦:
+\c;
+\s;extern void object::Square( )
+\s;{
+\s; for ( int i=0 ; i<4 ; i++ )
+\s; {
+\s; Segment(10, 90);
+\s; fire(1);
+\s; }
+\s;}
+\n;
+If you have declared a function \c;public\n;, you cannot define a function with the same name and arguments in another bot of the same mission.
+
+If a bot containing a \c;public\n; function is destroyed, the other bots that make use of this function will be stopped with an error.
+
+\b;Instruction \c;public\n; for classes
+\l;Class\u cbot\class; members can be public (by default) or \l;privat\u cbot\private;. A member can be declared private by putting \c;private\n; before the member type. Private members are not accessible from outside the class definition.
+\c;
+\s;public class MyClass
+\s;{
+\s; int b; // public by default
+\s; public int a; // also public
+\s; private point position; // privat
+\s;}
+\s;void Test()
+\s;{
+\s; MyClass item;
+\s; item.a = item.b = 12; // ok
+\s; message( item.position ); // this is an error
+\s;}
+\n;
+\t;See also
+\c;\l;class\u cbot\class;\n;, \c;\l;private\u cbot\private;\n;, \c;\l;functions\u cbot\function;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/radar.txt b/help/D/cbot/radar.txt
new file mode 100644
index 00000000..d16fa639
--- /dev/null
+++ b/help/D/cbot/radar.txt
@@ -0,0 +1,60 @@
+\b;Instruction \c;radar\n;
+With the instruction \c;radar()\n;, you can look for objects like \l;enemies\u object\mother;, bots, buildings or raw materials.
+
+\b;Basic use
+Write in brackets the \l;name of the object\u cbot\category; that you look for. Put the result in a variable of the \l;type\u cbot\type; \c;object\n;. Here is an example that looks for the closest ant:
+\c;
+\s;// At the beginning of the program:
+\s;object item; // variable declaration
+\s;
+\s;// Look for the closest ant
+\s;item = radar(AlienAnt);
+\n;
+\b;For specialists
+Syntax:
+\s;\c;radar ( category, angle, focus, min, max, way );\n;
+
+Detects an object according to several parameters.
+
+\image radar1 8 8;
+Seen from above, the purple zone corresponds to the zone where objects will be detected.
+
+\t;category: \c;\l;int\u cbot\int;\n;
+\l;Category\u cbot\category; of the objects that should be detected. For example, when you are looking for an ant, write \c;radar (AlienAnt)\n;.
+
+\t;angle: \c;\l;float\u cbot\float;\n; (default value\c;0\n;)
+Direction that the radar is facing, in degrees.
+\c; 0\n; -> radar is facing straight ahead
+\c;-90\n; -> radar is facing a quarter turn right
+\c; 90\n; -> radar is facing a quarter turn left
+
+\t;focus: \c;\l;float\u cbot\float;\n; (default value\c;360\n;)
+Opening angle of the radar, in degrees.
+
+\t;min: \c;\l;float\u cbot\float;\n; (default value \c;0\n;)
+Minimum detection distance, in meters. Objects that are closer than the minimum distance will not be detected.
+
+\t;max: \c;\l;float\u cbot\float;\n; (Default value\c;1000\n;)
+Maximum detection distance, in meters. Objects that are farther away than the maximum distance will not be detected.
+
+\t;way: \c;\l;float\u cbot\float;\n; (default value\c;1\n;)
+Determines which way the objects are detected. With value \c;1\n;, returns the closest object found in the specified zone. With value \c;-1\n;, the farthest object in the zone will be returned.
+
+\t;Return value: \c;\l;object\u cbot\object;\n;
+Returns the first object found that corresponds to the specified category in the specified zone. If no object was found, returns the value \c;\l;null\u cbot\null;\n;.
+
+\t;Remark
+You do not have to give all the parameters. Here are two examples of instructions that are equivalent:
+\c;
+\s; radar(Titanium, 0, 360, 0, 1000);
+\s; radar(Titanium); // equivalent
+
+\s; radar(Titanium, 0, 90, 0, 1000);
+\s; radar(Titanium, 0, 90); // equivalent
+\n;
+When one or more parameters are not specified, the default values indicated above are used instead; only the first parameter is compulsory.
+Generally, only the first parameter is specified: f. ex. \c;radar (AlienAnt)\n; detects the closest ant, wherever it may be.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/D/cbot/readln.txt b/help/D/cbot/readln.txt
new file mode 100644
index 00000000..4889c0c5
--- /dev/null
+++ b/help/D/cbot/readln.txt
@@ -0,0 +1,20 @@
+\b;Instruction \c;readln\n;
+Read one line from an open file in the files/ folder. This is a method of the \c;\l;file\u cbot\file;\n; class. This is the reason why we always write \c;handle.readln()\n;¦:
+\c;
+\s; s = handle.readln();
+\n;
+The file must have been opened for reading (\c;"r"\n;) with the \c;\l;open\u cbot\open;\n; instruction. \c;readln\n; returns the string containing the whole line but without the end of line characters 0x0D (CR) and 0x0A (LF).
+
+Syntax¦:
+\s;\c;string = handle.readln ( );\n;
+
+Example¦:
+\c;
+\s; string s;
+\s; s = handle.readln();
+\s; if ( s == "abc" )
+\s; ...
+\n;
+\t;See also
+\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;writeln\u cbot\writeln;\n; and \c;\l;eof\u cbot\eof;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/receive.txt b/help/D/cbot/receive.txt
new file mode 100644
index 00000000..68b140f5
--- /dev/null
+++ b/help/D/cbot/receive.txt
@@ -0,0 +1,18 @@
+\b;Instruction \c;receive\n;
+Syntax:
+\s;\c;receive ( name, power );\n;
+
+Retrieves an information from the closest \l;information exchange post\u object\exchange;.
+
+\t;name: \c;string\n;
+Name of the information required from the exchange post. This name is a string: it must be written in quotation marks "¦".
+
+\t;power: \c;float\n;
+Power of the receiver, which corresponds to maximal distance between the receiver and the exchange post. If the distance is longer, no information is received. Default value is 10 metres.
+
+\t;Return value: \c;\l;float\u cbot\float;\n;
+Value of the retrieved information. If no exchange post is close enough, or if the name of the requested information does not exist in the exchange post, the value \c;nan\n; is returned.
+
+\t;See also
+\c;\l;send\u cbot\send;\n;, \c;\l;testinfo\u cbot\testinfo;\n; and \c;\l;deleteinfo\u cbot\delinfo;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/recycle.txt b/help/D/cbot/recycle.txt
new file mode 100644
index 00000000..10d9979d
--- /dev/null
+++ b/help/D/cbot/recycle.txt
@@ -0,0 +1,14 @@
+\b;Instruction \c;recycle\n;
+Syntax:
+\s;\c;recycle ( );\n;
+
+Recycles the derelict bot in front of the \l;recycler\u object\botrecy; into a \l;titanium cube\u object\titan;.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Zero if OK, or a value different from zero if an error occurred.
+\c;== 0 \n;the derelict bot has been recycled
+\c;!= 0 \n;error, no derelict bot could be recycled
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/D/cbot/retobj.txt b/help/D/cbot/retobj.txt
new file mode 100644
index 00000000..3cfd3ca7
--- /dev/null
+++ b/help/D/cbot/retobj.txt
@@ -0,0 +1,15 @@
+\b;Instruction \c;retobject\n;
+Syntax:
+\s;\c;retobject ( number );\n;
+
+Returns the object corresponding to the given number.
+
+\t;number: \c;\l;int\u cbot\int;\n;
+Number of the object, between 0 and n. "n" represents the total number of objects in the scene.
+
+\t;Return value: \c;\l;object\u cbot\object;\n;
+Object corresponding to the number. The return value \c;\l;null\u cbot\null;\n; means that no object corresponds to this number, because the number was too high, and there are not so many objects in the scene.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/D/cbot/return.txt b/help/D/cbot/return.txt
new file mode 100644
index 00000000..5c74e3e1
--- /dev/null
+++ b/help/D/cbot/return.txt
@@ -0,0 +1,31 @@
+\b;Instruction \c;return\n;
+Returns from a function. Syntax:
+\c;
+\s;void function ( )
+\s;{
+\s; return;
+\s;}
+\n;
+\b;For specialists
+If the \l;function\u cbot\function; has a return type, the \c;return\n; instruction must be followed by the value to be returned:
+\c;
+\s;float Pi ( )
+\s;{
+\s; return 3.1415;
+\s;}
+
+\s;float Mean (float a, float b)
+\s;{
+\s; return (a+b)/2;
+\s;}
+
+\s;string Sign (float a)
+\s;{
+\s; if ( a > 0 ) return "positive";
+\s; if ( a < 0 ) return "négative";
+\s; return "null";
+\s;}
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/D/cbot/search.txt b/help/D/cbot/search.txt
new file mode 100644
index 00000000..e63e6c4b
--- /dev/null
+++ b/help/D/cbot/search.txt
@@ -0,0 +1,18 @@
+\b;Instruction \c;search\n;
+Syntax:
+\s;\c;search ( category, position );\n;
+
+Detects the object of the given category that is closest to the given position.
+
+\t;category: \c;\l;int\u cbot\int;\n;
+\l;Category\u cbot\category; of the requested object.
+
+\t;position: \c;\l;point\u cbot\point;\n;
+\c;search\n; returns the object of the given category that is closest to the position indicated here.
+
+\t;Return value: \c;\l;object\u cbot\object;\n;
+Characteristics of the object that has been found. The value \c;\l;null\u cbot\null;\n; means that no object of this category has been found.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/D/cbot/send.txt b/help/D/cbot/send.txt
new file mode 100644
index 00000000..10aa0606
--- /dev/null
+++ b/help/D/cbot/send.txt
@@ -0,0 +1,19 @@
+\b;Instruction \c;send\n;
+Syntax¦:
+\s;\c;send ( name, value, power );\n;
+
+Sends an information to the closest \l;information exchange post\u object\exchange;.
+
+\t;name: \c;string\n;
+Name of the information to be sent to the exchange post. This name is a string: it must be written in quotation marks "¦".
+If there is any information having this name, a new entry is created, as far as the total number of entries does not exceed 10. If there is already an information having this name, value is simply replaced by the new.
+
+\t;value: \c;float\n;
+Value of the information to be sent.
+
+\t;power: \c;float\n;
+Power of the transmitter, which corresponds to the maximal distance to where information can be the sent. Default value is 10 metres.
+
+\t;See also
+\c;\l;receive\u cbot\receive;\n;, \c;\l;testinfo\u cbot\testinfo;\n; and \c;\l;deleteinfo\u cbot\delinfo;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/shield.txt b/help/D/cbot/shield.txt
new file mode 100644
index 00000000..d9aff476
--- /dev/null
+++ b/help/D/cbot/shield.txt
@@ -0,0 +1,19 @@
+\b;Instruction \c;shield\n;
+Syntax:
+\s;\c;shield ( oper );\n;
+
+Activates or deactivates the shield of the \l;ahielder\u object\botshld;. You can of course move the shielder when the shield is active. It protects all objects that are inside the shielded sphere from enemy fire. The radius of the sphere can range between 10 and 25 meters.
+
+\t;oper: \c;\l;float\u cbot\float;\n;
+\c;1\n; activates the shield.
+\c;0\n; deactivates the shield
+A normal \l;power cell\u object\power; fully charged can maintain the shield active during 20 seconds. When the cell is empty, the shield deactivates.
+
+\t;radius: \c;\l;float\u cbot\float;\n;
+Radius of the shield, ranging between 10 and 25 meters.
+
+\t;Return value: \c;\l;void\u cbot\void;\n;
+None.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/sizeof.txt b/help/D/cbot/sizeof.txt
new file mode 100644
index 00000000..c0722c15
--- /dev/null
+++ b/help/D/cbot/sizeof.txt
@@ -0,0 +1,22 @@
+\b;Instruction \c;sizeof\n;
+The sizeof function lets you know the number of elements contained in an \l;array\u cbot\array;.
+That is the index of the last element plus one ("empty" elements are counted).
+\c;
+\s;{
+\s; int a[12];
+\s; a[5] = 345;
+\s; message( sizeof(a) ); // will display 6
+\s;}
+\n;
+In this example we have 6 elements in the array after \c;a[5]=345\n;. The non initialized elements \c;[0]\n;, \c;[1]\n;, \c;[2]\n;, \c;[3]\n; and \c;[4]\n; will be counted.
+
+With multidimensionnal arrays you can get the size of a sub array:
+\c;
+\s;float xy[][]; // 2 dimensionnal array
+\s;xy[5][10] = 67;
+\s;message( sizeof(xy) ); // will display 6
+\s;message( sizeof(xy[5]) ); // will display 11
+\s;
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/sniff.txt b/help/D/cbot/sniff.txt
new file mode 100644
index 00000000..27872224
--- /dev/null
+++ b/help/D/cbot/sniff.txt
@@ -0,0 +1,17 @@
+\b;Instruction \c;sniff\n;
+Syntax:
+\s;\c;sniff ( );\n;
+
+Sounds the underground in front of the \l;sniffer\u object\botsr;. According to what raw materials were detected, the following objects will be created:
+
+\c;TitaniumSpot\n; -> \l;Red cross\u object\stonspot;
+\c;UraniumSpot \n; -> \l;Yellow circle\u object\uranspot;
+\c;PowerSpot \n; -> \l;Green cross\u object\enerspot;
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Zero if everything is OK, or a value different from zero if an error occurred.
+\c;== 0 \n;sounding performed
+\c;!= 0 \n;sounding impossible
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/space.txt b/help/D/cbot/space.txt
new file mode 100644
index 00000000..baa660a9
--- /dev/null
+++ b/help/D/cbot/space.txt
@@ -0,0 +1,23 @@
+\b;Instruction \c;space\n;
+Syntax :
+\s;\c;space ( center, rmin, rmax, dist );\n;
+
+Determines the position of the nearest free space around a given position.
+
+\t;center: \c;\l;point\u cbot\point;\n; (default: bot position)
+Desired position of the free space.
+
+\t;rmin: \c;\l;float\u cbot\float;\n; (default value: \c;8\n;)
+Minimum distance from the desired position.
+
+\t;rmax: \c;\l;float\u cbot\float;\n; (default value: \c;50\n;)
+Maximum distance from the desired position.
+
+\t;dist: \c;\l;float\u cbot\float;\n; (default value: \c;4\n;)
+Required distance between two free spaces.
+
+\t;Return: \c;\l;point\u cbot\point;\n;
+Position of the free space.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/static.txt b/help/D/cbot/static.txt
new file mode 100644
index 00000000..7d5e6032
--- /dev/null
+++ b/help/D/cbot/static.txt
@@ -0,0 +1,22 @@
+\b;Instruction \c;static\n; (for specialists)
+\l;Class\u cbot\class; members declared with \c;static\n; are shared between all instances of the class.
+\c;
+\s;public class MyClass
+\s;{
+\s; static int nb = 1;
+\s; static string [ ] list = null;
+\s;}
+\s;void Test ()
+\s;{
+\s; MyClasse item1();
+\s; MyClasse item2();
+\s; item1.nb = 3;
+\s; item1.list[item1.nb] = "Hello";
+\s; message( item2.list[item2.nb] ); // display "Hello"
+\s;}
+\n;
+\c;Static\n; members can be declared \c;\l;private\u cbot\private;\n; so they will be only acessible from within class members (including constructors and destructors).
+
+\t;See also
+\c;\l;class\u cbot\class;\n;, \c;\l;synchronized\u cbot\synchro;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/strfind.txt b/help/D/cbot/strfind.txt
new file mode 100644
index 00000000..3d42b0d5
--- /dev/null
+++ b/help/D/cbot/strfind.txt
@@ -0,0 +1,20 @@
+\b;Instruction \c;strfind\n;
+Find a substring in a string and returns the position of the first substring found or \l;nan\u cbot\nan; if the substring has not been found.
+
+Syntax¦:
+\s;\c;strfind ( string, sub );\n;
+
+\t;string: \c;\l;string\u cbot\string;\n;
+String we are searching in.
+
+\t;sub: \c;\l;string\u cbot\string;\n;
+Substring we are searching for.
+
+Examples¦:
+\s;\c; int pos = strfind("abcdef", "ab"); // pos will be 0
+\s; int pos = strfind("abcdef", "de"); // pos will be 3
+\s; int pos = strfind("abcdef", "xy"); // pos will be \l;nan\u cbot\nan;
+\n;
+\t;See also
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/string.txt b/help/D/cbot/string.txt
new file mode 100644
index 00000000..cc7b1a17
--- /dev/null
+++ b/help/D/cbot/string.txt
@@ -0,0 +1,33 @@
+\b;Type \c;string\n;
+Use a variable of this type for storing characters or strings.
+
+For example:
+\s;\c; "Hello!"
+\s; "This is a string"
+\s; "x"
+\s; "" // empty string
+\n;
+You can append two strings with the \c;+\n; operator :
+\s;\c; "Good morning," + " " + "Sir"
+\n;
+Returns the string:
+\s;\c; "Good morning, Sir"
+\n;
+If you want to put a quotation mark (") or a backslash (\) in a string you must write¦:
+\s;\c;"This is \"very\" important"
+\n;which will result in the string \c; This is "very" important.
+\s;\c;"%user%\\ant.txt"
+\n;will result in \c;%user%\ant.txt
+\n;
+Following instructions can be used with strings¦:
+\c;\l;strlen\u cbot\strlen; \n;Get string length
+\c;\l;strleft\u cbot\strleft; \n;Extract left part
+\c;\l;strright\u cbot\strright; \n;Extract right part
+\c;\l;strmid\u cbot\strmid; \n;Extract center part
+\c;\l;strfind\u cbot\strfind; \n;Find a substring.
+\c;\l;strval\u cbot\strval; \n;Convert string to number
+\c;\l;strupper\u cbot\strupper; \n;Convert to upper case
+\c;\l;strlower\u cbot\strlower; \n;Convert to lower case
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/strleft.txt b/help/D/cbot/strleft.txt
new file mode 100644
index 00000000..fa80fdeb
--- /dev/null
+++ b/help/D/cbot/strleft.txt
@@ -0,0 +1,16 @@
+\b;Instruction \c;strleft\n;
+Extracts the first (that is, leftmost) characters from a string.
+
+Syntax¦:
+\s;\c;strleft ( string, len );\n;
+
+\t;len: \c;\l;int\u cbot\int;\n;
+Number of characters to be extracted.
+
+Examples¦:
+\s;\c; string s = strleft("abcdef", 2); // s is "ab"
+\s; string s = strleft("abc", 10); // s is "abc"
+\n;
+\t;See also
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/strlen.txt b/help/D/cbot/strlen.txt
new file mode 100644
index 00000000..1cc384a7
--- /dev/null
+++ b/help/D/cbot/strlen.txt
@@ -0,0 +1,14 @@
+\b;Instruction \c;strlen\n;
+Get the length of a string.
+
+Syntax¦:
+\s;\c;strlen ( string );\n;
+
+Examples¦:
+\s;\c; int len = strlen("abc"); // len is 3
+\s; int len = strlen(""); // len is 0
+\s; if ( strlen(s) == 0 ) // is string empty ?
+\n;
+\t;See also
+\c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/strlower.txt b/help/D/cbot/strlower.txt
new file mode 100644
index 00000000..b4b7e50b
--- /dev/null
+++ b/help/D/cbot/strlower.txt
@@ -0,0 +1,12 @@
+\b;Instruction \c;strlower\n;
+Convert all characters in a string to lowercase.
+
+Syntax¦:
+\s;\c;strlower ( string );\n;
+
+Examples¦:
+\s;\c; string s = strlower("Abc"); // s is "abc"
+\n;
+\t;See also
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/strmid.txt b/help/D/cbot/strmid.txt
new file mode 100644
index 00000000..cf90bd3b
--- /dev/null
+++ b/help/D/cbot/strmid.txt
@@ -0,0 +1,20 @@
+\b;Instruction \c;strmid\n;
+Extracts a substring of a given length starting at a given position from a string.
+
+Syntax¦:
+\s;\c;strmid ( string, pos, len );\n;
+
+\t;pos: \c;\l;int\u cbot\int;\n;
+The index of the first character that is to be included in the extracted substring.
+
+\t;len: \c;\l;int\u cbot\int;\n;
+Number of characters to be extracted.
+
+Examples¦:
+\s;\c; string s = strmid("abcdef", 1, 2); // s is "bc"
+\s; string s = strmid("abcdef", 4, 5); // s is "ef"
+\s; string s = strmid("abcdef", 9, 2); // s is ""
+\n;
+\t;See also
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/strright.txt b/help/D/cbot/strright.txt
new file mode 100644
index 00000000..18824e65
--- /dev/null
+++ b/help/D/cbot/strright.txt
@@ -0,0 +1,16 @@
+\b;Instruction \c;strright\n;
+Extracts the last (that is, rightmost) characters from a string.
+
+Syntax¦:
+\s;\c;strright ( string, len );\n;
+
+\t;len: \c;\l;int\u cbot\int;\n;
+Number of characters to be extracted.
+
+Examples¦:
+\s;\c; string s = strright("abcdef", 2); // s is "ef"
+\s; string s = strright("abc", 10); // s is "abc"
+\n;
+\t;See also
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/strupper.txt b/help/D/cbot/strupper.txt
new file mode 100644
index 00000000..7091f0ce
--- /dev/null
+++ b/help/D/cbot/strupper.txt
@@ -0,0 +1,12 @@
+\b;Instruction \c;strupper\n;
+Convert all characters in a string to uppercase.
+
+Syntax¦:
+\s;\c;strupper ( string );\n;
+
+Examples¦:
+\s;\c; string s = strupper("Abc"); // s is "ABC"
+\n;
+\t;See also
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/strval.txt b/help/D/cbot/strval.txt
new file mode 100644
index 00000000..491fc185
--- /dev/null
+++ b/help/D/cbot/strval.txt
@@ -0,0 +1,19 @@
+\b;Instruction \c;strval\n;
+Convert a string to a number. Don't confuse the string \c;"45"\n; that contains actually the two characters \c;4\n; and \c;5\n; and the number \c;45\n;.
+
+Examples¦:
+\s;\c; string s = "45"+"12"; // s contains "4512"
+\s; float n = 45 + 12; // n contains 67
+\n;
+Syntax¦:
+\s;\c;strval ( string );\n;
+\n;
+Examples¦:
+\s;\c; float n = strval("1.23"); // n is 1.23
+\s; float n = strval("12abc45"); // n is 12
+\s; float n = strval("abc"); // n is 0
+\s; float n = strval("100")+2; // n is 102
+\n;
+\t;See also
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/synchro.txt b/help/D/cbot/synchro.txt
new file mode 100644
index 00000000..8817c38a
--- /dev/null
+++ b/help/D/cbot/synchro.txt
@@ -0,0 +1,25 @@
+\b;Instruction \c;synchronized\n; (for specialists)
+A \l;class\u cbot\class; method can be declared \c;synchronized\n;. This is to make sure that the method is never being executed by more than one bot at the same time.
+
+The following example illustrates the problem:
+\c;
+\s;class blocking
+\s;{
+\s; static int nb = 33;
+\s; synchronized int inc( )
+\s; {
+\s; int val = nb;
+\s; wait ( 2 ); // wait 2 sec.
+\s; nb = nb + 1;
+\s; return val;
+\s; }
+\s;}
+\n;
+What happens if two bots execute the \c;inc\n; method at the same time¦?
+Both of them will execute \c;val=nb\n; and wait 2 seconds so both of them will have \c;val=33\n;. With \c;synchronized\n; the first bot starts execution with \c;val=33\n; and then waits 2 seconds and returns. Only once the first bot has returned from the \c;inc\n; method, the second bot will be allowed to enter the \c;inc\n; method and therefore the second bot will always have \c;val=34\n;.
+
+You can have more than one synchronized method in your \l;class\u cbot\class; in order to prevent simultaneous execution across more than one method. In other words: as long as a bot's program is inside a synchronized method, no other bot can enter any synchronized method of the same class.
+
+\t;See also
+\c;\l;class\u cbot\class;\n;, \c;\l;static\u cbot\static;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/term.txt b/help/D/cbot/term.txt
new file mode 100644
index 00000000..c53d552d
--- /dev/null
+++ b/help/D/cbot/term.txt
@@ -0,0 +1,31 @@
+\b;Semicolon
+Always use a semicolon \c;;\n; after a simple expression. For example:
+\c;
+\s; int counter = 0;
+\n;
+However, after a \l;bloc\u cbot\bloc;, never put a semicolon:
+\c;
+\s; {
+\s; float dist;
+\s; dist = distance(p1, p2);
+\s; } \n;// no semicolon here!\c;
+\n;
+Do not use a semicolon either immediately after the instructions \c;\l;while\u cbot\while;\n;, \c;\l;if\u cbot\if;\n; or \c;\l;for\u cbot\for;\n;:
+\c;
+\s; if ( a < b ) \n;// no semicolon here!\c;
+\s; {
+\s; b = 100-a;
+\s; }
+\n;
+An instruction is always ended by a semicolon, and not by the end of the line. So you can very well put several instructions on the same line:
+\c;
+\s; int d=20;
+\s; move(d);
+\s; turn(90);
+\n;
+Is equivalent to:
+\c;
+\s; int d=20; move(d); turn(90);
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/testinfo.txt b/help/D/cbot/testinfo.txt
new file mode 100644
index 00000000..634063af
--- /dev/null
+++ b/help/D/cbot/testinfo.txt
@@ -0,0 +1,18 @@
+\b;Instruction \c;testinfo\n;
+Syntax¦:
+\s;\c;testinfo ( name, power );\n;
+
+Tests if an information exists in the closest \l;information exchange post\u object\exchange;.
+
+\t;name: \c;string\n;
+Name of the information to be tested in the exchange post. This name is a string: it must be written in quotation marks "¦".
+
+\t;power: \c;float\n;
+Power of the transmitter, which corresponds to the maximal distance between the transmitter and the exchange post. If the distance is longer, the function returns \c;false\n;. Default value is 10 metres.
+
+\t;Return: \c;\l;bool\u cbot\bool;\n;
+Return \c;true\n; if the information exists. Return and \c;false\n; if the information does not exist or if the receiver is too far away from the exchange post.
+
+\t;See also
+\c;\l;receive\u cbot\receive;\n;, \c;\l;send\u cbot\send;\n; and \c;\l;deleteinfo\u cbot\delinfo;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/this.txt b/help/D/cbot/this.txt
new file mode 100644
index 00000000..81516bc3
--- /dev/null
+++ b/help/D/cbot/this.txt
@@ -0,0 +1,54 @@
+\b;Instruction \c;this\n;
+Occasionally, a \l;class\u cbot\class; method needs to know the reference to the instance it is acting upon. For example the instance might want to pass it's own reference to another function. An implicit reference name \c;this\n; is available to methods and \c;this\n; is a reference to the current instance.
+\c;
+\s;public class MyClass
+\s;{
+\s; int m_int;
+\s; string m_str;
+\s; void MyFunction()
+\s; {
+\s; OtherFunction(this);
+\s; m_int = 2;
+\s; }
+\s;}
+\s;
+\s;void OtherFunction(MyClass obj)
+\s;{
+\s; message(obj.m_str);
+\s;}
+\s;
+\s;extern void object::Test()
+\s;{
+\s; MyClass item();
+\s; item.m_str = "Hello";
+\s; item.MyFunction(); // display "Hello"
+\s;}
+\n;
+You can also put \c;this\n; before a field name in a method but this is not necessary. In the example above in the method \c;MyFunction()\n; following two lines have strictly the same meaning:
+\c;
+\s; m_int = 2;
+\s; this.m_int = 2; // identical
+\n;
+In a method of the \c;\l;object\u cbot\object;\n; class, you can also use \c;this.\n; before a fieldname.
+\c;
+\s;extern void object::Display()
+\s;{
+\s; message(orientation);
+\s; message(this.orientation); // same thing but
+\s; // more explicit
+\s;}
+\n;
+However if a field name is hidden by a parameter declaration or a variable declaration you must use \c;this\n;. In the following example the name \c;value\n; of the parameter is the same as the name of the field \c;value\n; of the \l;class\u cbot\class; \c;MyClass\n;, we must therefore write \c;this.value\n; in order to distinguish the field from the parameter.
+\c;
+\s;public class MyClass
+\s;{
+\s; int value;
+\s; void Put( int value )
+\s; {
+\s; this.value = value;
+\s; }
+\s;}
+\n;
+\t;See also
+\c;\l;class\u cbot\class;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; et \l;catégories\u cbot\category;.
diff --git a/help/D/cbot/thump.txt b/help/D/cbot/thump.txt
new file mode 100644
index 00000000..8ce7f161
--- /dev/null
+++ b/help/D/cbot/thump.txt
@@ -0,0 +1,13 @@
+\b;Instruction \c;thump\n;
+Syntax:
+\s;\c;thump ( );\n;
+
+Activates the weapon system of the \l;thumper\u object\bottump;, that turns ants and spiders belly up and makes them completely harmless for a while.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Zero if everything is OK, a value different from zero if an error occurred.
+\c;== 0 \n;Thumping performed
+\c;!= 0 \n;Operation impossible
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/topo.txt b/help/D/cbot/topo.txt
new file mode 100644
index 00000000..e8fef09a
--- /dev/null
+++ b/help/D/cbot/topo.txt
@@ -0,0 +1,14 @@
+\b;Instruction \c;topo\n;
+Syntax:
+\s;\c;topo ( position );\n;
+
+Returns the altitude of the ground at a give position. The altitude zero corresponds to sea level. A negative value indicates that at this position ground is covered with water.
+
+\t;position: \c;\l;point\u cbot\point;\n;
+Coordinates of the position whose altitude you want to know.
+
+\t;Return value: \c;\l;float\u cbot\float;\n;
+Altitude of the ground at the given position.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/true.txt b/help/D/cbot/true.txt
new file mode 100644
index 00000000..2d29fa1d
--- /dev/null
+++ b/help/D/cbot/true.txt
@@ -0,0 +1,5 @@
+\b;Type \c;true\n;
+This value means that a condition is true; it is one of the two values that a \l;boolean\u cbot\bool; \l;variable\u cbot\var; can take.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/turn.txt b/help/D/cbot/turn.txt
new file mode 100644
index 00000000..a163dcb5
--- /dev/null
+++ b/help/D/cbot/turn.txt
@@ -0,0 +1,33 @@
+\b;Instruction \c;turn\n;
+Use the instruction \c;turn();\n; to instruct the bot to perform a rotation on itself of a certain number of degrees.
+
+\b;Basic use
+90 degreed means a quarter turn, 180 degrees means a half turn. A positive angle will perform a counterclockwise rotation, a negative angle means a clockwise rotation. Here are some examples with \c;turn();\n;:
+
+\c;turn(90);\n; quarter turn to the left
+\c;turn(-90);\n; quarter turn to the right (negative angle)
+\c;turn(180);\n; half turn
+
+In order to turn the bot towards an object found with the instruction \c;\l;radar\u cbot\radar;();\n;, you must calculate the rotation angle with the instruction \c;\l;direction\u cbot\direct;()\n;:
+\c;
+\s; item = \l;radar\u cbot\radar;(AlienSpider);
+\s; turn(\l;direction\u cbot\direct;(item.position));
+\n;
+After these lines, just fire the cannon, and there is one hostile element less.
+
+\b;For specialists
+Syntax:
+\s;\c;turn ( angle );\n;
+
+Turns the bot with a given angle, right or left, without moving either forward or backward.
+
+\t;angle: \c;\l;float\u cbot\float;\n;
+Angle of the required rotation, in degrees. A positive value turns left, a negative value turns right. \c;turn(180)\n; turns round completely.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Zero if everything is OK, or a value different from zero if an error occurred.
+\c;== 0 \n;rotation performed
+\c;!= 0 \n;rotation impossible
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/type.txt b/help/D/cbot/type.txt
new file mode 100644
index 00000000..16662081
--- /dev/null
+++ b/help/D/cbot/type.txt
@@ -0,0 +1,33 @@
+\b;Variable types
+When you define a \l;variable\u cbot\var;, you must give two elements:
+
+1) a name
+2) a type
+
+Once you defined a variable, you can use it to put information in it. However, the information that a variable can contain must always be of the correct type: a variable of type \l;float\u cbot\float; can not contain a string, etc.
+
+In a program, the name of a type is always written on \type;green background\norm;. If the name of a type is not colored, this means that the name is misspelled. Type names are always written with lower case characters. Here is a list of the different types:
+
+\s;\c;\l;int\u cbot\int;\n;
+For a whole number (12, -500, etc.).
+
+\s;\c;\l;float\u cbot\float;\n;
+For a real number (12, 3.14, 0.2, -99.98, etc.).
+
+\s;\c;\l;bool\u cbot\bool;\n;
+For a boolean variable, that can only take the values \c;true\n; or \c;false\n;.
+
+\s;\c;\l;string\u cbot\string;\n;
+For texts ("Hello!", "No object found", etc.)
+
+\s;\c;\l;point\u cbot\point;\n;
+For the coordinates of a point in space; a variable of this type consists of three parts named x, y and z.
+
+\s;\c;\l;object\u cbot\object;\n;
+A variable of this type contains the information about an object (bot, building, enemy, etc.).
+
+\s;\c;\l;void\u cbot\void;\n;
+This type is an "empty type", that you use when you do not want to specify a type.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/var.txt b/help/D/cbot/var.txt
new file mode 100644
index 00000000..8c8f95be
--- /dev/null
+++ b/help/D/cbot/var.txt
@@ -0,0 +1,67 @@
+\b;Variables
+A variable is like a box, where you can put some information. The content of the variable can change during the execution of the program.
+
+For example, you can use a variable to count the number of titanium ore units that the grabber has collected and carried to the converter. First, you must find a name for it: the name should not be too long, but explain by itself what the variable is used for. Let's call it \c;countTit\n;. This variable must contain only whole numbers, so choose the type \c;int\n;. At the beginning of the program, you must declare the variable. Then you put the value \c;0\n; into the variable, and every time you grab a titanium ore, you increase the variable by \c;1\n;. At every moment, the variable contains the number of titanium ore units that the grabber collected.
+
+For the declaration of the variable, write the following line:
+\c;\s; int countTit;\n;
+
+To put \c;0\n; into the variable, write:
+\c;\s; countTit = 0;\n;
+
+At every titanium ore grabbed, write:
+\c;\s; countTit = countTit + 1\n;
+
+You have much freedom in the choice of the name for a variable, you can call them by any name, f. ex.: \c;dist\n;, \c;direct\n;, \c;p2\n;, \c;a\n;, \c;x\n;, \c;nothing_2_shoot_at\n;, etc.
+A variable name must always begin with a letter. It can be followed by any combination of letters, digits or the underscore character \c;_\n;. You can of course not use the keywords of the CBOT language like \c;\l;for\u cbot\for;\n;, \c;\l;while\u cbot\while;\n;, \c;\l;break\u cbot\break;\n;, \c;\l;continue\u cbot\continue;\n;, \c;do\n;, etc.
+You should be careful about the choice of the names that you give to variables; writing a program can become very difficult if you forget the names of variables or if you do not remember what they are used for. Elaborate your own system to find variable names, and do not use names like \c;Bmo45\n;, \c;a\n; or \c;tgBinX\n;.
+
+In the example above, the keyword \c;int\n; indicates that this variable can contain only whole numbers, which is adequate to counting objects. If you want to measure a distance, better use a variable that can contain also real numbers, with a fractional part (like 3.45 or 0.034): in this case, use the type \c;float\n;.
+
+In fact, a variable is made up of three parts:
+1) the name
+2) the type of the information stored inside
+3) the content, i.e. the information itself
+
+\t;the name
+You need the name to be able to distinguish the different variables from each other.
+
+\t;the type
+The \l;type\u cbot\type; determines what kind of information the variable can contain. According to the type, a variable can contain a whole number, a real number, a string, the coordinates of a point, information about an object, etc.
+Here is a list of the most common variable types:
+ o \c;\l;int\u cbot\int;\n; for a whole number (12, -500, etc.)
+ o \c;\l;float\u cbot\float;\n; for a real number (3.14, 0.2, -99.98, etc.)
+ o \c;\l;string\u cbot\string;\n; for a character string ("Hello!", "No object found", etc.)
+ o \c;\l;point\u cbot\point;\n; for a x,y,z-coordinate in space
+ o \c;\l;object\u cbot\object;\n; for information about an object (bot, building, etc.)
+
+\t;The content
+The content of a variable is an information of the kind specified in the type. It can change during the execution of the program.
+
+Once you declared a variable, it still does not contain any value. Before you can use it, you must put a value inside:
+\c;\s; int i, j;
+\s; j = 25; // j takes the value 25
+\s; j = i; // can not write this, because i has got no content yet.
+\n;
+You can also declare a variable and put a value inside in the same line, writing:
+\c;\s; int countTit = 0;
+\n;
+When you assign a value to a variable with the equals sign \c;=\n;, the value on the right side is copied into the value on the left side. Consider the following example:
+\c;\s; int i, j;
+\s; i = 5+2; // i takes the value 7
+\s; j = i+6; // j takes the value of i plus 6, this is 13
+\s; i = j; // i takes the value of j, this is 13
+\n;
+At the end of this example, both variables \c;i\n; and \c;j\n; contain the value \c;13\n;.
+
+The following assignment is not correct, because on the left side of the equals sign \c;=\n;, there can be only a variable name:
+\c;\s; i+2 = j; // impossible
+\n;
+If you want to exchange the values of two variables, you must use a third variable. Here is an example to exchange the content of two variables \c;a\n; and \c;b\n; :
+\c;\s; int temp;
+\s; temp = a; // temp takes the value of a
+\s; a = b; // the content of b is copied into a
+\s; b = temp; // the content of temp is copied into b
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/void.txt b/help/D/cbot/void.txt
new file mode 100644
index 00000000..11509d2b
--- /dev/null
+++ b/help/D/cbot/void.txt
@@ -0,0 +1,11 @@
+\b;Type \c;void\n;
+Use this type when you want to declare a function that returns nothing.
+
+Example:
+\c;\s;void MyFunction(int a)
+\s;{
+\s; ...
+\s;}
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/wait.txt b/help/D/cbot/wait.txt
new file mode 100644
index 00000000..88e6ed64
--- /dev/null
+++ b/help/D/cbot/wait.txt
@@ -0,0 +1,22 @@
+\b;Instruction \c;wait\n;
+The instruction \c;wait();\n; instructs the bot to wait for some seconds, according to the value written in brackets.
+
+\b;Basic use
+In order to wait until the \l;power cell\u object\power; is recharged on a power station, wait 5 seconds with \c;wait(5);\n;.
+
+In order to wait until the \l;converter\u object\convert; finished transforming some \l;titanium ore\u object\titanore; in a \l;titanium cube\u object\titan;, wait 15 seconds with \c;wait(15);\n;.
+
+\b;For specialists
+Syntax:
+\s;\c;wait ( time );\n;
+
+Waits for a moment.
+
+\t;time: \c;\l;float\u cbot\float;\n;
+Specifies the time that the bot must wait.
+
+\t;Return value: \c;\l;void\u cbot\void;\n;
+None.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/while.txt b/help/D/cbot/while.txt
new file mode 100644
index 00000000..5e793c88
--- /dev/null
+++ b/help/D/cbot/while.txt
@@ -0,0 +1,47 @@
+\b;Instruction \c;while\n;
+The instruction \c;while () {}\n; is used to repeat a set of instructions several times.
+
+\b;Basic use
+The most frequent use of \c;while\n; consists in repeating a set of instructions again and again. In order to achieve this, write \c;while (true) {}\n; and put the instructions to be repeated in braces \c;{}\n;. As an example, here is a program that repeats again and again the following actions:
+o look for a spider,
+o turn towards it,
+o shoot.
+\c;
+\s; while (true)
+\s; {
+\s; item = \l;radar\u cbot\radar;(AlienSpider);
+\s; \l;turn\u cbot\turn;(direction(item.position));
+\s; \l;fire\u cbot\fire;(1);
+\s; }
+\n;
+Just execute this program once, and it will kill all spiders around it.
+
+\b;For specialists
+Syntax :
+\s;\c;while ( condition )
+\s;{
+\s; \n;Instructions ...\c;
+\s;}
+\n;
+This instruction allows you to perform the instructions inside the \l;block\u cbot\bloc; several times.
+
+Be careful not to confuse the instruction \c;while( ) { }\n; with the instruction \c;\l;do\u cbot\do; { } while( );\n;; the latter tests the condition only after the instructions in the block have been performed a first time.
+
+\t;\c;condition\n;
+The instructions in the block are performed over and over again, as long as the \l;condition\u cbot\cond; is true.
+
+Here is an example :
+\s;\c;int i = 0;
+\s;while ( i < 10 )
+\s;{
+\s; \n;Instructions ...\c;
+\s; i = i+1;
+\s;}
+\n;
+\t;Attention
+Do not put a \l;semicolon\u cbot\term; at the end of the line \c;while ( )\n;.
+
+The instructions \c;\l;break\u cbot\break;\n; and \c;\l;continue\u cbot\continue;\n; can be useful inside a block following the instruction \c;while { }\n;.
+
+\t;See also
+\l;Instructions\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/cbot/writeln.txt b/help/D/cbot/writeln.txt
new file mode 100644
index 00000000..260f4507
--- /dev/null
+++ b/help/D/cbot/writeln.txt
@@ -0,0 +1,21 @@
+\b;Instruction \c;writeln\n;
+Write one line of text to an open file in the files/ folder. This is a method of the \c;\l;file\u cbot\file;\n; class. This is the reason why we always write \c;handle.writeln()\n;¦:
+\c;
+\s; handle.writeln("abc");
+\n;
+The file must have been opened for writing (\c;"w"\n;) with the \c;\l;open\u cbot\open;\n; instruction. The line will automatically be terminated by the end of line characters 0x0D (CR) and 0x0A (LF).
+
+Syntax¦:
+\s;\c;handle.writeln ( string );\n;
+
+Examples¦:
+\c;
+\s; writeln("Line of text");
+
+\s; string s1 = "abc";
+\s; string s2 = "def";
+\s; writeln(s1 + " " + s2);
+\n;
+\t;See also
+\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n; and \c;\l;eof\u cbot\eof;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/command.txt b/help/D/command.txt
new file mode 100644
index 00000000..43126082
--- /dev/null
+++ b/help/D/command.txt
@@ -0,0 +1,45 @@
+\b;Controls
+You are advised to play with one hand on the arrow keys and the other hand on the mouse.
+
+\t;Bots
+\key;\key left;\norm; = turn left
+\key;\key right;\norm; = turn right
+\key;\key up;\norm; = move forward
+\key;\key down;\norm; = move back
+These controls are unavailable when working with the \l;practice bots\u object\bottr;.
+
+\key;\key gup;\norm; = take off and climb \button 28;
+\key;\key gdown;\norm; = descend and land \button 29;
+These controls are of course restricted to the \l;astronaut\u object\human; as well as the various \l;winged bots\u object\botgj; and in selected missions only.
+
+mouse forward = higher aim
+mouse backward = lower aim
+mouse right = aim right
+mouse left = aim left
+These controls are only available to the \l;shooters\u object\botfr;, the \l;orga shooters\u object\botor; and the \l;phazer shooter\u object\botphaz;.
+
+\key;\key action;\norm; = main action for a given selection (human or bot)
+This control will for example operate the arm of a \l;grabber\u object\botgr; or fire a \l;shooter\u object\botfr; \button 42;.
+
+\t;Selections
+\key;\key next;\norm; = selects next object
+\key;\key human;\norm; = selects astronaut
+\key;\key desel;\norm; = previous selection \button 10;
+
+\t;Camera
+\key;\key camera;\norm; = shifts between onboard and following cameras \button 13;
+\key;\key near;\norm; = zoom in
+\key;\key away;\norm; = zoom out
+\key;\key visit;\norm; = pauses the game and shows where the latest message originated. Press again to show origin of previous message.
+
+\t;Help
+\key;\key help;\norm; = mission instructions
+\key;\key prog;\norm; = programming help
+
+\t;Game
+\key;\key speed10;\norm; = normal speed x1
+\key;\key speed15;\norm; = medium speed x1.5
+\key;\key speed20;\norm; = faster speed x2
+\key;\key quit;\norm; = exits mission \button 11;
+
+All these commands can be redefined in the options/controls menu.
diff --git a/help/D/dexch1.txt b/help/D/dexch1.txt
new file mode 100644
index 00000000..cf330c6a
--- /dev/null
+++ b/help/D/dexch1.txt
@@ -0,0 +1,19 @@
+\b;Exercice
+Several \l;information exchange posts\u object\exchange; are standing along the way. When the bot is close enough to a post, it can read the instructions it contains. The \l;information exchange posts\u object\exchange; along the way contain the direction of the next post and the distance. And you do not know how many exchange posts you must get in touch with before arriving at your goal.
+
+\b;General principle
+ Always repeat:
+ o Retrieve the direction from the \l;exchange post\u object\exchange;.
+ o Retrieve the distance from the \l;exchange post\u object\exchange;.
+ o If no information could be retrieved, stop the program.
+ o Execute the rotation.
+ o Move forward to the next post.
+
+\b;Useful instructions
+\c;\l;while\u cbot\while;\n; to repeat the instructions
+\c;\l;receive\u cbot\receive;\n; to get the information from a post
+\c;\l;move\u cbot\move;\n; to move the bot
+\c;\l;turn\u cbot\turn;\n; to turn the bot
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/dfollow1.txt b/help/D/dfollow1.txt
new file mode 100644
index 00000000..2be46365
--- /dev/null
+++ b/help/D/dfollow1.txt
@@ -0,0 +1,20 @@
+\b;Exercise
+You must follow the \l;target bot\u object\bottr; with the explosive device, but without touching it, otherwise it will blow up. Every time the target bot stops, you must be close to it (less than 10m). After you managed to stay close to the target bot at 10 successive stops, it will lead you to the finishing pad, and the exercise is over. At every stop, the target bot checks that you are there. If you are not there, you must start over again.
+
+\b;General principle
+Repeat forever:
+o Look for the target bot.
+o Calculate the distance to the bot.
+o if the distance to the target bot is less than 5m, move backward.
+o Otherwise, calculate the direction of the target bot, and move towards it.
+
+\b;Useful instructions
+\c;\l;radar\u cbot\radar;\n; to look for the bot (category \c;\l;TargetBot\u object\bottarg;\n;)
+\c;\l;radar\u cbot\radar;\n; to detect obstacles
+\c;\l;distance\u cbot\dist;\n; to calculate a distance
+\c;\l;direction\u cbot\direct;\n; to calculate a direction
+\c;\l;if\u cbot\if;\n; to test a condition
+\c;\l;motor\u cbot\motor;\n; to set the motor speeds
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/dfor.txt b/help/D/dfor.txt
new file mode 100644
index 00000000..116be043
--- /dev/null
+++ b/help/D/dfor.txt
@@ -0,0 +1,11 @@
+\b;Exercise
+Destroy all four \l;targets\u object\bottarg; with a program using a \c;for\n; loop. You must move 10m to get from one target to another.
+
+\b;Useful instructions
+\c;\l;for\u cbot\for;\n; loop to repeat the instructions
+\c;\l;move\u cbot\move;\n; to move the bot
+\c;\l;turn\u cbot\turn;\n; to turn the bot
+\c;\l;fire\u cbot\fire;\n; to fire the cannon
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/dhelp1.txt b/help/D/dhelp1.txt
new file mode 100644
index 00000000..718907d0
--- /dev/null
+++ b/help/D/dhelp1.txt
@@ -0,0 +1,15 @@
+\b;Exercise
+Defend against all enemy attacks
+
+\b;General idea
+The range of your cannon is about 40m. The category of the enemies is \c;AlienAnt\n;. Turn towards the closest ant, even if it is still more than 40m away. But shoot only when it is closer than 40m, in order not to waste your energy.
+
+\b;Useful instructions
+\c;\l;radar\u cbot\radar;\n; to detect your enemies (category \c;\l;AlienAnt\u object\ant;\n;)
+\c;\l;direction\u cbot\direct;\n; to calculate a direction
+\c;\l;distance\u cbot\dist;\n; to calculate a distance
+\c;\l;fire\u cbot\fire;\n; to fire your cannon
+\c;\l;wait\u cbot\wait;\n; to wait
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/dlaby1.txt b/help/D/dlaby1.txt
new file mode 100644
index 00000000..75e3e368
--- /dev/null
+++ b/help/D/dlaby1.txt
@@ -0,0 +1,11 @@
+\b;Exercise
+Program the bot so that it will find its way without hitting the walls of the labyrinth. We suppose that you do not know the configuration of the labyrinth, but there are no bifurcations, and no dead-ends. The labyrinth is made of squares measuring 5m each.
+
+\b;Useful instructions
+\c;\l;radar\u cbot\radar;\n; to detect obstacles
+\c;\l;if\u cbot\if;\n; to test a condition
+\c;\l;move\u cbot\move;\n; to move the bot
+\c;\l;turn\u cbot\turn;\n; to turn the bot
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/dmove1.txt b/help/D/dmove1.txt
new file mode 100644
index 00000000..1f207bd0
--- /dev/null
+++ b/help/D/dmove1.txt
@@ -0,0 +1,10 @@
+\b;Exercise
+Program the robot in such a way that it arrives on the finishing pad, after having passed by the three blue crosses.
+The platforms and the crosses are all distant of 20m from each other.
+
+\b;Useful instructions
+\c;\l;move\u cbot\move;\n; to move the bot
+\c;\l;turn\u cbot\turn;\n; to turn the bot
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/dproc1.txt b/help/D/dproc1.txt
new file mode 100644
index 00000000..e1cda96b
--- /dev/null
+++ b/help/D/dproc1.txt
@@ -0,0 +1,21 @@
+\b;Exercice
+\b;Exercise
+The \l;bot\u object\bottr; must pass over all the \l;blue crosses\u object\waypoint; on the ground. The way that must be covered is made of two squares. The first one measures 15 meters, the second 25 meters.
+
+\image tproc1a 8 8;
+\b;General principle
+In order to solve this problem, the most efficient solution consists in creating a \l;function\u cbot\function; that instructs the bot to move on a square shape of a certain size. The main program becomes then very simple:\c;
+\c;
+\s; extern void object::Function3( )
+\s; {
+\s; Square(15);
+\s; Square(25);
+\s; }
+\n;
+\b;Useful instructions
+\c;\l;for\u cbot\for;\n; loop to repeat some instructions
+\c;\l;move\u cbot\move;\n; to move the bot
+\c;\l;turn\u cbot\turn;\n; to turn the bot
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/dproc2.txt b/help/D/dproc2.txt
new file mode 100644
index 00000000..6424eb36
--- /dev/null
+++ b/help/D/dproc2.txt
@@ -0,0 +1,14 @@
+\b;Exercise
+Follow the way in form of a spiral. The bot must move 2 times 25m forward and turn, then move 2 times 20m forward and turn, and so on.
+\image tproc2 8 8;
+
+\b;Function
+You will have noticed that the way is made of "L"-shaped parts that are fit one into another. The first one (dark blue) measures two times 25 meters. The second one (light blue) measures 5 meters less. Let us start with writing the \l;function\u cbot\function; that will move the bot on a "L"-shaped part whose length will be given as a parameter.
+
+\b;Useful instructions
+\c;\l;for\u cbot\for;\n; loop to repeat some instructions
+\c;\l;move\u cbot\move;\n; to move the bot
+\c;\l;turn\u cbot\turn;\n; to turn the bot
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/dradar1.txt b/help/D/dradar1.txt
new file mode 100644
index 00000000..2b97def6
--- /dev/null
+++ b/help/D/dradar1.txt
@@ -0,0 +1,14 @@
+\b;Exercise
+In this exercise, a "crazy bot" places many \l;blue crosses\u object\waypoint; on the ground. Just try to find them all.
+
+\b;Useful instructions
+\c;\l;radar\u cbot\radar;\n; to detect the blue crosses (category \c;\l;WayPoint\u object\waypoint;\n;)
+\c;\l;direction\u cbot\direct;\n; to calculate a direction
+\c;\l;if\u cbot\if;\n; to test a condition
+\c;\l;motor\u cbot\motor;\n; to set the motor speeds
+
+\t;Remark
+Do not wait too long, because the crazy bot gets down to work immediately. Fortunately, as long as you are in the program editor, the game will pause.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/dremova1.txt b/help/D/dremova1.txt
new file mode 100644
index 00000000..d3175a1d
--- /dev/null
+++ b/help/D/dremova1.txt
@@ -0,0 +1,35 @@
+\b;Exercise
+Convert some \l;titanium ore\u object\titanore; to \l;titanium cubes\u object\titan;, then drop 2 titanium cubes on the pads whose coordinates are:
+\c;
+ x=10, y=-60
+ x=10, y=-65
+\n;
+\image derrick 8 8;
+The \l;derrick\u object\derrick; extracts titanium ore from the subsoil; you just have to pick it up.
+
+\image convert 8 8;
+The \l;converter\u object\convert; converts titanium ore to titanium cubes. Just drop the titanium ore on the platform, move backward, and wait until it has been converted.
+
+\b;General principle
+Repeat two times :
+o Wait until there is some titanium ore.
+o Go to the titanium ore.
+o Pick it up.
+o Go to the converter.
+o Drop the titanium ore.
+o Move back 2.5 meters.
+o Wait until there is a titanium cube.
+o Pick up the titanium cube.
+o Go to the platform.
+o Drop the titanium cube.
+
+\b;Useful instructions
+\c;\l;for\u cbot\for;\n; to repeat some instructions
+\c;\l;do - while\u cbot\do;\n; to repeat some instructions
+\c;\l;radar\u cbot\radar;\n; to look for different objects
+\c;\l;goto\u cbot\goto;\n; to move the bot
+\c;\l;grab\u cbot\grab;\n; to grab an object
+\c;\l;drop\u cbot\drop;\n; to drop an object
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/dremova2.txt b/help/D/dremova2.txt
new file mode 100644
index 00000000..ec6549c7
--- /dev/null
+++ b/help/D/dremova2.txt
@@ -0,0 +1,11 @@
+\b;Exercise
+Move the \l;titanium cube\u object\titan; on the finishing pad. You do not know the position of the titanium, but we can tell you the position of the finishing pad x=10 and y=-60.
+
+\b;Useful instructions
+\c;\l;radar\u cbot\radar;\n; to find the titanium cube (category \c;\l;Titanium\u object\titan;\n;)
+\c;\l;goto\u cbot\goto;\n; to move the bot
+\c;\l;grab\u cbot\grab;\n; to grab an object
+\c;\l;drop\u cbot\drop;\n; to drop an object
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/dtrap1.txt b/help/D/dtrap1.txt
new file mode 100644
index 00000000..8cf7bd08
--- /dev/null
+++ b/help/D/dtrap1.txt
@@ -0,0 +1,26 @@
+\b;Exercise
+Instruct the bot to find all the \l;blue crosses\u object\waypoint; on the ground, but do not get too close to the \l;mines\u object\mine;. When the bot passes over a cross, it disappears. Here is the general principle:
+
+ Repeat forever:
+ o Look for a mine
+ o If a mine has been found, calculate the opposite direction
+ o Look for a cross
+ o If nothing has been found, stop the program
+ o Calculate the direction of the cross
+ o Calculate the mean value of the two directions
+ o Set the motor speeds in order to head towards the mean direction
+
+\b;The instruction \c;radar\n;
+In order to detect a mine with the \c;\l;radar\u cbot\radar;\n;, we recommend the following parameters:
+\c;\s; radar(Mine, 0, 180, 0, 5);\n;
+With the opening angle of 180 degrees, mines that are behind the bot will not be found. Mines that are at more than 5 meters are also ignored.
+
+In order to find a blue cross, simply write:
+\c;\s; radar(WayPoint);\n;
+Blue crosses will be found everywhere.
+
+In order to calculate a direction, use \c;\l;direction\u cbot\direct;\n;.
+In order to set the motor speeds, use \c;\l;motor\u cbot\motor;\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/dtrap2.txt b/help/D/dtrap2.txt
new file mode 100644
index 00000000..85acba71
--- /dev/null
+++ b/help/D/dtrap2.txt
@@ -0,0 +1,7 @@
+\b;Exercise
+Instruct your \l;bot\u object\bottr; to find all the \l;blue crosses\u object\waypoint; on the ground, but do not get too close to the \l;mines\u object\mine;.
+
+If a bot gets within less than 2m of the center of a mine (which is the position returned by the radar instruction), il will blow up. However, you must take into account the inertia of the bot. Probably a safety distance of 3 to 3.5m would be more appropriate.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/fglobal.txt b/help/D/fglobal.txt
new file mode 100644
index 00000000..f7c4caf2
--- /dev/null
+++ b/help/D/fglobal.txt
@@ -0,0 +1,5 @@
+\b;Objective
+Here you can play around without any definite objective. You can do whatever you want, explore the region, build a base camp and several bots, run various research programs, kill the insects if you find some, etc.
+
+\t;See also
+\l;Controls\u command;.
diff --git a/help/D/licences.txt b/help/D/licences.txt
new file mode 100644
index 00000000..f892ed07
--- /dev/null
+++ b/help/D/licences.txt
@@ -0,0 +1,3 @@
+The photograph of the nebula NGC3606 illuminating the sky on Orpheon and the installation program was taken with the Hubble space telescope. It is used with the permission of the authors Wolfgang Brandner (JPL/IPAC), Eva K. Grebel (Washington University), You-Hua Chu (Illinois Urbana-Champaign University) and NASA.
+
+The thunder sound on Orpheon is used by limited permission from CREATIVE.
diff --git a/help/D/mhcent1.txt b/help/D/mhcent1.txt
new file mode 100644
index 00000000..0bdecf07
--- /dev/null
+++ b/help/D/mhcent1.txt
@@ -0,0 +1,11 @@
+\b;From Mission Control
+Find some more \l;organic matter\u object\bullet; and, given an appropriate research program performed by your \l;autolab\u object\labo;, \l;you\u object\human; should be able to manufacture orga shooters yourself.
+
+Produce a \l;legged orga shooter\u object\botos; and bring it back aboard your \l;spaceship\u object\base;.
+
+Please keep in mind that low energy resources are a major concern on this planet.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhcent2.txt b/help/D/mhcent2.txt
new file mode 100644
index 00000000..99de1d4f
--- /dev/null
+++ b/help/D/mhcent2.txt
@@ -0,0 +1,7 @@
+\b;From Mission Control
+It is time for \l;you\u object\human; to improve your shooting skills again. In the following drill, hit all the \l;explosive devices\u object\tnt; but watch out: your \l;orga shooter\u object\botoj; has very little power left in it, barely enough to complete the drill.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhcent3.txt b/help/D/mhcent3.txt
new file mode 100644
index 00000000..48067c8f
--- /dev/null
+++ b/help/D/mhcent3.txt
@@ -0,0 +1,9 @@
+\b;From Mission Control
+Build a \l;radar\u object\radar; on one of the highest accessible spots and make sure that no organism can destroy it after \l;you\u object\human;'re gone.
+
+The destruction of a previous radar set up by the first expedition was probably the cause of a communication breakdown, which led to complete loss of contact.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhcent4.txt b/help/D/mhcent4.txt
new file mode 100644
index 00000000..72284c2a
--- /dev/null
+++ b/help/D/mhcent4.txt
@@ -0,0 +1,19 @@
+\b;A Word on New Policies
+We are sorry to have to bring this to your attention but this seems like a good a time to let you in on a little concern we're having at the moment. There has been a strong reaction in the public opinion and in Congress concerning your systematic termination of the "indigenous inhabitants" of the planets you've been visiting. Congress has chosen to demonstrate its sensitivity to the concerns of the general population.
+
+We hereby relay their new directives and these directives intimate for you to limit the casualties as much as humanly possible. In other words, do your very best to spare the life-forms you encounter from now on. Your mission should of course in no way find itself jeopardized by this new course of action.
+
+\b;From Mission Control
+Your energy resources appear dangerously limited at this time and so is your arsenal but you need to locate and retrieve the previous expedition's \l;black box\u object\bbox; so you can proceed to the next planet.
+
+We received a piece of information from your predecessors, via the observation satellite, regarding a new type of weaponry they have developed precisely for a predicament such as this one.
+
+This weapon will offer you an opportunity to demonstrate your newfound compassion towards \l;indigenous species\u object\ant; for it is not a weapon of mass destruction. What it offers instead, to the best of our knowledge, is an option to incapacitate them, rendering them, if only temporarily, harmless. If this is indeed the case, you'll need to act quickly before they are given a chance to become hostile to you again.
+
+\b;Procedure
+Perform the \l;research program\u object\research; and experiment for yourself but don't forget to bring this new weapon back on board. We are very curious to study its workings.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhcent5.txt b/help/D/mhcent5.txt
new file mode 100644
index 00000000..c4c0e0a1
--- /dev/null
+++ b/help/D/mhcent5.txt
@@ -0,0 +1,9 @@
+\b;From Mission Control
+You're under attack and this is no time for compassion...
+
+Your new \l;thumper\u object\bottump; might come in very handy. However, we emphasize that you should not risk a takeoff if there are any ants still alive in the vicinity of the spaceship.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhcrys1.txt b/help/D/mhcrys1.txt
new file mode 100644
index 00000000..6b4c840b
--- /dev/null
+++ b/help/D/mhcrys1.txt
@@ -0,0 +1,13 @@
+\b;From Mission Control
+Build a \l;radar\u object\radar; on the highest point in the area. Make sure that the radar will work safely even after your departure to other planets. Your \l;research center\u object\research; should be able to provide a solution.
+
+It is possible that the organisms detected are in fact the \l;worms\u object\worm; alluded to by the first expedition. If this is indeed the case, don't be excessively alarmed: they seem fairly harmless to living organisms but could cause the programs of bots and buildings to malfunction through the emission of viruses.
+
+Radars not only give you precious information about objects and organisms present in the region, they also relay information to and from the Earth once you have taken off to other planets. It is highly probable that problems with the radar stations built by the first expedition caused the transmission problems that we are aware of.
+
+In order to help you with the boring task of gathering the necessary raw material, we have developed a program that instructs the \l;wheeled grabber\u object\botgr; to look for \l;titanium ore\u object\titanore; on its own (see the programming page \button 53;).
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhcrys2.txt b/help/D/mhcrys2.txt
new file mode 100644
index 00000000..b0ceb067
--- /dev/null
+++ b/help/D/mhcrys2.txt
@@ -0,0 +1,11 @@
+\b;From Mission Control
+Cleanse the area of all hostile organisms. The way you accomplish this (\l;defense tower\u object\tower; or \l;winged shooter\u object\botfj;) is up to you.
+
+The radar seems to be perfectly suited to the detection of worms. Keep in mind though that they only appear when they are on the surface.
+
+We relayed a transmission to your \l;bot factory\u object\factory;. It concerns a bot designed to detect raw materials in the subsoil: energy sources, ore. We call it a \l;sniffer\u object\botsr; for short. Preliminary analysis leads us to believe that the presence of titanium ore on Crystalium is closely linked to the growth of large blue crystals. If this is indeed the case, this information should allow you to save some precious time. A \l;derrick\u object\derrick; is of course required for the extraction.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhcrys3.txt b/help/D/mhcrys3.txt
new file mode 100644
index 00000000..029ced15
--- /dev/null
+++ b/help/D/mhcrys3.txt
@@ -0,0 +1,9 @@
+\b;From Mission Control
+We have just received this warning from the observation satellite: a rogue bot from the previous expedition has seized the black box from your spaceship.
+
+We are going to investigate this incident further but it is of vital importance that you retrieve your black box at once.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhcrys4.txt b/help/D/mhcrys4.txt
new file mode 100644
index 00000000..a1db90ef
--- /dev/null
+++ b/help/D/mhcrys4.txt
@@ -0,0 +1,11 @@
+\b;From Mission Control
+This planet has turned out to be a very unlikely candidate for colonization. Better to leave it for good. Retrieve the \l;black box\u object\bbox; from the previous expedition and head towards the next planet.
+
+The observation satellite has indicated that its present location is at the bottom of a valley. However the pervasive stratum of electromagnetic smog could make all satellite information rather undependable.
+
+Stay alert.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhlune1.txt b/help/D/mhlune1.txt
new file mode 100644
index 00000000..8bc9c193
--- /dev/null
+++ b/help/D/mhlune1.txt
@@ -0,0 +1,22 @@
+\b;From Mission Control
+Collect 4 chunks of \l;titanium ore\u object\titanore; and bring them back aboard your \l;spaceship\u object\base;. Build the equipment necessary for this task (\l;flying bots\u object\botgj;).
+
+Before you venture any further, you should always take a look at the satellite report \button 186;.
+
+We have transmitted to your \l;spaceship\u object\base; a program that might help you in this task; please refer to the corresponding page of your SatCom with the button \button 53;.
+
+\b;Procedure
+1) A new \l;research program\u object\research; is required for winged bots to be added to the list of bots that can be produced by the factory. This research program will also make the propulsion reactor in your personal survival kit operational.
+
+2) Produce a \l;winged grabber\u object\botgj; and collect the 4 chunks of \l;titanium ore\u object\titanore;.
+
+3) Take the \l;winged grabber\u object\botgj; and the \l;wheeled grabber\u object\botgr; along with you and take off.
+
+Be careful that your winged bot does not run out of power when you are far from base. If necessary, replace the \l;power cell\u object\power; before leaving the spaceship. You can either do this manually or you can execute the enclosed program provided by Houston \button 53;.
+
+In order not to lose your way among the numerous craters on the Moon's surface, use the mini map on the lower right-hand corner of your screen.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mhlune2.txt b/help/D/mhlune2.txt
new file mode 100644
index 00000000..5d6cfbd9
--- /dev/null
+++ b/help/D/mhlune2.txt
@@ -0,0 +1,17 @@
+\b;From Mission Control
+This apparatus was set up by the previous expedition to test and train the flying capacity of winged bots.
+
+\b;Objective
+Use these drills to your advantage. Your ability to survive future critical situations may depend upon the dexterity they will have helped you develop.
+
+\b;Procedure
+Fly as quickly as possible through each target. Try to accomplish this without causing the engine to overheat. If this appears too difficult, just touch down and let the engine cool off.
+
+You should use the arrow keys on the keyboard to pilot the bot, but keep one hand on the mouse. The mouse is useless in this exercise, but will be essential in later missions.
+
+It may be useful to come back to these drills once in a while if you wish to improve your reflexes further.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhlune3.txt b/help/D/mhlune3.txt
new file mode 100644
index 00000000..a11586b5
--- /dev/null
+++ b/help/D/mhlune3.txt
@@ -0,0 +1,7 @@
+\b;From Mission Control
+Similar drill as before, only this time viewed through the camera placed on board.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhlune4.txt b/help/D/mhlune4.txt
new file mode 100644
index 00000000..cc87d088
--- /dev/null
+++ b/help/D/mhlune4.txt
@@ -0,0 +1,20 @@
+\b;From Mission Control
+We have no way of being sure where the previous expedition was headed when it left the Moon surface nor why it chose to go wherever it was going.
+
+Locate the \l;black box\u object\bbox; they must have left behind and bring it back aboard your ship. The black box should contain the coordinates of the next planet the expedition was planning to visit.
+
+Your bot's \l;power cells\u object\power; are almost entirely empty. Recharging them should be your priority. The observation satellite in orbit indicates that the subsoil in this particular area is loaded with energy. You should therefore be able to build a functional \l;power station\u object\station; on any flat surface.
+
+We have developed a program that will recharge the \l;power cell\u object\power; of a bot. Refer to the program page of your SatCom \button 53;.
+
+\b;Procedure
+1) You first need to build a \l;converter\u object\convert; that converts the chunks of titanium ore already in your possession into usable \l;titanium cubes\u object\titan;.
+
+2) You should then build both a \l;power station\u object\station; and a \l;radar\u object\radar; which will indicate the location of the black box on your mini map.
+
+3) With your power cells fully charged, retrieve the black box. It needs to be placed on the \l;spaceship\u object\base; platform for you to be able to take off.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhorph1.txt b/help/D/mhorph1.txt
new file mode 100644
index 00000000..7154f14a
--- /dev/null
+++ b/help/D/mhorph1.txt
@@ -0,0 +1,13 @@
+\b;From Mission Control
+It seems obvious enough that this planet will be no haven for humanity.
+
+Build a radar to relay future transmissions.
+
+Also... we're very sorry to inform you that you may need to exterminate all hostile organisms.
+
+The first expedition located \l;titanium ore\u object\titanore; under the surface of Orpheon. The spot is marked with a blue \l;flag\u object\flag;.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhorph2.txt b/help/D/mhorph2.txt
new file mode 100644
index 00000000..7391a1fc
--- /dev/null
+++ b/help/D/mhorph2.txt
@@ -0,0 +1,11 @@
+\b;From Mission Control
+Retrieve the black box.
+
+Electromagnetic lightning bolts appear to strike even more frequently now than they did previously. You need to protect your equipment.
+
+Please note that your spaceship also naturally acts as a lightning conductor, and our engineers assure us that your space suit does not attract lightning.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhsaari1.txt b/help/D/mhsaari1.txt
new file mode 100644
index 00000000..065eb931
--- /dev/null
+++ b/help/D/mhsaari1.txt
@@ -0,0 +1,7 @@
+\b;From Mission Control
+The observation satellite has detected a chunk of \l;uranium ore\u object\uranore; on the summit of the main mountain. You need to bring it back to your spaceship.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhsaari2.txt b/help/D/mhsaari2.txt
new file mode 100644
index 00000000..ae22711a
--- /dev/null
+++ b/help/D/mhsaari2.txt
@@ -0,0 +1,11 @@
+\b;From Mission Control
+Eliminate all hostile presence from the region.
+
+Your current situation is of utmost concern to us. The satellite has detected an extremely strong enemy presence approaching your spaceship from all directions. Use your best judgment and the quickest, most efficient defense: either \l;towers\u object\tower; or \l;shooters\u object\botfr;.
+
+In order to increase your survival chances, we have developed a program that will protect your west flank if you execute it on your \l;wheeled shooter\u object\botfr;; see the program page \button 53;.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhsaari3.txt b/help/D/mhsaari3.txt
new file mode 100644
index 00000000..2a6b8587
--- /dev/null
+++ b/help/D/mhsaari3.txt
@@ -0,0 +1,9 @@
+\b;From Mission Control
+Your satellite has located the remains of the previous expedition. You should come across a \l;black box\u object\bbox; not too far from there. It will give you the coordinates of your next destination.
+
+Exterminate the few remaining ants. We've been notified that your neutron gun is currently out of order so you will not be able to build new bots. We're convinced that you're resourceful enough at this point to come up with a solution.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhterra1.txt b/help/D/mhterra1.txt
new file mode 100644
index 00000000..0b1fb5f9
--- /dev/null
+++ b/help/D/mhterra1.txt
@@ -0,0 +1,15 @@
+\b;From Mission Control
+We've just received information that the first expedition designed a brand new weapon to be used on Terranova. It was safely stored away from possible enemy reach, inside a \l;vault\u object\safe; which can be accessed only by using four \l;keys\u object\key;. The keys are scattered on or under the planet surface.
+
+The observation satellite has located one of these keys (A) north of your present position.
+
+In compliance with Congress directives, our engineers have developed yet another strictly "defensive" bot : it is called a \l;shielder\u object\botshld; and it will offer adequate protection within a given perimeter. The data have been transmitted to your \l;research center\u object\research; along with a couple of relevant programs.
+
+As you may know, uranium ore in the subsoil is a powerful fertilizer, furthering the growth of a variety of mushrooms. Please also note that \l;titanium ore\u object\titanore; is often located at the bottom of lakes on this planet.
+
+When your mission is completed and before taking off, bring both a \l;shielder\u object\botshld; and a \l;subber\u object\botsub; aboard your spaceship.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhterra2.txt b/help/D/mhterra2.txt
new file mode 100644
index 00000000..530285a9
--- /dev/null
+++ b/help/D/mhterra2.txt
@@ -0,0 +1,9 @@
+\b;From Mission Control
+Retrieve the second \l;key\u object\key; (B). It should be located near your current position.
+
+When your mission is completed and before taking off, bring both \l;shielder\u object\botshld; and \l;subber\u object\botsub; aboard your spaceship.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhterra3.txt b/help/D/mhterra3.txt
new file mode 100644
index 00000000..f3ca9465
--- /dev/null
+++ b/help/D/mhterra3.txt
@@ -0,0 +1,9 @@
+\b;From Mission Control
+The third \l;key\u object\key; (C) is buried in a mushroom-infested area. A \l;sniffer\u object\botss; should be able to locate it and a \l;derrick\u object\derrick; should be able to extract it.
+
+When your mission is completed and before taking off, bring both \l;shielder\u object\botshld; and \l;subber\u object\botsub; aboard your spaceship.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhterra4.txt b/help/D/mhterra4.txt
new file mode 100644
index 00000000..cf29413f
--- /dev/null
+++ b/help/D/mhterra4.txt
@@ -0,0 +1,13 @@
+\b;From Mission Control
+With the help of the fourth \l;key\u object\key; (D) located nearby, you will finally gain access to the \l;vault\u object\safe;. The groundbreaking bot you'll find inside was named a "\l;phazer\u object\botphaz;".
+
+A program allowing for a collaboration between a \l;phazer\u object\botphaz; and a \l;shielder\u object\botshld; has been attached.
+
+You should soon find yourself in a position to test your new weapon. Your last mission is to dispose of the \l;Alien Queen\u object\mother;, the egglayer responsible for the growing number of insects on Terranova. The phazer might very well be the only bot capable of getting the job done.
+
+There will then be no further obstacle to the human colonization of this magnificent planet and you'll soon be able to notify Earth of the success of your mission.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhterre1.txt b/help/D/mhterre1.txt
new file mode 100644
index 00000000..7c758945
--- /dev/null
+++ b/help/D/mhterre1.txt
@@ -0,0 +1,27 @@
+\b;From the NASA Training Center
+We are pleased to inform you that you have been selected for the space exploration mission Colobot.
+
+Your psychological profile has been established as more than 98.84% favorable, and your aptitude during the extensive testing period was undeniable. The detailed results are at your disposal in the central computer under the registration number that was assigned to you.
+
+Please report to the \l;Houston Mission Control\u object\Huston; for further directives about your forthcoming mission.
+
+\b;From Houston Mission Control
+As you know, Earth is heading towards imminent disaster, due to increasing atmospheric pollution.
+
+\l;Your\u object\human; mission consists of exploring neighboring galaxies with the hopes of finding a planet that will be suitable to human needs and possibly serve as a shelter for mankind. You will be on your own for the entire mission but your spaceship will be carrying a few bots along.
+
+Eight months ago an expedition composed entirely of robots was sent across the cosmos with the same objective. It encountered a fair share of obstacles along the way, apparently landing on planets that were unsuitable for colonization, even possibly outright hostile. Very recently all communications were terminated.
+
+The reasons for the mission's failure are unclear at this date, mainly because of recurrent transmission problems. It is our hope that you will be able to use some of the data it gathered to your advantage.
+
+\b;Immediate Objective
+The Nevada desert is already bustling with activity. Bots are setting up a space station catered to your specific needs.
+
+In order to let you familiarize with your spacesuit and equipment, we have set up a few training drills.
+
+In the first drill, you need to find your survival kit that contains all the tools necessary to brave the cold of outer space. It is easy to spot since it contains both an orange and a blue tank.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mhterre2.txt b/help/D/mhterre2.txt
new file mode 100644
index 00000000..14de04fe
--- /dev/null
+++ b/help/D/mhterre2.txt
@@ -0,0 +1,14 @@
+\b;From Mission Control
+This is your second drill. \l;You\u object\human; should now familiarize yourself with the handling of basic equipment. This could turn out to be your best ally during the course of this expedition.
+
+The construction of buildings and the manufacturing of bots all require the use of \l;titanium\u object\titan;. Titanium is a mineral found in most solar systems in the universe.
+
+\b;Procedure
+1) Position yourself close to the first \l;titanium cube\u object\titan;.
+2) Build a \l;research center\u object\research; \button 163;. Note that only \l;you\u object\human; can accomplish the task of building; no bot can be substituted.
+3) With a second \l;titanium cube\u object\titan;, build a \l;bot factory\u object\factory; \button 160;.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mhterre3.txt b/help/D/mhterre3.txt
new file mode 100644
index 00000000..ca679582
--- /dev/null
+++ b/help/D/mhterre3.txt
@@ -0,0 +1,24 @@
+\b;From Mission Control
+Your \l;spaceship\u object\base; is now standing on the launching pad, ready for takeoff.
+
+The last drill left for \l;you\u object\human; to perform before embarking on your journey is to equip your spaceship with its \l;black box\u object\bbox;. The only way to reach the \l;black box\u object\bbox; is by a steep path that can only be climbed by a \l;tracked grabber\u object\botgc; which you need to build.
+
+Unfortunately your \l;bot factory\u object\factory; hasn't yet got the capacity to assemble this type of bot. You need to request your \l;research center\u object\research; to come up with a blueprint for this particular propeller.
+
+\b;Procedure
+1) Power the research center with one of the green \l;power cells\u object\power;.
+2) Click on the button \button 64;.
+3) Drop a \l;titanium cube\u object\titan; in the center of the \l;bot factory\u object\factory; and build a \l;tracked grabber\u object\botgc;.
+4) Power and radio-control the \l;tracked grabber\u object\botgc; to the top of the southwest-oriented mountain.
+5) Bring the black box back aboard your spaceship.
+6) Don't forget to take the \l;wheeled grabber\u object\botgr; along. These bots may prove very useful in the future.
+7) Climb aboard the \l;spaceship\u object\base;.
+11) Select the \l;spaceship\u object\base; and take off \button 28;.
+
+
+Please note: To work more efficiently, you can use the \l;wheeled grabber\u object\botgr;.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mhtropi1.txt b/help/D/mhtropi1.txt
new file mode 100644
index 00000000..8b4e5110
--- /dev/null
+++ b/help/D/mhtropi1.txt
@@ -0,0 +1,10 @@
+\b;From Mission Control
+The observation satellite has detected a new kind of explosive apparently designed by the previous expedition. You must locate it and bring it back to your \l;spaceship\u object\base;.
+
+\b;Procedure
+The location of the explosive is marked by a red cross on your mini map.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mhtropi2.txt b/help/D/mhtropi2.txt
new file mode 100644
index 00000000..a6f8603a
--- /dev/null
+++ b/help/D/mhtropi2.txt
@@ -0,0 +1,18 @@
+\b;From Mission Control
+It is our hope that this message will reach you.
+
+A transmission from the observation satellite a few hours ago informed us that you seemed to be wandering in a frighteningly uncoordinated manner. Your SatCom has ceased broadcasting. Your reactor seems to have suffered some sort of damage and your helmet was spotted at the bottom of a lake. If this is indeed the case, do not try to retrieve it, do not go into the water! Water on Tropica is highly toxic. You would not survive it.
+
+Get back to your ship as quickly as possible and try to transmit information about the possible causes of this disaster. The satellite's information remains undecipherable. We have been speculating about an X-factor ever since the first expedition got lost. It appears you have just encountered it.
+
+There is nothing we can really do to guide you but don't forget that you're following in the footsteps of a previous expedition. If what happened to you is what happened to them, chances are they may have left some clues along the way back to their own spaceship which landed in roughly the same area as yours. Use those clues.
+
+You may also want to consider planting flags. They indicate the direction of the wind so you can use them to orient yourself.
+
+This is all we can say for now...
+Good Luck...
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mhtropi3.txt b/help/D/mhtropi3.txt
new file mode 100644
index 00000000..02ae2348
--- /dev/null
+++ b/help/D/mhtropi3.txt
@@ -0,0 +1,16 @@
+\b;From Mission Control
+Terminate all hostile life-form.
+Perform the necessary \l;research program\u object\research; in order to develop an offensive weapon system.
+
+The satellite has detected an energy source, on a spot marked by the previous expedition with a blue flag (blue cross on the mini-map).
+
+Do not forget to take a look at the satellite report \button 186; before you venture any further in a mission; we suspect that you have not always done this.
+
+We have improved the recharge program. Please refer to the page \button 53;.
+
+A note of warning: bots cannot be submerged. If in doubt, test the water yourself if you plan to radio-control a non-winged bot across - water shouldn't be deeper than knee-level.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhtropi4.txt b/help/D/mhtropi4.txt
new file mode 100644
index 00000000..657e0da1
--- /dev/null
+++ b/help/D/mhtropi4.txt
@@ -0,0 +1,13 @@
+\b;From Mission Control
+This is another training course set up by your predecessors and intended this time to test and train the firing capacity of \l;winged bots\u object\botfj;. Use it to familiarize yourself with the two simultaneous actions of shooting while flying.
+
+Fly quickly through all targets and shoot all 10 explosive devices scattered along the way. Try to complete the drill without touching down. Watch your reactor though: if it overheats, just settle the bot and let it cool off.
+
+Use one hand on the keyboard to pilot the bot, and the other hand on the mouse to aim and to shoot (left button).
+
+It may be useful to come back to these drills once in a while if you wish to improve your reflexes further.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhtropi5.txt b/help/D/mhtropi5.txt
new file mode 100644
index 00000000..d8f30ee6
--- /dev/null
+++ b/help/D/mhtropi5.txt
@@ -0,0 +1,9 @@
+\b;From Mission Control
+Locate and retrieve another \l;black box\u object\bbox; from the previous expedition.
+
+The observation satellite seems to have spotted it underwater. Water is harmless to you as long as you wear your helmet but keep in mind that you can't carry objects underwater. A \l;subber\u object\botsub; may come in handy.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhvolca1.txt b/help/D/mhvolca1.txt
new file mode 100644
index 00000000..0344a8ab
--- /dev/null
+++ b/help/D/mhvolca1.txt
@@ -0,0 +1,13 @@
+\b;From Mission Control
+You need to retrieve an \l;explosive device\u object\tnt; that has been spotted in a deep valley next to a lake of boiling lava.
+
+Because of the high temperatures, reactors no longer function, i.e. flying is impossible. It is a long way there and you should equip your bots with \l;nuclear power cells\u object\atomic;. Nuclear power cells are manufactured from \l;uranium ore\u object\uranore;.
+
+A more efficient program for the gathering of raw materials is attached to this message.
+
+A note of warning: the explosive device is extremely volatile. Use extreme caution.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhvolca2.txt b/help/D/mhvolca2.txt
new file mode 100644
index 00000000..41dccc38
--- /dev/null
+++ b/help/D/mhvolca2.txt
@@ -0,0 +1,17 @@
+\b;From Mission Control
+The previous expedition provided us with a piece of information about some \l;organic matter\u object\bullet;, which seems to be produced by the \l;ants\u object\ant;, and which opened startling new possibilities. It apparently allows the creation of a new type of mutant bot with enhanced performance through the use of insect parts.
+
+Your mission is to experiment with the first practical application of this "green gold". Build a \l;legged grabber bot\u object\botgs;, load it on the spaceship and take off.
+
+\b;Procedure
+Take a sample of organic matter from a nest of giant ants. The analysis of it will be performed by an \l;autolab\u object\labo;, which will also perform the necessary research to allow a practical application.
+
+In order to improve your defense capacity, we have transmitted a program to your \l;grabber bots\u object\botgr; that takes care of recharging the power cell of a \l;defense tower\u object\tower; (see \button 53; ).
+
+\b;Note
+The temperature has dropped significantly, it should therefore be possible to fly.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhvolca3.txt b/help/D/mhvolca3.txt
new file mode 100644
index 00000000..ba33482c
--- /dev/null
+++ b/help/D/mhvolca3.txt
@@ -0,0 +1,7 @@
+\b;From Mission Control
+This planet is obviously unsuited to a long-lasting colonization. Retrieve the \l;black box\u object\bbox; from the previous expedition then take off.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhvolca4.txt b/help/D/mhvolca4.txt
new file mode 100644
index 00000000..2a3876a0
--- /dev/null
+++ b/help/D/mhvolca4.txt
@@ -0,0 +1,9 @@
+\b;An urgent notification from Mission Control
+As you were about to take off, we received from the satellite the following piece of information: a bot of a type yet unknown has been spotted on Volcano. Try to bring it back onto your spaceship for further study.
+
+Our engineers on Earth have very recently come up with a formula that should allow reactors to function properly, at least for a short while, despite the high temperatures. The data have been transmitted to you.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhvolca5.txt b/help/D/mhvolca5.txt
new file mode 100644
index 00000000..a83bb143
--- /dev/null
+++ b/help/D/mhvolca5.txt
@@ -0,0 +1,11 @@
+\b;From Mission Control
+Congratulations on a fine job as usual.
+
+This new weapon appears to be yet another practical application of what we've come to refer to as "green gold", the \l;organic matter\u object\bullet; produced by the insects. We've named this bot the \l;orga shooter\u object\botoj; or bot equipped with an orgaball cannon.
+
+It will most certainly come in handy as you make your way back to your \l;spaceship\u object\base;.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/mhvolca6.txt b/help/D/mhvolca6.txt
new file mode 100644
index 00000000..35225cc4
--- /dev/null
+++ b/help/D/mhvolca6.txt
@@ -0,0 +1,7 @@
+\b;From Mission Control
+You need to repel a last minute ant attack before taking off.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/D/micent1.txt b/help/D/micent1.txt
new file mode 100644
index 00000000..57f72f1d
--- /dev/null
+++ b/help/D/micent1.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Centaury.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 23.4C
+\tab;Atmosphere: oxygen, nitrogen, ammonia
+\tab;Wind: 1.2 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: some
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\tab;Detected: reusable derelicts
+\n;
diff --git a/help/D/micent2.txt b/help/D/micent2.txt
new file mode 100644
index 00000000..46c3e658
--- /dev/null
+++ b/help/D/micent2.txt
@@ -0,0 +1,15 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Centaury.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 25.4C
+\tab;Atmosphere: oxygen, nitrogen, ammonia
+\tab;Wind: 1.2 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+\n;
diff --git a/help/D/micent3.txt b/help/D/micent3.txt
new file mode 100644
index 00000000..cff00288
--- /dev/null
+++ b/help/D/micent3.txt
@@ -0,0 +1,22 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Centaury.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 25.4C
+\tab;Atmosphere: oxygen, nitrogen, ammonia
+\tab;Wind: 0.7 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: some
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\tab;Detected: spiders
+\tab; - Danger: not immediate
+\tab;Detected: reusable derelicts
+\n;
diff --git a/help/D/micent4.txt b/help/D/micent4.txt
new file mode 100644
index 00000000..d76f7316
--- /dev/null
+++ b/help/D/micent4.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Centaury.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 21.3C
+\tab;Atmosphere: oxygen, nitrogen, ammonia
+\tab;Wind: 1.9 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\tab;Detected: derelicts of no particular use
+\n;
diff --git a/help/D/micent5.txt b/help/D/micent5.txt
new file mode 100644
index 00000000..c979dbb9
--- /dev/null
+++ b/help/D/micent5.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Centaury.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 21.3C
+\tab;Atmosphere: oxygen, nitrogen, ammonia
+\tab;Wind: 1.9 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: immediate
+\n;
diff --git a/help/D/micrys1.txt b/help/D/micrys1.txt
new file mode 100644
index 00000000..9458bf1d
--- /dev/null
+++ b/help/D/micrys1.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Crystalium.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 5.4C
+\tab;Atmosphere: nitrogen
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: data not available
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: unidentified organisms
+\tab; - Danger: ?
+\n;
diff --git a/help/D/micrys2.txt b/help/D/micrys2.txt
new file mode 100644
index 00000000..2a4c1d8a
--- /dev/null
+++ b/help/D/micrys2.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Crystalium.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 3.2C
+\tab;Atmosphere: nitrogen
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: isolated (close to the spaceship)
+\tab;Titanium ore: scattered
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: worms
+\tab; - Danger: no
+\n;
diff --git a/help/D/micrys3.txt b/help/D/micrys3.txt
new file mode 100644
index 00000000..6e76e8a8
--- /dev/null
+++ b/help/D/micrys3.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Crystalium.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 4.3C
+\tab;Atmosphere: nitrogen
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\tab;Detected: unknown organisms
+\tab; - Danger: ?
+\n;
diff --git a/help/D/micrys4.txt b/help/D/micrys4.txt
new file mode 100644
index 00000000..2873cb70
--- /dev/null
+++ b/help/D/micrys4.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Crystalium.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 1.2C
+\tab;Atmosphere: nitrogen
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: electromagnetic smog
+\tab;Detected: reusable derelicts
+\n;
diff --git a/help/D/milune1.txt b/help/D/milune1.txt
new file mode 100644
index 00000000..775c0506
--- /dev/null
+++ b/help/D/milune1.txt
@@ -0,0 +1,18 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of the Moon.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: -53.1C
+\tab;Atmosphere: none
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Terrain in places too uneven for wheeled bots.
+\n;
diff --git a/help/D/milune2.txt b/help/D/milune2.txt
new file mode 100644
index 00000000..dd7ea770
--- /dev/null
+++ b/help/D/milune2.txt
@@ -0,0 +1,15 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of the Moon.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: -51.0C
+\tab;Atmosphere: none
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+\n;
diff --git a/help/D/milune3.txt b/help/D/milune3.txt
new file mode 100644
index 00000000..d50b3109
--- /dev/null
+++ b/help/D/milune3.txt
@@ -0,0 +1,15 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of the Moon.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: -58.9C
+\tab;Atmosphere: none
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+\n;
diff --git a/help/D/milune4.txt b/help/D/milune4.txt
new file mode 100644
index 00000000..a57ce4b3
--- /dev/null
+++ b/help/D/milune4.txt
@@ -0,0 +1,15 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of the Moon.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: -38.2C
+\tab;Atmosphere: none
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: everywhere
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+\n;
diff --git a/help/D/miorph1.txt b/help/D/miorph1.txt
new file mode 100644
index 00000000..6414f2d0
--- /dev/null
+++ b/help/D/miorph1.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Orpheon.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: -72.8C
+\tab;Atmosphere: none
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: some (blue flag)
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\tab;Detected: fierce electromagnetic storms
+\n;
diff --git a/help/D/miorph2.txt b/help/D/miorph2.txt
new file mode 100644
index 00000000..5db18a70
--- /dev/null
+++ b/help/D/miorph2.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Orpheon.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: -64.7C
+\tab;Atmosphere: none
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\tab;Detected: fierce electromagnetic storms
+\n;
diff --git a/help/D/misaari1.txt b/help/D/misaari1.txt
new file mode 100644
index 00000000..957227a7
--- /dev/null
+++ b/help/D/misaari1.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Saari.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 41.3C
+\tab;Atmosphere: CO2, oxygen, nitrogen
+\tab;Wind: 2.3 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: some (mountain summit)
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: everywhere
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: reusable derelicts
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\n;
diff --git a/help/D/misaari2.txt b/help/D/misaari2.txt
new file mode 100644
index 00000000..6eddf002
--- /dev/null
+++ b/help/D/misaari2.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Saari.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 38.4C
+\tab;Atmosphere: CO2, oxygen, nitrogen
+\tab;Wind: 1.4 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: everywhere
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants approaching
+\tab; - Danger: yes, immediate
+\n;
diff --git a/help/D/misaari3.txt b/help/D/misaari3.txt
new file mode 100644
index 00000000..8822ca92
--- /dev/null
+++ b/help/D/misaari3.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Saari.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 44.3C
+\tab;Atmosphere: CO2, oxygen, nitrogen
+\tab;Wind: 2.3 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: reusable derelicts
+\tab;Detected: giant ants
+\tab; - Danger: ?
+\n;
diff --git a/help/D/miterra1.txt b/help/D/miterra1.txt
new file mode 100644
index 00000000..683cffe2
--- /dev/null
+++ b/help/D/miterra1.txt
@@ -0,0 +1,22 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Terranova.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 24.8C
+\tab;Atmosphere: oxygen
+\tab;Wind: 0.7 mps
+\tab;Titanium ore: underwater
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: at some places
+\tab;Titanium ore: none
+\tab;Uranium ore: some
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: immediate
+\tab;Detected: giant wasps
+\tab; - Danger: not immediate
+\tab;Detected: reusable derelicts
+\n;
diff --git a/help/D/miterra2.txt b/help/D/miterra2.txt
new file mode 100644
index 00000000..ae7e7705
--- /dev/null
+++ b/help/D/miterra2.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Terranova.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 24.3C
+\tab;Atmosphere: oxygen
+\tab;Wind: 0.8 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: immediate
+\n;
diff --git a/help/D/miterra3.txt b/help/D/miterra3.txt
new file mode 100644
index 00000000..73697df5
--- /dev/null
+++ b/help/D/miterra3.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Terranova.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 26.1C
+\tab;Atmosphere: oxygen
+\tab;Wind: 0.4 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: some
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: immediate
+\tab;Detected: giant wasps
+\tab; - Danger: immediate
+\n;
diff --git a/help/D/miterra4.txt b/help/D/miterra4.txt
new file mode 100644
index 00000000..779d59c0
--- /dev/null
+++ b/help/D/miterra4.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Terranova.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 23.7C
+\tab;Atmosphere: oxygen
+\tab;Wind: 0.5 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: some
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: in some places (spaceship)
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: immediate
+\tab;Detected: giant egglayer
+\tab; - Danger: ?
+\n;
diff --git a/help/D/mitropi1.txt b/help/D/mitropi1.txt
new file mode 100644
index 00000000..abb2258b
--- /dev/null
+++ b/help/D/mitropi1.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Tropica.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 32.4C
+\tab;Atmosphere: helium, oxygen
+\tab;Wind: 1.2 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: explosive
+\tab; - Type: unknown
+\tab;Detected: unidentified organisms
+\tab; - Danger: ?
+\n;
diff --git a/help/D/mitropi3.txt b/help/D/mitropi3.txt
new file mode 100644
index 00000000..eed21844
--- /dev/null
+++ b/help/D/mitropi3.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Tropica.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 29.6C
+\tab;Atmosphere: helium, oxygen
+\tab;Wind: 1.5 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: isolated (blue flag)
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\tab;Detected: reusable derelicts
+\n;
diff --git a/help/D/mitropi4.txt b/help/D/mitropi4.txt
new file mode 100644
index 00000000..8717928b
--- /dev/null
+++ b/help/D/mitropi4.txt
@@ -0,0 +1,15 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Tropica.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 32.2C
+\tab;Atmosphere: helium, oxygen
+\tab;Wind: 0.7 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+\n;
diff --git a/help/D/mitropi5.txt b/help/D/mitropi5.txt
new file mode 100644
index 00000000..0f9cce87
--- /dev/null
+++ b/help/D/mitropi5.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Tropica.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 29.4C
+\tab;Atmosphere: helium, oxygen
+\tab;Wind: 0.3 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: titanium ore
+\tab; - Requires: converter
+\tab;Detected: scattered derelicts
+\tab;Detected: black box (underwater)
+\n;
diff --git a/help/D/mivolca1.txt b/help/D/mivolca1.txt
new file mode 100644
index 00000000..8c071e9b
--- /dev/null
+++ b/help/D/mivolca1.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Volcano.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 84.6C
+\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wind: 2.2 mps
+\tab;Titanium ore: everywhere
+\tab;Uranium ore: some
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: everywhere
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: reusable derelicts
+\tab;Detected: unknown organisms
+\tab; - Danger: ?
+\n;
diff --git a/help/D/mivolca2.txt b/help/D/mivolca2.txt
new file mode 100644
index 00000000..eae66bbb
--- /dev/null
+++ b/help/D/mivolca2.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Volcano.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 53.1C
+\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wind: 0.3 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: little
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: everywhere
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: yes, not immediate
+\tab;Detected: unknown flying organisms
+\tab; - Danger: yes, immediate
+\n;
diff --git a/help/D/mivolca3.txt b/help/D/mivolca3.txt
new file mode 100644
index 00000000..0d314f33
--- /dev/null
+++ b/help/D/mivolca3.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Volcano.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 83.5C
+\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wind: 3.4 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: everywhere
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\n;
diff --git a/help/D/mivolca4.txt b/help/D/mivolca4.txt
new file mode 100644
index 00000000..46046659
--- /dev/null
+++ b/help/D/mivolca4.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Volcano.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 96.7C
+\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wind: 2.8 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: bot
+\tab; - Type: unknown
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\n;
diff --git a/help/D/mivolca5.txt b/help/D/mivolca5.txt
new file mode 100644
index 00000000..1a8aceeb
--- /dev/null
+++ b/help/D/mivolca5.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Volcano.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 96.6C
+\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wind: 2.7 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: immediate
+\tab;Detected: giant spiders
+\tab; - Danger: not immediate
+\n;
diff --git a/help/D/mivolca6.txt b/help/D/mivolca6.txt
new file mode 100644
index 00000000..19e3556b
--- /dev/null
+++ b/help/D/mivolca6.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Volcano.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 96.6C
+\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wind: 2.7 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: immediate
+\n;
diff --git a/help/D/mlcent1.txt b/help/D/mlcent1.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/D/mlcent1.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/D/mlcent2.txt b/help/D/mlcent2.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/D/mlcent2.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/D/mlcent3.txt b/help/D/mlcent3.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/D/mlcent3.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/D/mlcent4.txt b/help/D/mlcent4.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/D/mlcent4.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/D/mlcent5.txt b/help/D/mlcent5.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/D/mlcent5.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/D/mlcrys1.txt b/help/D/mlcrys1.txt
new file mode 100644
index 00000000..99fa7fde
--- /dev/null
+++ b/help/D/mlcrys1.txt
@@ -0,0 +1,29 @@
+\b;Programs dispatched by Houston
+Below is one of the programs that has been developed by our engineers.
+It instructs a \l;grabber\u object\botgr; to retrieve the nearest chunk of \l;titanium ore\u object\titanore; and place it on the \l;converter\u object\convert;.
+
+In order to execute this program, select the program \c;CollectTitanium1\n; 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;.
+\c;
+\s;extern void object::CollectTitanium1()
+\s;{
+\s; // 1) Variable definition.
+\s; \l;object\u cbot\type; item; // info. about objects
+\s;
+\s; // 2) Go to the titanium ore and grab it.
+\s; item = \l;radar\u cbot\radar;(\l;TitaniumOre\u cbot\category;);// look for titanium ore
+\s; \l;goto\u cbot\goto;(item.position); // go to the position
+\s; \l;grab\u cbot\grab;(); // grab the titanium
+\s;
+\s; // 3) Go to the converter and drop it.
+\s; item = \l;radar\u cbot\radar;(\l;Converter\u cbot\category;); // look for converter
+\s; \l;goto\u cbot\goto;(item.position); // go to the position
+\s; \l;drop\u cbot\drop;(); // drop the titanium
+\s; \l;move\u cbot\move;(-2.5); // step back 2.5 m
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/D/mlcrys2.txt b/help/D/mlcrys2.txt
new file mode 100644
index 00000000..5e1a7ec3
--- /dev/null
+++ b/help/D/mlcrys2.txt
@@ -0,0 +1,38 @@
+\b;Programs dispatched by Houston
+Below is one of the programs that has been developed by our engineers.
+An upgrade on the previous program: the \l;grabber\u object\botgr;, on its way back from the converter, makes a stop, if necessary, at the \l;power station\u object\station; to recharge its power cell.
+
+This program also works on \l;winged grabbers\u object\botgj;, if the \l;derrick\u object\derrick; is on another island than the \l;converter\u object\convert;.
+\c;
+\s;extern void object::CollectTitanium2()
+\s;{
+\s; // 1) Variable definition.
+\s; \l;object\u cbot\type; item; // info. about objects
+\s;
+\s; // 2) Go to the titanium ore and grab it.
+\s; item = \l;radar\u cbot\radar;(\l;TitaniumOre\u cbot\category;);// look for titanium ore
+\s; \l;goto\u cbot\goto;(item.position); // go to the position
+\s; \l;grab\u cbot\grab;(); // grab the titanium
+\s;
+\s; // 3) Go to the converter and drop it.
+\s; item = \l;radar\u cbot\radar;(\l;Converter\u cbot\category;); // look for converter
+\s; \l;goto\u cbot\goto;(item.position); // go to the position
+\s; \l;drop\u cbot\drop;(); // drop the titanium
+\s; \l;move\u cbot\move;(-2.5); // step back 2.5 m
+\s;
+\s; // 4) If power cell half empty, recharges.
+\s; if ( energyCell.energyLevel < 0.5 )
+\s; { // if so:
+\s; item = \l;radar\u cbot\radar;(\l;PowerStation\u cbot\category;); // look for station
+\s; \l;goto\u cbot\goto;(item.position); // go there
+\s; \l;wait\u cbot\wait;(5); // wait
+\s; }
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/D/mlcrys3.txt b/help/D/mlcrys3.txt
new file mode 100644
index 00000000..1357500d
--- /dev/null
+++ b/help/D/mlcrys3.txt
@@ -0,0 +1,11 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/D/mlcrys4.txt b/help/D/mlcrys4.txt
new file mode 100644
index 00000000..1357500d
--- /dev/null
+++ b/help/D/mlcrys4.txt
@@ -0,0 +1,11 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/D/mllune1.txt b/help/D/mllune1.txt
new file mode 100644
index 00000000..1850e907
--- /dev/null
+++ b/help/D/mllune1.txt
@@ -0,0 +1,17 @@
+\b;Programs dispatched by Houston
+Following is a program that has been developed by our engineers. It allows you to switch \l;power cells\u object\power;. A charged cell needs to be placed on the ground in front of the bot.
+
+In order to execute this program, select the program \c;SwitchCell1\n; 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;.
+\c;
+\s;extern void object::SwitchCell1()
+\s;{
+\s; \l;grab\u cbot\grab;(InFront); // take the new cell in front
+\s; \l;drop\u cbot\drop;(Behind); // and drop it behind
+\s;
+\s; \l;grab\u cbot\grab;(EnergyCell); // take the cell from the bot
+\s; \l;drop\u cbot\drop;(InFront); // and drop it in front
+\s;
+\s; \l;grab\u cbot\grab;(Behind); // take the new cell
+\s; \l;drop\u cbot\drop;(EnergyCell); // and drop it on the bot
+\s;}
+\n;
diff --git a/help/D/mllune2.txt b/help/D/mllune2.txt
new file mode 100644
index 00000000..15fe0f0f
--- /dev/null
+++ b/help/D/mllune2.txt
@@ -0,0 +1,7 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/D/mllune3.txt b/help/D/mllune3.txt
new file mode 100644
index 00000000..5e7e6787
--- /dev/null
+++ b/help/D/mllune3.txt
@@ -0,0 +1,7 @@
+\b;Program(s) dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/D/mllune4.txt b/help/D/mllune4.txt
new file mode 100644
index 00000000..fbc672cd
--- /dev/null
+++ b/help/D/mllune4.txt
@@ -0,0 +1,23 @@
+\b;Programs dispatched by Houston
+Below is a program that has been developed by our engineers. It allows you to recharge the \l;power cell\u object\power; of a bot: it goes to the closest \l;power station\u object\station;, waits 5 seconds, and comes back to the initial position.
+
+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 \c;//\n; are not part of the program, but are comments that help you to understand the program.
+\c;
+\s;extern void object::Recharge1()
+\s;{
+\s; \l;point\u cbot\type; start; // variable for initial pos.
+\s; \l;object\u cbot\type; item; // info. about power station
+\s;
+\s; start = position; // store initial position
+\s;
+\s; item = \l;radar\u cbot\radar;(\l;PowerStation\u cbot\category;); // look for station
+\s; \l;goto\u cbot\goto;(item.position); // go to the power station
+\s; \l;wait\u cbot\wait;(5); // wait 5 seconds
+\s;
+\s; \l;goto\u cbot\goto;(start); // go back to initial pos.
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/D/mlnull.txt b/help/D/mlnull.txt
new file mode 100644
index 00000000..9fe96daa
--- /dev/null
+++ b/help/D/mlnull.txt
@@ -0,0 +1,3 @@
+\b;Program(s) dispatched by Houston
+No program was transmitted.
+If you feel like developing one that can be of use to the completion of this mission, be our guest but you are on your own.
diff --git a/help/D/mlorph1.txt b/help/D/mlorph1.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/D/mlorph1.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/D/mlorph2.txt b/help/D/mlorph2.txt
new file mode 100644
index 00000000..f856d805
--- /dev/null
+++ b/help/D/mlorph2.txt
@@ -0,0 +1,14 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/D/mlsaari1.txt b/help/D/mlsaari1.txt
new file mode 100644
index 00000000..1357500d
--- /dev/null
+++ b/help/D/mlsaari1.txt
@@ -0,0 +1,11 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/D/mlsaari2.txt b/help/D/mlsaari2.txt
new file mode 100644
index 00000000..805dca34
--- /dev/null
+++ b/help/D/mlsaari2.txt
@@ -0,0 +1,31 @@
+\b;Programs dispatched by Houston
+Execute the program \c;KillAnt1\n; immediately on your \l;wheeled shooter\u object\botfr;, it will protect your west flank. Meantime you can elaborate your defense strategy.
+\c;
+\s;extern void object::KillAnt1()
+\s;{
+\s; \l;object\u cbot\type; item; // info. about object
+\s;
+\s; \l;goto\u cbot\goto;(-30, 0); // go west
+\s; \l;aim\u cbot\aim;(0); // aim straight
+\s;
+\s; \l;while\u cbot\while; ( true ) // repeat forever:
+\s; {
+\s; item = \l;radar\u cbot\radar;(\l;AlienAnt\u cbot\category;, 0, 360, 0, 40);
+\s; \l;if\u cbot\if; ( item != null ) // ant detected ?
+\s; {
+\s; \l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));
+\s; \l;fire\u cbot\fire;(0.5); // shoot 0.5 s
+\s; }
+\s; \l;wait\u cbot\wait;(1); // wait 1 second
+\s; }
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/D/mlsaari3.txt b/help/D/mlsaari3.txt
new file mode 100644
index 00000000..13f3cec8
--- /dev/null
+++ b/help/D/mlsaari3.txt
@@ -0,0 +1,12 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/D/mlterra1.txt b/help/D/mlterra1.txt
new file mode 100644
index 00000000..5ac691d0
--- /dev/null
+++ b/help/D/mlterra1.txt
@@ -0,0 +1,30 @@
+\b;Programs dispatched by Houston
+According to the data transmitted by the satellite, our engineers have developed two programs. The first one guides the \l;shielder bot\u object\botshld; through the narrow valley north close to the place where the key has been located. You can follow it without fearing any attack:
+\c;
+\s;extern void object::Outward()
+\s;{
+\s; \l;shield\u cbot\shield;(1,15); // activate the shield
+\s; \l;goto\u cbot\goto;(6,160); // go close to the key
+\s; \l;shield\u cbot\shield;(0,15); // deactivate the shield
+\s;}
+\n;
+The second program guides the \l;shielder bot\u object\botshld; back to the \l;spaceship\u object\base;:
+\c;
+\s;extern void object::Return()
+\s;{
+\s; \l;shield\u cbot\shield;(1,15); // activate the shield
+\s; \l;goto\u cbot\goto;(8,60); // go to the spaceship
+\s; \l;shield\u cbot\shield;(0,15); // deactivate the shield
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/D/mlterra2.txt b/help/D/mlterra2.txt
new file mode 100644
index 00000000..f856d805
--- /dev/null
+++ b/help/D/mlterra2.txt
@@ -0,0 +1,14 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/D/mlterra3.txt b/help/D/mlterra3.txt
new file mode 100644
index 00000000..f856d805
--- /dev/null
+++ b/help/D/mlterra3.txt
@@ -0,0 +1,14 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/D/mlterra4.txt b/help/D/mlterra4.txt
new file mode 100644
index 00000000..73e1d1ab
--- /dev/null
+++ b/help/D/mlterra4.txt
@@ -0,0 +1,50 @@
+\b;Programs dispatched by Houston
+Below is a program that has been developed by our engineers.
+
+It instructs the \l;shielder\u object\botshld; to follow and protect the \l;phazer\u object\botphaz;.
+\c;
+\s;extern void object::FollowPhazer()
+\s;{
+\s; \l;object\u cbot\type; item; // info. about phazer
+\s; \l;point\u cbot\type; dest; // position where to go
+\s; \l;float\u cbot\type; dist; // distance to phazer
+\s;
+\s; item = \l;radar\u cbot\radar;(\l;PhazerShooter\u cbot\category;);
+\s; \l;if\u cbot\if; ( item == null )
+\s; {
+\s; \l;message\u cbot\message;("No phazer found");
+\s; \l;return\u cbot\return;; // stop the program
+\s; }
+\s; \l;shield\u cbot\shield;(1, 25); // activate the shield
+\s;
+\s; \l;while\u cbot\while; ( true ) // repeat forever
+\s; {
+\s; item = \l;radar\u cbot\radar;(PhazerShooter);// look for phazer
+\s; \l;if\u cbot\if; ( item == null ) break;
+\s;
+\s; dist = \l;distance\u cbot\dist;(item.position, position);
+\s; \l;if\u cbot\if; ( dist < 5 )
+\s; { // if closer than 5 m:
+\s; \l;wait\u cbot\wait;(1); // wait
+\s; }
+\s; \l;else\u cbot\if; // otherwise:
+\s; { // Calculate a position 5 m before the phazer
+\s; dest.x = (item.position.x-position.x)*((dist-5)/dist)+position.x;
+\s; dest.y = (item.position.y-position.y)*((dist-5)/dist)+position.y;
+\s; dest.z = (item.position.z-position.z)*((dist-5)/dist)+position.z;
+\s; \l;goto\u cbot\goto;(dest, 0, 1, 1); // and go there
+\s; }
+\s; }
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/D/mltropi1.txt b/help/D/mltropi1.txt
new file mode 100644
index 00000000..6d775e52
--- /dev/null
+++ b/help/D/mltropi1.txt
@@ -0,0 +1,8 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/D/mltropi3.txt b/help/D/mltropi3.txt
new file mode 100644
index 00000000..40d4b187
--- /dev/null
+++ b/help/D/mltropi3.txt
@@ -0,0 +1,27 @@
+\b;Programs dispatched by Houston
+We have improved the recharge program. When it arrives at the \l;power station\u object\station;, the bot does not wait exactly 5 seconds, but only until the \l;power cell\u object\power; is fully charged. After the bot is back at the initial position, it displays a message on the screen.
+\c;
+\s;extern void object::Recharge2()
+\s;{
+\s; \l;point\u cbot\type; start; // variable for initial pos.
+\s; \l;object\u cbot\type; item; // info. about power station
+\s;
+\s; start = position; // store initial position
+\s;
+\s; item = \l;radar\u cbot\radar;(\l;PowerStation\u cbot\category;); // look for station
+\s; \l;goto\u cbot\goto;(item.position); // go to the power station
+\s;
+\s; \l;while\u cbot\while; ( \l;energyCell.energyLevel\u cbot\object; < 1 )
+\s; {
+\s; \l;wait\u cbot\wait;(1); // wait until recharged
+\s; }
+\s;
+\s; \l;goto\u cbot\goto;(start); // go back to initial pos.
+\s; \l;message\u cbot\message;("Recharge completed");
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;SwitchCell1\u mllune1;\n;
+o \c;\l;Recharge1\u mllune4;\n;
diff --git a/help/D/mltropi4.txt b/help/D/mltropi4.txt
new file mode 100644
index 00000000..3b138af2
--- /dev/null
+++ b/help/D/mltropi4.txt
@@ -0,0 +1,9 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/D/mltropi5.txt b/help/D/mltropi5.txt
new file mode 100644
index 00000000..3b138af2
--- /dev/null
+++ b/help/D/mltropi5.txt
@@ -0,0 +1,9 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/D/mlvolca1.txt b/help/D/mlvolca1.txt
new file mode 100644
index 00000000..f1e12cea
--- /dev/null
+++ b/help/D/mlvolca1.txt
@@ -0,0 +1,61 @@
+\b;Programs dispatched by Houston
+As you will need lots of titanium for this mission, we have made the program \c;CollectTitanium\n; 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 \l;power station\u object\station; if necessary.
+\c;
+\s;extern void object::CollectTitanium3()
+\s;{
+\s; // 1) Variable definition.
+\s; \l;object\u cbot\type; item; // info. about objects
+\s;
+\s; \l;while\u cbot\while; (true) // repeat forever
+\s; {
+\s;
+\s; // 2) Go to the titanium ore and grab it.
+\s; item = \l;radar\u cbot\radar;(\l;TitaniumOre\u cbot\category;);// look for titanium
+\s; \l;goto\u cbot\goto;(item.position); // go to the position
+\s; \l;grab\u cbot\grab;(); // grab the titanium
+\s;
+\s; // 3) Go to the converter and drop it.
+\s; item = \l;radar\u cbot\radar;(\l;Converter\u cbot\category;); // look for converter
+\s; \l;goto\u cbot\goto;(item.position); // go to the position
+\s; \l;drop\u cbot\drop;(); // drop the titanium
+\s; \l;move\u cbot\move;(-2.5); // step back 2.5 m
+\s;
+\s; // 4) Wait until titanium converted and grab it
+\s; \l;do\u cbot\do;
+\s; {
+\s; \l;wait\u cbot\wait;(1); // wait for cube
+\s; item = \l;radar\u cbot\radar;(\l;Titanium\u cbot\category;, 0, 45, 0, 5);
+\s; }
+\s; \l;while\u cbot\while; ( item == null );
+\s; \l;goto\u cbot\goto;(item.position);
+\s; \l;grab\u cbot\grab;(); // grab it
+\s;
+\s; // 5) Drop on a free space
+\s; \l;goto\u cbot\goto;(\l;space\u cbot\space;(position)); // go to free space
+\s; \l;drop\u cbot\drop;(); // drop titanium
+\s;
+\s; // 6) If power cell half empty, recharges.
+\s; \l;if\u cbot\if; ( energyCell.energyLevel < 0.5 )
+\s; { // if so:
+\s; item = \l;radar\u cbot\radar;(\l;PowerStation\u cbot\category;);
+\s; \l;if\u cbot\if; ( item != null ) // station found ?
+\s; {
+\s; \l;goto\u cbot\goto;(item.position); // go there
+\s; \l;while\u cbot\while; ( energyCell.energyLevel < 1 )
+\s; { // until recharged:
+\s; \l;wait\u cbot\wait;(1); // wait
+\s; }
+\s; }
+\s; }
+\s; }
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/D/mlvolca2.txt b/help/D/mlvolca2.txt
new file mode 100644
index 00000000..ad0537da
--- /dev/null
+++ b/help/D/mlvolca2.txt
@@ -0,0 +1,53 @@
+\b;Programs dispatched by Houston
+We have developed a program that takes care of recharging the power cell of a \l;defense tower\u object\tower;:
+
+1) Go to a \l;defense tower\u object\tower;.
+2) Wait until the \l;power cell\u object\power; is 80% empty.
+3) Grab the \l;power cell\u object\power; and recharge it on a \l;power station\u object\station;.
+4) Put it back on the \l;defense tower\u object\tower;.
+
+Build the \l;power station\u object\station; 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.
+\c;
+\s;extern void object::ServiceTower1()
+\s;{
+\s; \l;object\u cbot\object; tower; // info. about tower
+\s; \l;object\u cbot\object; station; // info. about station
+\s;
+\s; // 1) go to the defense tower
+\s; tower = \l;radar\u cbot\radar;(DefenseTower); // look for tower
+\s; \l;goto\u cbot\goto;(tower.position); // go there
+\s;
+\s; \l;while\u cbot\while; ( true ) // repeat forever
+\s; {
+\s; // 2) wait until power cell is empty
+\s; \l;while\u cbot\while; ( tower.energyCell.energyLevel > 0.2 )
+\s; {
+\s; \l;wait\u cbot\wait;(2);
+\s; }
+\s; \l;grab\u cbot\grab;(); // grab the power cell
+\s;
+\s; // 3) go to the power station to recharge
+\s; station = \l;radar\u cbot\radar;(PowerStation);
+\s; \l;goto\u cbot\goto;(station.position); // go there
+\s; \l;while\u cbot\while; ( load.energyLevel < 1 )
+\s; {
+\s; \l;wait\u cbot\wait;(1); // wait until recharged
+\s; }
+\s;
+\s; // 4) go back to defense tower
+\s; \l;goto\u cbot\goto;(tower.position); // go to tower
+\s; \l;drop\u cbot\drop;(); // drop the power cell
+\s; }
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/D/mlvolca3.txt b/help/D/mlvolca3.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/D/mlvolca3.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/D/mlvolca4.txt b/help/D/mlvolca4.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/D/mlvolca4.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/D/mlvolca5.txt b/help/D/mlvolca5.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/D/mlvolca5.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/D/mlvolca6.txt b/help/D/mlvolca6.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/D/mlvolca6.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/D/mscent1.txt b/help/D/mscent1.txt
new file mode 100644
index 00000000..befd97f5
--- /dev/null
+++ b/help/D/mscent1.txt
@@ -0,0 +1,20 @@
+\b;Walkthrough
+You'll find some useful items in a small valley northeast.
+o A \l;recycler\u object\botrecy; that will allow you to make your first \l;titanium cube\u object\titan;.
+o A \l;legged grabber\u object\botgs; that is very good at climbing steep slopes.
+o A nearly charged \l;nuclear power cell\u object\atomic;.
+
+1) Power the \l;legged grabber\u object\botgs; with the \l;nuclear power cell\u object\atomic;, and use it to carry a \l;titanium cube\u object\titan; to the \l;spaceship\u object\base;. Choose the direct way over the mountains.
+
+2) Use the titanium to build a \l;converter\u object\convert;. Execute the program \c;CollectTitanium3\n; on the \l;legged grabber\u object\botgs; and you will have plenty of titanium.
+
+3) Stop the program, and use the grabber to collect some \l;uranium ore\u object\uranore; in a second small valley to the east. Again, do not take the way of the valley which is crawling with ants, but take the direct way over the mountains.
+
+4) Build a \l;winged shooter\u object\botfj; and power it with a \l;nuclear power cell\u object\atomic;. If you take the pass south-east, you will arrive immediately at the ant nest. Kill all the ants, and bring back a ball of \l;organic matter\u object\bullet; to the \l;spaceship\u object\base;.
+
+5) Build an \l;auto-lab\u object\labo;, drop the \l;organic matter\u object\bullet; on the platform and click the \button 110; button in order to develop the blueprints for the orgaShooter cannon.
+
+6) Build a \l;legged orga shooter\u object\botos;, bring it aboard and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mscent2.txt b/help/D/mscent2.txt
new file mode 100644
index 00000000..417c8f0b
--- /dev/null
+++ b/help/D/mscent2.txt
@@ -0,0 +1,5 @@
+\b;Walkthrough
+Drive the \l;legged orga shooter\u object\botos; to each of the pads in front of the targets, and hit all targets that you see with only one burst, moving the mouse during the burst. With 4 bursts, you must be able to hit all the targets.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mscent3.txt b/help/D/mscent3.txt
new file mode 100644
index 00000000..d14266fa
--- /dev/null
+++ b/help/D/mscent3.txt
@@ -0,0 +1,11 @@
+\b;Walkthrough
+In order to kill all ants and spiders in this large and mountainous region, you will need a \l;winged orga shooter\u object\botfj; powered with \l;nuclear power cells\u object\atomic;. In a small valley to the southeast you will find everything you need: \l;titanium cubes\u object\titanium;, \l;power cells\u object\power; and even a \l;winged grabber\u object\botgj; in working condition.
+
+1) Build a \l;radar\u object\radar; and a \l;winged shooter\u object\botfj; and power it. Kill the ant that is watching over the \l;uranium ore\u object\uranore; further north.
+
+2) Use the abandoned \l;nuclear plant\u object\nuclear; on the hill above and the \l;winged grabber\u object\botgj; to produce several \l;nuclear power cells\u object\atomic;, and use one to power the \l;winged shooter\u object\botfj;.
+
+3) Wipe out all insects from the region. There is one isolated ant in the northwest hidden in a hole: an approach from the west thorough the deep valley will make it easier to hit.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mscent4.txt b/help/D/mscent4.txt
new file mode 100644
index 00000000..ceb46949
--- /dev/null
+++ b/help/D/mscent4.txt
@@ -0,0 +1,12 @@
+\b;Walkthrough
+1) Search the area for \l;titanium\u object\titan;.
+2) Build a \l;converter\u object\convert;.
+3) Build a \l;research center\u object\research;.
+4) Run the \button 66;.
+5) Manufacture a \l;thumper\u object\bottump;.
+6) Position the thumper close to the derelict spaceship and "thump" the ground.
+7) Quickly retrieve the \l;black box\u object\bbox; and bring it back aboard your \l;spaceship\u object\base;.
+8) Bring the thumper along and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mscent5.txt b/help/D/mscent5.txt
new file mode 100644
index 00000000..a631c9d5
--- /dev/null
+++ b/help/D/mscent5.txt
@@ -0,0 +1,8 @@
+\b;Walkthrough
+1) Thump the deck of the \l;spaceship\u object\base;. You don't need to move the \l;thumper\u object\bottump; anywhere.
+2) Locate the \l;orga shooter\u object\botoj; approximately 70 meters to the east.
+3) Terminate the \l;ants\u object\ant; while they are still on their backs.
+4) Take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mscrys1.txt b/help/D/mscrys1.txt
new file mode 100644
index 00000000..e7e5c03e
--- /dev/null
+++ b/help/D/mscrys1.txt
@@ -0,0 +1,12 @@
+\b;Walkthrough
+1) Build a \l;bot factory\u object\factory;.
+2) Produce a \l;winged grabber\u object\botgj;.
+3) Carry a \l;titanium cube\u object\titan; to the highest point.
+4) Build a \l;radar\u object\radar; on the spot.
+5) Build a \l;research center\u object\research; next to the spaceship.
+6) Initiate the \button 68;.
+7) Build the \l;defense tower\u object\tower; next to the radar.
+8) When all the worms are destroyed, you can go back to your ship and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mscrys2.txt b/help/D/mscrys2.txt
new file mode 100644
index 00000000..d64057d1
--- /dev/null
+++ b/help/D/mscrys2.txt
@@ -0,0 +1,17 @@
+\b;Walkthrough
+1) Build a \l;bot factory\u object\factory;.
+2) Produce a \l;winged sniffer\u object\botsj;.
+3) Sniff the ground near the large crystals until you get a \l;red cross\u object\stonspot;.
+4) Build a \l;derrick\u object\derrick; near the red cross.
+5) Build a \l;converter\u object\convert;.
+
+The pairing of a derrick and a converter allows for an unlimited supply of \l;titanium\u object\titan;. In order to leave this task to a bot, execute the program \c;CollectTitanium2\n;.
+
+6) Sniff the area at the foot of the spaceship. A \l;green cross\u object\enerspot; means you can build a \l;power station\u object\station; on the spot.
+7) Build a \l;radar\u object\radar;.
+8) Produce a \l;winged shooter\u object\botfj;.
+9) Eliminate all worms.
+10) Go back to your ship and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mscrys3.txt b/help/D/mscrys3.txt
new file mode 100644
index 00000000..b015bb5a
--- /dev/null
+++ b/help/D/mscrys3.txt
@@ -0,0 +1,7 @@
+\b;Walkthrough
+If you lose the bot, it will drop the black box somewhere southwest of your spaceship on a region surrounded by crystals.
+
+In case your power runs out before you can bring the black box back, use the second grabber left on the spaceship.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mscrys4.txt b/help/D/mscrys4.txt
new file mode 100644
index 00000000..cf8c5f7c
--- /dev/null
+++ b/help/D/mscrys4.txt
@@ -0,0 +1,7 @@
+\b;Walkthrough
+Somewhere northeast in the valley itself you should come across a fully functional \l;power station\u object\station;. Northwest you will find several \l;power cells\u object\power;.
+
+A few shooters in working condition have been abandoned in and around the same area in the valley; use them to shoot all the ants. With the \l;winged grabber\u object\botgj;, you can then retrieve the \l;black box\u object\bbox; that is located behind the derelict spaceship and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mslune1.txt b/help/D/mslune1.txt
new file mode 100644
index 00000000..b97ffbec
--- /dev/null
+++ b/help/D/mslune1.txt
@@ -0,0 +1,15 @@
+\b;Walkthrough
+In order to build the \l;research center\u object\research;, drop a \l;titanium cube\u object\titan; on a flat surface not too far from the spaceship. \l;You\u object\human; can carry the cube yourself, or use the available \l;grabber\u object\botgr;.
+
+If you used the bot, move it away from the cube in order not to interfere with the construction. To shift the selection from the bot to yourself (remember that only you can build), use \key;\key human;\norm;.
+
+Position yourself close to the \l;titanium cube\u object\titan; and build a \l;research center\u object\research; \button 163;. Drop a \l;power cell\u object\power; on the \l;research center\u object\research;, select the building and click the \button 65; symbol in order to perform the .
+
+Build a \l;bot factory\u object\factory; in the same way, and drop a \l;titanium cube\u object\titan; in the center. Build a \l;winged grabber\u object\botgj; with the \button 139; symbol, and power it with a \l;power cell\u object\power;.
+
+It may be preferable to scout the area yourself in order to save power. You'll find the chunks of titanium ore at the bottom of a few craters located north of the spaceship. A \l;flag\u object\flag; may help you pin down the spot faster on subsequent trips.
+
+Collect 4 chunks of \l;titanium ore\u object\titanore; and bring them back aboard your \l;spaceship\u object\base;. Take the \l;winged grabber\u object\botgj; and the \l;wheeled grabber\u object\botgr; along with you and take off \button 28;.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mslune2.txt b/help/D/mslune2.txt
new file mode 100644
index 00000000..e46a8501
--- /dev/null
+++ b/help/D/mslune2.txt
@@ -0,0 +1,7 @@
+\b;Walkthrough
+If your bot suddenly explodes, this means that you have hit the steel structures too often. Drive more slowly, so your bot will not be damaged even if you bump into an obstacle.
+
+If you can not take off after you have completed the training, this means that you did not pass through all the targets. Go round one more time, and pass through the targets where the cross is left in the center.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mslune3.txt b/help/D/mslune3.txt
new file mode 100644
index 00000000..e46a8501
--- /dev/null
+++ b/help/D/mslune3.txt
@@ -0,0 +1,7 @@
+\b;Walkthrough
+If your bot suddenly explodes, this means that you have hit the steel structures too often. Drive more slowly, so your bot will not be damaged even if you bump into an obstacle.
+
+If you can not take off after you have completed the training, this means that you did not pass through all the targets. Go round one more time, and pass through the targets where the cross is left in the center.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mslune4.txt b/help/D/mslune4.txt
new file mode 100644
index 00000000..7535c4d7
--- /dev/null
+++ b/help/D/mslune4.txt
@@ -0,0 +1,19 @@
+\b;Walkthrough
+1) Build a converter \button 162; with the only titanium cube available.
+
+2) Deposit one chunk of titanium ore at a time at the center of the platform and let the converter do the rest.
+
+3) Build a power station \button 164; with one of the newly converted titanium cubes.
+
+4) If you don't feel like looking for the black box yourself, build a radar \button 168; and the box will appear on your mini map somewhere north of your present location, at the bottom of a crater, next to a few derelict spacecraft and debris from the previous expedition.
+
+5) Place the grabbers at the center of the power station platform to recharge them. The cells should still have a little power left in them, just enough to radio-control the bots onto the platform.
+
+6) Radio-control the winged grabber to the black box and back.
+
+7) Gather both grabbers and the black box onto the spaceship platform and climb on board yourself.
+
+8) Take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/msorph1.txt b/help/D/msorph1.txt
new file mode 100644
index 00000000..28c154db
--- /dev/null
+++ b/help/D/msorph1.txt
@@ -0,0 +1,15 @@
+\b;Walkthrough
+1) Quickly build a \l;power captor\u object\captor; near the blue flag.
+All subsequent buildings should be erected within the \button 41; covered by the power captor.
+2) Carry some empty \l;power cells\u object\power; under the power captor. When lightning strikes, they will be recharged.
+3) Build a \l;derrick\u object\derrick;.
+4) Build a \l;converter\u object\convert;.
+5) Execute the program \c;CollectTitanium3\n; in order to produce \l;titanium\u object\titan;.
+6) Build a \l;bot factory\u object\factory;.
+7) Manufacture a \l;winged orga shooter\u object\botoj;.
+8) Build a \l;radar\u object\radar;.
+9) Locate and terminate all \l;ants\u object\ant;.
+10) Return to your \l;spaceship\u object\base; and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/msorph2.txt b/help/D/msorph2.txt
new file mode 100644
index 00000000..486d4475
--- /dev/null
+++ b/help/D/msorph2.txt
@@ -0,0 +1,9 @@
+\b;Walkthrough
+You will find a \l;radar\u object\radar;, a \l;power captor\u object\captor;, a \l;power cell\u object\power; and a \l;winged orga shooter\u object\botoj; in the valley south of the spaceship. This will allow you to kill the ants close to the spaceship and to locate the \l;black box\u object\bbox; in the north next to the remains of the first expedition spaceship.
+
+Build a succession of \l;power captors\u object\captor; along the natural path offered by the northern mountain peaks. 5 or 6 captors should offer sufficient protection against lightning.
+
+Bring the black box back aboard your \l;spaceship\u object\base; and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mssaari1.txt b/help/D/mssaari1.txt
new file mode 100644
index 00000000..6bfb8087
--- /dev/null
+++ b/help/D/mssaari1.txt
@@ -0,0 +1,22 @@
+\b;Walkthrough
+1) You'll find a \l;titanium cube\u object\titan; left in a smashed up bot factory. Use it to build a \l;power station\u object\station;.
+
+2) The \l;recycler\u object\botrecy; is designed to convert derelicts back into usable titanium cubes.
+
+3) Build both a \l;repair center\u object\repair; and a \l;radar\u object\radar;.
+
+4) Recharge one of the \l;power cells\u object\power; available and power a \l;winged shooter\u object\botfj;.
+
+5) Eliminate all \l;ants\u object\ant;. Note that you should recharge and repair the shooter regularly. Check your levels.
+
+6) Fully charge the \l;grabber\u object\botgr;'s power cell, then radio-control it to the summit...
+ a) Access the first level by ramp on west;
+ b) On first level travel east to find second ramp;
+ c) On second level travel south to find third ramp;
+ d) On third level travel west for access to summit;
+...then, with the chunk, straight back to the spaceship by the most direct route so as to save the remaining power.
+
+7) Climb aboard the ship yourself and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mssaari2.txt b/help/D/mssaari2.txt
new file mode 100644
index 00000000..22371a78
--- /dev/null
+++ b/help/D/mssaari2.txt
@@ -0,0 +1,9 @@
+\b;Walkthrough
+Execute immediately the program \c;KillAnt1\n; on the \l;wheeled shooter\u object\botfr;; it will take care of the first wave of attack coming from west.
+
+Then build two \l;defense towers\u object\tower; one in the north of the \l;spaceship\u object\base;, the other one in the south (you have to do this VERY quickly). While \l;you\u object\human; are building, use the \l;grabber\u object\botgr; to get a \l;power cell\u object\power;.
+
+As soon as the successive waves of attack, made up of about fifteen \l;ants\u object\ant;, are gone, you have time to take care of the ants that did not attack. Build a \l;radar\u object\radar; in order to spot them, and a \l;converter\u object\convert;, a \l;bot factory\u object\factory;, a \l;power station\u object\station; and a \l;winged shooter\u object\botfj; in order to get rid of them...
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mssaari3.txt b/help/D/mssaari3.txt
new file mode 100644
index 00000000..84f2fa66
--- /dev/null
+++ b/help/D/mssaari3.txt
@@ -0,0 +1,9 @@
+\b;Walkthrough
+You should build a \l;radar\u object\radar; first.
+
+The \l;ants\u object\ant; appear to be running away from you. Try to circle around each one of them until they find themselves trapped between you and a \l;mine\u object\mine;. They'll opt for the mine and blow themselves up.
+
+Then bring the \l;black box\u object\bbox; aboard your ship. It is next to the derelict spaceship.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/msterra1.txt b/help/D/msterra1.txt
new file mode 100644
index 00000000..a7487ad7
--- /dev/null
+++ b/help/D/msterra1.txt
@@ -0,0 +1,6 @@
+\b;Walkthrough
+Unfortunately no walkthrough has been provided for this mission.
+You are on your own...
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/msterra2.txt b/help/D/msterra2.txt
new file mode 100644
index 00000000..a7487ad7
--- /dev/null
+++ b/help/D/msterra2.txt
@@ -0,0 +1,6 @@
+\b;Walkthrough
+Unfortunately no walkthrough has been provided for this mission.
+You are on your own...
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/msterra3.txt b/help/D/msterra3.txt
new file mode 100644
index 00000000..a7487ad7
--- /dev/null
+++ b/help/D/msterra3.txt
@@ -0,0 +1,6 @@
+\b;Walkthrough
+Unfortunately no walkthrough has been provided for this mission.
+You are on your own...
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/msterra4.txt b/help/D/msterra4.txt
new file mode 100644
index 00000000..a7487ad7
--- /dev/null
+++ b/help/D/msterra4.txt
@@ -0,0 +1,6 @@
+\b;Walkthrough
+Unfortunately no walkthrough has been provided for this mission.
+You are on your own...
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/msterre1.txt b/help/D/msterre1.txt
new file mode 100644
index 00000000..3e7e0cc2
--- /dev/null
+++ b/help/D/msterre1.txt
@@ -0,0 +1,11 @@
+\b;Walkthrough
+To find the survival kit from your starting point :
+
+1) Follow the road heading south.
+2) Turn east (left) at the first crossroad.
+3) The survival kit is lying between the northern wall of Mission Control and the first tree on the right hand side of the road.
+
+Just position yourself close to it to successfully complete the drill.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/msterre2.txt b/help/D/msterre2.txt
new file mode 100644
index 00000000..a97023d8
--- /dev/null
+++ b/help/D/msterre2.txt
@@ -0,0 +1,11 @@
+\b;Walkthrough
+Walk down the street that runs beside \l;Mission Control\u object\Huston;. You will find a \l;titanium cube\u object\titan; on the left hand side of the road, right after the \l;grabber bot\u object\botgr;.
+
+1) Face the cube. Click on the first button at the bottom left of your screen: \button 163; .
+2) Walk further down the road. The second cube is on the right past the four green \l;power cells\u object\power;.
+3) Repeat 1) but click on the second button: \button 160; .
+
+As soon as both buildings are completed, the mission is at an end.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/msterre3.txt b/help/D/msterre3.txt
new file mode 100644
index 00000000..509ae869
--- /dev/null
+++ b/help/D/msterre3.txt
@@ -0,0 +1,28 @@
+\b;Walkthrough
+Before taking off, you need to bring the following aboard your spaceship:
+
+1) \l;Black box\u object\bbox;.
+2) \l;Wheeled\u object\botgr; and \l;tracked\u object\botgc; grabbers.
+3) \l;Yourself\u object\human;.
+
+Here is a detailed breakdown of the operations:
+1) Power the \l;research center\u object\research; with one of the green \l;power cells\u object\power;.
+2) Activate the \l;research center\u object\research; then click on the \button 64; button.
+3) Place a \l;titanium cube\u object\titan; inside the \l;bot factory\u object\factory;.
+4) Step back out and activate the \l;bot factory\u object\factory;.
+5) Click on the \button 138; button.
+6) Power the \l;tracked grabber\u object\botgc; with a brand new \l;power cell\u object\power;.
+7) Radio-control the \l;tracked grabber\u object\botgc; to the top of the mountain in the south-west.
+8) Bring the \l;black box\u object\bbox; back aboard your \l;spaceship\u object\base;.
+9) Radio-control both the \l;tracked\u object\botgc; and the \l;wheeled\u object\botgr; grabbers onto the platform.
+10) Climb aboard the \l;spaceship\u object\base; yourself.
+11) Take off!
+
+In order to take off, select the \l;spaceship\u object\base;, provided that it is visible, by clicking on it. If it is not visible, you need to click one of the buttons in the upper left corner of your screen. The blue triangle \button 130; allows you to alternate between symbols for bots and symbols for buildings. Click once to shift to the list. A \button 171; symbol will now appear. Click on the button to select it.
+
+Once the spaceship is selected, click on the larger \button 28; button in the lower center of your screen. If the objects mentioned above as well as yourself are indeed standing on deck, takeoff will take place.
+
+No object or bot should hinder the closing of the eight large panel doors.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mstropi1.txt b/help/D/mstropi1.txt
new file mode 100644
index 00000000..ca0330be
--- /dev/null
+++ b/help/D/mstropi1.txt
@@ -0,0 +1,5 @@
+\b;Walkthrough
+Follow the path shown on your mini map. The explosive device lies at the bottom of a small valley populated by giant ants. They will probably attack you and you will probably lose consciousness. There is nothing you can really do about this.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mstropi2.txt b/help/D/mstropi2.txt
new file mode 100644
index 00000000..23bc0024
--- /dev/null
+++ b/help/D/mstropi2.txt
@@ -0,0 +1,21 @@
+\b;Walkthrough
+Here is a breakdown of the steps to follow to get back to the spaceship.
+
+1) Go round the lake, and head towards the green fluorescent globe. This globe is generated by a gravi-plant that will make flight impossible inside the globe.
+
+2) Follow the left flank of the valley, passing a pond on your right, and climb the small slope. On top you will be facing some giant ants: run as fast as you can towards another gravi-plant a little further on your right, your wounds will have time to heal later.
+
+3) Use your reactor to fly past the lake before the gravi-plant on your right.
+
+4) When you leave the gravi-plant, keep on the left-hand side of the lake, and follow the shore until you reach a peninsula adorned with fern-like plants.
+
+5) Do some island-hopping across the larger lake. Aim for the trees in order to avoid falling into the water on the other side of the island. The last island is 50 cm under water but you can still land on it without having your head submerged.
+
+6) The path continues to the left. A giant ant is waiting for you there, but it will not do you much harm.
+
+7) Give your reactor enough time to cool down, then fly across the small lake. Try to land as high on the right as you can, this is the best way not to fall into the second lake.
+
+8) Cross the second lake, get aboard the spaceship, and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mstropi3.txt b/help/D/mstropi3.txt
new file mode 100644
index 00000000..852a973e
--- /dev/null
+++ b/help/D/mstropi3.txt
@@ -0,0 +1,13 @@
+\b;Walkthrough
+1) There is a \l;titanium cube\u object\titan; west of your present location, near the blue flag/blue cross on your mini map. You don't need to move the cube, just build a \l;power station\u object\station; right there on the spot.
+
+2) With the titanium cubes on the spaceship, build a \l;research center\u object\research; and execute the \button 67;.
+
+3) Build a \l;bot factory\u object\factory; and a \l;winged shooter\u object\botfj;. If this bot is destroyed by enemy fire, you will find some additional \l;titanium cubes\u object\titan; in a small foggy valley northwest of the spaceship. You can bring them back with the \l;winged grabber\u object\botgj;\n;.
+
+4) Build a \l;radar station\u object\radar; in order to see the location of the ants on the mini-map, and let the hunt begin. Be careful not to run out of energy and not to overheat the reactor of a bot while over water. If a bot falls into deep water, it explodes.
+
+5) Once you have killed all the ants, get on board and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mstropi4.txt b/help/D/mstropi4.txt
new file mode 100644
index 00000000..6b73f89d
--- /dev/null
+++ b/help/D/mstropi4.txt
@@ -0,0 +1,7 @@
+\b;Walkthrough
+If your bot suddenly explodes, this means that you have hit the steel structures too often. Drive more slowly, so your bot will not be damaged even if you bump into an obstacle.
+
+If you can not take off after you completed the training, this means that you have not hit all the targets. Go round one more time, and check if any of the explosive devices or crosses in the center of the steel structures are left.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/mstropi5.txt b/help/D/mstropi5.txt
new file mode 100644
index 00000000..06802556
--- /dev/null
+++ b/help/D/mstropi5.txt
@@ -0,0 +1,15 @@
+\b;Walkthrough
+1) Locate the \l;black box\u object\bbox; on your own. You can try to spot it from above, using your jet engine, or dive into the water.
+2) Build a \l;converter\u object\convert; near the chunks of titanium ore. You'll find them in the vicinity of the spaceship to the east.
+3) Produce two \l;cubes\u object\titan;.
+4) Build a \l;bot factory\u object\factory; not too far from the black box.
+5) Manufacture a \l;subber\u object\botsub;.
+6) Bring the black box back on board.
+7) Take off.
+
+The black box is lying at the bottom of a small lake, northeast of the spaceship.
+
+You can build the bot factory right beside the lake, on the south bank.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/msvolca1.txt b/help/D/msvolca1.txt
new file mode 100644
index 00000000..7c606a2e
--- /dev/null
+++ b/help/D/msvolca1.txt
@@ -0,0 +1,15 @@
+\b;Walkthrough
+1) Start by recharging a \l;regular power cell\u object\power; and power the \l;research center\u object\research;. Use it to research the technology for the building of a \l;nuclear plant\u object\nuclear; \button 170;.
+
+2) Produce a \l;wheeled grabber\u object\botgr;.
+
+3) Find some \l;uranium ore\u object\uranore; northwest of your position. The nuclear plant will then transform it into \l;nuclear power cells\u object\atomic; of a longer duration.
+
+4) Power a \l;wheeled shooter\u object\botfr; with one of your new nuclear cells. Dispatch it to kill all intruding \l;spiders\u object\spider; along the way.
+
+5) A \l;radar\u object\radar; is optional but could turn out useful to mark the position of the spiders on your mini map.
+
+6) A wheeled grabber should be part of the expedition. It will both clear the way cluttered with \l;titanium ore\u object\titanore; and bring the \l;explosive device\u object\tnt; back.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/msvolca2.txt b/help/D/msvolca2.txt
new file mode 100644
index 00000000..319cd4db
--- /dev/null
+++ b/help/D/msvolca2.txt
@@ -0,0 +1,19 @@
+\b;Walkthrough
+1) Quickly build a \l;defense tower\u object\tower; north of your spaceship. After you \l;powered\u object\power; it, execute the program \c;ServiceTower1\n; on one of the \l;grabbers\u object\botgr; which will recharge the power cell when it is empty. Place another power cell 2 m north of the tower as a first target for the attacking wasps.
+
+2) Build a \l;power station\u object\station; close to the defense tower.
+
+3) Build a \l;converter\u object\convert; south of the spaceship and execute the program \c;CollectTitanium3\n; on the second \l;grabber\u object\botgr; in order to produce some \l;titanium\u object\titan;.
+
+4) Build a \l;bot factory\u object\factory; and a \l;winged shooter\u object\botfj; to eliminate the \l;ants\u object\ant;.
+
+5) Use a \l;winged grabber\u object\botgj; to bring back some \l;organic matter\u object\bullet; from the island in the middle of the lava lake.
+
+6) Build an \l;autolab\u object\labo;, drop the \l;organic matter\u object\bullet; on the platform and click the button \button 109; in order to develop the blueprints for legged bots.
+
+7) As soon as the organic matter has been analyzed, produce a \l;legged grabber\u object\botgs; and bring it aboard the spaceship.
+
+8) Take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/msvolca3.txt b/help/D/msvolca3.txt
new file mode 100644
index 00000000..bcd857b8
--- /dev/null
+++ b/help/D/msvolca3.txt
@@ -0,0 +1,11 @@
+\b;Walkthrough
+1) Power a \l;legged shooter\u object\botfs;. There is even a \l;nuclear cell\u object\atomic; left behind the \l;bot factory\u object\factory;.
+
+2) Climb the northern cliff and kill a few \l;ants\u object\ant;. The best access is from the east.
+
+3) Keep going until all ants are out of the way.
+
+4) Climb the northern cliff with a \l;legged grabber\u object\botgs; and retrieve the \l;black box\u object\bbox; that you will find in the derelict bot factory.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/msvolca4.txt b/help/D/msvolca4.txt
new file mode 100644
index 00000000..4000a249
--- /dev/null
+++ b/help/D/msvolca4.txt
@@ -0,0 +1,13 @@
+\b;Walkthrough
+A gap in the northwest mountain leads the way to a lake of boiling lava.
+
+Just hop from one rocky island to the next. Keep checking your reactor, let it cool off completely before taking off again. The mini map will help you to figure out where the closest island is.
+
+In case of an ant attack, don't worry too much. Just take the time for your reactor to cool off, without lingering longer than necessary, and your built-in shield should do its duty. However we advise you to save the game from time to time (key Esc, and "Save"), so you will not have to start from the beginning in case of a landing in the lava lake.
+
+The bot is at the westernmost point on your map though you'll have to take a roundabout route to reach it. A \l;nuclear power cell\u object\atomic; lies nearby.
+
+You don't have to radio-control the bot back to the spaceship by the same way you came because its reactor has a greater range than yours. One or two stops may still be needed and watch out for those ants.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/msvolca5.txt b/help/D/msvolca5.txt
new file mode 100644
index 00000000..938b80b0
--- /dev/null
+++ b/help/D/msvolca5.txt
@@ -0,0 +1,11 @@
+\b;Walkthrough
+Everything is blowing up around you. You need to leave the old basecamp as quickly as possible. Just retreat the same way you came.
+
+\l;Ants\u object\ant; are fairly easy to avoid. If you're badly hit, find a quiet spot and wait until your shield has regenerated.
+
+\l;Spiders\u object\spider; are a bit tougher but also more stupid. As soon as they see you, they burst their abdomen, dying in the process. If one fragment hits you, you'll die too. One risky but efficient method to rid yourself of a spider consists in moving dangerously close and, when the spider's abdomen starts inflating, swiftly fly backwards to safety.
+
+As soon as you have reached a quiet island, you can use the \l;winged orga shooter\u object\botoj; to clear your way of hostile insects. Be careful not to lose it, otherwise the whole mission would be in vain.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/msvolca6.txt b/help/D/msvolca6.txt
new file mode 100644
index 00000000..b5b7fcb1
--- /dev/null
+++ b/help/D/msvolca6.txt
@@ -0,0 +1,9 @@
+\b;Walkthrough
+It is safer for \l;you\u object\human; to stay on the \l;spaceship\u object\base;. You may get hit a few times but not fatally.
+
+Put your new \l;winged orga shooter\u object\botoj; to good use and don't waste any time. First shoot the ants on your right, then turn clockwise around the spaceship, flying at low altitude.
+
+If you can not do it this way, place the \l;winged orga shooter\u object\botoj; on a safe place north of the spaceship, then save yourself. You can then take your time to shoot the ants one after another; they can do no harm to the spaceship and the black box.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/D/navig.txt b/help/D/navig.txt
new file mode 100644
index 00000000..63622750
--- /dev/null
+++ b/help/D/navig.txt
@@ -0,0 +1,22 @@
+\b;Navigation
+The three buttons on the upper left-hand corner of the screen allow you to navigate in the different texts of the help file:
+
+\button 30; Home
+Get back to the home page, i.e. the first page that was displayed, for example when you hit the \key;\key help;\norm; or \key;\key prog;\norm; key.
+
+\button 55; Previous
+Get back to the previous page, i.e. the page that was displayed before you clicked on a link.
+
+\button 48; Next
+Get again to the next page, after you used the "Home" or "Previous" button.
+
+\t;Remark
+When a button is gray, this means that it can not be used at this precise moment. For example, when you are in the home page, the "Home" button is gray, because it does not make sense to use it.
+
+This remark is valid for all buttons in COLOBOT.
+
+\t;Text scrolling
+If your mouse is equipped with a wheel, you can use it to scroll the text up and down. Otherwise, use the arrow keys and the scroll bar on the right-hand side of the screen.
+
+\t;Font size
+The cursor on the upper side of the screen allows you to change the font size of the text.
diff --git a/help/D/object/ant.txt b/help/D/object/ant.txt
new file mode 100644
index 00000000..87b82f40
--- /dev/null
+++ b/help/D/object/ant.txt
@@ -0,0 +1,11 @@
+\b;Ant
+\image ant 8 8;
+Ants shoot tiny corrosive balls that eventually gnaw into the protective shielding of bots and buildings, causing them to explode.
+
+\l;You\u object\human; can resist their attack much longer than most buildings and bots, and your protective shield will be restored as your wounds heal. However, if you stay too long in their range or if there are too many of them, your life is in great danger.
+
+\t;Object \l;Category\u cbot\category;
+\c;AlienAnt\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/atomic.txt b/help/D/object/atomic.txt
new file mode 100644
index 00000000..367dff0e
--- /dev/null
+++ b/help/D/object/atomic.txt
@@ -0,0 +1,15 @@
+\b;Nuclear Power Cell
+\image atomic 4 4;
+A nuclear power cell supplies the bots and some buildings with energy.
+Its capacity is 100 times that of a \l;regular power cell\u object\power;.
+
+Nuclear power cells cannot be recharged or recycled. A \l;nuclear plant\u object\nuclear; and some \l;uranium ore\u object\uranore; is needed to produce a new and fully charged nuclear power cell.
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Object \l;Category\u cbot\category;
+\c;NuclearCell\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/barrier.txt b/help/D/object/barrier.txt
new file mode 100644
index 00000000..14646cb0
--- /dev/null
+++ b/help/D/object/barrier.txt
@@ -0,0 +1,8 @@
+\b;Barrier
+The barrier is nothing more than an obstacle used in the exercises.
+
+\t;Object \l;Category\u cbot\category;
+\c;Barrier\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/base.txt b/help/D/object/base.txt
new file mode 100644
index 00000000..84577068
--- /dev/null
+++ b/help/D/object/base.txt
@@ -0,0 +1,11 @@
+\b;\button 171; Spaceship
+\image base 8 8;
+\l;Your\u object\human; means of transportation from one planet to the next, the only way to travel safely across the cosmos and accomplish your missions.
+
+In addition to yourself, the spaceship can carry bots and raw materials. Whenever a mission is completed, you must select the spaceship, then click on the command \button 28;.
+
+\t;Object \l;Category\u cbot\category;
+\c;SpaceShip\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/bbox.txt b/help/D/object/bbox.txt
new file mode 100644
index 00000000..4b4a8557
--- /dev/null
+++ b/help/D/object/bbox.txt
@@ -0,0 +1,14 @@
+\b;Black Box
+\image bbox 4 4;
+A black box is actually orange so as to be easier to identify and locate. Each \l;spaceship\u object\base; is equipped with a black box that records and stores information about the flight.
+
+A black box can also be used to leave important information. On every planet the first expedition has left a black box containing the coordinates of the planet it was heading towards next.
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Object \l;Category\u cbot\category;
+\c;BlackBox\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/botfc.txt b/help/D/object/botfc.txt
new file mode 100644
index 00000000..b95751e3
--- /dev/null
+++ b/help/D/object/botfc.txt
@@ -0,0 +1,20 @@
+\b;\button 144; Tracked Shooter
+\image botfc 8 8;
+Tracked bot equipped with a fireball cannon.
+
+The fireball cannon is an efficient weapon against most kinds of \l;enemies\u object\mother;. Use it sparingly though for it requires large amounts of energy. A \l;regular power cell\u object\power; will only allow you to shoot 4 fireball bursts.
+
+Tip : it is possible to move the mouse while shooting, so as to sweep a larger area.
+
+Tracked bots can ascend steep inclinations but they are quite slow and use a lot of energy. On flat ground for short distances, a \l;wheeled shooter\u object\botfr; is a better option. When it is possible to build \l;winged bots\u object\botfj;, these represent the best solution for long distances.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the fireball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;TrackedShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/botfj.txt b/help/D/object/botfj.txt
new file mode 100644
index 00000000..b852517d
--- /dev/null
+++ b/help/D/object/botfj.txt
@@ -0,0 +1,22 @@
+\b;\button 145; Winged Shooter
+\image botfj 8 8;
+Jet propelled flying bot equipped with a fireball cannon.
+
+The fireball cannon is an efficient weapon against most kinds of \l;enemies\u object\mother;. Use it sparingly though for it requires large amounts of energy. A \l;regular power cell\u object\power; will only allow you to shoot 4 fireball bursts.
+
+Tip : it is possible to move the mouse while shooting, so as to sweep a larger area.
+
+The display at the bottom of your screen indicates the temperature of the reactor. Keep an eye on it. If the reactor overheats, the engine will stop and the bot will crash.
+
+Winged bots can fly across natural obstacles such as mountains or lakes but their energy supply is used up quickly. They're slow on the ground. To cover a short distance that will not call for flying, it is recommended to use a \l;wheeled shooter\u object\botfr; instead.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;jet\u cbot\jet;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the fireball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WingedShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/botfr.txt b/help/D/object/botfr.txt
new file mode 100644
index 00000000..43cea003
--- /dev/null
+++ b/help/D/object/botfr.txt
@@ -0,0 +1,20 @@
+\b;\button 143; Wheeled Shooter
+\image botfr 8 8;
+Wheeled bot equipped with a fireball cannon.
+
+The fireball cannon is an efficient weapon against most kinds of \l;enemies\u object\mother;. Use it sparingly though for it requires large amounts of energy. A \l;regular power cell\u object\power; will only allow you to shoot 4 fireball bursts.
+
+Tip : it is possible to move the mouse while shooting, so as to sweep a larger area.
+
+Wheels constitute a standard, fast and energy-saving mode of propulsion, which is perfectly adapted for a relatively flat terrain. Whenever the terrain gets sloped, it is advised to use a \l;winged shooter\u object\botfj; instead, or, if this is impossible, a \l;tracked shooter\u object\botfc;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the fireball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WheeledShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/botfs.txt b/help/D/object/botfs.txt
new file mode 100644
index 00000000..5a5c2728
--- /dev/null
+++ b/help/D/object/botfs.txt
@@ -0,0 +1,20 @@
+\b;\button 151; Legged Shooter
+\image botfs 8 8;
+Ant-legged creeping bot equipped with a fireball cannon.
+
+The fireball cannon is an efficient weapon against most kinds of \l;enemies\u object\mother;. Use it sparingly though for it requires large amounts of energy. A \l;regular power cell\u object\power; will only allow you to shoot 4 fireball bursts.
+
+Tip : it is possible to move the mouse while shooting, so as to sweep a larger area.
+
+A moving legged shooter uses up half as much energy as a \l;wheeled shooter\u object\botfr;. A legged bot is also perfectly adapted to climb the steepest slopes.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the fireball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;LeggedShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/botgc.txt b/help/D/object/botgc.txt
new file mode 100644
index 00000000..8abb41c7
--- /dev/null
+++ b/help/D/object/botgc.txt
@@ -0,0 +1,33 @@
+\b;\button 138; Tracked Grabber
+\image botgc 8 8;
+Tracked bot equipped with an operating arm.
+
+\button 32; Grabs an object or lays it down again, at a position that is determined by one of the following options :
+\button 33; The object is lying in front of the bot, on the ground or on the back of a second bot.
+\button 35; The object is the bot's own power cell.
+\button 34; The object is lying behind the bot, on the ground.
+
+The following objects can be transported :
+o \l;Titanium ore\u object\titanore;.
+o \l;Uranium ore\u object\uranore;.
+o \l;Cube of titanium\u object\titan;.
+o \l;Regular power cell\u object\power;.
+o \l;Nuclear power cell\u object\atomic;.
+o \l;Black box\u object\bbox;.
+o \l;Keys A, B, C, and D\u object\key;.
+o \l;Organic matter\u object\bullet;.
+
+Tracked bots can ascend steep inclinations but they are quite slow and use much energy. On flat ground for short distances, a \l;wheeled grabber\u object\botgr; is a better option. When it is possible to build \l;winged bots\u object\botgj;, these represent the best solution for long distances.
+
+A grabber won't function underwater. What you'll need instead is a \l;subber\u object\botsub;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the operating arm, use \c;\l;grab\u cbot\grab;\n; and \c;\l;drop\u cbot\drop;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;TrackedGrabber\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/botgj.txt b/help/D/object/botgj.txt
new file mode 100644
index 00000000..f237bfaf
--- /dev/null
+++ b/help/D/object/botgj.txt
@@ -0,0 +1,35 @@
+\b;\button 139; Winged Grabber
+\image botgj 8 8;
+Jet propelled flying bot equipped with an operating arm.
+
+\button 32; Grabs an object or lays it down again, at a position that is determined by one of the following options :
+\button 33; The object is lying in front of the bot, on the ground or on the back of a second bot.
+\button 35; The object is the bot's own power cell.
+\button 34; The object is lying behind the bot, on the ground.
+
+The following objects can be transported :
+o \l;Titanium ore\u object\titanore;.
+o \l;Uranium ore\u object\uranore;.
+o \l;Cube of titanium\u object\titan;.
+o \l;Regular power cell\u object\power;.
+o \l;Nuclear power cell\u object\atomic;.
+o \l;Black box\u object\bbox;.
+o \l;Keys A, B, C, and D\u object\key;.
+o \l;Organic matter\u object\bullet;.
+
+The display at the bottom of your screen indicates the temperature of the reactor. Keep an eye on it. If the reactor overheats, the engine will stop and the bot will crash.
+
+Winged bots can fly across natural obstacles such as mountains or lakes but their energy supply is used up quickly. They're slow on the ground. To cover a short distance that will not call for flying, it is recommended to use a \l;wheeled grabber\u object\botgr; instead.
+
+A grabber won't function underwater. What you'll need instead is a \l;subber\u object\botsub;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the operating arm, use \c;\l;grab\u cbot\grab;\n; and \c;\l;drop\u cbot\drop;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WingedGrabber\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/botgr.txt b/help/D/object/botgr.txt
new file mode 100644
index 00000000..8dcc5991
--- /dev/null
+++ b/help/D/object/botgr.txt
@@ -0,0 +1,33 @@
+\b;\button 137; Wheeled Grabber
+\image botgr 8 8;
+Wheeled bot equipped with an operating arm.
+
+\button 32; Grabs an object or lays it down again, at a position that is determined by one of the following options :
+\button 33; The object is lying in front of the bot, on the ground or on the back of a second bot.
+\button 35; The object is the bot's own power cell.
+\button 34; The object is lying behind the bot, on the ground.
+
+The following objects can be transported :
+o \l;Titanium ore\u object\titanore;.
+o \l;Uranium ore\u object\uranore;.
+o \l;Converted titanium\u object\titan;.
+o \l;Regular power cell\u object\power;.
+o \l;Nuclear power cell\u object\atomic;.
+o \l;Black box\u object\bbox;.
+o \l;Keys A, B, C, and D\u object\key;.
+o \l;Organic matter\u object\bullet;.
+
+Wheels constitute a standard, fast and energy-saving mode of propulsion, which is perfectly adapted for a relatively flat terrain. Whenever the terrain gets sloped, it is advised to use a \l;winged shooter\u object\botfj; instead, or, if this is impossible, a \l;tracked shooter\u object\botfc;.
+
+A grabber won't function underwater. What you'll need instead is a \l;subber\u object\botsub;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the operating arm, use \c;\l;grab\u cbot\grab;\n; and \c;\l;drop\u cbot\drop;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WheeledGrabber\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/botgs.txt b/help/D/object/botgs.txt
new file mode 100644
index 00000000..b839c9fb
--- /dev/null
+++ b/help/D/object/botgs.txt
@@ -0,0 +1,34 @@
+\b;\button 150; Legged Grabber
+\image botgs 8 8;
+Ant-legged creeping bot equipped with an operating arm.
+
+\button 32; Grabs an object or lays it down again, at a position that is determined by one of the following options :
+\button 33; The object is lying in front of the bot, on the ground or on the back of a second bot.
+\button 35; The object is the bot's own power cell.
+\button 34; The object is lying behind the bot, on the ground.
+
+The following objects can be transported :
+o \l;Titanium ore\u object\titanore;.
+o \l;Uranium ore\u object\uranore;.
+o \l;Converted titanium\u object\titan;.
+o \l;Regular power cell\u object\power;.
+o \l;Nuclear power cell\u object\atomic;.
+o \l;Black box\u object\bbox;.
+o \l;Keys A, B, C, and D\u object\key;.
+o \l;Organic matter\u object\bullet;.
+
+A moving legged grabber uses up half as much energy as a \l;wheeled grabber\u object\botgr;. A legged bot is also perfectly adapted to climb the steepest slopes.
+
+A grabber won't function underwater. What you'll need instead is a \l;subber\u object\botsub;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the operating arm, use \c;\l;grab\u cbot\grab;\n; and \c;\l;drop\u cbot\drop;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;LeggedGrabber\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
+
diff --git a/help/D/object/botoc.txt b/help/D/object/botoc.txt
new file mode 100644
index 00000000..43fecf54
--- /dev/null
+++ b/help/D/object/botoc.txt
@@ -0,0 +1,18 @@
+\b;\button 154; Tracked Orga Shooter
+\image botoc 8 8;
+Tracked bot equipped with an orgaball cannon.
+
+The orgaball cannon is more effective than the \l;fireball cannon\u object\botfc;. It shoots small spheres of corrosive \l;organic matter\u object\bullet;. A \l;regular power cell\u object\power; will allow you to shoot 11 orgaball bursts.
+
+Tracked bots can ascend steep inclinations but they are quite slow and use a lot of energy. On flat ground for short distances, a \l;wheeled orga shooter\u object\botor; is a better option. When it is possible to build \l;winged bots\u object\botoj;, these represent the best solution for long distances.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the orgaball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;TrackedOrgaShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/botoj.txt b/help/D/object/botoj.txt
new file mode 100644
index 00000000..70f7b99d
--- /dev/null
+++ b/help/D/object/botoj.txt
@@ -0,0 +1,20 @@
+\b;\button 155; Winged Orga Shooter
+\image botoj 8 8;
+Jet propelled flying bot equipped with an orgaball cannon.
+
+The orgaball cannon is more effective than the \l;fireball cannon\u object\botfj;. It shoots small spheres of corrosive \l;organic matter\u object\bullet;. A \l;regular power cell\u object\power; will allow you to shoot 11 orgaball bursts.
+
+The display at the bottom of your screen indicates the temperature of the reactor. Keep an eye on it. If the reactor overheats, the engine will stop and the bot will crash.
+
+Winged bots can fly across natural obstacles such as mountains or lakes but their energy supply is used up quickly. They're slow on the ground. To cover a short distance that will not call for flying, it is recommended to use a \l;wheeled orga shooter\u object\botor; instead.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;jet\u cbot\jet;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the orgaball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WingedOrgaShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/botor.txt b/help/D/object/botor.txt
new file mode 100644
index 00000000..8da2ce7c
--- /dev/null
+++ b/help/D/object/botor.txt
@@ -0,0 +1,19 @@
+\b;\button 153; Wheeled Orga Shooter
+\image botor 8 8;
+Wheeled bot equipped with an orgaball cannon.
+
+The orgaball cannon is more effective than the \l;fireball cannon\u object\botfr;. It shoots small spheres of corrosive \l;organic matter\u object\bullet;. A \l;regular power cell\u object\power; will allow you to shoot 11 orgaball bursts.
+
+Wheels constitute a standard, fast and energy-saving mode of propulsion, which is perfectly adapted for a relatively flat terrain. Whenever the terrain gets sloped, it is advised to instead use a \l;winged orga shooter\u object\botoj;, or, if this is impossible, a \l;tracked orga shooter\u object\botoc;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the orgaball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WheeledOrgaShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
+
diff --git a/help/D/object/botos.txt b/help/D/object/botos.txt
new file mode 100644
index 00000000..a1ff6d09
--- /dev/null
+++ b/help/D/object/botos.txt
@@ -0,0 +1,18 @@
+\b;\button 156; Legged Orga Shooter
+\image botos 8 8;
+Ant-legged creeping bot equipped with an orgaball cannon.
+
+The orgaball cannon is more effective than the \l;fireball cannon\u object\botfs;. It shoots small spheres of corrosive \l;organic matter\u object\bullet;. A \l;regular power cell\u object\power; will allow you to shoot 11 orgaball bursts.
+
+A moving legged orga shooter uses up half as much energy as a \l;wheeled orga shooter\u object\botor;. A legged bot is also perfectly adapted to climb the steepest slopes.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the orgaball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;LeggedOrgaShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/botphaz.txt b/help/D/object/botphaz.txt
new file mode 100644
index 00000000..232463e1
--- /dev/null
+++ b/help/D/object/botphaz.txt
@@ -0,0 +1,14 @@
+\b;\button 147; Phazer Shooter
+\image botphaz 8 8;
+Tracked bot equipped with a very powerful phazer cannon, efficient against most kinds of enemies. When you aim upward, it can shoot up to 60 meters. It is the only weapon that can kill the \l;Alien Queen\u object\mother;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the phazer cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;PhazerShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/botrecy.txt b/help/D/object/botrecy.txt
new file mode 100644
index 00000000..68d06f26
--- /dev/null
+++ b/help/D/object/botrecy.txt
@@ -0,0 +1,14 @@
+\b;\button 148; Recycler
+\image botrecy 8 8;
+Tracked bot designed to convert a \l;derelict bot\u object\wreck; back into a reusable \l;titanium cube\u object\titan;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the recycling of a derelict bot, use \c;\l;recycle\u cbot\recycle;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;RecyclerBot\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/botsc.txt b/help/D/object/botsc.txt
new file mode 100644
index 00000000..5d6424ea
--- /dev/null
+++ b/help/D/object/botsc.txt
@@ -0,0 +1,20 @@
+\b;\button 141; Tracked Sniffer
+\image botsc 8 8;
+Tracked bot equipped to prospect the geological structure of the subsoil. Whenever it locates something of use, the sniffer lays down the following marks:
+
+- a \l;red cross\u object\stonspot; -> \l;titanium ore\u object\titanore;.
+- a \l;yellow circle\u object\uranspot; -> \l;uranium ore\u object\uranore;.
+- a \l;green cross\u object\enerspot; -> energy deposit, useful for a \l;power station\u object\station; or a \l;power plant\u object\energy;.
+
+Tracked bots can ascend steep inclinations but they are quite slow and use a lot of energy. On flat ground for short distances, a \l;wheeled sniffer\u object\botsr; is a better option. When it is possible to build \l;winged bots\u object\botsj;, these represent the best solution for long distances.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the sniffing arm, use \c;\l;sniff\u cbot\sniff;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;TrackedSniffer\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/botshld.txt b/help/D/object/botshld.txt
new file mode 100644
index 00000000..d1bcdaa8
--- /dev/null
+++ b/help/D/object/botshld.txt
@@ -0,0 +1,18 @@
+\b;\button 157; Shielder
+\image botshld 8 8;
+Tracked bot designed to protect and defend against all \l;enemy\u object\mother; attacks within a perimeter of 10 to 25 meters. The individual shields of bots and buildings are re-energized through the shielder's defensive actions. This bot is the only way to get through narrow passages adorned with poisonous green mushrooms.
+
+A \l;regular power cell\u object\power; allows for a 20-second activity span with a radius of 25 meters, much too short in most cases. A \l;nuclear power cell\u object\atomic; is of course more suited to this bot.
+
+The energy consumption is proportional to the radius of the protective sphere. With a radius of 10 meters, the bot can work 2.5 times longer than with the maximum radius of 25 meters.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the deployment of the shield, use \c;\l;shield\u cbot\shield;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;Shielder\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/botsj.txt b/help/D/object/botsj.txt
new file mode 100644
index 00000000..9085244f
--- /dev/null
+++ b/help/D/object/botsj.txt
@@ -0,0 +1,22 @@
+\b;\button 142; Winged Sniffer
+\image botsj 8 8;
+Jet propelled flying bot equipped to prospect the geological structure of the subsoil. Whenever it locates something of use, the sniffer lays down the following marks:
+
+- a \l;red cross\u object\stonspot; -> \l;titanium ore\u object\titanore;.
+- a \l;yellow circle\u object\uranspot; -> \l;uranium ore\u object\uranore;.
+- a \l;green cross\u object\enerspot; -> energy deposit, useful for a \l;power station\u object\station; or a \l;power plant\u object\energy;.
+
+The display at the bottom of your screen indicates the temperature of the reactor. Keep an eye on it. If the reactor overheats, the engine stops and the bot crashes.
+
+Winged bots can fly across natural obstacles such as mountains or lakes but their energy supply uses up quickly. They're slow on the ground. To cover a short distance that will not call for flying, it is recommended to use a \l;wheeled sniffer\u object\botsr; instead.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;jet\u cbot\jet;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the sniffing arm, use \c;\l;sniff\u cbot\sniff;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WingedSniffer\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/botsr.txt b/help/D/object/botsr.txt
new file mode 100644
index 00000000..9e5609c8
--- /dev/null
+++ b/help/D/object/botsr.txt
@@ -0,0 +1,20 @@
+\b;\button 140; Wheeled Sniffer
+\image botsr 8 8;
+Wheeled bot equipped to prospect the geological structure of the subsoil. Whenever it locates something of use, the sniffer lays down the following marks:
+
+- a \l;red cross\u object\stonspot; -> \l;titanium ore\u object\titanore;.
+- a \l;yellow circle\u object\uranspot; -> \l;uranium ore\u object\uranore;.
+- a \l;green cross\u object\enerspot; -> energy deposit, useful for a \l;power station\u object\station; or a \l;power plant\u object\energy;.
+
+Wheels constitute a standard, fast and energy-saving mode of propulsion, which is perfectly adapted for a relatively flat terrain. Whenever the terrain gets sloped, it is advised to use a \l;winged sniffer\u object\botsj; instead, or, if this is impossible, a \l;tracked sniffer\u object\botsc;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the sniffing arm, use \c;\l;sniff\u cbot\sniff;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WheeledSniffer\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/botss.txt b/help/D/object/botss.txt
new file mode 100644
index 00000000..b2bb5b53
--- /dev/null
+++ b/help/D/object/botss.txt
@@ -0,0 +1,20 @@
+\b;\button 152; Legged Sniffer
+\image botss 8 8;
+Ant-legged creeping bot equipped to prospect the geological structure of the subsoil. Whenever it locates something of use, the sniffer lays down the following marks:
+
+- a \l;red cross\u object\stonspot; -> \l;titanium ore\u object\titanore;.
+- a \l;yellow circle\u object\uranspot; -> \l;uranium ore\u object\uranore;.
+- a \l;green cross\u object\enerspot; -> energy deposit, useful for a \l;power station\u object\station; or a \l;power plant\u object\energy;.
+
+A moving legged shooter uses up half as much energy as a \l;wheeled sniffer\u object\botsr;. A legged bot is also perfectly adapted to climb the steepest slopes.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the sniffing arm, use \c;\l;sniff\u cbot\sniff;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;LeggedSniffer\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/botsub.txt b/help/D/object/botsub.txt
new file mode 100644
index 00000000..4b9f8959
--- /dev/null
+++ b/help/D/object/botsub.txt
@@ -0,0 +1,16 @@
+\b;\button 149; Subber
+\image botsub 8 8;
+Amphibious tracked bot equipped with an operating claw. The subber is the only bot capable of moving and running operations underwater.
+
+It is best to check the \l;power cell\u object\power; readings prior to immersion since replacing or recharging it underwater is impossible. The subber can only pick up objects from the ground, as opposed to, for example, a battery from the back of another bot.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the operating claw, use \c;\l;grab\u cbot\grab;\n; and \c;\l;drop\u cbot\drop;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;Subber\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/bottarg.txt b/help/D/object/bottarg.txt
new file mode 100644
index 00000000..4807d784
--- /dev/null
+++ b/help/D/object/bottarg.txt
@@ -0,0 +1,11 @@
+\b;\button 173; Target Bot
+\image bottarg 8 8;
+Wheeled bot intended solely for target practice. It is autonomous and its trajectory is dependant upon the nature of the exercise.
+
+Note that target bots, loaded as they are with \l;TNT\u object\tnt;, are extremely sensitive to shocks.
+
+\t;Object \l;Category\u cbot\category;
+\c;TargetBot\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/bottr.txt b/help/D/object/bottr.txt
new file mode 100644
index 00000000..65f185c6
--- /dev/null
+++ b/help/D/object/bottr.txt
@@ -0,0 +1,12 @@
+\b;\button 158; Practice Bot
+\image bottr 8 8;
+Wheeled bot intended solely for training and practice. Its only purpose is to help you get accustomed to the programming of the bots' various ground movements.
+
+\t;Instructions
+To program the bot's movements, use the following commands: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;PracticeBot\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/bottump.txt b/help/D/object/bottump.txt
new file mode 100644
index 00000000..8398f770
--- /dev/null
+++ b/help/D/object/bottump.txt
@@ -0,0 +1,18 @@
+\b;\button 146; Thumper
+\image bottump 8 8;
+Tracked bot designed to hit the ground with enormous force. The purpose of the thumping is to turn \l;ants\u object\ant; and \l;spiders\u object\spider; belly up within a radius of 100 meters. An insect on its back is not dead but will struggle to get right side up again. After approximately 60 seconds of effort, it will usually succeed.
+
+To visualize the zone of impact, hit the button \button 41;. Little red dots outline the circular zone for 20 seconds.
+
+The bot uses up a large amount of power. A thump will drain 2/5ths of a \l;regular power cell\u object\power;.
+
+\t;Instructions
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the thumping, use \c;\l;thump\u cbot\thump;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;Thumper\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/bullet.txt b/help/D/object/bullet.txt
new file mode 100644
index 00000000..5df1efe5
--- /dev/null
+++ b/help/D/object/bullet.txt
@@ -0,0 +1,12 @@
+\b;Organic Matter
+\image bullet 4 4;
+The organic matter is the insects' secretion. \l;Wasps\u object\wasp; often use balls of organic matter to bombard you. You should perhaps try to get hold of some since it could allow you, given the necessary \l;analysis\u object\labo;, to discover new and strange technologies that will improve the efficiency of your bots.
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Object \l;Category\u cbot\category;
+\c;OrgaMatter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/captor.txt b/help/D/object/captor.txt
new file mode 100644
index 00000000..d13df6f7
--- /dev/null
+++ b/help/D/object/captor.txt
@@ -0,0 +1,25 @@
+\b;\button 174; Power Captor
+\image captor 8 8;
+The power captor acts as both a lightning conductor and a power converter.
+It offers protection within a radius of 50 meters against the perilous lightning bolts of magnetic storms. Additionally, when the captor is hit by lightning, all bots and \l;power cells\u object\power; placed underneath, with the exception of the \l;nuclear power cells\u object\atomic;, are recharged.
+
+To visualize the zone shielded by a power captor, select it then hit the button \button 41;. Red dots outline the circular zone for 20 seconds.
+
+In the vastness of space, few planets suffer from magnetic storms. Among the ones you'll be visiting, only Orpheon is subject to this phenomenon.
+
+Note that your \l;spaceship\u object\base; can also act as a lightning conductor. However it will not recharge power cells.
+
+\t;Requirements for building
+Any flat surface of at least 10 meters wide.
+
+\t;Power source
+Lightning bolts.
+
+\t;Duration of operation
+1 second.
+
+\t;Object \l;Category\u cbot\category;
+\c;PowerCaptor\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/convert.txt b/help/D/object/convert.txt
new file mode 100644
index 00000000..49836688
--- /dev/null
+++ b/help/D/object/convert.txt
@@ -0,0 +1,24 @@
+\b;\button 162; Converter
+\image convert 8 8;
+This building was designed to convert chunks of \l;titanium ore\u object\titanore; into usable \l;titanium cubes\u object\titan;. All \l;you\u object\human; need to do is place a chunk at the center of the platform and step back. The converter takes care of the rest.
+
+\t;Requirements for building
+Any flat surface of at least 6 meters wide.
+
+\t;Input
+Titanium ore.
+
+\t;Output
+Titanium.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+15 seconds.
+
+\t;Object \l;Category\u cbot\category;
+\c;Converter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/derrick.txt b/help/D/object/derrick.txt
new file mode 100644
index 00000000..4eea1369
--- /dev/null
+++ b/help/D/object/derrick.txt
@@ -0,0 +1,29 @@
+\b;\button 161; Derrick
+\image derrick 8 8;
+The derrick is intended for the extraction of raw materials.
+
+In order to determine the best site on which to erect a derrick, a \l;sniffer\u object\botsr; should be used to prospect the subsoil. The marks it lays down provide information about the specifics of what the derrick will be able to extract:
+
+- a \l;red cross\u object\stonspot; -> \l;titanium ore\u object\titanore;.
+- a \l;yellow circle\u object\uranspot; -> \l;uranium ore\u object\uranore;.
+
+\t;Requirements for building
+Any flat and geologically adequate surface of at least 2.5 meters wide.
+
+\t;Input
+Titanium or uranium ore in the subsoil.
+
+\t;Output
+Chunks of titanium or uranium ore.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+10 seconds for titanium and 30 for uranium.
+
+\t;Object \l;Category\u cbot\category;
+\c;Derrick\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/egg.txt b/help/D/object/egg.txt
new file mode 100644
index 00000000..d3e11e20
--- /dev/null
+++ b/help/D/object/egg.txt
@@ -0,0 +1,8 @@
+\b;Alien Egg
+The alien eggs are laid by the \l;Alien Queen\u object\mother;. After a short time, they will hatch and an \l;ant\u object\ant;, a \l;wasp\u object\wasp;, a \l;spider\u object\spider; or a \l;worm\u object\worm; will come out.
+
+\t;Object \l;Category\u cbot\category;
+\c;AlienEgg\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/energy.txt b/help/D/object/energy.txt
new file mode 100644
index 00000000..45a695bf
--- /dev/null
+++ b/help/D/object/energy.txt
@@ -0,0 +1,28 @@
+\b;\button 167; Power Plant
+\image energy 8 8;
+The power plant is a \l;power cell\u object\power; factory. It transforms a \l;titanium cube\u object\titan; into a regular power cell fully charged and ready for use.
+
+A power plant requires some energy in the subsoil. If the satellite report says that energy is available only at some places, you will need a \l;sniffer bot\u object\botsr; to prospect the subsoil. The marks it lays down provide information about the specifics of its findings: a \l;green cross\u object\enerspot; means that there is an energy deposit at this location beneath the surface, which is indispensable for the construction of a power plant or a \l;power station\u object\station;.
+
+If the large power cell at the base of the plant remains red after the construction is completed, this means that the site is not geologically adequate.
+
+\t;Requirements for building
+Any flat and geologically adequate surface of at least 4 meters wide.
+
+\t;Input
+Titanium.
+
+\t;Output
+Regular power cell.
+
+\t;Power source
+Subsoil energy.
+
+\t;Duration of operation
+12 seconds.
+
+\t;Object \l;Category\u cbot\category;
+\c;PowerPlant\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/enerspot.txt b/help/D/object/enerspot.txt
new file mode 100644
index 00000000..44bf6235
--- /dev/null
+++ b/help/D/object/enerspot.txt
@@ -0,0 +1,17 @@
+\b;Underground Energy Deposit
+\image enerspot 4 4;
+Whenever a \l;sniffer\u object\botsr; uncovers a source of energy in the subsoil, it lays down a green cross. The following buildings can be erected nearby :
+
+o \l;Power station\u object\station;
+o \l;Power plant\u object\energy;
+
+In order to prospect the subsoil you need a \l;sniffer bot\u object\botsr;, which can also discover \l;titanium ore\u object\titanore; deposits (indicated by a \l;red cross\u object\stonspot;) or \l;uranium ore\u object\uranore; deposits (indicated by a \l;yellow circle\u object\uranspot;).
+
+\t;Transport
+Impossible.
+
+\t;Object \l;Category\u cbot\category;
+\c;EnergySite\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/exchange.txt b/help/D/object/exchange.txt
new file mode 100644
index 00000000..2cb763a7
--- /dev/null
+++ b/help/D/object/exchange.txt
@@ -0,0 +1,31 @@
+\b;\button 172; Information Exchange Post
+\image info 8 8;
+This building stores digital information. A post can contain up to 10 pieces of information, each one referenced by a name.
+For example, a post can contain 3 informations¦:\c;
+\tab;"Position.x" 23.45
+\tab;"Position.y" -102.70
+\tab;"Quantity" 3.00
+\n;
+To put new information, you must execute the command \c;\l;send\u cbot\send;\n;.
+To read information from a post, you must execute the command \c;\l;receive\u cbot\receive;\n;.
+
+\t;Requirements for building
+Any flat surface of at least 2.5 meters wide.
+
+\t;Input
+None.
+
+\t;Output
+Digital information.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+1 second.
+
+\t;Object \l;Category\u cbot\category;
+\c;ExchangePost\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/factory.txt b/help/D/object/factory.txt
new file mode 100644
index 00000000..cc86ca11
--- /dev/null
+++ b/help/D/object/factory.txt
@@ -0,0 +1,33 @@
+\b;\button 160; Bot Factory
+\image factory 8 8;
+This building is intended for the manufacturing of bots using \l;titanium\u object\titan;.
+
+1) Place the titanium cube inside the factory.
+2) Step back out.
+3) Select the factory.
+4) Click on the button showing the diagram of the bot you want the factory to assemble (e.g. \button 137; for a \l;wheeled grabber\u object\botgr;).
+
+The finished bot does not include an onboard \l;power cell\u object\power;. You'll need to supply it with one for it to be able to leave the factory.
+
+The list of feasible bots will depend upon the research your \l;research center\u object\research; has completed at this time.
+
+\t;Requirements for building
+Any flat surface of at least 7.5 meters wide.
+
+\t;Input
+Titanium.
+
+\t;Output
+Completed bot.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+15 seconds.
+
+\t;Object \l;Category\u cbot\category;
+\c;BotFactory\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/flag.txt b/help/D/object/flag.txt
new file mode 100644
index 00000000..4740d2ff
--- /dev/null
+++ b/help/D/object/flag.txt
@@ -0,0 +1,22 @@
+\b;Colored Flag
+\image flag 4 4;
+The colored flags are helpful to mark strategic locations or positions that \l;you\u object\human; will need to find again. Flags appear on the mini-map in the shape of a cross of the same color as the flag.
+
+Use the buttons \button 118; and \button 119; to plant and remove flags, the colors of which you can choose with the buttons above.
+
+When your mini-map is out of order, the fact that flags follow the direction of the wind can help you to find your way and not to walk around in circles.
+
+When programming, you can use flags to give a bot a reference to a certain position: the instruction \c;\l;radar\u cbot\radar;\n; allows bots to know the exact position of a flag of a given color.
+
+\t;Transport
+Impossible.
+
+\t;Object \l;Category\u cbot\category;
+\c;BlueFlag\n;
+\c;RedFlag\n;
+\c;GreenFlag\n;
+\c;YellowFlag\n;
+\c;VioletFlag\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/goal.txt b/help/D/object/goal.txt
new file mode 100644
index 00000000..d59fa12f
--- /dev/null
+++ b/help/D/object/goal.txt
@@ -0,0 +1,8 @@
+\b;Finishing Pad
+The finishing pad is an objective to be reached in some exercises.
+
+\t;Object \l;Category\u cbot\category;
+\c;GoalArea\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/human.txt b/help/D/object/human.txt
new file mode 100644
index 00000000..399384af
--- /dev/null
+++ b/help/D/object/human.txt
@@ -0,0 +1,19 @@
+\b;\button 136; Astronaut
+\image human 8 8;
+The astronaut is you within the game.
+
+If you die, the mission immediately fails.
+
+You can construct buildings with the help of the neutron gun holstered to your survival kit. The survival kit allows you, in most missions, to fly, thanks to the reactor placed underneath, or to swim with no time limit. You can carry most objects but the weight will slow down your movements considerably. Flying, swimming and walking underwater are also made impossible if you are carrying an object. The use of a \l;grabber\u object\botgr; or a \l;subber\u object\botsub; is advised for tasks such as these.
+
+You cannot carry \l;uranium ore\u object\uranore; because of the risks attached to radioactivity.
+
+A special button \button 111; allows you to ensure that the ground around you is flat. This is important since building is only possible on a flat surface. A flat surface is designated green while a sloping one is red.
+
+A button \button 118; allows you to mark a location with \l;flags\u object\flag; of various colors. This can help you not to get lost, to find important positions again, or to indicate a position to a bot. 5 flags of 5 different colors are at your disposal. You can remove a flag by using the next button \button 119; and store it for further use.
+
+\t;Object \l;Category\u cbot\category;
+\c;Me\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/huston.txt b/help/D/object/huston.txt
new file mode 100644
index 00000000..8bcaa64e
--- /dev/null
+++ b/help/D/object/huston.txt
@@ -0,0 +1,11 @@
+\b;\button 176; Mission Control
+\image huston 8 8;
+Earth control center for all \l;your\u object\human; space missions. Though still named after the well-known mission control of the old days, "Houston" is actually located in the middle of the Nevada Desert, the new center for space exploration activities.
+
+The Mission Control Center watches over you day and night, and a whole team of scientists and engineers are working hard trying to find a solution to all the problems that you encounter.
+
+\t;Object \l;Category\u cbot\category;
+\c;Houston\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/key.txt b/help/D/object/key.txt
new file mode 100644
index 00000000..e21d292f
--- /dev/null
+++ b/help/D/object/key.txt
@@ -0,0 +1,17 @@
+\b;Keys A, B, C and D
+\image key 4 4;
+The keys give \l;you\u object\human; access to the \l;vault\u object\safe;. You'll need 4 of them.
+
+o Key A, blue and triangle-shaped
+o Key B, red and pentagon-shaped
+o Key C, green and shaped like a 6-pointed star
+o Key D, yellow and circular
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Objects \l;Category\u cbot\category;
+\c;KeyA\n;, \c;KeyB\n;, \c;KeyC\n; and \c;KeyD\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/labo.txt b/help/D/object/labo.txt
new file mode 100644
index 00000000..d6a03462
--- /dev/null
+++ b/help/D/object/labo.txt
@@ -0,0 +1,24 @@
+\b;\button 166; Autolab
+\image labo 8 8;
+The lab is intended for the analysis of \l;organic matter\u object\bullet;. It will help \l;you\u object\human; become familiar with the insects' very own technology and perhaps even use it to your advantage. Place a chunk of \l;organic matter\u object\bullet; on the platform, select the lab, and click the button corresponding to the desired research program.
+
+\t;Requirements for building
+Any flat surface of at least 6 meters wide.
+
+\t;Input
+Organic matter.
+
+\t;Output
+New and improved technologies.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+20 seconds.
+
+\t;Object \l;Category\u cbot\category;
+\c;AutoLab\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/lrv.txt b/help/D/object/lrv.txt
new file mode 100644
index 00000000..e4271afc
--- /dev/null
+++ b/help/D/object/lrv.txt
@@ -0,0 +1,9 @@
+\b;Apollo Lunar Roving Vehicle
+
+
+
+\c;< no archive picture available >\n;
+
+
+
+The Lunar Jeep (LRV) was brought to the moon on July 30th 1971 by the astronauts David Scott and Jim Irwin from Apollo mission 15. Its batteries are still partly charged, which allows you to remote control it. But this old-fashioned technology will be of no use to you.
diff --git a/help/D/object/mine.txt b/help/D/object/mine.txt
new file mode 100644
index 00000000..6da1b95c
--- /dev/null
+++ b/help/D/object/mine.txt
@@ -0,0 +1,14 @@
+\b;Mine
+\image mine 8 8;
+Mines were a defensive weapons system used by the first expedition. Because of the dangers this system causes for the mission itself, they are no longer used in your expedition. In some exercises mines are used to learn how to avoid obstacles. There is no way to remove them or to create new ones.
+
+With a \l;practice bot\u object\bottr;, don't get any closer than 2 meters to the position given by the instruction \l;radar\u cbot\radar;.
+
+\t;Transport
+Impossible.
+
+\t;Object \l;Category\u cbot\category;
+\c;Mine\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/mother.txt b/help/D/object/mother.txt
new file mode 100644
index 00000000..bb26c86a
--- /dev/null
+++ b/help/D/object/mother.txt
@@ -0,0 +1,15 @@
+\b;Alien Queen
+\image mother 8 8;
+This huge insect is the mother of them all. It lays \l;eggs\u object\egg; and from these eggs will hatch all the various kinds of insects \l;you\u object\human;'re likely to encounter. All of them are extremely hazardous to yourself and your mission. The queen's protective shell is particularly resistant to attack.
+
+It gives birth to the following insects :
+o \l;ants\u object\ant;
+o \l;spiders\u object\spider;
+o \l;wasps\u object\wasp;
+o \l;worms\u object\worm;
+
+\t;Object \l;Category\u cbot\category;
+\c;AlienQueen\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/nest.txt b/help/D/object/nest.txt
new file mode 100644
index 00000000..c14e16f2
--- /dev/null
+++ b/help/D/object/nest.txt
@@ -0,0 +1,8 @@
+\b;Nest
+The alien nest is an odd structure out of which \l;organic matter\u object\bullet; erupts on a regular basis. \l;Wasps\u object\wasp; visit nests regularly to collect ammunition that they will use to bombard your bots, buildings and yourself.
+
+\t;Object \l;Category\u cbot\category;
+\c;AlienNest\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/nuclear.txt b/help/D/object/nuclear.txt
new file mode 100644
index 00000000..6d06b3f3
--- /dev/null
+++ b/help/D/object/nuclear.txt
@@ -0,0 +1,24 @@
+\b;\button 170; Nuclear Plant
+\image nuclear 8 8;
+The nuclear plant is a \l;nuclear power cell\u object\atomic; factory. It transforms a chunk of \l;uranium ore\u object\uranore; into a \l;nuclear power cell\u object\atomic; fully charged and ready for use.
+
+\t;Requirements for building
+Any flat surface of at least 10 meters wide.
+
+\t;Input
+Uranium ore.
+
+\t;Output
+Nuclear power cell.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+30 seconds.
+
+\t;Object \l;Category\u cbot\category;
+\c;NuclearPlant\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/power.txt b/help/D/object/power.txt
new file mode 100644
index 00000000..03e2bc2b
--- /dev/null
+++ b/help/D/object/power.txt
@@ -0,0 +1,16 @@
+\b;Regular Power Cell
+\image power 4 4;
+A power cell supplies the bots and a few buildings with energy.
+
+An entirely red power cell is empty. The green section indicates the remaining capacity. A power cell can be recharged using a \l;power station\u object\station;. A \l;power plant\u object\energy; is needed to produce a new and fully charged power cell.
+
+The capacity of a regular power cell is 100 times smaller than that of a \l;nuclear power cell\u object\atomic; produced by a \l;nuclear plant\u object\nuclear; using \l;uranium ore\u object\uranore;.
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Object \l;Category\u cbot\category;
+\c;PowerCell\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/radar.txt b/help/D/object/radar.txt
new file mode 100644
index 00000000..453f2ea9
--- /dev/null
+++ b/help/D/object/radar.txt
@@ -0,0 +1,26 @@
+\b;\button 168; Radar
+\image radar 8 8;
+The radar indicates the direction of the nearest \l;enemy\u object\mother;. Moreover, the information given by the radar allows the mini-map at the bottom right corner of your screen to show the position of all bots, buildings and enemies as small squares and triangles of different colors.
+
+Radar stations also act as relays for communication with the Earth from distant planets.
+
+\t;Requirements for building
+Any flat surface of at least 2.5 meters wide.
+
+\t;Input
+None.
+
+\t;Output
+Information for the mini-map.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+Constant.
+
+\t;Object \l;Category\u cbot\category;
+\c;RadarStation\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/repair.txt b/help/D/object/repair.txt
new file mode 100644
index 00000000..4adac267
--- /dev/null
+++ b/help/D/object/repair.txt
@@ -0,0 +1,24 @@
+\b;\button 169; Repair Center
+\image repair 8 8;
+The repair center regenerates the shield on damaged bots. A bot's shield will absorb a certain amount of \l;enemy\u object\mother; hits. If there is no shield left, this means that the bot itself, when hit next, will be destroyed.
+
+\t;Requirements for building
+Any flat surface of at least 6 meters wide.
+
+\t;Input
+Damaged bot.
+
+\t;Output
+Repaired bot with regenerated shield.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+A few seconds depending on the repair job to be done.
+
+\t;Object \l;Category\u cbot\category;
+\c;RepairCenter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/research.txt b/help/D/object/research.txt
new file mode 100644
index 00000000..47e66333
--- /dev/null
+++ b/help/D/object/research.txt
@@ -0,0 +1,27 @@
+\b;\button 163; Research Center
+\image research 8 8;
+The research center is an enormous computer. Its most useful feature is its ability to come up with new technologies as well as improvements on existing ones regarding buildings and bots in particular.
+
+The 65'536 processors it contains use up a large amount of energy.
+Each research program necessitates a brand new and fully charged \l;power cell\u object\power;
+
+\t;Requirements for building
+Any flat surface of at least 5 meters wide.
+
+\t;Input
+Request for research.
+
+\t;Output
+New and improved technologies.
+
+\t;Power source
+Regular or nuclear power cell.
+
+\t;Duration of operation
+Between 9 seconds and 1 minute depending on the research.
+
+\t;Object \l;Category\u cbot\category;
+\c;ResearchCenter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/safe.txt b/help/D/object/safe.txt
new file mode 100644
index 00000000..79bc849e
--- /dev/null
+++ b/help/D/object/safe.txt
@@ -0,0 +1,9 @@
+\b;\button 175; Vault
+\image safe 8 8;
+This dome-shaped building was conceived by the first expedition. Its purpose was to offer protection to a new type of advanced bot. To protect it from insect attacks, the vault was locked by 4 \l;keys\u object\key;. Only after you find the 4 keys and place each one of them on their corresponding slots will you be given access to the bot.
+
+\t;Object \l;Category\u cbot\category;
+\c;Vault\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/spider.txt b/help/D/object/spider.txt
new file mode 100644
index 00000000..7e65b27b
--- /dev/null
+++ b/help/D/object/spider.txt
@@ -0,0 +1,9 @@
+\b;Spider
+\image spider 8 8;
+Spiders work like suicide commandoes: whenever a spider gets within a close enough range of its target, it inflates its abdomen and bursts into a multitude of tiny burning fragments. These fragments will set fire to everything they get in contact with. Luckily the spider won't survive.
+
+\t;Object \l;Category\u cbot\category;
+\c;AlienSpider\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/start.txt b/help/D/object/start.txt
new file mode 100644
index 00000000..a4523e12
--- /dev/null
+++ b/help/D/object/start.txt
@@ -0,0 +1,8 @@
+\b;Starting Pad
+The starting pad is a platform used in some exercises.
+
+\t;Object \l;Category\u cbot\category;
+\c;StartArea\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/station.txt b/help/D/object/station.txt
new file mode 100644
index 00000000..17ad780d
--- /dev/null
+++ b/help/D/object/station.txt
@@ -0,0 +1,28 @@
+\b;\button 164; Power Station
+\image station 8 8;
+The power station extracts energy from the underground and recharges \l;regular power cells\u object\power; through induction. To recharge a power cell loaded at the back of a bot, just move the bot to the center of the platform and wait a few seconds. A \l;power cell\u object\power; carried at arm's length can also be recharged. \l;Nuclear power cells\u object\atomic; are non-rechargeable.
+
+A power plant needs some energy in the subsoil. If the satellite report says that energy is available only at some places, you will need a \l;sniffer bot\u object\botsr; to prospect the subsoil. The marks it lays down provide information about the specifics of its findings: a \l;green cross\u object\enerspot; means that there is an energy deposit at this location beneath the surface, which is indispensable to the construction of a power station or a \l;power plant\u object\energy;.
+
+The large power cell at the top of the station remaining red after the construction is completed can only mean that the site is not geologically adequate.
+
+\t;Requirements for building
+Any flat and geologically adequate surface at least 6 meters wide.
+
+\t;Input
+Empty power cell.
+
+\t;Output
+Recharged power cell.
+
+\t;Power source
+Subsoil energy.
+
+\t;Duration of operation
+A few seconds, depending on the capacity to be recharged.
+
+\t;Object \l;Category\u cbot\category;
+\c;PowerStation\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/stonspot.txt b/help/D/object/stonspot.txt
new file mode 100644
index 00000000..2c9f4deb
--- /dev/null
+++ b/help/D/object/stonspot.txt
@@ -0,0 +1,14 @@
+\b;Underground Titanium Deposit
+\image stonspot 4 4;
+A red cross reveals the presence of a stratum of \l;titanium ore\u object\titanore; in the subsoil. It will be possible to extract it using a \l;derrick\u object\derrick;.
+
+A \l;sniffer\u object\botsr; will lay down a red cross each time it uncovers a deposit. \l;Sniffer bots\u object\botsr; can also detect the presence of \l;uranium ore\u object\uranore; as indicated by a \l;yellow circle\u object\uranspot; and of energy as indicated by a \l;green cross\u object\enerspot;.
+
+\t;Transport
+Impossible.
+
+\t;Object \l;Category\u cbot\category;
+\c;TitaniumSite\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/titan.txt b/help/D/object/titan.txt
new file mode 100644
index 00000000..2e0d306d
--- /dev/null
+++ b/help/D/object/titan.txt
@@ -0,0 +1,14 @@
+\b;Titanium
+\image titan 4 4;
+Titanium is indispensable for the construction of buildings, \l;bots\u object\factory; and \l;regular power cells\u object\energy;. There is usually some left on the \l;spaceship\u object\base; when you embark on a new mission.
+
+If more is needed, you'll have to \l;convert\u object\convert; chunks of \l;titanium ore\u object\titanore; into usable titanium cubes.
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Object \l;Category\u cbot\category;
+\c;Titanium\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/titanore.txt b/help/D/object/titanore.txt
new file mode 100644
index 00000000..a42551d3
--- /dev/null
+++ b/help/D/object/titanore.txt
@@ -0,0 +1,14 @@
+\b;Titanium Ore
+\image titanore 4 4;
+\l;Titanium\u object\titan; is indispensable for the construction of buildings, \l;bots\u object\factory; and \l;regular power cells\u object\energy;. The titanium \l;you\u object\human; see in its usable, cube shaped form has been \l;converted\u object\convert; from raw chunks of titanium ore.
+
+Titanium ore can be found either directly on the surface or in the subsoil. In the latter case, it needs to be first located and identified by a \l;sniffer\u object\botsr;, then extracted using a \l;derrick\u object\derrick;. If a sniffer identifies a titanium ore deposit, it lays down a \l;red cross\u object\stonspot;.
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Object \l;Category\u cbot\category;
+\c;TitaniumOre\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/tnt.txt b/help/D/object/tnt.txt
new file mode 100644
index 00000000..264d5acf
--- /dev/null
+++ b/help/D/object/tnt.txt
@@ -0,0 +1,12 @@
+\b; Explosive (TNT)
+\image tnt 4 4;
+A TNT charge is extremely sensitive. You should approach it with caution so as not to hit it or give it any kind of shock. The risk is minimized once the explosive is within a \l;grabber\u object\botgr;'s grasp.
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Object \l;Category\u cbot\category;
+\c;TNT\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/tower.txt b/help/D/object/tower.txt
new file mode 100644
index 00000000..27443a6d
--- /dev/null
+++ b/help/D/object/tower.txt
@@ -0,0 +1,22 @@
+\b;\button 165; Defense Tower
+\image tower 8 8;
+The tower constitutes the best defense against \l;enemy\u object\mother; attacks, whether they originate on the ground or from the skies.
+
+The tower requires either a \l;regular\u object\power; or a \l;nuclear\u object\atomic; power cell. A regular power cell provides a capacity for 8 shots. A nuclear power cell is of course preferable. The tower starts blinking when it runs out of power.
+
+The range is 40 meters. To visualize it, select the tower then hit the button \button 41;. Red dots outline the circular zone for 20 seconds.
+
+\t;Requirements for building
+Any flat surface of at least 3.5 meters wide.
+
+\t;Power source
+Regular or nuclear power cell.
+
+\t;Duration of operation
+1 second.
+
+\t;Object \l;Category\u cbot\category;
+\c;DefenseTower\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/uranore.txt b/help/D/object/uranore.txt
new file mode 100644
index 00000000..354f2a25
--- /dev/null
+++ b/help/D/object/uranore.txt
@@ -0,0 +1,16 @@
+\b;Uranium Ore
+\image uranore 4 4;
+Uranium ore is essential to the production of \l;nuclear power cells\u object\atomic;.
+
+It is to be found on the surface or in the subsoil. In the latter case, it needs to be first located and identified by a \l;sniffer\u object\botsr;, then extracted using a \l;derrick\u object\derrick;. If a sniffer identifies a deposit of uranium ore, it lays down a \l;yellow circle\u object\uranspot;.
+
+A \l;nuclear plant\u object\nuclear; will then take care of converting the chunk into a new and fully charged \l;nuclear power cell\u object\atomic;.
+
+\t;Transport
+All \l;grabbers\u object\botgr;. Due to its radioactivity, the \l;astronaut\u object\human; can not transport it.
+
+\t;Object \l;Category\u cbot\category;
+\c;UraniumOre\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/uranspot.txt b/help/D/object/uranspot.txt
new file mode 100644
index 00000000..2f90e070
--- /dev/null
+++ b/help/D/object/uranspot.txt
@@ -0,0 +1,15 @@
+\b; Underground Uranium Deposit
+\image uranspot 4 4;
+A yellow circle reveals the presence of a stratum of \l;uranium ore\u object\uranore; in the subsoil. It will be possible to extract it using a \l;derrick\u object\derrick;.
+
+A \l;sniffer\u object\botsr; will lay down a yellow circle each time it uncovers a deposit. \l;Sniffer bots\u object\botsr; can also detect the presence of \l;titanium ore\u object\titanore; as indicated by a \l;red cross\u object\stonspot; and of energy as indicated by a \l;green cross\u object\enerspot;.
+
+
+\t;Transport
+Impossible.
+
+\t;Object \l;Category\u cbot\category;
+\c;UraniumSite\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/wasp.txt b/help/D/object/wasp.txt
new file mode 100644
index 00000000..19c70649
--- /dev/null
+++ b/help/D/object/wasp.txt
@@ -0,0 +1,11 @@
+\b;Wasp
+\image wasp 8 8;
+The wasp is a formidable enemy, very hard to shoot down since its flying is particularly swift. Wasps carry balls of \l;organic matter\u object\bullet; that they will hurl at your bots and buildings and at yourself from above.
+
+The \l;defense tower\u object\tower; is the easiest way to get rid of them.
+
+\t;Object \l;Category\u cbot\category;
+\c;AlienWasp\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/waypoint.txt b/help/D/object/waypoint.txt
new file mode 100644
index 00000000..e3d322c0
--- /dev/null
+++ b/help/D/object/waypoint.txt
@@ -0,0 +1,12 @@
+\b;Checkpoint
+\image waypoint 4 4;
+In the exercises, blue crosses indicate positions that have to be crossed. They disappear as soon as a \l;practice bot\u object\bottr; crosses them.
+
+\t;Transport
+Impossible.
+
+\t;Object \l;Category\u cbot\category;
+\c;WayPoint\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/worm.txt b/help/D/object/worm.txt
new file mode 100644
index 00000000..8644162b
--- /dev/null
+++ b/help/D/object/worm.txt
@@ -0,0 +1,11 @@
+\b;Worm
+\image worm 8 8;
+Worms transmit viruses to programmed bots. The virus alters the programming to such an extent that the bot either functions in a very erratic way or stops functioning altogether.
+
+Worms live in the subsoil but sometimes emerge and crawl on the surface. When they are underground they are undetectable and indestructible.
+
+\t;Object \l;Category\u cbot\category;
+\c;AlienWorm\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/object/wreck.txt b/help/D/object/wreck.txt
new file mode 100644
index 00000000..dd0315e6
--- /dev/null
+++ b/help/D/object/wreck.txt
@@ -0,0 +1,10 @@
+\b;Derelict bot
+A derelict bot is what's left of a bot after it has been disabled by a \l;spider\u object\spider; or by friendly fire.
+
+A \l;recycler\u object\botrecy; can convert a derelict bot back into a reusable \l;titanium cube\u object\titan;.
+
+\t;Object \l;Category\u cbot\category;
+\c;Wreck\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/D/tant1.txt b/help/D/tant1.txt
new file mode 100644
index 00000000..950b9bac
--- /dev/null
+++ b/help/D/tant1.txt
@@ -0,0 +1,16 @@
+\b;Objective
+As a defense against several giant ants attacking from the north, rotate the bot when shooting in order to perform barrage fire.
+
+\t;Program
+When you are radio-guiding a bot, you can rotate the cannon during the burst in order to sweep a whole zone. You can also do this when programming the bot, but you have to turn the whole bot with the instruction \c;\l;motor\u cbot\motor;( , )\n;. This instruction asks for two numbers: the speed of the left-hand motor, and the speed of the right-hand motor. These numbers must range between -1 and +1.\c; motor(1,1);\n; moves the bot forward with maximum speed (both motors at full power).\c; motor(-1,-1);\n; moves the bot backward with maximum speed.\c; motor(1,0.9);\n; moves the bot forward with a slight turn to the right: the left-hand motor turns a little faster than the right-hand motor. And \c;motor(1,-1);\n; will turn the bot clockwise on the spot: the left-hand motor moves forward, the right-hand motor moves backward.
+
+After a \l;motor\u cbot\motor; instruction the motors will keep this speed until the next \c;motor\n;, \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n; or \c;\l;goto\u cbot\goto;\n; instruction. For example, if you perform a rotation on the spot with \c;motor(1,-1);\n; and afterward you shoot with \c;fire(1);\n;, the bot will continue to turn during the burst, and will sweep a whole zone.
+
+The ants attack from the north. In order to sweep the whole zone north of the bot, first turn 90 degrees left with \c;turn(90);\n;, then repeat always with \c;\l;while\u cbot\while; (true)\n; the following instructions:
+o rotate clockwise with \c;motor(1,-1);\n;
+o a 2 seconds burst with \c;fire(2);\n;
+o rotate counter-clockwise with \c;motor(-1,1);\n;
+o a 2 seconds burst.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/tant2.txt b/help/D/tant2.txt
new file mode 100644
index 00000000..a775f77f
--- /dev/null
+++ b/help/D/tant2.txt
@@ -0,0 +1,33 @@
+\b;Objective
+As a defense against ants attacking from all sides, adapt the program \c;Spider2\n; in order to fly at a given altitude.
+
+\t;Program
+The program necessary for this task is somewhat similar to the program \c;Spider2\n; that looks for the closest ant, turns towards it and fires:
+\c;
+\s;extern void object::Spider2()
+\s;{
+\s; object item;
+\s;
+\s; while (true)
+\s; {
+\s; item = radar(AlienSpider);
+\s; turn(direction(item.position));
+\s; fire(1);
+\s; }
+\s;}
+\n;
+You can copy-paste it to the editor, and adapt it. Replace \c;radar(AlienSpider);\n; by \c;radar(AlienAnt);\n;, and write before the \c;while\n; loop another loop that activates the jet beneath the \l;winged shooter\u object\botfj; until the bot reaches an altitude of 20 meters.
+
+The instruction \c;\l;jet\u cbot\jet;()\n; controls the jet beneath winged bots. The number in brackets must range between \c;-1\n; and \c;1\n;.\c; jet(1);\n; moves the bot upward with maximum speed.\c; jet(-1);\n; moves the bot downward with maximum speed, and \c;jet(0);\n; stabilizes the altitude. As the bot must reach a precise altitude, move it upward slowly with \c;jet(0.2);\n;, wait until it has reached the desired height, then stabilize the altitude with \c;jet(0);\n;.
+
+In order to "wait until it has reached the desired height", we need a conditional loop: the instructions inside the loop will be repeated only as long as a certain condition is true. The altitude of the bot is given by \c;position.z\n;. We already saw that \c;position\n; gives the position of the bot. And a position is given by the three coordinates x, y and z: the x-axis is the axis west-east, the y-axis is the axis south-north, and the z-axis is the vertical axis. Therefore we must wait while \c;position.z\n; is smaller than 20:
+\c;
+\s; while (position.z < 20)
+\s; {
+\s; wait(0.2);
+\s; }
+\n;
+After waiting 0.2 seconds, the program will check if the altitude is still below 20 meters. If this is the case, it will wait a little more, if not, the program continues after the loop, i.e. after the closing brace \c;}\n;. Do not forget after the loop to stabilize the altitude with \c;jet(0);\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/tant3.txt b/help/D/tant3.txt
new file mode 100644
index 00000000..0798edad
--- /dev/null
+++ b/help/D/tant3.txt
@@ -0,0 +1,40 @@
+\b;Objective
+Adapt the program \c;Tower1\n; in order to avoid wasting energy when shooting at ants that are out of range.
+
+\t;Program
+The program \c;Tower1\n; shoots in the direction of the closest ant, even if it is still out of range:
+\c;
+\s;extern void object::Tour1()
+\s;{
+\s; object item;
+\s;
+\s; jet(0.2);
+\s; while(position.z < 20)
+\s; {
+\s; wait(0.2);
+\s; }
+\s; jet(0);
+\s;
+\s; while(true)
+\s; {
+\s; item = radar(AlienAnt);
+\s; turn(direction(item.position));
+\s; fire(1);
+\s; }
+\s;}
+\n;
+If the bot must perform the same task than before with only a \l;regular power cell\u object\power;, you can insert a loop that waits until the ant is close enough, i.e. until the ant is at less than 40 meters. Only one burst will be needed for every ant then.
+
+You can give the instruction \c;\l;radar\u cbot\radar();\n; more parameters (numbers) indicating where the radar should look for the ants. For example \c;radar(AlienAnt,0,360,0,40);\n; will only look for ants that are closer than 40 meters. The two first numbers tell the radar to search in all directions, the two last numbers tell the radar to detect only ants that are at a distance between 0 and 40 meters. If no ant is found that is closer than 40 meters, the instruction \c;\l;radar\u cbot\radar();\n; returns the value \c;null\n;. We can then write a conditional loop similar to the one written in the last exercise that waits as long as there is no ant closer than 40 meters:
+\c;
+\s; while (radar(AlienAnt, 0, 360, 0, 40) == null)
+\s; {
+\s; wait(0.2);
+\s; }
+\n;
+Notice that two equal signs "==" are needed to perform a comparison of equality.
+
+Just insert these lines before the instruction \c;fire(0);\n;, and the bot will wait before shooting until the ant is closer than 40 meters. Like this a regular power cell is enough to kill all ants.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/tant4.txt b/help/D/tant4.txt
new file mode 100644
index 00000000..7c58831f
--- /dev/null
+++ b/help/D/tant4.txt
@@ -0,0 +1,10 @@
+\b;Objectif
+Program a \l;winged shooter\u object\botfj; to hunt all ants in the region.
+
+\t;Program
+In this swamp, a wheeled or tracked shooter is of little use. And ants, in opposition to spiders, keep moving: you can not just turn towards the closest ant, move forward and shoot.
+
+The easiest way to solve the problem consists in flying at a height of 10 meters, aiming downward with \c;aim(-20);\n;, and approaching the ant with a conditional loop as long as the \l;distance\u cbot\dist; is greater than 20m. In this conditional loop, you must look for the closest ant, turn towards it, set the motors at full speed with \c;motor(1,1);\n;, and wait a little, for example 0.2 seconds. All these instructions must be repeated until the ant is at less than 20 meters. Then just shoot it.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/tant5.txt b/help/D/tant5.txt
new file mode 100644
index 00000000..e822f2fb
--- /dev/null
+++ b/help/D/tant5.txt
@@ -0,0 +1,52 @@
+\b;Objective
+Adapt the flying height of the \l;winged shooter\u object\botfj; to the terrain.
+
+\t;Program
+Here is one more time the program of the previous exercise that hunts ants:
+\c;
+\s;extern void object::JetFighter1()
+\s;{
+\s; object item;
+\s;
+\s; aim(-20);
+\s; jet(0.2);
+\s; while (position.z < 10)
+\s; {
+\s; wait(0.2);
+\s; }
+\s; jet(0);
+\s;
+\s; while (true)
+\s; {
+\s; while (radar(AlienAnt, 0, 360, 0, 20) == null)
+\s; {
+\s; item = radar(AlienAnt);
+\s; turn(direction(item.position));
+\s; motor(1,1);
+\s; wait(0.2);
+\s; }
+\s; fire(1);
+\s; }
+\s;}
+\n;
+The bot always stays at an altitude of 10m above sea level. This is not adapted to the mountainous terrain of the present exercise, the bot has got to adapt to the terrain. The best way to do so is to insert just before the \c;wait(0.2);\n; a test to see if the height above ground is too low or too high, and to react accordingly.
+
+We already saw that \c;position.z\n; gives the altitude above sea level. \c;\l;topo\u cbot\topo;(position)\n; gives the altitude of the ground at the position of the bot. If we want the bot to stay at an altitude between 6 and 9m above ground, we must treat the following cases: if \c;position.z-topo(position)\n; is smaller than 6, the bot must climb with \c;jet(1);\n;. If \c;position.z-topo(position)\n; is greater than 9, the bot must go down with \c;jet(-1);\n;. In order to program these tests, use the instruction \c;\l;if\u cbot\if;\n;, that executes the instructions in braces only once if the condition is true:
+\c;
+\s; jet(0);
+\s; if (position.z-topo(position) < 6)
+\s; {
+\s; jet(1);
+\s; }
+\s;
+\s; if (position.z-topo(position) > 9)
+\s; {
+\s; jet(-1);
+\s; }
+\n;
+Before starting the testing, stabilize the altitude with \c;jet(0);\n;: in case the height above ground lies between 6 and 9m, the bot must neither climb nor go down. If afterwards either \c;jet(1);\n; or \c;jet(-1);\n; is executed, it will cancel the previous \c;jet(0);\n;.
+
+Just insert these lines before the \c;wait(0.2)\n;, and the bot will adapt to the terrain. You can then delete the first lines of the program that set the initial altitude at 10m.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/tcell1.txt b/help/D/tcell1.txt
new file mode 100644
index 00000000..f001d85c
--- /dev/null
+++ b/help/D/tcell1.txt
@@ -0,0 +1,38 @@
+\b;Objective
+Program the \l;grabber bot\u object\botgr; to change the \l;power cell\u object\power; of the \l;winged shooter\u object\botfj;. The winged shooter can then shoot the spiders.
+
+\t;Procedure
+1) Program the \l;grabber bot\u object\botgr;.
+2) Execute the program with the arrow button \button 21;.
+The \l;winged shooter\u object\botfj; is already programmed, it will do its job as soon as it has got a new power cell.
+
+\t;Program
+You will need the following instructions:
+\c;
+\s;grab();\n;
+\n;Takes whatever there is in front of the bot.
+\c;
+\s;drop();\n;
+\n;Drops whatever the bot is carrying in front.
+\c;
+\s;turn();\n;
+\n;We have seen this instruction already in the previous exercise: it performs a rotation of a certain angle, given in degrees.
+
+Let us see the beginning of the program:
+o pick up the empty power cell with \c;grab();\n;
+o turn left 90 degrees (quarter turn) with \c;turn(90)\n;
+o drop the empty cell with \c;drop();\n;
+o etc.
+
+It is up to you now to write the rest of the program!
+
+If you have got a problem, you can always look at the solution: select the \c;Solution\n; program, and click the braces button \button 22;.
+
+\t;Remarks
+Be careful to write the instructions precisely, respecting lower and upper case letters.
+
+Always write one instruction per line, finishing each line with a semicolon.
+
+In case your program does not do exactly what you wanted, you can put the bot back at the starting point with the button \button 59;. You can also start over again from the beginning (hit the key "Esc", the click "Restart"). The program you have written will not be lost.
+
+\key;\key help;\norm; allows you to review these instructions at all times.
diff --git a/help/D/tcell2.txt b/help/D/tcell2.txt
new file mode 100644
index 00000000..6d989599
--- /dev/null
+++ b/help/D/tcell2.txt
@@ -0,0 +1,48 @@
+\b;Objective
+Power the \l;winged shooters\u object\botfj; with \l;power cells\u object\power;, so that they can kill the ants in the ant nest located in a hole north of your position.
+
+\t;Program
+The \l;wheeled grabber\u object\botgr; must go to a \l;power cell\u object\power;, grab it, go to a \l;winged shooter\u object\botfj;, and drop the cell. This task is very similar to the task performed in the previous exercise. Here is this program again:
+\c;
+\s;extern void object::Titanium2()
+\s;{
+\s; object item;
+\s;
+\s; item = radar(TitaniumOre);
+\s; goto(item.position);
+\s; grab();
+\s;
+\s; item = radar(Converter);
+\s; goto(item.position);
+\s; drop();
+\s;}
+\n;
+The best way to solve the present exercise is to copy \button 61; the program above into the clipboard (from \c;object\n; to \c;drop();\n;), and paste \button 62; it into the program editor. Then you just have to make the necessary changes in order to adapt it to the new task.
+
+Instead of looking for titanium ore (\c;TitaniumOre\n;), look for a power cell (\c;PowerCell\n;). Instead of going to a converter (\c;Converter\n;), go to a winged shooter (\c;WingedShooter\n;). As soon as the winged shooter has got a new power cell, it will get down to work.
+
+If you want to know more about the "names" of the different objects in the programming language, please refer to the \l;text about categories\u cbot\category;.
+
+\t;Further improvement: loops
+Once the program explained above works properly, you can improve it in order to repeat the task over and over again. Like this you will not have to execute the program several times in order to power several bots.
+
+All programs written until now execute all instructions only once, one after another, from the beginning to the end of the program. You can also tell the bot to repeat some instructions: just write \c;while (true)\n;, an open brace, the instructions to be repeated, and a closing brace. Repeating some instructions several times in this way is called a loop. Here is an example of a program that repeats over and over the instructions that look for a power cell, grab it, and drop it on a winged shooter:
+\c;
+\s; while (true)
+\s; {
+\s; item = radar(PowerCell);
+\s; goto(item.position);
+\s; grab();
+\s;
+\s; item = radar(WingedShooter);
+\s; goto(item.position);
+\s; drop();
+\s; }
+\n;
+Of course the variable declaration \c;object item;\n; must not be inside the loop, but just before: declare a variable only once.
+
+\t;Remark
+A bot can execute a program perfectly well on his own. Meantime you can for example select the astronaut and take a look at what is happening at the nest, the show is worth it. But be careful not to get shot by your own bots...
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/tchasse.txt b/help/D/tchasse.txt
new file mode 100644
index 00000000..eb807f5a
--- /dev/null
+++ b/help/D/tchasse.txt
@@ -0,0 +1,18 @@
+\b;Exercise
+You must find a way to destroy the four moving \l;target bots\u object\bottarg; without wasting one shot. Notice that after every move, the targets will stay motionless during one second.
+
+\b;General principle
+1) Detect a target with the instruction \c;\l;radar\u cbot\radar;(TargetBot);\n;.
+2) Turn towards the target with \c;\l;turn\u cbot\turn;(direction());\n;.
+3) After the rotation, check if the target did not move.
+4) If it did not, wait 0.2 seconds with \c;\l;wait\u cbot\wait;(0.2);\n;.
+5) Re-check if the target did not move.
+6) If it did not, shoot with \c;\l;fire\u cbot\fire;(2);\n; and wait 2 seconds for the target to be hit by the bullets and destroyed.
+
+There are of course other ways to achieve the goal.
+
+\b;Remark
+In order to increase the efficiency of your shots, aim a little downward with \c;\l;aim\u cbot\aim;(-3);\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/tdragst.txt b/help/D/tdragst.txt
new file mode 100644
index 00000000..38b62d30
--- /dev/null
+++ b/help/D/tdragst.txt
@@ -0,0 +1,64 @@
+\b;Exercise
+Reach the finishing pad (25m in front of you) as fast as possible, using the instruction \c;motor( , )\n;. You will have to slow down progressively at the end of the move, otherwise the bot will get blown up on the \l;mines\u object\mine;.
+
+You could very well write no more than \c;\l;move\u cbot\move;(25);\n;, this would work perfectly well. However, the aim of this exercise is to learn how to use the instruction \c;\l;motor\u cbot\motor;\n;.
+
+This instruction asks for two values:
+1) The speed of the left-hand motor.
+2) The speed of the right-hand motor.
+
+\s;\c; motor( left, right );
+\n;
+The values must range between -1 and 1:
+-1 = full throttle backward
+ 0 = stop
+ 1 = full throttle forward
+
+For example, \c;motor(0.5, 0.5);\n; will move the motor forward with half-speed, until new instructions are given to the motors.
+
+With the instruction \c;motor(0.5, 0.6);\n;, the bot will move forward with half-speed, turning at the same time slightly to the left: the right-hand motor moves a little faster (\c;0.6\n;) than the left-hand motor (\c;0.5\n;).
+
+\b;General principle
+In order to move forward for exactly 25 meters and not more, you must move full speed during the first 23 meters, then reduce the speed of the motors progressively during the last two meters.
+The \l;variable\u cbot\var; \l;position\u cbot\object; gives you at any moment the current position of the bot, and the instruction \c;\l;distance\u cbot\dist;( , );\n; returns the distance between two points. The best way to know where you are consists in saving the current position before the start into a \l;variable\u cbot\var;, for example a variable called \c;start\n;. Then you can calculate the distance between the starting position and your current position with \c;distance(position, start)\n;.
+
+\b;The program
+1) declare the variables
+\s;\c; point start;
+\s; float len;
+\n;
+2) save the starting position
+\s;\c; start = position;
+\n;
+3) start full throttle :
+\s;\c; motor(1, 1);
+\n;
+4) Perform an infinite \c;\l;while\u cbot\while;\n; loop:
+\s;\c; while ( true )
+\s; {
+\s; len = distance(position, start);
+\s; if ( len > 25-2 )
+\s; {
+\s; motor( less than before ! );
+\s; }
+\s; }
+\n;
+As long as the distance between the start and the current position is smaller than 23m, the instruction in braces after the \c;\l;if\u cbot\if;\n; instruction will not be executed, so the motors keep their maximum speed as they were told by the \c;\l;motor\u cbot\motor;(1,1);\n; instruction.
+
+In order to slow down progressively, the speed of the motors must be proportional to the remaining distance:
+o \c;2.0\n; meters left -> speed = \c;1.00\n; (maximum)
+o \c;1.5\n; meters left -> speed = \c;0.75\n;
+o \c;1.0\n; meter left -> speed = \c;0.50\n;
+o \c;0.5\n; meter left -> speed = \c;0.25\n;
+o \c;0.0\n; meter left -> speed = \c;0.00\n; (stop)
+
+\image tdragst1 12 6;
+You can use the following \l;expression\u cbot\expr; \c;(25-len)/2\n; in order to calculate the value for the speed instruction that must be given to the motors.
+
+It is now up to you to put everything together and to test the program.
+
+\b;Remark
+You can use values greater than 1 for the instruction \c;\l;motor\u cbot\motor;();\n;, but the bot will not move any faster.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/texch1.txt b/help/D/texch1.txt
new file mode 100644
index 00000000..914ba70f
--- /dev/null
+++ b/help/D/texch1.txt
@@ -0,0 +1,31 @@
+\b;Exercise
+Several \l;information exchange posts\u object\exchange; stand in the middle of a \l;mine\u object\mine; field. When the bot is close enough to an exchange post, it can read the information that it contains. Every exchange post contains the angle of the rotation that must be performed in order to reach the next exchange post, without touching a \l;mine\u object\mine;.
+The exchange posts are distant 20m from each other.
+
+\b;General principe
+Repeat 5 times :
+ o Move 20m forward.
+ o Read the direction of the next \l;information exchange post\u object\exchange;.
+ o Execute the necessary rotation.
+
+\image tinfo1 8 8;
+In order to repeat the steps above, use a \c;\l;for\u cbot\for;\n; loop, as we saw it before.
+\s;\c; for ( int i=0 ; i<5 ; i=i+1 )
+\n;
+Move forward with the instruction \c;move(20);\n;.
+
+Use the instruction \c;\l;receive\u cbot\receive;("Direction");\n; in order to read the information contained in the \l;exchange post\u object\exchange;. This is of course possible only when the bot is close enough to the exchange post.
+You will need a \l;variable\u cbot\var; to contain the value retrieved from the exchange post. Let us call it \c;dir\n;; you must declare it with the following line:
+\s;\c; float dir;
+\n;
+Then retrieve the rotation angle from the exchange post, and put it into the variable:
+\s;\c; dir = receive(...);
+\n;
+Then you can execute the rotation:
+\s;\c; turn(dir);
+\n;
+\b;Remark
+You can click on an \l;information exchange post\u object\exchange; in order to read what information it contains. In this exercise, every exchange post contains only one value called \c;"Direction"\n;, but it can contain up to 10 different values, as you will see in some of the following exercises.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/texch2.txt b/help/D/texch2.txt
new file mode 100644
index 00000000..842770cf
--- /dev/null
+++ b/help/D/texch2.txt
@@ -0,0 +1,36 @@
+\b;Exercise
+In this exercise, the \l;information exchange posts\u object\exchange; along the way contain the direction of the next post and the distance. And you do not know how many exchange posts you must get in touch with before arriving at your goal.
+
+\b;General principle
+ Repeat forever:
+ o Retrieve the direction from the \l;exchange post\u object\exchange;.
+ o Retrieve the distance from the \l;exchange post\u object\exchange;.
+ o If no information could be retrieved, stop the program.
+ o Execute the rotation.
+ o Move forward to the next post.
+
+In order to repeat always, use a \c;\l;while\u cbot\while; (true)\n; loop. The instructions between the braces \c;{ }\n; will be repeated over and over, or until a \c;\l;break\u cbot\break;\n; instruction is executed.
+\s;\c; while ( true )
+\n;
+This time you need 2 \l;variables\u cbot\var;, one for the rotation angle, one for the distance, for example \c;dir\n; and \c;len\n; :
+\s;\c; float dir, len;
+\n;
+Then you can retrieve the information:
+\s;\c; dir = receive("Direction");
+\s;\c; len = receive("Length");
+\n;
+A variable of the \l;type\u cbot\type; \c;\l;float\u cbot\float;\n; can take a special value called \c;\l;nan\u cbot\nan;\n;. This value means that the variable contains no number (Not A Number).
+When there is no \l;exchange post\u object\exchange; nearby, either because the bot has reached the goal, or because it took the wrong way, the two variables \c;dir\n; and \c;len\n; contain this value. You can test this with the instruction \c;\l;if\u cbot\if;\n;, and stop the program if necessary with the instruction \c;\l;break\u cbot\break;\n;:
+\s;\c; if ( dir == nan ) break;
+\n;
+If the information retrieval from the \l;exchange post\u object\exchange; has been performed successfully, execute the rotation:
+\s;\c; turn(dir);
+\n;
+And move forward:
+\s;\c; move(len);
+\n;
+\b;Remark
+You can click on an \l;information exchange post\u object\exchange; in order to read what information it contains. In this exercise, every exchange post contains two values called \c;"Direction"\n; and \c;"Length"\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/tfollow1.txt b/help/D/tfollow1.txt
new file mode 100644
index 00000000..25f6fb93
--- /dev/null
+++ b/help/D/tfollow1.txt
@@ -0,0 +1,62 @@
+\b;Exercise
+You must follow the \l;target bot\u object\bottr; with the explosive device, but without touching it, otherwise it will blow up. Every time the target bot stops, you must be close to it (less than 10m). After you managed to stay close to the target bot at 10 successive stops, it will lead you to the finishing pad, and the exercise is over. At every stop, the target bot checks that you are there. If you are not there, you must start over again.
+
+\b;General principle
+Repeat forever :
+o Look for the target bot.
+o Calculate the distance to the bot.
+o if the distance to the target bot is less than 5m, move backward.
+o Otherwise, calculate the direction of the target bot, and move towards it.
+
+As many times before, use \c;\l;while\u cbot\while; (true)\n; in order to perform the infinite loop:
+\s;\c;while (true)
+\s;{
+\s; \n;instructions to be repeated ...\c;
+\s;}
+\n;
+Look for the target bot with the instruction \c;\l;radar\u cbot\radar;\n;:
+\s;\c; target = radar(TargetBot);
+\n;
+You do not have to test if the radar found a target bot: there must be one.
+
+Use the instruction \c;\l;distance\u cbot\dist;( , )\n; to calculate the distance between two points. The first point will be the position of your own bot, given by \c;position\n;. The second point is the position of the target bot, given by \c;target.position\n;.
+\s;\c;len = distance(position, target.position);
+\n;
+If the distance to the target bot is smaller than 5m, move backward with a speed inversely proportional to the distance: the closer you are to the bot, the faster you must move backward.
+ Distance = 5.0 meters -> speed = 0.0
+ Distance = 2.5 meters -> speed = -0.5
+ Distance = 0.0 meters -> speed = -1.0
+You can use the \l;expression\u cbot\expr; \c;distance/5-1\n; in order to achieve this, together with the \c;\l;if\u cbot\if;\n; to test if the target is closer than 5m:
+\s;\c;if ( len < 5 ) // too close ?
+\s;{
+\s; motor(len/5-1, len/5-1); // moves backward
+\s;}
+\n;
+If the distance to the target is greater than 5m, move towards the target. First calculate the angle necessary to face the target with the instruction \c;\l;direction\u cbot\direct;\n;. You can then adjust the speed of the right-hand and left-hand motor in order to follow the target:
+\s;\c;else
+\s;{
+\s; dir = direction(target.position);
+\s; if ( dir >= 0 ) // target on the left side?
+\s; {
+\s; motor(1-dir/90, 1);
+\s; }
+\s; else // target on the right side?
+\s; {
+\s; \n;it is up to you to fill in\c;
+\s; }
+\s;}
+\n;
+When the target is on your left, \c;dir\n; takes a positive value, ranging between 0 and 180. The \l;expression\u cbot\expr; \c;1-dir/90\n; returns a speed ranging between 1 and -1, according to the direction:
+ direction = 0 -> speed = 1.0
+ direction = 45 -> speed = 0.5
+ direction = 90 -> speed = 0.0
+ direction = 135 -> speed = -0.5
+ direction = 180 -> speed = -1.0
+
+\image radar2 14 10;
+When the target is on the right side, \c;dir\n; is negative, ranging between 0 and -180.
+
+The only task left for you now is to declare the \l;variables\u cbot\var; that you use in the program. \c;target\n; is of type \c;object\n;, whereas \c;dir\n; and \c;len\n; are of type \c;float\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/tfor.txt b/help/D/tfor.txt
new file mode 100644
index 00000000..07285d69
--- /dev/null
+++ b/help/D/tfor.txt
@@ -0,0 +1,57 @@
+\b;Exercise
+Destroy the six \l;targets\u object\bottarg; with a program using a loop. The bot must move 5m forward to get from one target to the next.
+
+\b;General principle
+The program must execute the following scheme:
+Repeat 6 times :
+ o move 5m forward
+ o turn 90 degrees left
+ o shoot
+ o turn 90 degrees right
+
+\image tfor1 14 5;
+\b;Instruction \c;for ( )\n;
+The instruction \c;\l;for\u cbot\for;\n; asks for 3 expressions:
+1) Initialize the counting variable.
+2) The end \l;condition\u cbot\cond;.
+3) The counting \l;expression\u cbot\expr;.
+
+Here is the loop once it is integrated into the program frame:
+\s;\c;extern void object::Massacre( )
+\s;{
+\s; for ( int i=0 ; i<6 ; i=i+1 )
+\s; {
+\s; \n;instructions repeated 6 times ...\c;
+\s; }
+\s;}
+\n;
+ATTENTION: The line \c;for ( )\n; must not be followed by a \l;semicolon\u cbot\term; !
+
+\b;Explanation of the instruction \c;for ( )\n;
+1) \c;int i=0\n;
+ The \l;variable\u cbot\var; i is set to zero before the beginning of the loop.
+
+2) \c;i<6\n;
+ The loop will be executed as long as i is smaller than 6.
+
+3) \c;i=i+1\n;
+ At the end of every loop, add 1 to the variable i.
+
+\b;Blocks
+Use braces \c;{ }\n; in order to create a \l;block\u cbot\bloc;. All the instructions that must be executed in the \c;for\n; loop are held together by a block. The whole program itself is made up of a block:
+\c;
+\s;extern void object::massacre( )
+\s;{
+\s; \n;fill in here ...\c;
+\s;}
+\n;
+Never change these characters. Just add the instructions of the program between the braces.
+You can fit several blocks one into the other. For example the \c;for\n; block is fitted into the block of the whole program. In order to improve readability, the editor lines up the braces belonging to the different blocks.
+
+\b;Remember
+The instruction used to move forward is \c;\l;move\u cbot\move;();\n;.
+The instruction used to turn the bot is \c;\l;turn\u cbot\turn;();\n;. A positive angle turns left.
+The instruction used to fire the cannon is \c;\l;fire\u cbot\fire;(1);\n;. A one-second burst allows to destroy all six \l;targets\u object\bottarg;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/tlaby1.txt b/help/D/tlaby1.txt
new file mode 100644
index 00000000..c5deb7c6
--- /dev/null
+++ b/help/D/tlaby1.txt
@@ -0,0 +1,62 @@
+\b;Exercise
+Program the bot so that it will find its way without hitting the walls of the labyrinth. We suppose that you do not know the configuration of the labyrinth, but there are no bifurcations, and no dead-ends. The labyrinth is made of squares measuring 5m each.
+
+\b;The instruction \c;radar\n;
+The instruction \c;\l;radar\u cbot\radar;(Barrier, 0, 45, 0, 5);\n; will find any \l;barrier\u object\barrier; in front of the radar that is closer than 5m. Let us take a closer look at the five parameters used:
+
+\s;\c;Barrier\n;
+\l;Category\u cbot\category; of the object that the radar must look for, i.e. a barrier.
+
+\s;\c;0\n;
+Direction of the radar. \c;0\n; means that the radar must search straight forward.
+
+\s;\c;45\n;
+Opening angle in degrees. With an opening angle of 45 degrees, barriers situated between 22.5 degrees to the left and 22.5 degrees to the right will be detected.
+
+\s;\c;0\n;
+Minimum detection distance. \c;0\n; means that even object that are very close to the bot will be detected.
+
+\s;\c;5\n;
+Maximum detection range. Any barrier situated beyond \c;5\n; meters will not be detected.
+
+To take another example, \c;\l;radar\u cbot\radar;(Barrier, 90, 45, 0, 5);\n; will direct the radar 90 degrees to the left, in order to test if the way to the left is free.
+
+\image tlaby1 10 10;
+\b;General principle
+The program must only take care of one square portion of the labyrinth. You will have to execute it several times in order to arrive at the finishing pad.
+o If there is nothing in front, move forward.
+o If there is nothing on the left side, quarter turn left, move forward.
+o If there is nothing on the right side, quarter turn right, move forward.
+
+1) First of all declare three \l;variables\u cbot\var; of type \c;\l;object\u cbot\object;\n;, that we call \c;front\n;, \c;left\n; and \c;right\n;. Variables of this type can contain the description of any object, for example of a barrier found by the radar.
+\s;\c; object front, left, right;\n;
+
+2) Look for barriers in all three directions, and put the result of the \c;radar\n; instruction into the three variables defined at point 1). If the radar finds nothing, the variable will contain the value \c;\l;null\u cbot\null;\n;.
+\s;\c; front = radar(Barrier, 0, 45, 0, 5);
+\s; left = radar(Barrier, 90, 45, 0, 5);
+\s; right = radar(Barrier, -90, 45, 0, 5);
+\n;
+3) Test if the way is free in front of the bot with the instruction \c;\l;if\u cbot\if;\n;. If the test is true, the instructions in braces \c;{ }\n; will be executed, otherwise the execution will resume after the closing brace \c;}\n;.
+The instruction \c;return\n; leaves the program: the job is done.
+\s;\c;if ( front == null )
+\s;{
+\s; move(5);
+\s; return;
+\s;}
+\n;
+4) Test if it is possible to turn left; if so, turn left with the instruction \c;\l;turn\u cbot\turn;\n; and move 5m forward.
+\s;\c;if ( left == null )
+\s;{
+\s; turn(90);
+\s; move(5);
+\s; return;
+\s;}
+\n;
+5) Test if it is possible to turn right.
+ ...
+
+\b;Attention
+The instruction \c;if ( )\n; must never be followed by a \l;semicolon\u cbot\term;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/tlaby2.txt b/help/D/tlaby2.txt
new file mode 100644
index 00000000..b09ec7f2
--- /dev/null
+++ b/help/D/tlaby2.txt
@@ -0,0 +1,55 @@
+\b;Exercise
+This exercise is very similar to the previous one. This time the bot should find its way alone from the start to the goal; you will have to execute the program only once.
+
+\b;Remark
+The labyrinth is not exactly the same, but this should be of no importance, as the program adapts to what it "sees".
+
+\image tlaby1 10 10;
+\b;General principle
+Use an infinite \c;\l;while\u cbot\while;\n; loop in order to execute the previous program several times:
+\s;\c;while ( true )
+\s;{
+\s; \n;If there is nothing in front, move forward\c;
+\s; \n;If there is nothing on your left hand, turn left\c;
+\s; \n;If there is nothing on your right hand, turn right\c;
+\s;}
+\n;
+Inside this \c;while\n; loop, replace the \c;return\n; instructions by \c;\l;continue\u cbot\continue;\n; instructions. \c;return\n; would quit the program, which is not what we want here. \c;continue\n; will just resume the execution at the beginning of the \c;\l;while\u cbot\while;\n; loop:
+\s;\c;if ( front == null )
+\s;{
+\s; move(5);
+\s; continue;
+\s;}
+\n;
+\b;Remember
+Here is again the program of the previous exercise :
+\c;
+\s;object front, left, right;
+\s;
+\s;front = radar(Barrier, 0, 45, 0, 5);
+\s;left = radar(Barrier, 90, 45, 0, 5);
+\s;right = radar(Barrier, -90, 45, 0, 5);
+\s;
+\s;if ( front == null )
+\s;{
+\s; move(5);
+\s; return;
+\s;}
+\s;if ( left == null )
+\s;{
+\s; turn(90);
+\s; move(5);
+\s; return;
+\s;}
+\s;if ( right == null )
+\s;{
+\s; turn(-90);
+\s; move(5);
+\s; return;
+\s;}
+\n;
+\b;Help
+If you need some help, just click on the hyperlinks of the instructions \c;\l;radar\u cbot\radar;\n;, \c;\l;if\u cbot\if;\n;, \c;\l;move\u cbot\move;\n; or \c;\l;turn\u cbot\turn;\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/tmove1.txt b/help/D/tmove1.txt
new file mode 100644
index 00000000..24604c1f
--- /dev/null
+++ b/help/D/tmove1.txt
@@ -0,0 +1,33 @@
+\b;Exercise
+Program the robot in such a way that it arrives on the finishing pad, after having passed by the three blue crosses.
+
+\b;Procedure
+1) Take the power cell and put it on the rear of the bot.
+2) Walk around on reconnaissance to understand what the bot must do.
+3) Program the bot. To do so, you must select it, and then click on the braces button \button 22;; you will get into the program editor.
+4) Once you finished writing the program, click "OK", and execute the program with the arrow key \button 21;.
+
+\b;Program
+The pads are at a distance of 20 meters from each other.
+The instruction \c;move(20);\n; moves 20 meters forward.
+The instruction \c;turn(90);\n; turns left with an angle of 90 degrees.
+The instruction \c;turn(-90);\n; turns right with an angle of 90 degrees.
+
+The frame of the program consists in:
+\c;
+\s; extern void object::MoveBot( )
+\s; {
+\s; \n;\\write the necessary instructions here ...\c;
+\s; }
+\n;
+For now, you must not change the frame of the program. Just insert the instructions you need to move the bot around between the braces \c;{ }\n;.
+
+\b;Attention
+Be very careful about upper case and lower case letters!
+Every instruction must be terminated with a semicolon.
+
+\b;Helpful trick
+When you write the program, you can watch the scene by clicking on the button \button 51;, and by moving the mouse to the edges of the window to turn the camera.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/tmove2.txt b/help/D/tmove2.txt
new file mode 100644
index 00000000..14e873f5
--- /dev/null
+++ b/help/D/tmove2.txt
@@ -0,0 +1,66 @@
+\b;Exercise
+This exercise is very similar to the previous one. The bot must move exactly in the same way, but when writing the program, you must use a new concept that is extremely important in programming: \l;variables\u cbot\var;.
+We saw that all the pads are at a distance form each other of 20 meters. And all the rotations performed consist in 90 degree angles. Instead of rewriting the same values over and over again in the program, we can store them in a variable:
+
+Instead of:
+\c;\s; move(20);
+\s; turn(90);
+\s; move(20);
+\s; turn(-90);
+\s; ...
+\n;
+We write :
+\c;\s; dist = 20;
+\s; dir = 90;
+\s; move(dist);
+\s; turn(dir);
+\s; move(dist);
+\s; turn(-dir);
+\s; ...
+\n;
+\b;Variables
+A \l;variable\u cbot\var; is composed of three elements:
+1) The name
+2) The type of the content
+3) The content
+
+\t;The name
+Use the name to refer to a variable. For example, instead of writing \c;move(20);\n;, write \c;move(dist);\n;: "dist" is the name of the variable. You can choose almost any name for a variable, for example \c;dist\n;, \c;dir\n;, \c;p2\n;, \c;a\n;, \c;x\n;, \c;nothing_2_grab\n;, etc.
+
+\t;The type
+The type of a variable determines what kind of information the variable can contain. According to the type, a variable can contain a whole number, a real number, a character string, the coordinates of a point, etc. Here is a list with the most common variable types:
+ o \c;\l;int\u cbot\int;\n; for a whole number (12, -500, etc.)
+ o \c;\l;float\u cbot\float;\n; for a real number (3.14, 0.2, -99.98, etc.)
+ o \c;\l;string\u cbot\string;\n; for a character string ("Hello!", "Nothing to grab", etc.)
+ o \c;\l;point\u cbot\point;\n; for the x,y,z-coordinates of a point in space
+ o \c;\l;object\u cbot\object;\n; for the information about an object (bot, building, etc.)
+
+\t;The content
+The content of a variable can be a number, a string, coordinates, etc., according to the type of the variable. The content of a variable can change many times during the execution of a program.
+
+Before you can use a variable, you have to declare it. For example, before you can use the two variables \c;dist\n; and \c;dir\n;, you must declare them with the following lines:
+\c;
+\s; float dist;
+\s; float dir;
+\n;
+Now you can use the two variables. To put the value 20 into \c;dist\n; and 90 into \c;dir\n;, write:
+\c;
+\s; dist = 20;
+\s; dir = 90;
+\n;
+Now you can move and turn the bot with the instructions \c;\l;move\u cbot\move;\n; and \c;\l;turn\n;\u cbot\turn;:
+\c;
+\s; move(dist);
+\s; turn(dir);
+\n;
+You can also use a whole \l;mathematical expression\u cbot\expr; instead of just the variable:
+\c;
+\s; move(dist+100);
+\s; turn(-dir);
+\n;
+The latter instruction will be needed to turn the bot right.
+
+Now, rewrite the program of the previous exercise, but use a variable for the distance and another variable for the angle of the rotation.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/tproc1.txt b/help/D/tproc1.txt
new file mode 100644
index 00000000..484d7897
--- /dev/null
+++ b/help/D/tproc1.txt
@@ -0,0 +1,59 @@
+\b;Exercise
+The \l;bot\u object\bottr; must pass over all the \l;blue crosses\u object\waypoint; on the ground. The way that must be covered is made of two squares. The first one measures 15 meters, the second 25 meters.
+
+\image tproc1a 8 8;
+\b;General principle
+In order to solve this problem, the most efficient solution consists in creating a \l;function\u cbot\function; that instructs the bot to move on a square shape of a certain size. The main program becomes then very simple:\c;
+\s;extern void object::Function1( )
+\s;{
+\s; Square(15);
+\s; Square(25);
+\s;}
+\n;
+You still have to define the function called \c;Square\n;. In order to do this, you will have to write some instructions outside the \l;block\u cbot\bloc; that until now was the frame of each one of your programs. At the very end of the program, after the last closing brace, we will define the function \c;Square\n;. The program will take the following shape:
+\c;
+\s;extern void object::Function1( )
+\s;{
+\s; \n;main function ...\c;
+\s;}
+\s;
+\s;void object::Square(float length)
+\s;{
+\s; \n;new function ...\c;
+\s;}
+\n;
+Let us look in detail at the different elements of the declaration of the function \c;Square\n;:
+
+\c;\l;void\u cbot\void;\n;
+This means that this function will return no value.
+
+\c;\l;object\u cbot\object;::\n;
+When you write this in front of the function name, you can have access in the function to all the characteristics of the bot, such as \c;position\n;, \c;orientation\n;, etc. In this exercise, this element is not compulsory, as we will not need the characteristics of the bot in the function.
+
+\c;Square ( )\n;
+This is the name of the function. You can call it Square, or any other name.
+
+\c;\l;float\u cbot\float; length\n;
+Here you define the parameters that the function will get when it is called. The first time the function is actually called with \c;Square(15)\n;, the variable \c;length\n; will contain the value \c;15\n;. The second time, \c;length\n; will contain \c;25\n;.
+
+Here is in detail what will happen when the program is executed:
+- First the main function \c;Function\n; will be executed.
+- At the line \c;Square(15)\n;, the program will follow the red arrow and enter the function \c;Square\n; a first time, \c;length\n; containing \c;15\n;.
+- At the end of the function \c;Square\n;, the program follows the orange arrow and comes back to the main function.
+- At the line \c;Square(25)\n;, the program will follow the blue arrow and enter the function \c;Square\n; a second time.
+- At the end of the function \c;Square\n;, the program follows the light blue arrow and comes back to the main function.
+
+\image tproc1b 17 12;
+In the function \c;Square\n;, use the instructions \c;\l;move\u cbot\move;\n; and \c;\l;turn\u cbot\turn;\n;. In order to make it shorter, you can use a \c;\l;for\u cbot\for;\n; loop, that will repeat the instructions \c;\l;move\u cbot\move;\n; and \c;\l;turn\u cbot\turn;\n; 4 times; however, this is not compulsory.
+\c;
+\s;void object::Square(float length)
+\s;{
+\s; for ( int i=0 ; i<4 ; i=i+1 )
+\s; {
+\s; move(length);
+\s; turn(90);
+\s; }
+\s;}
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/tproc2.txt b/help/D/tproc2.txt
new file mode 100644
index 00000000..6be8e7b2
--- /dev/null
+++ b/help/D/tproc2.txt
@@ -0,0 +1,34 @@
+\b;Exercise
+Follow the way in form of a spiral. The bot must move 2 times 25m forward and turn, then move 2 times 20m forward and turn, and so on.
+\image tproc2 8 8;
+\b;Function
+You will have noticed that the way is made of "L"-shaped parts that are fit one into another. The first one (dark blue) measures two times 25 meters. The second one (light blue) measures 5 meters less. Let us start with writing the \l;function\u cbot\function; that will move the bot on a "L"-shaped part whose length will be given as a parameter:
+\c;
+\s;void object::Part(float length)
+\s;{
+\s; for ( int i=0 ; i<2 ; i=i+1 )
+\s; {
+\s; move(length);
+\s; turn(90);
+\s; }
+\s;}
+\n;
+Now you just need to write the main function, that will call the function \c;Part\n;. At the beginning the variable \c;rest\n; will be set to 25m. The \c;while\n; loop will then repeat the instructions inside the block as long as \c;rest\n; is greater than zero. Inside the loop, first call the function \c;Part\n; (see above), then subtract 5m to the length of the L.
+\c;
+\s;extern void object::Function2( )
+\s;{
+\s; float rest = 25;
+\s; while ( rest > 0 )
+\s; {
+\s; Part(rest);
+\s; rest = rest-5;
+\s; }
+\s;}
+\n;
+The function \c;Part\n; will be called a last time with the value \c;5\n;. Then the expression \c;rest-5\n; will set the value of the variable \c;rest\n; to zero, and the \c;while\n; loop will stop.
+
+\b;Remark
+You will have noticed that in the previous exercise, the main function was at the beginning of the program, whereas in this exercise, it is at the end of the program, after the function \c;Part\n;. The rank order of the functions in the program does not matter, you can write a program either way.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/tradar1.txt b/help/D/tradar1.txt
new file mode 100644
index 00000000..d55a31c6
--- /dev/null
+++ b/help/D/tradar1.txt
@@ -0,0 +1,57 @@
+\b;Exercise
+Let the bot find all the \l;blue crosses\u object\waypoint; on the ground. As soon as the bot passed over one of the crosses, it will disappear. Here is the general principle that you will apply:
+
+Repeat forever:
+ o Look for a cross
+ o If there is none, stop the program.
+ o Calculate the direction of the cross.
+ o Set the speed of the motors in such a way that they will find their way to the cross.
+
+\b;The program
+Use a \c;\l;while\u cbot\while;\n; loop in order to repeat several instructions over and over:
+\s;\c;while ( true )
+\s;{
+\s; \n;instructions...\c;
+\s;}
+\n;
+The instruction \c;\l;radar\u cbot\radar;\n; will detect the blue crosses and put their description into a variable, for example \c;spot\n;. In this case, \c;\l;radar\u cbot\radar;()\n; needs only one parameter, i.e. the category of the object that it must look for:
+\s;\c;spot = radar(WayPoint);
+\n;
+Once all the crosses have been found, \c;radar\n; will return the value \c;\l;null\u cbot\null;\n;. You will have to test this case and react accordingly with the instruction \c;\l;if\u cbot\if;\n;:
+\s;\c;if ( spot == null ) // no more ?
+\s;{
+\s; motor(0, 0); // stops the motors
+\s; break; // stops the loop
+\s;}
+\n;The instruction \c;\l;break\u cbot\break;\n; will stop the infinite loop \c;while (true)\n;.
+
+Use the instruction \c;\l;direction\u cbot\direct;()\n; to calculate the angle of the rotation that the bot must perform in order to turn towards the blue cross. The coordinates of the object are given by \c;spot.position\n;. The following line will put the angle of the necessary rotation into the \l;variable\u cbot\var; \c;dir\n;:
+\s;\c;dir = direction(spot.position);
+\n;
+The value of the angle is positive if the blue cross is on your left hand, and negative if it is on your right hand. If the cross to be reached is on your left hand, you must set the right-hand motor to full speed, and set the left-hand motor to a lower speed, according to the angle:
+
+ direction = \c; 0\n; -> speed = \c; 1.0\n;
+ direction = \c; 45\n; -> speed = \c; 0.5\n;
+ direction = \c; 90\n; -> speed = \c; 0.0\n;
+ direction = \c;135\n; -> speed = \c;-0.5\n;
+ direction = \c;180\n; -> speed = \c;-1.0\n;
+
+The graphic below shows the speed of the left-hand and right-hand motor as set by the instruction \c;\l;motor\u cbot\motor;\n;, according to the angle:
+
+\image radar2 14 10;
+If the cross is straight ahead, the angle is 0 degrees. The motors will get the speeds 1 and 1, which means full speed ahead. If the cross is behind, the right motor will be set to speed -1: it will turn around. You can use the \l;expression\u cbot\expr; \c;1+dir/90\n; in order to calculate the necessary speed of the motors:
+\s;\c;if ( dir < 0 ) // on the right side?
+\s;{
+\s; motor(1, 1+dir/90); // turns more or less
+\s;}
+\n;
+Use the same principle if the angle has got a positive value, ranging between 0 and 180 degrees. It is up to you to work out the exact instructions to be performed:
+\s;\c;else // on the left side?
+\s;{
+\s; \n;up to you to fill in here...\c;
+\s;}
+\n;
+At the beginning of the program, you must still declare all the variables. \c;spot\n; is of type \c;\l;object\u cbot\object;\n;, whereas \c;dir\n; is of type \c;\l;float\u cbot\float;\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/tradar2.txt b/help/D/tradar2.txt
new file mode 100644
index 00000000..8ad15fce
--- /dev/null
+++ b/help/D/tradar2.txt
@@ -0,0 +1,8 @@
+\b;Exercise
+In this exercise, a "crazy bot" places many \l;blue crosses\u object\waypoint; on the ground. In order to find them, you can reuse the program written in the previous exercise. This can show you the flexibility of such a program: it adapts to whatever environment it encounters.
+
+\t;Remark
+Do not wait too long, because the crazy bot gets down to work immediately. Fortunately, as long as you are in the program editor, the game will pause.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/tremote1.txt b/help/D/tremote1.txt
new file mode 100644
index 00000000..70c55aa0
--- /dev/null
+++ b/help/D/tremote1.txt
@@ -0,0 +1,39 @@
+\b;Exercise
+Remote control a robot using an \l;information exchange post\u object\exchange;, so it will transport \l;uranium ore\u object\uranore;.
+The main actors of this exercise are¦:
+
+1) A \l;sniffer\u object\botsr; (can't carry anything).
+2) An \l;information exchange post\u object\exchange; that receives information from a sender and then transmits it to a receiver.
+3) A \l;grabber\u object\botgr; which waits for orders from the exchange post. You have no way control this robot directly.
+
+\image tremot1a 16 8;
+An information exchange post stores "name/value" couples. To control the "slave" robot we use just one couple¦:
+
+ name="order", valuer=order number
+
+The slace robot understands following orders¦:
+\c;
+ 1 -> grab(); // take an object
+ 2 -> drop(); // drop an object
+ 3 -> move(10); // move 10 meters forward
+ 4 -> move(-10); // move 10 meters backwards
+\n;
+To instruct the slave to move forward 10 meters all you have to do is¦:
+\c;\s; \l;send\u cbot\send;("order", 3, 100); // order 3 -> "move(10)"
+\n;
+After the send instruction we wait for 5 seconds to be sure the move is done.
+\c;\s; \l;wait\u cbot\wait;(5);
+\n;
+Remark: There is a better way for waiting the order has been executed, but we'll see this later in exercise "Remote Control #2".
+
+To finish the exercise you must¦:
+
+1) Take the uranium ore
+2) Move forward by 10 meters
+3) Drop the uranium ore
+4) Move backwards by 10 meters
+
+It's up to you to write the program.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/tremote2.txt b/help/D/tremote2.txt
new file mode 100644
index 00000000..58083be3
--- /dev/null
+++ b/help/D/tremote2.txt
@@ -0,0 +1,50 @@
+\b;Exercise
+Remote control a robot using an \l;information exchange post\u object\exchange;, so it will pass over the 6 blue waypoints.
+The main actors of this exercise are¦:
+
+1) A \l;wheeled grabber\u object\botgr; robot without an energy cell. This is the master you have to program.
+2) An \l;information exchange post\u object\exchange; that receives information from the master and then transmits it to the slave.
+3) A \l;practice bot\u object\bottr; which waits for orders from the exchange post. This robot has already been programmed.
+
+\image tremot2a 16 8;
+An information exchange post stores "name/value" couples. To control the "slave" robot we use two couples¦:
+
+1) name="order", value=order number
+2) nom="param", valuer=parameter for the operation
+
+Order #1 means "move" and order #2 means "turn". The parameter is the distance to move or the turning angle. For example to make the slave move 20 meters write¦:
+\c;\s; \l;send\u cbot\send;("order", 1, 100); // order "move"
+\s; \l;send\u cbot\send;("param", 20, 100); // distance 20 meters
+\n;
+These two instruction send following 2 pieces of information to the exchange post¦:
+\c; order=1
+ param=20
+\n;
+The slave robot waits for an order and executes it. Once the order has been executed by the slave, it removes the order from the exchange post. Once an order has been sent, the master must wait for the slave finishing the order before sending the next order. This is done by testing if the order is still inside the exchange post. Just write¦:
+\c;\s; while ( \l;testinfo\u cbot\testinfo;("order", 100) ) // wait for end of work
+\s; {
+\s; wait(1);
+\s; }
+\n;
+As we must give more than one order its most convenient to write a \l;function\u cbot\function; \c;SendToPost\n;, that sends the order and wait for its completion¦:
+\c;\s;void object::SendToPost(float order, float param)
+\s;{
+\s; send("param", param, 100); // send the parameter
+\s; send("order", order, 100); // send the order
+\s;
+\s; while ( testinfo("order", 100) ) // wait for end of work
+\s; {
+\s; wait(1);
+\s; }
+\s;}
+\n;
+To move forward by 20 meters, you must write in the main program¦:
+\c;\s; SendToPost(1, 20); // move(20);
+\n;
+This is the route the robot must travel through¦:
+
+\image tremot2b 8 8;
+It's up to you to finish the programming.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/tremote3.txt b/help/D/tremote3.txt
new file mode 100644
index 00000000..b8875f05
--- /dev/null
+++ b/help/D/tremote3.txt
@@ -0,0 +1,103 @@
+\b;Exercice
+Remote control a slave robot without using an \l;information exchange post\u object\exchange;. The robot should pass over the 6 blue crosses. You must use a \l;string\u cbot\string; to pass the orders to the slave bot. This string contains the order the slave shoud execute, for exemple \c;"move(20)"\n;. You can see that this is the same syntax as used in the CBOT language but we could have chosen any other syntax for exemple something like \c;"advance=20"\n;. The string will be a \c;\l;static\u cbot\static;\n; class member that will be used to communicate from the master to the slave.
+
+The two main actors of this exercise are:
+1) The \l;wheeled grabber\u object\botgr; without an energy pack and therefore immobile. This is the master you should program so it will transmit orders to the slave.
+2) The slave \l;practice bot\u object\bottr; which is already programmed and just waits for orders from the master.
+
+\b;The slave
+First of all we must understand how the program of the slave works. The \l;class\u cbot\class; \c;exchange\n; contains the mechanism for exchaning the orders. We declare a \c;\l;static\u cbot\static;\n; class member \c;m_order\n; which will contain the order to be executed. The word \c;static\n; insures that the member \c;m_order\n; is shared between all instances of the \l;class\u cbot\class; exchange.
+
+\c;\s;\l;public\u cbot\public; \l;class\u cbot\class; exchange
+\s;{
+\s; \l;static\u cbot\static; \l;private\u cbot\private; \l;string\u cbot\string; m_order = "";
+
+\n;The \c;put\n; method will be used by the master robot for transmitting an order. As long as the string \c;m_order\n; is not empty, the slave has not finished the order and the \c;put\n; method will return \c;false\n; and will do nothing.
+
+\c;\s; \l;synchronized\u cbot\synchro; \l;bool\u cbot\bool; put(string order)
+\s; {
+\s; if ( m_order == "" )
+\s; {
+\s; m_order = order;
+\s; return true;
+\s; }
+\s; else
+\s; {
+\s; return false;
+\s; }
+\s; }
+\n;
+Another method \c;get\n; will be used by the slave to retrieve the orders. This method returns the string contained in \c;m_order\n; and empties it, so a new order can be accepted:
+
+\c;\s; \l;synchronized\u cbot\synchro; string get()
+\s; {
+\s; string ret = m_order;
+\s; m_order = "";
+\s; return ret;
+\s; }
+\s;}
+\n;
+The main program of the slave contains an instance of the class \c;exchange\n; called \c;list\n;.
+
+\c;\s;\l;extern\u cbot\extern; void object::Slave3( )
+\s;{
+\s; exchange list();
+\s; string todo;
+\n;
+The outer \c;while\n; loop lasts for ever. The inner \c;while\n; loop waits for an order by using the \c;get\n; method of the \c;exchange\n; class. As soon as \c;get\n; returns a non empty string, the while loop stops.
+
+\c;\s; \l;while\u cbot\while; ( true )
+\s; {
+\s; \l;while\u cbot\while; ( true )
+\s; {
+\s; todo = list.get();
+\s; if ( todo != "" ) break;
+\s; wait(1);
+\s; }
+\n;
+Now we have received the order in the \c;todo\n; variable. All we have to do is execute it:
+
+\c;\s; if ( \l;strfind\u cbot\strfind;(todo, "move") == 0 )
+\s; {
+\s; move(\l;strval\u cbot\strval;(\l;strmid\u cbot\strmid;(todo,5)));
+\s; }
+\s; if ( strfind(todo, "turn") == 0 )
+\s; {
+\s; turn(strval(strmid(todo,5)));
+\s; }
+\s; }
+\s;}
+\n;
+\b;The master
+In the master we write an function called \c;SendOrder\n; which will send an order to the slave:
+
+\c;\s;void object::SendOrder(string order)
+\s;{
+\s; exchange list();
+\s;
+\s; while ( list.put(order) == false )
+\s; {
+\s; wait(1);
+\s; }
+\s;}
+\n;
+The \c;while\n; loop waits until a pending order has been terminated, that is the slaved has exited from the \c;get\n; method.
+Now the main program of the master is very simple:
+
+\c;\s;extern void object::Remote3( )
+\s;{
+\s; SendOrder("move(20)");
+\s; SendOrder("turn(90)");
+\s; SendOrder("move(20)");
+\s; SendOrder("turn(90)");
+\s; SendOrder("move(10)");
+\s; SendOrder("turn(90)");
+\s; SendOrder("move(10)");
+\s; SendOrder("turn(-90)");
+\s; SendOrder("move(10)");
+\s;}
+\n;
+\key;\key help;\norm; show these instruction at any time.
+
+\t;See also
+\l;Controls\u command; and \l;programming\u cbot;.
diff --git a/help/D/tremote4.txt b/help/D/tremote4.txt
new file mode 100644
index 00000000..876a00f3
--- /dev/null
+++ b/help/D/tremote4.txt
@@ -0,0 +1,129 @@
+\b;Exercise
+Remote control a slave robot without using an \l;information exchange post\u object\exchange;. The robot should pass over the 6 blue crosses. You must use a \c;\l;static\u cbot\static;\n; variable to pass the orders to the slave bot.
+
+The two main actors of this exercise are:
+1) The \l;wheeled grabber\u object\botgr; without an energy pack and therefore immobile. This is the master you should program so it will transmit orders to the slave.
+2) The slave \l;practice bot\u object\bottr; which is already programmed and just waits for orders from the master.
+
+\b;The slave
+First of all we must understand how the program of the slave works. The \l;class\u cbot\class; \c;order\n; contains two members: \c;m_type\n; is the order to execute (move or turn) and \c;m_param\n; is the distance to move or the rotation angle¦:
+
+\c;\s;\l;public\u cbot\public; \l;class\u cbot\class; order
+\s;{
+\s; \l;int\u cbot\int; m_type = \l;nan\u cbot\nan;;
+\s; \l;float\u cbot\float; m_param;
+\s;}
+\n;
+A second \l;class\u cbot\class; \c;exchange\n; contains the mechanism for exchanging the orders. We declare a \c;\l;static\u cbot\static;\n; class member \c;m_order\n; which will contain the order to be executed. The word \c;static\n; insures that the member \c;m_order\n; is shared between all instances of the \l;class\u cbot\class; exchange.
+
+\c;\s;\l;public\u cbot\public; \l;class\u cbot\class; exchange
+\s;{
+\s; \l;static\u cbot\static; \l;private\u cbot\private; order m_order = new order;
+\n;
+\n;The \c;put\n; method will be used by the master robot for transmitting an order. As long as \c;m_order\n; is different from \c;\l;nan\u cbot\nan;\n;, the slave has not finished the order and the \c;put\n; method will return \c;false\n; and will do nothing¦:
+
+\c;\s; \l;synchronized\u cbot\synchro; \l;bool\u cbot\bool; put(order a)
+\s; {
+\s; if ( m_order.m_type == nan )
+\s; {
+\s; m_order = a;
+\s; return true;
+\s; }
+\s; else
+\s; {
+\s; return false;
+\s; }
+\s; }
+\n;
+Another method \c;get\n; will be used by the slave to retrieve the orders. This method returns the order to be executed:
+
+\c;\s; \l;synchronized\u cbot\synchro; order get()
+\s; {
+\s; return m_order;
+\s; }
+\n;
+A third method \c;delete\n; will be used by the slave to indicate that the order has been executed:
+
+\c;\s; \l;synchronized\u cbot\synchro; void delete()
+\s; {
+\s; m_order.m_type = nan;
+\s; }
+\s;}
+\n;
+The main program of the slave contains an instance of the class \c;exchange\n; called \c;list\n;. We put () after the word \c;list\n; in order to create an instance of the class \c;exchange\n;.
+
+\c;\s;\l;extern\u cbot\extern; void object::Slave3( )
+\s;{
+\s; exchange list();
+\s; order todo;
+\n;
+The outer \c;while\n; loop lasts for ever. The inner \c;while\n; loop waits for an order by using the \c;get\n; method of the \c;exchange\n; class. As soon as \c;get\n; returns a value different from \c;nan\n;, the while loop stops.
+
+\c;\s; \l;while\u cbot\while; ( true )
+\s; {
+\s; \l;while\u cbot\while; ( true )
+\s; {
+\s; todo = list.get();
+\s; if ( todo.m_type != nan ) break;
+\s; wait(1);
+\s; }
+\n;
+Now we have received the order in the \c;todo\n; variable. All we have to do is execute it:
+
+\c;\s; if ( todo.m_type == 1 )
+\s; {
+\s; move(todo.m_param);
+\s; }
+\s; else if ( todo.m_type == 2 )
+\s; {
+\s; turn(todo.m_param);
+\s; }
+\s; else
+\s; {
+\s; message("Unknown order");
+\s; }
+\n;
+As soon as the execution of the order is finished, we must call the \c;delete\n; method so the master knows that another order can be sent¦:
+
+\c;\s; list.delete();
+\s; }
+\s;}
+\n;
+\b;The master
+In the master we write an function called \c;SendOrder\n; which will send an order to the slave:
+
+\c;\s;void object::SendOrder(float order, float param)
+\s;{
+\s; exchange list();
+\s; order todo();
+\s;
+\s; todo.m_type = order;
+\s; todo.m_param = param;
+\s;
+\s; while ( list.put(todo) == false )
+\s; {
+\s; wait(1);
+\s; }
+\s;}
+\n;
+The \c;while\n; loop waits until a pending order has been terminated, that is the slaved has exited from the \c;get\n; method and the \c;delete\n; method has been called.
+Now the main program of the master is very simple:
+
+\c;\s;extern void object::Remote4( )
+\s;{
+\s; SendOrder(1, 20); // move(20);
+\s; SendOrder(2, 90); // turn(90);
+\s; SendOrder(1, 20); // move(20);
+\s; SendOrder(2, 90); // turn(90);
+\s; SendOrder(1, 10); // move(10);
+\s; SendOrder(2, 90); // turn(90);
+\s; SendOrder(1, 10); // move(10);
+\s; SendOrder(2,-90); // turn(-90);
+\s; SendOrder(1, 10); // move(10);
+\s;}
+\n;
+\key;\key help;\norm; show these instruction at any time.
+
+
+\t;See also
+\l;Controls\u command; and \l;programming\u cbot;.
diff --git a/help/D/tremote5.txt b/help/D/tremote5.txt
new file mode 100644
index 00000000..f2313946
--- /dev/null
+++ b/help/D/tremote5.txt
@@ -0,0 +1,113 @@
+\b;Exercise
+Remote control a slave robot without using an \l;information exchange post\u object\exchange;. The robot should pass over the 6 blue crosses.
+
+The two main actors of this exercise are:
+1) The \l;wheeled grabber\u object\botgr; without an energy pack and therefore immobile. This is the master you should program so it will transmit orders to the slave.
+2) The slave \l;practice bot\u object\bottr; which is already programmed and just waits for orders from the master.
+
+The orders shall be stored, so the master will be able to transmit several orders without waiting for each order being processed. We use an \l;array\u cbot\array; for this purpose.
+
+\b;The slave
+First of all we must understand how the program of the slave works. The \l;class\u cbot\class; \c;order\n; contains two members: \c;m_type\n; is the order to execute (move or turn) and \c;m_param\n; is the distance to move or the rotation angle¦:
+
+\c;\s;\l;public\u cbot\public; \l;class\u cbot\class; order
+\s;{
+\s; \l;int\u cbot\int; m_type;
+\s; \l;float\u cbot\float; m_param;
+\s;}
+\n;
+A second \l;class\u cbot\class; \c;exchange\n; contains the mechanism for exchanging the orders. We declare a \c;\l;static\u cbot\static;\n; class member \c;m_fifo\n; which will contain the list of orders to be executed. The word \c;static\n; insures that the member \c;m_fifo\n; is shared between all instances of the \l;class\u cbot\class; exchange.
+
+\c;\s;{
+\s; \l;static\u cbot\static; \l;private\u cbot\private; order m_fifo[] = null;
+\n;
+The \c;put\n; method will be used by the master robot for transmitting an order. The order will simply be added at the end of the \c;m_fifo\n; array:
+
+\c;\s; \l;synchronized\u cbot\synchro; void put(order a)
+\s; {
+\s; m_fifo[sizeof(m_fifo)] = a;
+\s; }
+\n;
+Another method \c;get\n; will be used by the slave to retrieve the orders. This method returns the order to be executed. If the list is empty, \c;null\n; will be returned and the robot must wait for more orders. Otherwise the first order in the list must be returned and the remaining orders must be "scrolled up". As an array can not be "shortened" we use a temporary array \c;copy\n;¦:
+
+\c;\s; \l;synchronized\u cbot\synchro; order get()
+\s; {
+\s; if ( sizeof(m_fifo) == 0 ) return null;
+\s;
+\s; order a = m_fifo[0];
+\s; order copy[] = null;
+\s; for ( int i=1 ; i 9)
+\s; {
+\s; \l;jet\u cbot\jet;(-1);
+\s; }
+\s; \l;wait\u cbot\wait;(0.2);
+\s; }
+\s; \l;fire\u cbot\fire;(1);
+\s; }
+\s;}
+\n;
+In order to adapt the program to shooting wasps, you need to make a few changes. Replace all \c;radar(AlienAnt)\n; with \c;radar(AlienWasp)\n;. The cannon must aim straight forward and not downward, replace \c;aim(-20);\n; with \c;aim(0);\n;. And the bot must fly at the same height as the wasp. For this, you must compare the altitude of the bot given by \c;position.z\n; with the altitude of the wasp given by \c;item.position.z\n;: if \c;position.z > item.position.z\n;, go down slowly with \c;jet(-0.3);\n;. If \c;position.z < item.position.z-1\n;, climb slowly with \c;jet(0.3);\n;. A winged shooter is higher than a wasp, therefore it is better if the altitude of the bot is a little lower than the altitude of the wasp. In this case, we admit that the altitude of the bot ranges between the altitude of the wasp and the altitude of the wasp minus 1.
+
+\t;Further improvement
+Wasps move very fast. In order to increase your chances to get them, better to repeat just before the \c;fire(1);\n; a \c;radar\n; and a \c;turn\n; in order to perform a last readjustment of the direction before the shot.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/twasp2.txt b/help/D/twasp2.txt
new file mode 100644
index 00000000..fcec44ab
--- /dev/null
+++ b/help/D/twasp2.txt
@@ -0,0 +1,84 @@
+\b;Objective
+Bring down the flying wasps in a more efficient way than with the previous program.
+
+\b;Program
+Here is again the program of the previous exercise that shoots down all the wasps after many, many unsuccessful attempts:
+\c;
+\s;extern void object::Wasp1()
+\s;{
+\s; \l;object\u cbot\type; item;
+\s;
+\s; \l;aim\u cbot\aim;(0);
+\s;
+\s; \l;while\u cbot\while; (true)
+\s; {
+\s; \l;while\u cbot\while; (\l;radar\u cbot\radar;(AlienWasp, 0, 360, 0, 20) == null)
+\s; {
+\s; item = \l;radar\u cbot\radar;(AlienWasp);
+\s; \l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));
+\s; \l;motor\u cbot\motor;(1,1);
+\s;
+\s; \l;jet\u cbot\jet;(0);
+\s; \l;if\u cbot\if; (position.z > item.position.z)
+\s; {
+\s; \l;jet\u cbot\jet;(-0.3);
+\s; }
+\s;
+\s; \l;if\u cbot\if; (position.z < item.position.z - 1)
+\s; {
+\s; \l;jet\u cbot\jet;(0.3);
+\s; }
+\s;
+\s; \l;wait\u cbot\wait;(0.2);
+\s; }
+\s; item = \l;radar\u cbot\radar;(AlienWasp);
+\s; \l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));
+\s; \l;fire\u cbot\fire;(1);
+\s; }
+\s;}
+\n;
+The many failures are due to the fact that the wasp is already gone before the bullets can reach it. The only way to improve the program consists in setting the power of the two motors and of the jet in such a way that the bot follows the movement of the target during the burst.
+
+Just before the shot, the program adjusts a last time the direction with \c;turn(direction(item.position));\n;. In order to follow the wasp during the burst, you have to "remember" the angle of this last rotation: if the angle was positive (rotation to the left), the bot must continue to turn left during the burst; if the angle was negative, the bot must continue to turn right.
+
+In order to "remember" the angle of the last rotation, we need a variable that can contain just one number. If we choose to call it \c;angle\n;, we must define the variable with the following line at the beginning of the program:
+\c;
+\s; \l;float\u cbot\type; angle;
+\n;
+The variable type \l;float\u cbot\type; is the variable type that can contain any number, i.e. whole numbers or real numbers. Please refer to the \l;text about variable types\u cbot\type; if you want to know more about the different types of variables and what they can contain.
+
+Just before the instruction \c;fire(1);\n;, instead of writing \c;\l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));\n;, we will put the rotation angle into the variable \c;angle\n;:
+\c;
+\s; angle = direction(item.position);
+\n;
+Then we perform the rotation, and we set the power of the motors so that the bot continues the movement:
+\c;
+\s; turn(angle);
+\s; if (angle < 0)
+\s; {
+\s; motor(1,0.5);
+\s; }
+\s; else
+\s; {
+\s; motor(0.5,1);
+\s; }
+\n;
+The instruction \c;else\n; determines what instructions the program should execute if the condition stated in the \c;if\n; instruction is false.
+
+Then we must set the power of the jet so that the bot follows the wasp also in the vertical direction:
+\c;
+\s; jet(0);
+\s; if(position.z > item.position.z)
+\s; {
+\s; jet(-0.3);
+\s; }
+\s;
+\s; if(position.z < item.position.z - 1)
+\s; {
+\s; jet(0.3);
+\s; }
+\n;
+As you will see, this program is much more efficient than the previous one!
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/D/win.txt b/help/D/win.txt
new file mode 100644
index 00000000..88e55a42
--- /dev/null
+++ b/help/D/win.txt
@@ -0,0 +1,3 @@
+
+Houston congratulates you in the name of mankind for the success of your missin.
+The Great Migration to Terra Nova will start very soon.
diff --git a/help/E/authors.txt b/help/E/authors.txt
new file mode 100644
index 00000000..392b4ee5
--- /dev/null
+++ b/help/E/authors.txt
@@ -0,0 +1,7 @@
+Development team: Beta tester core team:
+
+- Daniel Roux - Adrien Roux - Michael Jubin
+- Denis Dumoulin - Didier Raboud - Daniel Sauthier
+- Otto Kölbl - Nicolas Beuchat - Nicolas Stubi
+- Michael Walz - Joël Roux - Patrick Thévoz
+- Didier Gertsch
diff --git a/help/E/cbot.txt b/help/E/cbot.txt
new file mode 100644
index 00000000..87b2a004
--- /dev/null
+++ b/help/E/cbot.txt
@@ -0,0 +1,91 @@
+\b;Programming - the CBOT language
+The CBOT language is very close in structure and syntax to C++ and Java. It has been adapted for the specific purposes of COLOBOT, and for an efficient pedagogical approach.
+This language is made up of instructions (see below), \l;blocks\u cbot\bloc;, \l;functions\u cbot\function;, \l;classes\u cbot\class;, \l;variables\u cbot\var;, \l;arrays\u cbot\array;, \l;expressions\u cbot\expr; and \l;conditions\u cbot\cond;.
+
+o \c;\token;Instructions\norm;\n;
+In the program editor, an instruction in the CBOT language is always displayed on an orange background. If an instruction hasn't got an orange background, this means that it has been misspelled. Instruction names are always written in lower case.
+
+o \c;\type;Type\norm;\n;
+The \l;type\u cbot\type; of a variable appears with a green background.
+
+o \c;\const;Constants\norm;\n;
+Constants like \l;categories\u cbot\category; are displayed with a red background.
+
+\t;Instructions in the CBOT language:
+\c;\l;extern\u cbot\extern; \n;Indicate the main function
+\c;\l;if\u cbot\if; \n;Choice structure
+\c;\l;else\u cbot\if; \n;Alternative choice structure
+\c;\l;for\u cbot\for; \n;Loop structure
+\c;\l;while\u cbot\while; \n;Control structure
+\c;\l;do\u cbot\do; \n;Control structure
+\c;\l;break\u cbot\break; \n;Exit from a loop
+\c;\l;continue\u cbot\continue; \n;Continues the loop
+\c;\l;return\u cbot\return; \n;Exit from a function
+\c;\l;sizeof\u cbot\sizeof; \n;Size of an array
+
+\t;Specific instructions for bots:
+\c;\l;radar\u cbot\radar; \n;Object detection
+\c;\l;direction\u cbot\direct; \n;Calculates a rotation angle
+\c;\l;distance\u cbot\dist; \n;Calculates a distance
+\c;\l;distance2d\u cbot\dist2d; \n;Calculates a distance
+\c;\l;wait\u cbot\wait; \n;Waits
+\c;\l;move\u cbot\move; \n;Moves forward or backward
+\c;\l;turn\u cbot\turn; \n;Turns
+\c;\l;goto\u cbot\goto; \n;Goes to a given position
+\c;\l;motor\u cbot\motor; \n;Direct motor control
+\c;\l;jet\u cbot\jet; \n;Direct jet engine control
+\c;\l;message\u cbot\message; \n;Displays a message
+\c;\l;retobject\u cbot\retobj; \n;Returns an object from a function
+\c;\l;errmode\u cbot\errmode; \n;Error treatement control
+\c;\l;abstime\u cbot\abstime; \n;Returns the absolute time
+
+\t;Instructions about topology:
+\c;\l;space\u cbot\space; \n;Calculates a free space
+\c;\l;topo\u cbot\topo; \n;Returns the altitude of a point
+\c;\l;flatground\u cbot\flatgrnd; \n;Returns radius of a flat area
+
+\t;Instructions specific to some bots:
+\c;\l;grab\u cbot\grab; \n;Picks up an object
+\c;\l;drop\u cbot\drop; \n;Puts down an object
+\c;\l;sniff\u cbot\sniff; \n;Sounds the subsoil
+\c;\l;thump\u cbot\thump; \n;Overturns alien insects
+\c;\l;recycle\u cbot\recycle; \n;Recycles a derelict bot
+\c;\l;shield\u cbot\shield; \n;Extends or withdraws the shield
+\c;\l;fire\u cbot\fire; \n;Fires the cannon
+\c;\l;aim\u cbot\aim; \n;Vertical angle of the cannon
+
+\t;Specific instructions for exchange posts:
+\c;\l;receive\u cbot\receive; \n;Receives an information
+\c;\l;send\u cbot\send; \n;Sends a new information
+\c;\l;testinfo\u cbot\testinfo; \n;Tests if an information exists
+\c;\l;deleteinfo\u cbot\delinfo; \n;Deletes an existing information
+
+\t;Specific instructions for classes:
+\c;\l;class\u cbot\class; \n;Class declararion
+\c;\l;public\u cbot\public; \n;Declares a public function
+\c;\l;private\u cbot\private; \n;Declares a private class member
+\c;\l;static\u cbot\static; \n;Declares a static class member
+\c;\l;synchronized\u cbot\synchro; \n;Prevents simultaneous execution
+\c;\l;new\u cbot\new; \n;Creates a new instance
+\c;\l;this\u cbot\this; \n;Reference to the current instance
+
+\t;Specific instructions for strings:
+\c;\l;strlen\u cbot\strlen; \n;Gets string length
+\c;\l;strleft\u cbot\strleft; \n;Extracts left part
+\c;\l;strright\u cbot\strright; \n;Extracts right part
+\c;\l;strmid\u cbot\strmid; \n;Extracts center part
+\c;\l;strfind\u cbot\strfind; \n;Finds a substring.
+\c;\l;strval\u cbot\strval; \n;Converts string to number
+\c;\l;strupper\u cbot\strupper; \n;Converts to upper case
+\c;\l;strlower\u cbot\strlower; \n;Converts to lower case
+
+\t;Specific instructions for files:
+\c;\l;open\u cbot\open; \n;Opens a file
+\c;\l;close\u cbot\close; \n;Closes a file
+\c;\l;writeln\u cbot\writeln; \n;Writes line to a file
+\c;\l;readln\u cbot\readln; \n;Reads line from a file
+\c;\l;eof\u cbot\eof; \n;Tests if end of file
+\c;\l;deletefile\u cbot\deletef; \n;Deletes a file
+
+\t;See also
+\l;Types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/abstime.txt b/help/E/cbot/abstime.txt
new file mode 100644
index 00000000..bdfe4c90
--- /dev/null
+++ b/help/E/cbot/abstime.txt
@@ -0,0 +1,11 @@
+\b;Instruction \c;abstime\n;
+Syntax¦:
+\s;\c;abstime ( );\n;
+
+Return the time in seconds elapsed since the beginning of the mission.
+
+\t;Return: \c;\l;float\u cbot\float;\n;
+Time in seconds.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/aim.txt b/help/E/cbot/aim.txt
new file mode 100644
index 00000000..8d1e460f
--- /dev/null
+++ b/help/E/cbot/aim.txt
@@ -0,0 +1,21 @@
+\b;Instruction \c;aim\n;
+Syntax :
+\s;\c;aim ( angle );\n;
+
+This instruction sets the vertical angle of the cannon. The following robots are equipped with a cannon:
+o \l;Shooter\u object\botfr;
+o \l;Orga shooter\u object\botor;
+o \l;Phazer shooter\u object\botphaz;
+
+When controlling the robot through programming, the only way to turn the gun left or right is to turn the whole robot with the instruction \c;\l;turn\u cbot\turn;\n;.
+
+\t;angle: \c;\l;float\u cbot\float;\n;
+Angle in degrees of the gun relative to the robot. A positive value orients the gun upward. For shooters and orga shooters, the angle must range from \c;-20\n; to \c;+20\n; degrees. For phazer shooters, the angle must range from \c;-20\n; to \c;45\n; degrees.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Zero if everything is OK, a value different from zero if the rotation could not be performed:
+\c;== 0 \n;The gun has now got the desired orientation
+\c;!= 0 \n;rotation impossible
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/array.txt b/help/E/cbot/array.txt
new file mode 100644
index 00000000..152bed55
--- /dev/null
+++ b/help/E/cbot/array.txt
@@ -0,0 +1,31 @@
+\b;Arrays
+An array is basically a collection of variables of the same type or class. You can use N dimensionnal arrays in the CBOT language. Each dimension is limited to 9999 elements. You must use square brackets \c;[]\n; after the type name or the variable name to declare an array.
+\c;
+\s;int [ ] a; // an array of int
+\s;int a [12]; // an array of int limited to 12 elements
+\s;string s[3]; // an array of 3 strings
+\s;float xy[][]; // an 2 dimensionnal array of floats
+\n;
+Actually when the CBOT interpreter encounters an array declaration, it just creates a \c;\l;null\u cbot\null;\n; \l;reference\u cbot\pointer;:
+\c;
+\s;int a[5]; // a is now a null reference
+\n;
+As soon as you put values into the array, the elements are created and the reference is initialized:
+\c;
+\s;a[2] = 213; // a points to
+\s; // 3 élements [0], [1] et [2]
+\n;
+After this operation, \c;a\n; contains a reference to the elements of the array. Elements \c;[0]\n; and \c;[1]\n; are created but not initialized because an array cannot contain empty elements. The \c;\l;sizeof\u cbot\sizeof;\n; instruction allows you to obtain the number of elements contained in an array.
+
+When an array is declared with a maximum size, the program will stop as soon as there is an access beyond the maximum array size. No error is signalled during compilation even if the error is obvious:
+\c;
+\s;{
+\s; int a[5];
+\s; a[7] = 123; // no error at compile time
+\s; // but error at run time
+\s;}
+\n;
+If you pass an array as parameter to a \l;function\u cbot\function;, the function only receives a \l;reference\u cbot\pointer; to the array. That means if you modify an array element in the function, the element of the array that has been passed the function will be actuallay modified.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/bloc.txt b/help/E/cbot/bloc.txt
new file mode 100644
index 00000000..287536ea
--- /dev/null
+++ b/help/E/cbot/bloc.txt
@@ -0,0 +1,49 @@
+\b;Blocks
+You can use braces \c;{ }\n; to group a number of instructions together in order to make one single block out of them, for example:
+\c;
+\s; {
+\s; float t;
+\s; t = a;
+\s; a = b;
+\s; b = t; // switches round a and b
+\s; }
+\n;
+Every instruction in the block is followed by a \l;semicolon\u cbot\term;, but the block itself is not.
+Let us take the following example with the instruction \c;\l;if\u cbot\if;\n; to illustrate the use of blocks in a program:
+\c;
+\s; if ( a < b )
+\s; \n;instruction 1\c;;
+\s; \n;instruction 2\c;;
+\s; \n;instruction 3\c;;
+\n;
+If the \l;condition\u cbot\cond; is true, instructions 1, 2 and 3 are performed. If the condition is false, only instruction 1 is ignored, instructions 2 and 3 are performed. The fact that instruction 2 is lined up with instruction 1 does not matter.
+If you want to perform instructions 1 and 2 only if the condition is true, you have to bracket them together in a block:
+\c;
+\s; if ( a < b )
+\s; {
+\s; \n;instruction 1\c;;
+\s; \n;instruction 2\c;;
+\s; }
+\s; \n;instruction 3\c;;
+\n;
+Blocks may be needed with instructions \c;\l;if\u cbot\if;\n;, \c;\l;while\u cbot\while;\n; and \c;\l;for\u cbot\for;\n;, in order to group several instructions that should be performed only if a condition is true, or repeated several times.
+You can fit blocks into other blocks, on as many levels as you need. Here is an example of imbrication on two levels :
+\c;
+\s; if ( a > b )
+\s; {
+\s; int i = 0;
+\s; while ( i < 18 )
+\s; {
+\s; move(10);
+\s; turn(5);
+\s; i = i+1;
+\s; }
+\s; }
+\n;
+You had better line up the open brace \c;{\n; with the closing brace \c;}\n; in order to improve readability, but it is not compulsory. The following example takes less space, is equivalent to the previous example, but it is not advisable to write your programs in the following style :
+\c;
+\s; if(a>b) { int i=0; while(i<18) {
+\s; move(10);turn(5);i=i+1; }}
+\n;
+\t;See also
+\l;Instructions\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/bool.txt b/help/E/cbot/bool.txt
new file mode 100644
index 00000000..b97ab9d4
--- /dev/null
+++ b/help/E/cbot/bool.txt
@@ -0,0 +1,5 @@
+\b;Type \c;bool\n;
+In a variable of this type you can put a boolean value, that is a value that can take only two states: true or false.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/break.txt b/help/E/cbot/break.txt
new file mode 100644
index 00000000..2833e6c2
--- /dev/null
+++ b/help/E/cbot/break.txt
@@ -0,0 +1,25 @@
+\b;Instruction \c;break\n;
+Syntax :
+\s;\c;while ( condition )
+\s;{
+\s; break;
+\s;}
+\n;
+With this instruction, you can get out immediately of a \c;\l;while\u cbot\while;\n; or \c;\l;for\u cbot\for;\n; loop.
+
+Here is an example:
+\s;\c;int i = 0;
+\s;while ( true )
+\s;{
+\s; \n;Instructions ...\c;
+\s; i = i+1;
+\s; if ( i >= 10 )
+\s; {
+\s; break;
+\s; }
+\s; \n;more instructions ...\c;
+\s;}
+\n;
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/category.txt b/help/E/cbot/category.txt
new file mode 100644
index 00000000..6dd7f3c2
--- /dev/null
+++ b/help/E/cbot/category.txt
@@ -0,0 +1,108 @@
+\b;Value \c;Categories\n;
+Categories represent the names of objects in the CBOT language. Everything in COLOBOT is an object: robots, buildings, raw materials, etc., even yourself.
+
+In a program, categories are always displayed on a \const;red background\norm;. If a category isn't highlighted in red, it is misspelled. Caps and lower cases should be kept as is.
+
+Below are the different categories available :
+
+\t;Buildings :
+
+\button 176; \c;\l;Houston\u object\Huston; \n;Mission Control
+\button 171; \c;\l;SpaceShip\u object\base; \n;Spaceship
+\button 160; \c;\l;BotFactory\u object\factory; \n;Robot Factory
+\button 163; \c;\l;ResearchCenter\u object\research; \n;Research Center
+\button 168; \c;\l;RadarStation\u object\radar; \n;Radar
+\button 172; \c;\l;ExchangePost\u object\exchange; \n;Information Exchange Post
+\button 169; \c;\l;RepairCenter\u object\repair; \n;Repair Center
+\button 165; \c;\l;DefenseTower\u object\tower; \n;Defense Tower
+\button 166; \c;\l;AutoLab\u object\labo; \n;Organic Matter Analyzer
+\button 164; \c;\l;PowerStation\u object\station; \n;Power Station
+\button 167; \c;\l;PowerPlant\u object\energy; \n;Power Cell Factory
+\button 170; \c;\l;NuclearPlant\u object\nuclear; \n;Nuclear Plant
+\button 162; \c;\l;Converter\u object\convert; \n;Titanium Converter
+\button 161; \c;\l;Derrick\u object\derrick; \n;Derrick
+\button 174; \c;\l;PowerCaptor\u object\captor; \n;Parabolic Lightning Conductor
+\button 175; \c;\l;Vault\u object\safe; \n;Vault
+ \c;\l;StartArea\u object\start; \n;Starting Pad
+ \c;\l;GoalArea\u object\goal; \n;Finishing Pad
+ \c;\l;AlienNest\u object\nest; \n;Alien Nest
+
+
+\t;Portable Objects :
+
+ \c;\l;TitaniumOre\u object\titanore; \n;Titanium Ore
+ \c;\l;UraniumOre\u object\uranore; \n;Uranium Ore
+ \c;\l;Titanium\u object\titan; \n;Cube of converted Titanium
+ \c;\l;PowerCell\u object\power; \n;Regular Power Cell
+ \c;\l;NuclearCell\u object\atomic; \n;Nuclear Power Cell
+ \c;\l;OrgaMatter\u object\bullet; \n;Organic Matter
+ \c;\l;BlackBox\u object\bbox; \n;Black Box
+ \c;\l;TNT\u object\tnt; \n;Explosive device
+ \c;\l;KeyA..D\u object\key; \n;Keys A, B, C and D
+
+
+\t;Robots :
+
+\button 158; \c;\l;PracticeBot\u object\bottr; \n;Practice Bot
+\button 173; \c;\l;TargetBot\u object\bottarg; \n;Target Bot
+
+\button 137; \c;\l;WheeledGrabber\u object\botgr; \n;Wheeled Grabber
+\button 138; \c;\l;TrackedGrabber\u object\botgc; \n;Tracked Grabber
+\button 139; \c;\l;WingedGrabber\u object\botgj; \n;Winged Grabber
+\button 150; \c;\l;LeggedGrabber\u object\botgs; \n;Legged Grabber
+
+\button 140; \c;\l;WheeledSniffer\u object\botsr; \n;Wheeled Sniffer
+\button 141; \c;\l;TrackedSniffer\u object\botsc; \n;Tracked Sniffer
+\button 142; \c;\l;WingedSniffer\u object\botsj; \n;Winged Sniffer
+\button 152; \c;\l;LeggedSniffer\u object\botss; \n;Legged Sniffer
+
+\button 143; \c;\l;WheeledShooter\u object\botfr; \n;Wheeled Shooter
+\button 144; \c;\l;TrackedShooter\u object\botfc; \n;Tracked Shooter
+\button 145; \c;\l;WingedShooter\u object\botfj; \n;Winged Shooter
+\button 151; \c;\l;LeggedShooter\u object\botfs; \n;Legged Shooter
+
+\button 153; \c;\l;WheeledOrgaShooter\u object\botor; \n;Wheeled Orga Shooter
+\button 154; \c;\l;TrackedOrgaShooter\u object\botoc; \n;Tracked Orga Shooter
+\button 155; \c;\l;WingedOrgaShooter\u object\botoj; \n;Winged Orga Shooter
+\button 156; \c;\l;LeggedOrgaShooter\u object\botos; \n;Legged Orga Shooter
+
+\button 149; \c;\l;Subber\u object\botsub; \n;Subber
+\button 148; \c;\l;Recycler\u object\botrecy; \n;Recycler
+\button 157; \c;\l;Shielder\u object\botshld; \n;Shielder
+\button 146; \c;\l;Thumper\u object\bottump; \n;Thumper
+\button 147; \c;\l;PhazerShooter\u object\botphaz; \n;Phazer Shooter
+
+
+\t;Enemies :
+
+ \c;\l;AlienQueen\u object\mother; \n;Alien Queen
+ \c;\l;AlienEgg\u object\egg; \n;Alien Egg
+ \c;\l;AlienAnt\u object\ant; \n;Ant
+ \c;\l;AlienSpider\u object\spider; \n;Spider
+ \c;\l;AlienWasp\u object\wasp; \n;Wasp
+ \c;\l;AlienWorm\u object\worm; \n;Worm
+
+
+\t;Miscellaneous :
+
+\button 136; \c;\l;Me\u object\human; \n;You!
+ \c;\l;Mine\u object\mine; \n;Mine
+ \c;\l;Barrier\u object\barrier; \n;Barrier
+ \c;\l;Wreck\u object\wreck; \n;Derelict bot
+ \c;\l;Ruin\u object\ruin; \n;Derelict building
+
+
+\t;Flags and Other Indicators :
+
+ \c;\l;BlueFlag\u object\flag; \n;Blue Flag
+ \c;\l;RedFlag\u object\flag; \n;Red Flag
+ \c;\l;GreenFlag\u object\flag; \n;Green Flag
+ \c;\l;YellowFlag\u object\flag; \n;Yellow Flag
+ \c;\l;VioletFlag\u object\flag; \n;Violet Flag
+ \c;\l;WayPoint\u object\waypoint; \n;Checkpoint
+ \c;\l;EnergySite\u object\enerspot; \n;Underground Energy Deposit
+ \c;\l;TitaniumSite\u object\stonspot; \n;Underground Titanium Deposit
+ \c;\l;UraniumSite\u object\uranspot; \n;Underground Uranium Deposit
+
+\t;See also
+\l;CBOT Language\u cbot; and \l;Variables\u cbot\type;.
diff --git a/help/E/cbot/class.txt b/help/E/cbot/class.txt
new file mode 100644
index 00000000..942d7b0e
--- /dev/null
+++ b/help/E/cbot/class.txt
@@ -0,0 +1,72 @@
+\b;Instruction \c;class\n;
+This allows you to declare a class definition using following syntax:
+\c;
+\s;public class ClassName
+\s;{
+\s; declarations;
+\s;}
+\n;
+Classes can only be \l;public\u cbot\public;, that is they can be used from all bots in a mission. Class members are also public, that is they are accessible from outside the class. Class members can be fields or functions (also called methods), for example the followin class \c;MyClass\n; contains 4 fields (a, b, x and s) and one method (MyFunction).
+\c;
+\s;public class MyClass
+\s;{
+\s; int a, b;
+\s; float x = 3.33;
+\s; string s = "hello";
+\s; float MyFunction( float value )
+\s; {
+\s; return (value*x)-1;
+\s; }
+\s;}
+\n;
+As shown in this exemple the class members can be initialized (\c;x=3.33\n;). You can also define a constructor which is a special method having the same name as the class name. This method will be called automatically at creation time of a class instance. You can also declare more than one method with the same name but different parameters.
+\c;
+\s;public class MyClass
+\s;{
+\s; int a, b;
+\s; void MyClass( )
+\s; {
+\s; a = 2; b = 3;
+\s; }
+\s; void MyClass( int a, int b )
+\s; {
+\s; this.a = a; this.b = b;
+\s; }
+\s;}
+\n;
+In this example two constructors are declared for \c;MyClass\n;, one without parameters and the other one with two parameters. As the names of the parameters of the second constructor are the same as the names of the two members \c;a\n; et \c;b\n; we must use the \c;\l;this\u cbot\this;.a\n; and \c;\l;this\u cbot\this;.b\n; to avoid confusion with the parameters. Another more simpler solution would be to give different names to the parameters.
+\c;
+\s;void Test( )
+\s;{
+\s; MyClass item1(); // constr. w/o parameters
+\s; MyClass item2(4, 5); // constr. with 2 parameters
+\s; MyClass item3; // no constructor called,
+\s; // therefore item3 == null
+\s;}
+\n;
+You can also define a destructor. This must be a \c;void\n; fonction without parameters that has the same name as the class name but prefixed by the ~ character. The destructor is called automatically as soon as the class instance is no more referenced by anyone.
+\c;
+\s;public class MyClass
+\s;{
+\s; static private int counter = 0; // instance counter
+\s; void MyClass( )
+\s; {
+\s; counter ++; // one instance more
+\s; }
+\s; void ~MyClass( )
+\s; {
+\s; counter --; // one instance less
+\s; }
+\s;}
+\s;void Test()
+\s;{
+\s; MyClass item1( ); // counter = 1
+\s; MyClass item2( ); // counter = 2
+\s; item1 = null; // counter = 1
+\s;} // counter = 0
+\n;
+If you pass a class instance as parameter to a \l;function\u cbot\function;, the function only receives a \l;reference\u cbot\pointer; to the instance. That means if you modify the instance in the function, the instance that has been passed to the function will be actuallay modified.
+
+\t;See also
+\c;\l;public\u cbot\public;\n;, \c;\l;private\u cbot\private;\n;, \c;\l;static\u cbot\static;\n;, \c;\l;synchronized\u cbot\synchro;\n;, \c;\l;new\u cbot\new;\n;, \c;\l;reference\u cbot\pointer;\n;, \c;\l;this\u cbot\this;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/close.txt b/help/E/cbot/close.txt
new file mode 100644
index 00000000..bca89ae3
--- /dev/null
+++ b/help/E/cbot/close.txt
@@ -0,0 +1,8 @@
+\b;Instruction \c;close\n;
+Close a file opened previously with \c;\l;open\u cbot\open;\n;. This is a method of the \c;\l;file\u cbot\file;\n; class; therefore you cannot write \c;close()\n; but only \c;handle.close()\n;¦:
+\c;
+\s; handle.close();
+\n;
+\t;See also
+\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;readln\u cbot\readln;\n;, \c;\l;writeln\u cbot\writeln;\n; and \c;\l;eof\u cbot\eof;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/cond.txt b/help/E/cbot/cond.txt
new file mode 100644
index 00000000..f6f41794
--- /dev/null
+++ b/help/E/cbot/cond.txt
@@ -0,0 +1,29 @@
+\b;Conditions
+A condition is a special \l;expression\u cbot\expr; that returns a \l;boolean\u cbot\bool; value, that can only be either \c;\l;true\u cbot\true;\n; or \c;\l;false\u cbot\false;\n;. With a condition, you can choose f. ex. if the instructions in a \c;\l;while\u cbot\while;\n; loop must be repeated again, or if the instruction in a \c;\l;if\u cbot\if;\n; bloc must be executed.
+Here are some operators that you can use in conditions to compare two values :
+
+\c;a == b \n;\c;a\n; equals \c;b\n;
+\c;a != b \n;\c;a\n; is different from \c;b\n;
+\c;a < b \n;\c;a\n; smaller than \c;b\n;
+\c;a <= b \n;\c;a\n; smaller than or equal to \c;b\n;
+\c;a > b \n;\c;a\n; greater than \c;b\n;
+\c;a >= b \n;\c;a\n; greater than or equal to \c;b\n;
+
+For example :
+
+\c;12 == 12 \n;returns true
+\c;45 != 47 \n;returns true
+\c;99 == 98 \n;returns false
+\c;12 < -1 \n;returns false
+\c;12 >= 10 \n;returns true
+\c;12 >= 12 \n;returns true
+
+\t;Remarque
+Be careful not to confuse the equality comparison \c;==\n; with the assignment of a \l;variable\u cbot\var; \c;=\n;.
+
+\c;a == b\n; is an expression that compares \c;a\n; with \c;b\n;.
+\c;a = b\n; is an expression that copies the value of \c;b\n; into \c;a\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/E/cbot/continue.txt b/help/E/cbot/continue.txt
new file mode 100644
index 00000000..d516aa78
--- /dev/null
+++ b/help/E/cbot/continue.txt
@@ -0,0 +1,25 @@
+\b;Instruction \c;continue\n;
+Syntax :
+\s;\c;while ( condition )
+\s;{
+\s; continue;
+\s;}
+\n;
+With this instruction, you can jump over the rest of instructions in the \c;\l;bloc\u cbot\bloc;\n; of a \c;\l;while\u cbot\while;\n; or \c;\l;for\u cbot\for;\n; loop: The execution will resume at the beginning of the bloc, the next time the loop is repeated.
+
+Here is an example:
+\s;\c;int i = 0;
+\s;while ( i < 5 )
+\s;{
+\s; i = i+1;
+\s; if ( i == 3 )
+\s; {
+\s; continue;
+\s; }
+\s; \n;Instructions ...\c;
+\s;}
+\n;
+The instructions will only be executed for the values of \c;i\n; 1, 2, 4 and 5.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/deletef.txt b/help/E/cbot/deletef.txt
new file mode 100644
index 00000000..dc6e93f9
--- /dev/null
+++ b/help/E/cbot/deletef.txt
@@ -0,0 +1,10 @@
+\b;Instruction \c;deletefile\n;
+The deletefile instruction deletes an existing file in the files/ folder.
+
+Files can only be deleted in the files/ folder which is located in the folder where Colobot has been installed. You cannot not delete files that are located elsewhere than in the files/ folder.
+
+Syntax¦:
+\s;\c;deletefile ( filename );\n;
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/delinfo.txt b/help/E/cbot/delinfo.txt
new file mode 100644
index 00000000..6d93b26b
--- /dev/null
+++ b/help/E/cbot/delinfo.txt
@@ -0,0 +1,15 @@
+\b;Instruction \c;deleteinfo\n;
+Syntax¦:
+\s;\c;deleteinfo ( name, power );\n;
+
+Delete an existing information in the closest \l;information exchange post\u object\exchange;.
+
+\t;name: \c;string\n;
+Name of the information to be deleted. This name is a string: it must be written in quotation marks "¦".
+
+\t;power: \c;float\n;
+Power of the transmitter, which corresponds to the maximal distance between the sender and the exchange post. If the distance is longer, the information won't be deleted. Default value is 10 metres.
+
+\t;See also
+\c;\l;receive\u cbot\receive;\n;, \c;\l;send\u cbot\send;\n; and \c;\l;testinfo\u cbot\testinfo;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/direct.txt b/help/E/cbot/direct.txt
new file mode 100644
index 00000000..d400e805
--- /dev/null
+++ b/help/E/cbot/direct.txt
@@ -0,0 +1,15 @@
+\b;Instruction \c;direction\n;
+Syntax :
+\s;\c;direction ( pos );\n;
+
+Calculates the rotation that a robot must perform in order to point towards a given position.
+
+\t;pos: \c;\l;point\u cbot\point;\n;
+Position towards which the robot must point.
+
+\t;Return value: \c;\l;float\u cbot\float;\n;
+Angle of the rotation that must be performed. -90 means f. ex. a rotation of 90 degrees to the right.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/E/cbot/dist.txt b/help/E/cbot/dist.txt
new file mode 100644
index 00000000..a4183d44
--- /dev/null
+++ b/help/E/cbot/dist.txt
@@ -0,0 +1,30 @@
+\b;Instruction \c;distance\n;
+With the instruction \c;distance( , )\n; you can calculate the distance between two positions.
+
+\b;Basic use
+If you write \c;position\n; alone, this gives you the position of the bot that executes the program. If you write the name of a variable followed by \c;.position\n;, this gives you the position of the object described in the variable.
+
+Here is a program that moves forward, covering exactly the distance between the bot and the closest ant:
+\c;
+\s; item = \l;radar\u cbot\radar;(AlienAnt);
+\s; \l;move\u cbot\move;(distance(position, item.position));
+\n;
+This is of course pure suicide. Better to stop 40 meters before, in order to be at shooting range:
+\c;
+\s; item = radar(AlienAnt);
+\s; move(distance(position, item.position) - 40);
+\n;
+\b;For specialists
+Syntax:
+\s;\c;distance ( pos1, pos2 );\n;
+
+Calculates the distance between two positions.
+
+\t;pos1, pos2: \c;\l;point\u cbot\point;\n;
+Coordinates of the two positions.
+
+\t;Return value: \c;\l;float\u cbot\float;\n;
+Distance between the two positions.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/dist2d.txt b/help/E/cbot/dist2d.txt
new file mode 100644
index 00000000..89ea1cb2
--- /dev/null
+++ b/help/E/cbot/dist2d.txt
@@ -0,0 +1,14 @@
+\b;Instruction \c;distance2d\n;
+Syntax:
+\s;\c;distance2d ( pos1, pos2 );\n;
+
+Calculates the distance between two positions (ignores the z coordinate).
+
+\t;pos1, pos2: \c;\l;point\u cbot\point;\n;
+Coordinates of the two positions.
+
+\t;Return value: \c;\l;float\u cbot\float;\n;
+Distance between the two positions.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/do.txt b/help/E/cbot/do.txt
new file mode 100644
index 00000000..391745c6
--- /dev/null
+++ b/help/E/cbot/do.txt
@@ -0,0 +1,28 @@
+\b;Instruction \c;do - while\n;
+Syntax:
+\s;\c;do
+\s;{
+\s; \n;Instructions ...\c;
+\s;}
+\s;while ( condition );
+\n;
+This instruction allows you to perform several times the instructions inside the \l;block\u cbot\bloc;. The instructions are executed at least once, because the condition is tested only afterwards.
+Be careful not to confuse the instruction \c;do { } while ( );\n; with the instruction \c;\l;while\u cbot\while; ( ) { }\n;; the latter tests the condition before the instructions in the block are executed.
+
+\t;\c;condition\n;
+The instructions in the block are performed over and over again, as long as the \l;condition\u cbot\cond; is true.
+
+Here is an example :
+\s;\c;do
+\s;{
+\s; p = radar(TitaniumOre);
+\s;}
+\s;while ( p == null );
+\n;
+\t;Attention
+Always put a \l;semicolon\u cbot\term; at the end of the line \c;while ( )\n;.
+
+The instructions \c;\l;break\u cbot\break;\n; and \c;\l;continue\u cbot\continue;\n; can be useful inside a block following the instruction \c;do { }\n;.
+
+\t;See also
+\l;Instructions\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/drop.txt b/help/E/cbot/drop.txt
new file mode 100644
index 00000000..9b383dd1
--- /dev/null
+++ b/help/E/cbot/drop.txt
@@ -0,0 +1,29 @@
+\b;Instruction \c;drop\n;
+The instruction \c;drop();\n; instructs the bot to drop whatever the operating arm is carrying on the ground, on the platform of a building or on the power cell location of a bot.
+
+\b;Basic use
+The instruction \c;drop();\n; written in this form drops the object in front of the bot. Here is a short program that grabs an object in front of the bot and drops it 5 meters further:
+\c;
+\s; \l;grab\u cbot\grab;();
+\s; \l;move\u cbot\move;(5);
+\s; drop();
+\n;
+\b;For specialists
+Syntax:
+\s;\c;drop ( oper );\n;
+
+This instruction appeals to the operating arm of a \l;grabber bot\u object\botgr;, in order to drop what it is holding.
+
+\t;oper: \c;\l;int\u cbot\int;\n; (default value\c;InFront\n;)
+Oper indicates where the robot should drop the object. If no indication is given, the object is dropped in front of the bot.
+\c;InFront \n; Drops in front (default value).
+\c;Behind \n; Drops behind.
+\c;EnergyCell\n; Drops on the bot's own power cell location.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Normally an error stops the program. You can prevent the program from stopping on errors by using the \c;\l;errmode\u cbot\errmode;(0)\n; instruction. A value different from zero if an error occurred is then returned by \c;drop();\n;.
+\c;== 0 \n;object was dropped
+\c;!= 0 \n;error, no object was dropped
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/eof.txt b/help/E/cbot/eof.txt
new file mode 100644
index 00000000..30c2f4c3
--- /dev/null
+++ b/help/E/cbot/eof.txt
@@ -0,0 +1,15 @@
+\b;Instruction \c;eof\n;
+Test the end of file condition of an open file. This is a method of the \c;\l;file\u cbot\file;\n; class; therefore you cannot write \c;eof()\n; but only \c;handle.eof()\n;¦:
+\c;
+\s; if ( handle.eof() )
+\n;
+Example¦:
+\c;
+\s; while ( not handle.eof() )
+\s; {
+\s; s = handle.readln();
+\s; }
+\n;
+\t;See also
+\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n; and \c;\l;writeln\u cbot\writeln;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/errmode.txt b/help/E/cbot/errmode.txt
new file mode 100644
index 00000000..8b4286ab
--- /dev/null
+++ b/help/E/cbot/errmode.txt
@@ -0,0 +1,33 @@
+\b;Instruction \c;errmode\n;
+The \c;errmode();\n; instruction allows you to chose if the program should stop when an error occurs in one of the following instructions: \c;\l;goto\u cbot\goto;\n;, \c;\l;move\u cbot\move;\n;, \c;\l;grab\u cbot\grab;\n;, \c;\l;drop\u cbot\drop;\n;, etc.
+
+\b;For specialists
+Syntax¦:
+\s;\c;errmode ( mode );\n;
+
+Normally the program is stopped when an error occurs. If you use the instruction \c;errmode(0);\n; at the beginning of the program, the instructions listed above return a value different from zero if the instruction could not be performed.
+
+\t;mode: \c;\l;float\u cbot\float;\n; (\c;1\n; per default)
+Error treatment mode.
+\c;0\n; -> continues program execution and returns a non zero value
+\c;1\n; -> stops the program (default behavior)
+
+Exemple 1¦:
+\s;\c;errmode(0);
+\s;while ( goto(pos) != 0 )
+\s;{
+\s; wait(2);
+\s;}
+\n;
+Exemple 2¦:
+\s;\c;errmode(0);
+\s;int err;
+\s;err = goto(pos);
+\s;if ( err != 0 )
+\s;{
+\s; \n;goto did not perform correctly ...\c;
+\s; \n;take some appropriate action ...\c;
+\s;}
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/expr.txt b/help/E/cbot/expr.txt
new file mode 100644
index 00000000..1ff8bc73
--- /dev/null
+++ b/help/E/cbot/expr.txt
@@ -0,0 +1,88 @@
+\b;Expressions
+Expressions can include the following operators:
+
+\c;+\n; addition
+\c;-\n; subtraction
+\c;*\n; multiplication
+\c;/\n; division
+\c;%\n; remainder of the division (only for the type \c;\l;int\u cbot\int;\n;)
+
+With the addition operator \c;+\n;, you can not only add numbers, you can also append \l;strings\u cbot\string;.
+\c;
+\s; int i = 12+3; // returns 15
+\s; string s = "a"+"bc"; // returns "abc"
+\s; int i = 2-5; // returns -3
+\s; float f = 3.01*10; // returns 30.1
+\s; int i = 5/3; // returns 1
+\s; float f = 5/3; // returns 1.67
+\s; float f = 5/0; // returns an error
+\s; int i = 13%5; // returns 3
+\s; int i = -8%3; // returns -2
+\n;
+An expression can include constants or \l;variables\u cbot\var;. For example:
+
+\s;\c; 12+dist\n;
+
+Multiplications and divisions are performed before additions and subtractions. In order to be sure that the operations are performed in the right order, use brackets:
+\c;
+\s; 12*a+b/c \n;is equivalent to\c; (12*a)+(b/c)
+\s; 2.5*(dist+range)
+\n;
+In order to improve readability, you can put as many spaces as you want:
+\c;
+\s; 12*a + b/c
+\s; 2.5 * (dist+range)
+\n;
+Here is a list of mathematical functions:
+
+\c;sin(angle) \n;sinus
+\c;cos(angle) \n;cosinus
+\c;tan(angle) \n;tangent
+\c;asin(value) \n;arc-sinus
+\c;acos(value) \n;arc-cosinus
+\c;atan(value) \n;arc-tangente
+\c;sqrt(value) \n;square root
+\c;pow(x, y) \n;x power y
+\c;rand() \n;random value ranging between 0 and 1
+
+Angles are in degrees.
+
+\t;Compound assignment operators (for specialists)
+Besides the \c;=\n; operators for variable assignment there are several compound-assignment operators.
+
+The compound-assignment operators combine the \c;=\n; assignment operator with another binary operator such as \c;+\n; or \c;-\n;. Compound-assignment operators perform the operation specified by the additional operator and then assign the result to the left operand. For example, a compound-assignment expression such as
+
+\c;\s;expression1 += expression2
+
+is equivalent to
+
+\c;\s;expression1 = expression1 + expression2
+
+\c;+=\n; addition
+\c;-=\n; subtraction
+\c;*=\n; multiplication
+\c;/=\n; division
+\c;%=\n; remainder of the division (only for the type \c;\l;int\u cbot\int;\n;)
+
+\t;Prefix and posfix increment- and decrement operators (for specialists)
+The operators \c;++\n; and \c;--\n; allow you to increment (++) or to decrement (--) a variable in very compact and efficient manner.
+
+For example to increment the variable \c;a\n; you can write
+\c;\s; a++ ;
+\n;instead of
+\c;\s; a = a + 1 ;
+\n;
+The value of the expression \c;a++\n; is the value of the variable \c;a\n; before the increment. If you use the prefix operator \c;++a\n; the value of the expression is the value of the variable \c;a\n; after the increment. The same holds for the \c;--\n; decrement operator.
+
+Exemples:
+\c;\s; a = 2 ;
+\s; b = a++ ;
+\s; // now b contains 2 and a contains 3
+
+\c;\s; a = 2 ;
+\s; b = ++a ;
+\s; // now b contains 3 and a contains 3
+\n;
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/extern.txt b/help/E/cbot/extern.txt
new file mode 100644
index 00000000..08d2cba1
--- /dev/null
+++ b/help/E/cbot/extern.txt
@@ -0,0 +1,30 @@
+\b;Instruction \c;extern\n;
+The \c;extern\n; instruction determines the \l;function\u cbot\function; that acts as main program of a robot. The name of the function declared with \c;extern\n; will apear in the program list in the lower left corner of the screen.
+\c;
+\s;extern void object::MowDown( )
+\s;{
+\s; while ( true )
+\s; {
+\s; fire(1);
+\s; turn(10);
+\s; }
+\s;}
+\n;
+If the program contains other functions, only the main function must be preceded by \c;extern\n;.
+\c;
+\s;extern void object::Square( )
+\s;{
+\s; for ( int i=0 ; i<4 ; i++ )
+\s; {
+\s; Line(10);
+\s; }
+\s;}
+\s;
+\s;void object::Line(float dist)
+\s;{
+\s; move(dist);
+\s; turn(90);
+\s;}
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/false.txt b/help/E/cbot/false.txt
new file mode 100644
index 00000000..e5b1ffa9
--- /dev/null
+++ b/help/E/cbot/false.txt
@@ -0,0 +1,6 @@
+\b;Type \c;false\n;
+This value means that a condition is not true; it is one of the two values that a \l;boolean\u cbot\bool; \l;variable\u cbot\var; can take.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/E/cbot/file.txt b/help/E/cbot/file.txt
new file mode 100644
index 00000000..44bac38f
--- /dev/null
+++ b/help/E/cbot/file.txt
@@ -0,0 +1,18 @@
+\b;Type \c;file\n;
+This type is used for accessing files in the files/ folder.
+\c;
+\s; file handle();
+\n;
+Use the syntax above for declaring a file handle. You must use () to create an instance of the \c;file\n; class. Without the () the handle would have the value \c;\l;null\u cbot\null;\n;.
+
+Files can only be created and opened in the files/ folder which is located in the folder where Colobot has been installed. You cannot not create or open files elsewhere than in the files/ folder.
+
+\b;For specialists
+\c;file\n; is actually not a simple type but a class. \c;open\n;, \c;close\n;, \c;writeln\n; etc. are methods of the \c;file\n; class. This is the reason why we always write \c;handle.method()\n;¦:
+\c;
+\s; handle.open("test.txt", "w");
+\s; handle.close();
+\n;
+\t;See also
+\c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n;, \c;\l;writeln\u cbot\writeln;\n; and \c;\l;eof\u cbot\eof;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/fire.txt b/help/E/cbot/fire.txt
new file mode 100644
index 00000000..fad947a6
--- /dev/null
+++ b/help/E/cbot/fire.txt
@@ -0,0 +1,31 @@
+\b;Instruction \c;fire\n;
+The instruction \c;fire();\n; fires the bot's onboard cannon.
+
+\b;Basic use
+Generally this instruction is used to shoot one-second bursts:
+\c;
+\s; fire(1);
+\n;
+\b;For specialists
+Syntax:
+\s;\c;fire ( time );\n;
+
+Fires the gun, with a burst that lasts a certain time. The longer the burst, the more energy it needs. This instruction can be used with the following bot types:
+o \l;Shooter\u object\botfr;
+o \l;Orga shooter\u object\botor;
+o \l;Phazer shooter\u object\botphaz;
+
+When controlling the robot through programming, the only way to turn the gun left or right is to turn the whole robot with the instruction \c;\l;turn\u cbot\turn;\n;.
+
+In order to move the gun upward or downward, use the instruction \c;\l;aim\u cbot\aim;\n;.
+
+\t;time: \c;\l;float\u cbot\float;\n;
+Duration of the burst. Generally, the value given is 1. Shorter bursts can also be performed in order to spare time and energy.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Zero if OK, or a value different from zero if an error occurred.
+\c;== 0 \n;the cannon has been fired
+\c;!= 0 \n;error, the cannon could not be fired
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/flatgrnd.txt b/help/E/cbot/flatgrnd.txt
new file mode 100644
index 00000000..ae821eb4
--- /dev/null
+++ b/help/E/cbot/flatgrnd.txt
@@ -0,0 +1,17 @@
+\b;Instruction \c;flatground\n;
+Syntax¦:
+\s;\c;flatground ( center, rmax );\n;
+
+Calculates the maximal radius of a flat zone on which a building ca be built.
+
+\t;center: \c;\l;point\u cbot\point;\n;
+Center of the circlular zone.
+
+\t;rmax: \c;\l;float\u cbot\float;\n;
+Maximal radius.
+
+\t;Return value: \c;\l;float\u cbot\float;\n;
+Radius of the flat zone (always between 0 and rmax).
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/float.txt b/help/E/cbot/float.txt
new file mode 100644
index 00000000..77876058
--- /dev/null
+++ b/help/E/cbot/float.txt
@@ -0,0 +1,25 @@
+\b;Type \c;float\n;
+Use this type for most variables that contains numbers. Variables of this type can contain positive and negative numbers, whole or real numbers, for example:
+\c;
+\s; 12.9
+\s; 1.125
+\s; 0.002
+\s; -4.1
+\n;
+If you need only whole numbers (f. ex. 12 or -5000), you should rather use the type \c;\l;int\u cbot\int;\n;.
+
+\t;Attention
+Do not insert space or colon characters into a number. To separate the whole part from the fractional part, use a dot.
+\c;
+\s; Write and not
+\s; 12.56 12 . 56
+\s; -54.34 -54,34
+\s;12895.69 12,895.69
+\n;
+\t;For specialists
+Floating point numbers are represented in Colobot with 32 bits.
+The highest value that can be represented is 3.4E+38.
+The smallest value that can be represented is 3.4E-38.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/for.txt b/help/E/cbot/for.txt
new file mode 100644
index 00000000..2465dd72
--- /dev/null
+++ b/help/E/cbot/for.txt
@@ -0,0 +1,40 @@
+\b;Instruction \c;for\n;
+Syntax:
+\s;\c;for ( before ; condition ; end )
+\s;{
+\s; \n;Instructions ...\c;
+\s;}
+\n;
+This instruction allows you to execute a certain number of times the instructions contained in the \l;block\u cbot\bloc;.
+
+\t;\c;before\n;
+This instruction is executed before the first loop instance.
+
+\t;\c;condition\n;
+This \l;condition\u cbot\cond; determines if another instance of the loop must be executed. It is tested before every instance of the loop.
+
+\t;\c;end\n;
+This instruction is executed at the end of every instance of the loop.
+
+Example: count from 1 to 4
+\c;\s;\c;for ( i = 0 ; i <= 4 ; i++ )
+\s;{
+\s; message(i) ;
+\s;}
+\n;
+The following example is strictly equivalent to a \c;for\n;-loop, but it uses the instruction \c;\l;while\u cbot\while;\n;:
+\s;\c;before;
+\s;while ( condition )
+\s;{
+\s; \n;Instructions ...\c;
+\s; end;
+\s;}
+\n;
+\t;Attention
+Do not put a \l;semicolon\u cbot\term; at the end of the line \c;for ( )\n;.
+
+The instructions \c;\l;break\u cbot\break;\n; and \c;\l;continue\u cbot\continue;\n; can be useful inside a block following the instruction \c;for \n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/E/cbot/function.txt b/help/E/cbot/function.txt
new file mode 100644
index 00000000..9b403896
--- /dev/null
+++ b/help/E/cbot/function.txt
@@ -0,0 +1,85 @@
+\b;Functions
+With functions you can divide your program into several parts, each of them will execute a specific task.
+Let's imagine following program¦:
+\c;
+\s;extern void object::Remote( )
+\s;{
+\s; send("order", 1, 100);
+\s; wait(5);
+\s; send("order", 3, 100);
+\s; wait(5);
+\s; send("order", 2, 100);
+\s; wait(5);
+\s; send("order", 4, 100);
+\s; wait(5);
+\s;}
+\n;
+\c;send\n; and \c;wait\n; are repeated several times. So it would be a good thing if we created a function that executes these two instructions:
+\c;
+\s;void object::SendToPost( float op )
+\s;{
+\s; send("order", op, 100);
+\s; wait(5);
+\s;}
+\s;extern void object::Remote( )
+\s;{
+\s; SendToPost(1);
+\s; SendToPost(3);
+\s; SendToPost(2);
+\s; SendToPost(4);
+\s;}
+\n;
+A function can have paramteters¦:
+\c;
+\s;void Example( int a, float x, string s )
+\n;
+The \c;Exemple\n; function will reveive un integer \c;a\n;, a floating point number \c;x\n; and a string \c;s\n;. Parameters are "passed by value", that is the values of parameter variables in a function are copies of the values the caller specified as variables. If you pass an \c;int\n; to a function, its parameter is a copy of whatever value was being passed as argument, and the function can change its parameter value without affecting values in the code that invoked the function.
+
+If you pass a \l;class\u cbot\class; instance or an \l;array\u cbot\array; as parameter to a function, the function only receives a \l;reference\u cbot\pointer; to the instance or the array. That means if you modify the instance or the array in the function, the instance or the array that has been specified by the caller will be actuallay modified.
+
+A function can also return a result with the \c;\l;return\u cbot\return;\n; instruction. Therefore the function must be declared no longer as void but as a type:
+\c;
+\s;float Mean( float a, float b )
+\s;{
+\s; return (a+b)/2;
+\s;}
+\s;
+\s;extern void object::Test( )
+\s;{
+\s; float value;
+\s; value = Mean(2, 6);
+\s; message( value ); // will display 4
+\s;}
+\n;
+Some other examples¦:
+\c;
+\s;float Pi( )
+\s;{
+\s; return 3.1415;
+\s;}
+\s;
+\s;string Sign( float a )
+\s;{
+\s; if ( a > 0 ) return "positive";
+\s; if ( a < 0 ) return "négative";
+\s; return "null";
+\s;}
+\n;
+You can declare several functions with the same name but different parameters¦:
+\c;
+\s;float Pythagoras( float a, float b )
+\s;{
+\s; return sqrt((a*a)+(b*b));
+\s;}
+\s;
+\s;float Pythagoras( float a, float b, float c )
+\s;{
+\s; return sqrt((a*a)+(b*b)+(c*c));
+\s;}
+\n;
+CBOT will call either the one or the other function depending on the paramteres passed.
+
+You can also declare a function \l;public\u cbot\public; so it can be used by other bots.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/goto.txt b/help/E/cbot/goto.txt
new file mode 100644
index 00000000..7657012c
--- /dev/null
+++ b/help/E/cbot/goto.txt
@@ -0,0 +1,35 @@
+\b;Instruction \c;goto\n;
+The instruction \c;goto();\n; instructs the bot to reach a given position.
+
+\b;Basic use
+The most current use consists in moving the bot to an object located with the instruction \c;\l;radar\u cbot\radar;();\n;. If the information returned by the \c;\l;radar\u cbot\radar;();\n; has been stored in a certain variable, write the name of the variable followed by \c;.position\n; in order to get the position of the object. Here is an example of a program that looks for a \l;titanium cube\u object\titan;, goes to the position and grabs it:
+\c;
+\s; item = \l;radar\u cbot\radar;(Titanium);
+\s; goto(item.position);
+\s; \l;grab\u cbot\grab;();
+\n;
+\b;For specialists
+Syntax:
+\s;\c;goto ( position, altitude, goal, crash );\n;
+
+Tells the robot to go to the given position, avoiding all the obstacles if this is possible.
+
+\t;pos: \c;\l;point\u cbot\point;\n;
+Coordinates of the goal position.
+
+\t;altitude: \c;\l;float\u cbot\float;\n;
+Flight altitude for \l;winged bots\u object\botgj;. The altitude is useful only for \l;winged bots\u object\botgj;. From the initial altitude, the bot climbs higher until it reaches the specified hight. When arriving close to destination, it goes down to touch the ground at the given position. If no value is given, an altitude of 10 meters is the default value. On very short moves, even winged bot stay on the ground. For all bot except winged bots, this parameter is ignored.
+
+\t;goal: \c;\l;int\u cbot\int;\n; (default value \c;0\n;)
+This parameter tells the bot how it must reach the goal:
+\c;0\n; stops exactly at the goal position
+\c;1\n; goes close to the goal position, without stopping.
+If no value is given, \c;1\n; (precision) is the default value.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Normally an error stops the program. You can prevent the program from stopping on errors by using the \c;\l;errmode\u cbot\errmode;(0)\n; instruction. A value different from zero if an error occurred is then returned by \c;goto()\n;.
+\c;== 0 \n;Goal position reached
+\c;!= 0 \n;Goal position impossible to reach
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/grab.txt b/help/E/cbot/grab.txt
new file mode 100644
index 00000000..5cc81374
--- /dev/null
+++ b/help/E/cbot/grab.txt
@@ -0,0 +1,29 @@
+\b;Instruction \c;grab\n;
+The instruction \c;grab();\n; instructs the bot to use the operating arm to grab an object located on the ground, on the platform of a building or on the power cell location of a bot.
+
+\b;Basic use
+The instruction \c;grab();\n; written in this form grabs the object located in front of the bot. Here is a short program that grabs an object in front of the bot and drops it 5 meters further:
+\c;
+\s; grab();
+\s; \l;move\u cbot\move;(5);
+\s; \l;drop\u cbot\drop;();
+\n;
+\b;For specialists
+Syntax:
+\s;\c;grab ( oper );\n;
+
+This instruction appeals to the operating arm of a \l;grabber bot\u object\botgr;, in order to grab the closest object.
+
+\t;oper: \c;\l;int\u cbot\int;\n; (default value\c;InFront\n;)
+Oper indicates where the bot should look for an object to grab. If no indication is given, the object is picked up in front of the bot.
+\c;InFront \n; Grabs in front (default value).
+\c;Behind \n; Grabs behind.
+\c;EnergyCell\n; Grabs the bot's own power cell.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Normally an error stops the program. You can prevent the program from stopping on errors by using the \c;\l;errmode\u cbot\errmode;(0)\n; instruction. A value different from zero if an error occurred is then returned by \c;grab();\n;.
+\c;== 0 \n;an object was grabbed
+\c;!= 0 \n;error, no object was grabbed
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/if.txt b/help/E/cbot/if.txt
new file mode 100644
index 00000000..ad2ed990
--- /dev/null
+++ b/help/E/cbot/if.txt
@@ -0,0 +1,40 @@
+\b;Instructions \c;if\n; and \c;else\n;
+With the instruction \c;if() {}\n; you can execute a set of instructions only if a certain condition is true. Write the condition in brackets \c;()\n;, and the instructions in braces \c;{}\n;.
+
+\b;Basic use
+Here is a concrete example: The bot will shoot only if the target is closer than 40 meters:
+\c;
+\s; item = \l;radar\u cbot\radar;(AlienAnt);
+\s; if (\l;distance\u cbot\dist;(position, item.position) < 40)
+\s; {
+\s; fire(1);
+\s; }
+\n;
+You can also test if an object exists at all. If the instruction \c;\l;radar\u cbot\radar;();\n; does not find the requested object, it returns the value \c;null\n;. So you can test if an object does not exists with the condition \c;(item == null)\n;, or test if it exists with \c;(item != null)\n;. Two equal signs \c;==\n; test equality, an exclamation mark followed by an equal sign \c;!=\n; test inequality. Here is a test that will go to rechage the \l;power cell\u object\power; only if there is a \l;power station\u object\station;:
+\c;
+\s; item = \l;radar\u cbot\radar;(PowerStation);
+\s; if (item != null)
+\s; {
+\s; \l;goto\u cbot\goto;(item.position);
+\s; \l;wait\u cbot\wait;(5);
+\s; }
+\n;
+\b;For specialists
+Syntax:
+\s;\c;if ( condition )
+\s;{
+\s; \n;Instructions A ...\c;
+\s;}
+\s;else
+\s;{
+\s; \n;Instructions B ...\c;
+\s;}
+\n;
+With this conditional structure you can execute a \l;bloc\u cbot\bloc; A or a \l;bloc\u cbot\bloc; B depending on a \l;condition\u cbot\cond;. If the condition is true, bloc A is executed. If the condition is false, bloc B is executed.
+Part \c;else { }\n; is not compulsory.
+
+\t;Attention
+Do not put a \l;semicolon\u cbot\term; at the end of the line \c;if ( )\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/int.txt b/help/E/cbot/int.txt
new file mode 100644
index 00000000..deb86d9e
--- /dev/null
+++ b/help/E/cbot/int.txt
@@ -0,0 +1,20 @@
+\b;Type \c;int\n;
+Use this type for variables that contain only whole numbers, negative or positive. For example:
+\c;
+\s; 12
+\s; 1000
+\s; -4
+\n;
+To represent real numbers like 12.05 or -0.005, use the type \c;\l;float\u cbot\float;\n;.
+
+\t;Attention
+Do not put space or colon signs inside a number.
+
+\t;For specialists
+Numbers of the type \c;int\n; are represented with 32 bits.
+The highest number that can be represented is (2^31)-1, that is 2'147'483'647.
+The smallest number that can be represented is -(2^31), that is -2'147'483'648.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/E/cbot/jet.txt b/help/E/cbot/jet.txt
new file mode 100644
index 00000000..71e8da2d
--- /dev/null
+++ b/help/E/cbot/jet.txt
@@ -0,0 +1,16 @@
+\b;Instruction \c;jet\n;
+Syntax:
+\s;\c;jet ( power );\n;
+
+Direct control of the jet of a \l;winged bot\u object\botgj;. The jet is what makes the bot fly. Use this instruction in order to take off, climb, descend or land.
+
+\t;power: \c;\l;float\u cbot\float;\n;
+Power of the jet, ranges between \c;-1\n; and \c;+1\n;. \c;jet(1);\n; instructs the bot to climb as fast as possible, \c;jet(-1);\n; descends as fast as possible, \c;jet(0);\n; stabilizes the altitude. In order to get slower altitude changes, use intermediate values, for example \c;jet(0.3);\n;.
+
+
+\t;Return value: \c;\l;void\u cbot\void;\n;
+None.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/E/cbot/message.txt b/help/E/cbot/message.txt
new file mode 100644
index 00000000..01d0f706
--- /dev/null
+++ b/help/E/cbot/message.txt
@@ -0,0 +1,25 @@
+\b;Instruction \c;message\n;
+Syntax:
+\s;\c;message ( text, type );\n;
+
+Prints a message on top of the screen. After a few seconds, the message disappears automatically.
+
+\t;text: \c;\l;string\u cbot\string;\n;
+Text that is to be displayed. It is possible to append several texts and/or values with the operator \c;+\n;:
+\c;message("Not found");\n;
+\c;message(angle);\n;
+\c;message(n + " object(s) found");\n;
+\c;message("Distance = " + dist + " meters");\n;
+
+\t;type: \c;\l;int\u cbot\int;\n; (default value \c;DisplayMessage\n;)
+Type of the message, that determines the background color.
+o \c;DisplayMessage\n; Standard message on yellow background.
+o \c;DisplayInfo \n; Information on green background.
+o \c;DisplayWarning\n; Warning on blue background.
+o \c;DisplayError \n; Error on red background.
+
+\t;Return value: \c;\l;void\u cbot\void;\n;
+None.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/motor.txt b/help/E/cbot/motor.txt
new file mode 100644
index 00000000..712a1ff3
--- /dev/null
+++ b/help/E/cbot/motor.txt
@@ -0,0 +1,39 @@
+\b;Instruction \c;motor\n;
+The instruction \c;motor( , );\n; sets the speed for the left-hand and the right-hand motor of the bot.
+
+\b;Basic use
+The speed given to the motors will remain constant during the execution of the following instructions. Thanks to this characteristic it is possible to perform a rotation during the instruction \c;\l;fire\u cbot\fire;();\n;. This will sweep a whole zone with only one burst. Here is an example that will sweep the zone in front of the bot:
+\c;
+\s; \l;turn\u cbot\turn;(45); // turns 45 degrees left
+\s; motor(0.5, -0.5); // slow rotation to the right
+\s; \l;fire\u cbot\fire;(2); // fire
+\s; motor(0,0); // stops the rotation
+\n;
+With the left-hand motor turning half-speed forward and the right-hand motor turning half-speed backward, the bot will turn slowly on itself during the 2-second-burst.
+
+\b;For specialists
+Syntax :
+\s;\c;motor ( left, right );\n;
+
+Gives speed instructions to the right and left motors of the robot. The motors will keep this speed until a new motor instruction is performed, or until a \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n; or \c;\l;goto\u cbot\goto;\n; instruction is performed.
+
+\t;left: \c;\l;float\u cbot\float;\n;
+Speed instruction for the left motor; the value must range between -1 and 1.
+
+\t;right: \c;\l;float\u cbot\float;\n;
+Speed instruction for the right motor; the value must range between -1 and 1.
+
+Examples :
+\c;motor(1, 1);\n; moves forward with highest possible speed.
+\c;motor(-0.5, -0.5);\n; moves backward with half speed.
+\c;motor(1, -1);\n; turns right as fast as possible.
+
+Note :
+\c;motor(2, 2);\n; will not move forward any faster than \c;motor(1, 1)\n;
+\c;motor(-2, -2);\n; will not move backward any faster than \c;motor(-1, -1)\n;
+
+\t;Return value: \c;\l;void\u cbot\void;\n;
+None.
+
+\t;See also
+\l;Instructions\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/move.txt b/help/E/cbot/move.txt
new file mode 100644
index 00000000..74177b22
--- /dev/null
+++ b/help/E/cbot/move.txt
@@ -0,0 +1,22 @@
+\b;Instruction \c;move\n;
+The instruction \c;move();\n; instructs the bot to move forward or backward while keeping the same orientation. In brackets you must specify the length of the move in meters.
+
+\b;Basic use
+If you want the bot to move forward 30 meters, write \c;move(30);\n;. In order to move the bot backward after it dropped a chunk of \l;titanium ore\u object\titanore; on the \l;converter\u object\convert;, write \c;move(-2.5);\n;.
+
+\b;For specialists
+Syntax:
+\s;\c;move ( length );\n;
+
+Moves forward or backward of a given distance, always keeping the current orientation of the bot.
+
+\t;length: \c;\l;float\u cbot\float;\n;
+Length of the move, in meters. A negative value makes the bot move backward.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Normally an error stops the program. You can prevent the program from stopping on errors by using the \c;\l;errmode\u cbot\errmode;(0)\n; instruction. A value different from zero if an error occurred is then returned by \c;move()\n;.
+\c;== 0 \n;Move executed
+\c;!= 0 \n;error, the instruction was not performed correctly
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/nan.txt b/help/E/cbot/nan.txt
new file mode 100644
index 00000000..f4732189
--- /dev/null
+++ b/help/E/cbot/nan.txt
@@ -0,0 +1,16 @@
+\b;Type \c;nan\n;
+This special value indicates that a \l;variable\u cbot\var; of type \c;\l;int\u cbot\int;\n; or \c;\l;float\u cbot\float;\n; contains no number, but "nothing".
+For example, if the instruction \c;\l;receive\u cbot\receive;\n; can not get the requested information, it returns \c;nan\n; :
+\c;
+\s; value = receive("Length");
+\s; if ( value == nan ) // not found ?
+\s; {
+\s;
+\s; }
+\n;
+\t;Dictionnary
+\c;nan\n; = Not A Number
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/E/cbot/new.txt b/help/E/cbot/new.txt
new file mode 100644
index 00000000..97261784
--- /dev/null
+++ b/help/E/cbot/new.txt
@@ -0,0 +1,21 @@
+\b;Instruction \c;new\n; (for specialists)
+The \c;new\n; operator creates a \l;class\u cbot\class; instance:
+\c;\s; MyClass item; // now item is a null reference
+\s; item = new MyClass(); // now item is a reference
+\s; // to a new class instance
+\n;
+If you want to create a new instance at declaration time you can ommit the new \c;new\n; operator by putting () after the declaration:
+
+Instead of:
+\c;\s; MyClass item = new MyClass();
+\n;you can write:
+\c;\s; MyClass item();
+\n;
+If your class has a constructor with parameters you can write:
+\c;\s; MyClass item = new MyClass(2, 3);
+\n;or:
+\c;\s; MyClass item(2, 3);
+\n;
+\t;See also
+\c;\l;class\u cbot\class;\n;, \c;\l;reference\u cbot\pointer;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/null.txt b/help/E/cbot/null.txt
new file mode 100644
index 00000000..6e5219da
--- /dev/null
+++ b/help/E/cbot/null.txt
@@ -0,0 +1,7 @@
+\b;Type \c;null\n;
+This special value indicates that the variable containing it does not reference an instance.
+
+\t;See also
+\l;References\u cbot\pointer;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/E/cbot/object.txt b/help/E/cbot/object.txt
new file mode 100644
index 00000000..242de885
--- /dev/null
+++ b/help/E/cbot/object.txt
@@ -0,0 +1,70 @@
+\b;Type \c;object\n;
+Use this type for variables that contain the characteristics of an object, be it a bot, a building, some raw material, an enemy, etc.
+
+\c;\l;int\u cbot\int; object.category \n;\l;Category\u cbot\category; of the object
+\c;\l;point\u cbot\point; object.position \n;Position of the object (x,y,z)
+\c;\l;float\u cbot\float; object.orientation \n;Orientation of the object (0..360)
+\c;\l;float\u cbot\float; object.pitch \n;Forward/backward angle of the object
+\c;\l;float\u cbot\float; object.roll \n;Right/left angle of the object
+\c;\l;float\u cbot\float; object.energyLevel \n;Energy level (0..1)
+\c;\l;float\u cbot\float; object.shieldLevel \n;Shield level (0..1)
+\c;\l;float\u cbot\float; object.temperature \n;Jet temperature (0..1)
+\c;\l;float\u cbot\float; object.altitude \n;Altitude above ground
+\c;\l;float\u cbot\float; object.lifeTime \n;Lifetime of the object
+\c;object object.energyCell \n;Power cell on the bot
+\c;object object.load \n;Object carried by the bot
+
+\s;\c;category\n;
+The \n;\l;category\u cbot\category; of an object allows you to know what it is, f. ex. what kind of bot, building, enemy, etc.
+
+\s;\c;position\n;
+Position of the object on the planet, in meters. The coordinates \c;x\n; and \c;y\n; correspond to the location on a map, the \c;z\n; coordinate corresponds to the altitude above (respectively below) sea level.
+
+\s;\c;orientation\n;
+Orientation of the object, in degrees. The orientation tells you what direction the object is facing. An orientation of \c;0\n; corresponds to an object facing eastwards, thus following the positive \c;x\n; axis. The orientation is measured counterclockwise.
+
+\s;\c;pitch\n;
+Forward/backward angle of the robot. A pitch of \c;0\n; means that the bot is standing on flat ground. A positive inclination means that it is facing upwards, a negative inclination means that it is facing downwards.
+
+\s;\c;roll\n;
+Left/right angle of the bot, in degrees. A positive value means that the bot is leaning to the left side, a negative value means that it is leaning to the right side.
+
+\s;\c;energyLevel\n;
+Energy level, between 0 and 1. A normal \l;power cell\u object\power; that is fully charged returns the value \c;1\n;. A \l;nuclear power cell\u object\atomic; never returns a value higher than 1, it just lasts longer. Attention: The energy level of a bot is always zero, because the energy is not contained in the bot, but in the power cell. To know the energy level of the power cell of a bot, you must write \c;energyCell.energyLevel\n;.
+
+\s;\c;shieldLevel\n;
+Shield level of a robot or building. A level \c;1\n; indicates that the shield is still perfect. Every time that the bot or building gets a bullet or collides with another object, the shield level decreases. When the level reaches \c;0\n;, the next bullet or collision will destroy the bot or building.
+Bots can re-energize their shield on a \l;repair center\u object\repair;. The shield of a building is repaired if it lays inside the protection sphere of a \l;shielder\u object\botshld;.
+
+\s;\c;temperature\n;
+Temperature of the jet of \l;winged bots\u object\botgj;. \c;0\n; corresponds to a cold jet. When used, the temperature increases progressively. When it reaches the value \c;1\n;, the jet is overheated and stops working, until it cooled down a little.
+
+\s;\c;altitude\n;
+The \c;z\n; coordinate of the position indicates the altitude above sea level, whereas the \c;altitude\n; indicates the height above ground. This value is meaningful only for \l;winged bots\u object\botgj; and for \l;wasps\u object\wasp;. For all other objects, this value is zero.
+
+\s;\c;lifeTime\n;
+The age of the object in seconds since it's creation.
+
+\s;\c;energyCell\n;
+This information is special, because it returns the information about another object, in this case the power pack. This means that energyCell contains all the characteristics of a normal object, for example \c;category\n; (PowerCell or NuclearCell), \c;position\n; (the position of the cell), etc.
+If you want to know the energy level of a robot, you must not check \c;energyLevel\n;, but \c;energyCell.energyLevel\n;.
+If the bot has bot no power cell, \c;energyCell\n; returns \c;null\n;.
+
+\s;\c;load\n;
+This information also returns the description of a whole object: the description of the object carried by a \l;grabber\u object\botgr;. If it carries nothing, \c;load\n; returns \c;null\n;.
+
+\b;Examples
+The type \c;object\n; returns the special value \c;\l;null\u cbot\null;\n; when the object does not exist. For example:
+\c;
+\s; object a;
+\s; a = radar(BotGrabberRoller);
+\s; if ( a == null ) // object does not exist ?
+\s; {
+\s; }
+\s; if ( a.position.z > 50 ) // is it on a mountain ?
+\s; {
+\s; }
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/E/cbot/open.txt b/help/E/cbot/open.txt
new file mode 100644
index 00000000..8af2abd4
--- /dev/null
+++ b/help/E/cbot/open.txt
@@ -0,0 +1,20 @@
+\b;Instruction \c;open\n;
+Open a text file in the files/ folder. This is a method of the \c;\l;file\u cbot\file;\n; class. This is the reason why we always write \c;handle.open()\n;¦:
+\c;
+\s; handle.open("test.txt", "w");
+\n;
+To open a file, proceed as follows¦:
+\c;
+\s; file handle();
+\s; handle.open("filename", "w");
+\s; handle.writeln("abc");
+\s; handle.close();
+\n;
+\c;"r"\n; mode: open for reading.
+\c;"w"\n; mode: open for writing.
+
+Files can only be created and opened in the files/ folder which is located in the folder where Colobot has been installed. You cannot not create or open files that are located elsewhere than in the files/ folder.
+
+\t;See also
+\c;\l;file\u cbot\file;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n;, \c;\l;writeln\u cbot\writeln;\n; and \c;\l;eof\u cbot\eof;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/openfile.txt b/help/E/cbot/openfile.txt
new file mode 100644
index 00000000..6e8d59e1
--- /dev/null
+++ b/help/E/cbot/openfile.txt
@@ -0,0 +1,11 @@
+\b;Instruction \c;openfile\n;
+\c;openfile();\n; opens an text file in the files/ folder. This is not a method of the \c;\l;file\u cbot\file;\n; class but openfile returne a \l;reference\u cbot\pointer; to a new instance of the file class. You must supply two parameters, the filename and the opening mode.
+\c;
+\s;file handle = openfile("filename", "r");
+\n;
+\c;"r"\n; mode: open for reading.
+\c;"w"\n; mode: open for writing.
+
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/point.txt b/help/E/cbot/point.txt
new file mode 100644
index 00000000..916be40f
--- /dev/null
+++ b/help/E/cbot/point.txt
@@ -0,0 +1,36 @@
+\b;Type \c;point\n;
+Variables of this type contain the coordinates of a point in space. This type is made of three values that represent the \c;x\n;, \c;y\n; and \c;z\n; coordinates.
+\c;x\n; and \c;y\n; correspond to the place on the ground. The positive \c;x\n; axis faces towards east, the positive \c;y\n; axis faces towards north.
+The \c;z\n; value corresponds to the altitude above sea level.
+
+If you want to declare a variable of type point, you can write:
+\c;
+\s; point a (10, 20, 30);
+\n;
+You can also set the variable taking one value after another:
+\c;
+\s; point b;
+\s; b.x = 10;
+\s; b.y = 20;
+\s; b.z = 30;
+\n;
+With these examples, the following \l;condition\u cbot\cond; is true:
+\c;
+\s; if ( a == b )
+\s; {
+\s; }
+\n;
+The following declaration :
+\c;
+\s; point c (4, 7);
+\n;
+Is equivalent to :
+\c;
+\s; point c;
+\s; c.x = 4;
+\s; c.y = 7;
+\s; c.z = 0;
+\n;
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/pointer.txt b/help/E/cbot/pointer.txt
new file mode 100644
index 00000000..3d7b348c
--- /dev/null
+++ b/help/E/cbot/pointer.txt
@@ -0,0 +1,53 @@
+\b;References (for specialists)
+CBOT uses references for \l;classes\u cbot\class; and \l;arrays\u cbot\array;. Any class variable actually contains a reference to the instance. The instance actually contains the class fields. Several references can reference the same instance. A \c;\l;null\u cbot\null;\n; reference references nothing. You can compare an instance to a suitcase and a reference to a carrier. Each time we need a new suitcase we create a new instance with a carrier. But a suitcase can be carried by more than one carrier. A carrier who carries no suitcase is a \c;\l;null\u cbot\null;\n; reference.
+
+Example:
+\c;\s;{
+\s; MyClass item1(); // create a new instance
+\s; // referenced by item1
+\s; MyClass item2; // create a null reference
+\s; item2 = item1; // copy the reference,
+\s; // item2 and item1 now reference
+\s; // the same instance
+\s; item1.a = 12; // modifies the instance
+\s; // referenced by item1 (and item2)
+\s; message(item2.a);// displays 12
+\s;}
+\n;
+If you pass a \l;class\u cbot\class; instance as parameter to a function, the function only receives a reference to the instance. That means if you modify the instance in the function, the instance that has been specified by the caller will be actuallay modified.
+
+\c;\s;void Test( MyClass item )
+\s;{
+\s; item.a = 12; // modify the original instance
+\s; item = new MyClass(); // new local instance
+\s; item.a = 33; // modifie the local instance
+\s;}
+\n;
+Calling the fucntion \c;Test()\n;¦:
+\c;\s;{
+\s; MyClass toto();
+\s; Test(toto);
+\s; message(toto.a); // displays 12
+\s;}
+\n;
+The instance containing the field \c;a = 33\n; is referenced only by the newly created instance \c;item\n; inside the fucntion \c;Test\n;. At the end of \c;Test\n; this newly created instance referenced by \c;item\n; is automatically deleted.
+
+A function can return an instance¦:
+\c;\s;MyClass Test2( )
+\s;{
+\s; MyClass item = new MyClass();
+\s; item.x = 33;
+\s; return item;
+\s;}
+\n;
+Call the function like this:
+\c;\s;{
+\s; MyClass toto;
+\s; toto = Test2(); // toto will contain a reference to
+\s; // the instance created by Test2()
+\s; message(toto.a); // displays 33
+\s;}
+\n;
+\t;See also
+\c;\l;class\u cbot\class;\n;, \c;\l;new\u cbot\new;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/private.txt b/help/E/cbot/private.txt
new file mode 100644
index 00000000..5a2921a2
--- /dev/null
+++ b/help/E/cbot/private.txt
@@ -0,0 +1,19 @@
+\b;Instruction \c;private\n; (for specialists)
+\l;Class\u cbot\class; members can be \l;public\u cbot\public; (by default) or private. A member can be declared privat by putting \c;private\n; before the type declaration of the member. Private members are not accessible from outside the class definition.
+\c;
+\s;public class MyClass
+\s;{
+\s; int b; // public by défault
+\s; public int a; // als public
+\s; private point position; // privat
+\s;}
+\s;void Test()
+\s;{
+\s; MyClass item;
+\s; item.a = item.b = 12; // ok
+\s; message( item.position ); // this is an error
+\s;}
+\n;
+\t;See also
+\c;\l;class\u cbot\class;\n;, \c;\l;public\u cbot\public;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/public.txt b/help/E/cbot/public.txt
new file mode 100644
index 00000000..d7e8d920
--- /dev/null
+++ b/help/E/cbot/public.txt
@@ -0,0 +1,51 @@
+\b;Instruction \c;public\n; (for specialists)
+This instruction has two distinct purposes¦:
+
+1) Make a function available to other bots.
+2) Make a class member accessible from outside the class definition.
+
+\b;Instruction \c;public\n; for functions
+If you put \c;public\n; before a \l;function\u cbot\function; definition, you can make the function available to programs in other bots in the same mission.
+
+For example in the first bot we would have¦:
+\c;
+\s;public void object::Segment(float dist, float angle)
+\s;{
+\s; move(dist);
+\s; turn(angle);
+\s;}
+\n;
+And in another bot we would have¦:
+\c;
+\s;extern void object::Square( )
+\s;{
+\s; for ( int i=0 ; i<4 ; i++ )
+\s; {
+\s; Segment(10, 90);
+\s; fire(1);
+\s; }
+\s;}
+\n;
+If you have declared a function \c;public\n;, you cannot define a function with the same name and arguments in another bot of the same mission.
+
+If a bot containing a \c;public\n; function is destroyed, the other bots that make use of this function will be stopped with an error.
+
+\b;Instruction \c;public\n; for classes
+\l;Class\u cbot\class; members can be public (by default) or \l;privat\u cbot\private;. A member can be declared private by putting \c;private\n; before the member type. Private members are not accessible from outside the class definition.
+\c;
+\s;public class MyClass
+\s;{
+\s; int b; // public by default
+\s; public int a; // also public
+\s; private point position; // privat
+\s;}
+\s;void Test()
+\s;{
+\s; MyClass item;
+\s; item.a = item.b = 12; // ok
+\s; message( item.position ); // this is an error
+\s;}
+\n;
+\t;See also
+\c;\l;class\u cbot\class;\n;, \c;\l;private\u cbot\private;\n;, \c;\l;functions\u cbot\function;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/radar.txt b/help/E/cbot/radar.txt
new file mode 100644
index 00000000..d16fa639
--- /dev/null
+++ b/help/E/cbot/radar.txt
@@ -0,0 +1,60 @@
+\b;Instruction \c;radar\n;
+With the instruction \c;radar()\n;, you can look for objects like \l;enemies\u object\mother;, bots, buildings or raw materials.
+
+\b;Basic use
+Write in brackets the \l;name of the object\u cbot\category; that you look for. Put the result in a variable of the \l;type\u cbot\type; \c;object\n;. Here is an example that looks for the closest ant:
+\c;
+\s;// At the beginning of the program:
+\s;object item; // variable declaration
+\s;
+\s;// Look for the closest ant
+\s;item = radar(AlienAnt);
+\n;
+\b;For specialists
+Syntax:
+\s;\c;radar ( category, angle, focus, min, max, way );\n;
+
+Detects an object according to several parameters.
+
+\image radar1 8 8;
+Seen from above, the purple zone corresponds to the zone where objects will be detected.
+
+\t;category: \c;\l;int\u cbot\int;\n;
+\l;Category\u cbot\category; of the objects that should be detected. For example, when you are looking for an ant, write \c;radar (AlienAnt)\n;.
+
+\t;angle: \c;\l;float\u cbot\float;\n; (default value\c;0\n;)
+Direction that the radar is facing, in degrees.
+\c; 0\n; -> radar is facing straight ahead
+\c;-90\n; -> radar is facing a quarter turn right
+\c; 90\n; -> radar is facing a quarter turn left
+
+\t;focus: \c;\l;float\u cbot\float;\n; (default value\c;360\n;)
+Opening angle of the radar, in degrees.
+
+\t;min: \c;\l;float\u cbot\float;\n; (default value \c;0\n;)
+Minimum detection distance, in meters. Objects that are closer than the minimum distance will not be detected.
+
+\t;max: \c;\l;float\u cbot\float;\n; (Default value\c;1000\n;)
+Maximum detection distance, in meters. Objects that are farther away than the maximum distance will not be detected.
+
+\t;way: \c;\l;float\u cbot\float;\n; (default value\c;1\n;)
+Determines which way the objects are detected. With value \c;1\n;, returns the closest object found in the specified zone. With value \c;-1\n;, the farthest object in the zone will be returned.
+
+\t;Return value: \c;\l;object\u cbot\object;\n;
+Returns the first object found that corresponds to the specified category in the specified zone. If no object was found, returns the value \c;\l;null\u cbot\null;\n;.
+
+\t;Remark
+You do not have to give all the parameters. Here are two examples of instructions that are equivalent:
+\c;
+\s; radar(Titanium, 0, 360, 0, 1000);
+\s; radar(Titanium); // equivalent
+
+\s; radar(Titanium, 0, 90, 0, 1000);
+\s; radar(Titanium, 0, 90); // equivalent
+\n;
+When one or more parameters are not specified, the default values indicated above are used instead; only the first parameter is compulsory.
+Generally, only the first parameter is specified: f. ex. \c;radar (AlienAnt)\n; detects the closest ant, wherever it may be.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/E/cbot/readln.txt b/help/E/cbot/readln.txt
new file mode 100644
index 00000000..4889c0c5
--- /dev/null
+++ b/help/E/cbot/readln.txt
@@ -0,0 +1,20 @@
+\b;Instruction \c;readln\n;
+Read one line from an open file in the files/ folder. This is a method of the \c;\l;file\u cbot\file;\n; class. This is the reason why we always write \c;handle.readln()\n;¦:
+\c;
+\s; s = handle.readln();
+\n;
+The file must have been opened for reading (\c;"r"\n;) with the \c;\l;open\u cbot\open;\n; instruction. \c;readln\n; returns the string containing the whole line but without the end of line characters 0x0D (CR) and 0x0A (LF).
+
+Syntax¦:
+\s;\c;string = handle.readln ( );\n;
+
+Example¦:
+\c;
+\s; string s;
+\s; s = handle.readln();
+\s; if ( s == "abc" )
+\s; ...
+\n;
+\t;See also
+\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;writeln\u cbot\writeln;\n; and \c;\l;eof\u cbot\eof;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/receive.txt b/help/E/cbot/receive.txt
new file mode 100644
index 00000000..68b140f5
--- /dev/null
+++ b/help/E/cbot/receive.txt
@@ -0,0 +1,18 @@
+\b;Instruction \c;receive\n;
+Syntax:
+\s;\c;receive ( name, power );\n;
+
+Retrieves an information from the closest \l;information exchange post\u object\exchange;.
+
+\t;name: \c;string\n;
+Name of the information required from the exchange post. This name is a string: it must be written in quotation marks "¦".
+
+\t;power: \c;float\n;
+Power of the receiver, which corresponds to maximal distance between the receiver and the exchange post. If the distance is longer, no information is received. Default value is 10 metres.
+
+\t;Return value: \c;\l;float\u cbot\float;\n;
+Value of the retrieved information. If no exchange post is close enough, or if the name of the requested information does not exist in the exchange post, the value \c;nan\n; is returned.
+
+\t;See also
+\c;\l;send\u cbot\send;\n;, \c;\l;testinfo\u cbot\testinfo;\n; and \c;\l;deleteinfo\u cbot\delinfo;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/recycle.txt b/help/E/cbot/recycle.txt
new file mode 100644
index 00000000..10d9979d
--- /dev/null
+++ b/help/E/cbot/recycle.txt
@@ -0,0 +1,14 @@
+\b;Instruction \c;recycle\n;
+Syntax:
+\s;\c;recycle ( );\n;
+
+Recycles the derelict bot in front of the \l;recycler\u object\botrecy; into a \l;titanium cube\u object\titan;.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Zero if OK, or a value different from zero if an error occurred.
+\c;== 0 \n;the derelict bot has been recycled
+\c;!= 0 \n;error, no derelict bot could be recycled
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/E/cbot/retobj.txt b/help/E/cbot/retobj.txt
new file mode 100644
index 00000000..3cfd3ca7
--- /dev/null
+++ b/help/E/cbot/retobj.txt
@@ -0,0 +1,15 @@
+\b;Instruction \c;retobject\n;
+Syntax:
+\s;\c;retobject ( number );\n;
+
+Returns the object corresponding to the given number.
+
+\t;number: \c;\l;int\u cbot\int;\n;
+Number of the object, between 0 and n. "n" represents the total number of objects in the scene.
+
+\t;Return value: \c;\l;object\u cbot\object;\n;
+Object corresponding to the number. The return value \c;\l;null\u cbot\null;\n; means that no object corresponds to this number, because the number was too high, and there are not so many objects in the scene.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/E/cbot/return.txt b/help/E/cbot/return.txt
new file mode 100644
index 00000000..5c74e3e1
--- /dev/null
+++ b/help/E/cbot/return.txt
@@ -0,0 +1,31 @@
+\b;Instruction \c;return\n;
+Returns from a function. Syntax:
+\c;
+\s;void function ( )
+\s;{
+\s; return;
+\s;}
+\n;
+\b;For specialists
+If the \l;function\u cbot\function; has a return type, the \c;return\n; instruction must be followed by the value to be returned:
+\c;
+\s;float Pi ( )
+\s;{
+\s; return 3.1415;
+\s;}
+
+\s;float Mean (float a, float b)
+\s;{
+\s; return (a+b)/2;
+\s;}
+
+\s;string Sign (float a)
+\s;{
+\s; if ( a > 0 ) return "positive";
+\s; if ( a < 0 ) return "négative";
+\s; return "null";
+\s;}
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/E/cbot/search.txt b/help/E/cbot/search.txt
new file mode 100644
index 00000000..e63e6c4b
--- /dev/null
+++ b/help/E/cbot/search.txt
@@ -0,0 +1,18 @@
+\b;Instruction \c;search\n;
+Syntax:
+\s;\c;search ( category, position );\n;
+
+Detects the object of the given category that is closest to the given position.
+
+\t;category: \c;\l;int\u cbot\int;\n;
+\l;Category\u cbot\category; of the requested object.
+
+\t;position: \c;\l;point\u cbot\point;\n;
+\c;search\n; returns the object of the given category that is closest to the position indicated here.
+
+\t;Return value: \c;\l;object\u cbot\object;\n;
+Characteristics of the object that has been found. The value \c;\l;null\u cbot\null;\n; means that no object of this category has been found.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/E/cbot/send.txt b/help/E/cbot/send.txt
new file mode 100644
index 00000000..10aa0606
--- /dev/null
+++ b/help/E/cbot/send.txt
@@ -0,0 +1,19 @@
+\b;Instruction \c;send\n;
+Syntax¦:
+\s;\c;send ( name, value, power );\n;
+
+Sends an information to the closest \l;information exchange post\u object\exchange;.
+
+\t;name: \c;string\n;
+Name of the information to be sent to the exchange post. This name is a string: it must be written in quotation marks "¦".
+If there is any information having this name, a new entry is created, as far as the total number of entries does not exceed 10. If there is already an information having this name, value is simply replaced by the new.
+
+\t;value: \c;float\n;
+Value of the information to be sent.
+
+\t;power: \c;float\n;
+Power of the transmitter, which corresponds to the maximal distance to where information can be the sent. Default value is 10 metres.
+
+\t;See also
+\c;\l;receive\u cbot\receive;\n;, \c;\l;testinfo\u cbot\testinfo;\n; and \c;\l;deleteinfo\u cbot\delinfo;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/shield.txt b/help/E/cbot/shield.txt
new file mode 100644
index 00000000..d9aff476
--- /dev/null
+++ b/help/E/cbot/shield.txt
@@ -0,0 +1,19 @@
+\b;Instruction \c;shield\n;
+Syntax:
+\s;\c;shield ( oper );\n;
+
+Activates or deactivates the shield of the \l;ahielder\u object\botshld;. You can of course move the shielder when the shield is active. It protects all objects that are inside the shielded sphere from enemy fire. The radius of the sphere can range between 10 and 25 meters.
+
+\t;oper: \c;\l;float\u cbot\float;\n;
+\c;1\n; activates the shield.
+\c;0\n; deactivates the shield
+A normal \l;power cell\u object\power; fully charged can maintain the shield active during 20 seconds. When the cell is empty, the shield deactivates.
+
+\t;radius: \c;\l;float\u cbot\float;\n;
+Radius of the shield, ranging between 10 and 25 meters.
+
+\t;Return value: \c;\l;void\u cbot\void;\n;
+None.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/sizeof.txt b/help/E/cbot/sizeof.txt
new file mode 100644
index 00000000..c0722c15
--- /dev/null
+++ b/help/E/cbot/sizeof.txt
@@ -0,0 +1,22 @@
+\b;Instruction \c;sizeof\n;
+The sizeof function lets you know the number of elements contained in an \l;array\u cbot\array;.
+That is the index of the last element plus one ("empty" elements are counted).
+\c;
+\s;{
+\s; int a[12];
+\s; a[5] = 345;
+\s; message( sizeof(a) ); // will display 6
+\s;}
+\n;
+In this example we have 6 elements in the array after \c;a[5]=345\n;. The non initialized elements \c;[0]\n;, \c;[1]\n;, \c;[2]\n;, \c;[3]\n; and \c;[4]\n; will be counted.
+
+With multidimensionnal arrays you can get the size of a sub array:
+\c;
+\s;float xy[][]; // 2 dimensionnal array
+\s;xy[5][10] = 67;
+\s;message( sizeof(xy) ); // will display 6
+\s;message( sizeof(xy[5]) ); // will display 11
+\s;
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/sniff.txt b/help/E/cbot/sniff.txt
new file mode 100644
index 00000000..27872224
--- /dev/null
+++ b/help/E/cbot/sniff.txt
@@ -0,0 +1,17 @@
+\b;Instruction \c;sniff\n;
+Syntax:
+\s;\c;sniff ( );\n;
+
+Sounds the underground in front of the \l;sniffer\u object\botsr;. According to what raw materials were detected, the following objects will be created:
+
+\c;TitaniumSpot\n; -> \l;Red cross\u object\stonspot;
+\c;UraniumSpot \n; -> \l;Yellow circle\u object\uranspot;
+\c;PowerSpot \n; -> \l;Green cross\u object\enerspot;
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Zero if everything is OK, or a value different from zero if an error occurred.
+\c;== 0 \n;sounding performed
+\c;!= 0 \n;sounding impossible
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/space.txt b/help/E/cbot/space.txt
new file mode 100644
index 00000000..baa660a9
--- /dev/null
+++ b/help/E/cbot/space.txt
@@ -0,0 +1,23 @@
+\b;Instruction \c;space\n;
+Syntax :
+\s;\c;space ( center, rmin, rmax, dist );\n;
+
+Determines the position of the nearest free space around a given position.
+
+\t;center: \c;\l;point\u cbot\point;\n; (default: bot position)
+Desired position of the free space.
+
+\t;rmin: \c;\l;float\u cbot\float;\n; (default value: \c;8\n;)
+Minimum distance from the desired position.
+
+\t;rmax: \c;\l;float\u cbot\float;\n; (default value: \c;50\n;)
+Maximum distance from the desired position.
+
+\t;dist: \c;\l;float\u cbot\float;\n; (default value: \c;4\n;)
+Required distance between two free spaces.
+
+\t;Return: \c;\l;point\u cbot\point;\n;
+Position of the free space.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/static.txt b/help/E/cbot/static.txt
new file mode 100644
index 00000000..7d5e6032
--- /dev/null
+++ b/help/E/cbot/static.txt
@@ -0,0 +1,22 @@
+\b;Instruction \c;static\n; (for specialists)
+\l;Class\u cbot\class; members declared with \c;static\n; are shared between all instances of the class.
+\c;
+\s;public class MyClass
+\s;{
+\s; static int nb = 1;
+\s; static string [ ] list = null;
+\s;}
+\s;void Test ()
+\s;{
+\s; MyClasse item1();
+\s; MyClasse item2();
+\s; item1.nb = 3;
+\s; item1.list[item1.nb] = "Hello";
+\s; message( item2.list[item2.nb] ); // display "Hello"
+\s;}
+\n;
+\c;Static\n; members can be declared \c;\l;private\u cbot\private;\n; so they will be only acessible from within class members (including constructors and destructors).
+
+\t;See also
+\c;\l;class\u cbot\class;\n;, \c;\l;synchronized\u cbot\synchro;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/strfind.txt b/help/E/cbot/strfind.txt
new file mode 100644
index 00000000..3d42b0d5
--- /dev/null
+++ b/help/E/cbot/strfind.txt
@@ -0,0 +1,20 @@
+\b;Instruction \c;strfind\n;
+Find a substring in a string and returns the position of the first substring found or \l;nan\u cbot\nan; if the substring has not been found.
+
+Syntax¦:
+\s;\c;strfind ( string, sub );\n;
+
+\t;string: \c;\l;string\u cbot\string;\n;
+String we are searching in.
+
+\t;sub: \c;\l;string\u cbot\string;\n;
+Substring we are searching for.
+
+Examples¦:
+\s;\c; int pos = strfind("abcdef", "ab"); // pos will be 0
+\s; int pos = strfind("abcdef", "de"); // pos will be 3
+\s; int pos = strfind("abcdef", "xy"); // pos will be \l;nan\u cbot\nan;
+\n;
+\t;See also
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/string.txt b/help/E/cbot/string.txt
new file mode 100644
index 00000000..cc7b1a17
--- /dev/null
+++ b/help/E/cbot/string.txt
@@ -0,0 +1,33 @@
+\b;Type \c;string\n;
+Use a variable of this type for storing characters or strings.
+
+For example:
+\s;\c; "Hello!"
+\s; "This is a string"
+\s; "x"
+\s; "" // empty string
+\n;
+You can append two strings with the \c;+\n; operator :
+\s;\c; "Good morning," + " " + "Sir"
+\n;
+Returns the string:
+\s;\c; "Good morning, Sir"
+\n;
+If you want to put a quotation mark (") or a backslash (\) in a string you must write¦:
+\s;\c;"This is \"very\" important"
+\n;which will result in the string \c; This is "very" important.
+\s;\c;"%user%\\ant.txt"
+\n;will result in \c;%user%\ant.txt
+\n;
+Following instructions can be used with strings¦:
+\c;\l;strlen\u cbot\strlen; \n;Get string length
+\c;\l;strleft\u cbot\strleft; \n;Extract left part
+\c;\l;strright\u cbot\strright; \n;Extract right part
+\c;\l;strmid\u cbot\strmid; \n;Extract center part
+\c;\l;strfind\u cbot\strfind; \n;Find a substring.
+\c;\l;strval\u cbot\strval; \n;Convert string to number
+\c;\l;strupper\u cbot\strupper; \n;Convert to upper case
+\c;\l;strlower\u cbot\strlower; \n;Convert to lower case
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/strleft.txt b/help/E/cbot/strleft.txt
new file mode 100644
index 00000000..fa80fdeb
--- /dev/null
+++ b/help/E/cbot/strleft.txt
@@ -0,0 +1,16 @@
+\b;Instruction \c;strleft\n;
+Extracts the first (that is, leftmost) characters from a string.
+
+Syntax¦:
+\s;\c;strleft ( string, len );\n;
+
+\t;len: \c;\l;int\u cbot\int;\n;
+Number of characters to be extracted.
+
+Examples¦:
+\s;\c; string s = strleft("abcdef", 2); // s is "ab"
+\s; string s = strleft("abc", 10); // s is "abc"
+\n;
+\t;See also
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/strlen.txt b/help/E/cbot/strlen.txt
new file mode 100644
index 00000000..1cc384a7
--- /dev/null
+++ b/help/E/cbot/strlen.txt
@@ -0,0 +1,14 @@
+\b;Instruction \c;strlen\n;
+Get the length of a string.
+
+Syntax¦:
+\s;\c;strlen ( string );\n;
+
+Examples¦:
+\s;\c; int len = strlen("abc"); // len is 3
+\s; int len = strlen(""); // len is 0
+\s; if ( strlen(s) == 0 ) // is string empty ?
+\n;
+\t;See also
+\c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/strlower.txt b/help/E/cbot/strlower.txt
new file mode 100644
index 00000000..b4b7e50b
--- /dev/null
+++ b/help/E/cbot/strlower.txt
@@ -0,0 +1,12 @@
+\b;Instruction \c;strlower\n;
+Convert all characters in a string to lowercase.
+
+Syntax¦:
+\s;\c;strlower ( string );\n;
+
+Examples¦:
+\s;\c; string s = strlower("Abc"); // s is "abc"
+\n;
+\t;See also
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/strmid.txt b/help/E/cbot/strmid.txt
new file mode 100644
index 00000000..cf90bd3b
--- /dev/null
+++ b/help/E/cbot/strmid.txt
@@ -0,0 +1,20 @@
+\b;Instruction \c;strmid\n;
+Extracts a substring of a given length starting at a given position from a string.
+
+Syntax¦:
+\s;\c;strmid ( string, pos, len );\n;
+
+\t;pos: \c;\l;int\u cbot\int;\n;
+The index of the first character that is to be included in the extracted substring.
+
+\t;len: \c;\l;int\u cbot\int;\n;
+Number of characters to be extracted.
+
+Examples¦:
+\s;\c; string s = strmid("abcdef", 1, 2); // s is "bc"
+\s; string s = strmid("abcdef", 4, 5); // s is "ef"
+\s; string s = strmid("abcdef", 9, 2); // s is ""
+\n;
+\t;See also
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/strright.txt b/help/E/cbot/strright.txt
new file mode 100644
index 00000000..18824e65
--- /dev/null
+++ b/help/E/cbot/strright.txt
@@ -0,0 +1,16 @@
+\b;Instruction \c;strright\n;
+Extracts the last (that is, rightmost) characters from a string.
+
+Syntax¦:
+\s;\c;strright ( string, len );\n;
+
+\t;len: \c;\l;int\u cbot\int;\n;
+Number of characters to be extracted.
+
+Examples¦:
+\s;\c; string s = strright("abcdef", 2); // s is "ef"
+\s; string s = strright("abc", 10); // s is "abc"
+\n;
+\t;See also
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/strupper.txt b/help/E/cbot/strupper.txt
new file mode 100644
index 00000000..7091f0ce
--- /dev/null
+++ b/help/E/cbot/strupper.txt
@@ -0,0 +1,12 @@
+\b;Instruction \c;strupper\n;
+Convert all characters in a string to uppercase.
+
+Syntax¦:
+\s;\c;strupper ( string );\n;
+
+Examples¦:
+\s;\c; string s = strupper("Abc"); // s is "ABC"
+\n;
+\t;See also
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/strval.txt b/help/E/cbot/strval.txt
new file mode 100644
index 00000000..491fc185
--- /dev/null
+++ b/help/E/cbot/strval.txt
@@ -0,0 +1,19 @@
+\b;Instruction \c;strval\n;
+Convert a string to a number. Don't confuse the string \c;"45"\n; that contains actually the two characters \c;4\n; and \c;5\n; and the number \c;45\n;.
+
+Examples¦:
+\s;\c; string s = "45"+"12"; // s contains "4512"
+\s; float n = 45 + 12; // n contains 67
+\n;
+Syntax¦:
+\s;\c;strval ( string );\n;
+\n;
+Examples¦:
+\s;\c; float n = strval("1.23"); // n is 1.23
+\s; float n = strval("12abc45"); // n is 12
+\s; float n = strval("abc"); // n is 0
+\s; float n = strval("100")+2; // n is 102
+\n;
+\t;See also
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/synchro.txt b/help/E/cbot/synchro.txt
new file mode 100644
index 00000000..8817c38a
--- /dev/null
+++ b/help/E/cbot/synchro.txt
@@ -0,0 +1,25 @@
+\b;Instruction \c;synchronized\n; (for specialists)
+A \l;class\u cbot\class; method can be declared \c;synchronized\n;. This is to make sure that the method is never being executed by more than one bot at the same time.
+
+The following example illustrates the problem:
+\c;
+\s;class blocking
+\s;{
+\s; static int nb = 33;
+\s; synchronized int inc( )
+\s; {
+\s; int val = nb;
+\s; wait ( 2 ); // wait 2 sec.
+\s; nb = nb + 1;
+\s; return val;
+\s; }
+\s;}
+\n;
+What happens if two bots execute the \c;inc\n; method at the same time¦?
+Both of them will execute \c;val=nb\n; and wait 2 seconds so both of them will have \c;val=33\n;. With \c;synchronized\n; the first bot starts execution with \c;val=33\n; and then waits 2 seconds and returns. Only once the first bot has returned from the \c;inc\n; method, the second bot will be allowed to enter the \c;inc\n; method and therefore the second bot will always have \c;val=34\n;.
+
+You can have more than one synchronized method in your \l;class\u cbot\class; in order to prevent simultaneous execution across more than one method. In other words: as long as a bot's program is inside a synchronized method, no other bot can enter any synchronized method of the same class.
+
+\t;See also
+\c;\l;class\u cbot\class;\n;, \c;\l;static\u cbot\static;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/term.txt b/help/E/cbot/term.txt
new file mode 100644
index 00000000..c53d552d
--- /dev/null
+++ b/help/E/cbot/term.txt
@@ -0,0 +1,31 @@
+\b;Semicolon
+Always use a semicolon \c;;\n; after a simple expression. For example:
+\c;
+\s; int counter = 0;
+\n;
+However, after a \l;bloc\u cbot\bloc;, never put a semicolon:
+\c;
+\s; {
+\s; float dist;
+\s; dist = distance(p1, p2);
+\s; } \n;// no semicolon here!\c;
+\n;
+Do not use a semicolon either immediately after the instructions \c;\l;while\u cbot\while;\n;, \c;\l;if\u cbot\if;\n; or \c;\l;for\u cbot\for;\n;:
+\c;
+\s; if ( a < b ) \n;// no semicolon here!\c;
+\s; {
+\s; b = 100-a;
+\s; }
+\n;
+An instruction is always ended by a semicolon, and not by the end of the line. So you can very well put several instructions on the same line:
+\c;
+\s; int d=20;
+\s; move(d);
+\s; turn(90);
+\n;
+Is equivalent to:
+\c;
+\s; int d=20; move(d); turn(90);
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/testinfo.txt b/help/E/cbot/testinfo.txt
new file mode 100644
index 00000000..634063af
--- /dev/null
+++ b/help/E/cbot/testinfo.txt
@@ -0,0 +1,18 @@
+\b;Instruction \c;testinfo\n;
+Syntax¦:
+\s;\c;testinfo ( name, power );\n;
+
+Tests if an information exists in the closest \l;information exchange post\u object\exchange;.
+
+\t;name: \c;string\n;
+Name of the information to be tested in the exchange post. This name is a string: it must be written in quotation marks "¦".
+
+\t;power: \c;float\n;
+Power of the transmitter, which corresponds to the maximal distance between the transmitter and the exchange post. If the distance is longer, the function returns \c;false\n;. Default value is 10 metres.
+
+\t;Return: \c;\l;bool\u cbot\bool;\n;
+Return \c;true\n; if the information exists. Return and \c;false\n; if the information does not exist or if the receiver is too far away from the exchange post.
+
+\t;See also
+\c;\l;receive\u cbot\receive;\n;, \c;\l;send\u cbot\send;\n; and \c;\l;deleteinfo\u cbot\delinfo;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/this.txt b/help/E/cbot/this.txt
new file mode 100644
index 00000000..81516bc3
--- /dev/null
+++ b/help/E/cbot/this.txt
@@ -0,0 +1,54 @@
+\b;Instruction \c;this\n;
+Occasionally, a \l;class\u cbot\class; method needs to know the reference to the instance it is acting upon. For example the instance might want to pass it's own reference to another function. An implicit reference name \c;this\n; is available to methods and \c;this\n; is a reference to the current instance.
+\c;
+\s;public class MyClass
+\s;{
+\s; int m_int;
+\s; string m_str;
+\s; void MyFunction()
+\s; {
+\s; OtherFunction(this);
+\s; m_int = 2;
+\s; }
+\s;}
+\s;
+\s;void OtherFunction(MyClass obj)
+\s;{
+\s; message(obj.m_str);
+\s;}
+\s;
+\s;extern void object::Test()
+\s;{
+\s; MyClass item();
+\s; item.m_str = "Hello";
+\s; item.MyFunction(); // display "Hello"
+\s;}
+\n;
+You can also put \c;this\n; before a field name in a method but this is not necessary. In the example above in the method \c;MyFunction()\n; following two lines have strictly the same meaning:
+\c;
+\s; m_int = 2;
+\s; this.m_int = 2; // identical
+\n;
+In a method of the \c;\l;object\u cbot\object;\n; class, you can also use \c;this.\n; before a fieldname.
+\c;
+\s;extern void object::Display()
+\s;{
+\s; message(orientation);
+\s; message(this.orientation); // same thing but
+\s; // more explicit
+\s;}
+\n;
+However if a field name is hidden by a parameter declaration or a variable declaration you must use \c;this\n;. In the following example the name \c;value\n; of the parameter is the same as the name of the field \c;value\n; of the \l;class\u cbot\class; \c;MyClass\n;, we must therefore write \c;this.value\n; in order to distinguish the field from the parameter.
+\c;
+\s;public class MyClass
+\s;{
+\s; int value;
+\s; void Put( int value )
+\s; {
+\s; this.value = value;
+\s; }
+\s;}
+\n;
+\t;See also
+\c;\l;class\u cbot\class;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; et \l;catégories\u cbot\category;.
diff --git a/help/E/cbot/thump.txt b/help/E/cbot/thump.txt
new file mode 100644
index 00000000..8ce7f161
--- /dev/null
+++ b/help/E/cbot/thump.txt
@@ -0,0 +1,13 @@
+\b;Instruction \c;thump\n;
+Syntax:
+\s;\c;thump ( );\n;
+
+Activates the weapon system of the \l;thumper\u object\bottump;, that turns ants and spiders belly up and makes them completely harmless for a while.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Zero if everything is OK, a value different from zero if an error occurred.
+\c;== 0 \n;Thumping performed
+\c;!= 0 \n;Operation impossible
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/topo.txt b/help/E/cbot/topo.txt
new file mode 100644
index 00000000..e8fef09a
--- /dev/null
+++ b/help/E/cbot/topo.txt
@@ -0,0 +1,14 @@
+\b;Instruction \c;topo\n;
+Syntax:
+\s;\c;topo ( position );\n;
+
+Returns the altitude of the ground at a give position. The altitude zero corresponds to sea level. A negative value indicates that at this position ground is covered with water.
+
+\t;position: \c;\l;point\u cbot\point;\n;
+Coordinates of the position whose altitude you want to know.
+
+\t;Return value: \c;\l;float\u cbot\float;\n;
+Altitude of the ground at the given position.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/true.txt b/help/E/cbot/true.txt
new file mode 100644
index 00000000..2d29fa1d
--- /dev/null
+++ b/help/E/cbot/true.txt
@@ -0,0 +1,5 @@
+\b;Type \c;true\n;
+This value means that a condition is true; it is one of the two values that a \l;boolean\u cbot\bool; \l;variable\u cbot\var; can take.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/turn.txt b/help/E/cbot/turn.txt
new file mode 100644
index 00000000..a163dcb5
--- /dev/null
+++ b/help/E/cbot/turn.txt
@@ -0,0 +1,33 @@
+\b;Instruction \c;turn\n;
+Use the instruction \c;turn();\n; to instruct the bot to perform a rotation on itself of a certain number of degrees.
+
+\b;Basic use
+90 degreed means a quarter turn, 180 degrees means a half turn. A positive angle will perform a counterclockwise rotation, a negative angle means a clockwise rotation. Here are some examples with \c;turn();\n;:
+
+\c;turn(90);\n; quarter turn to the left
+\c;turn(-90);\n; quarter turn to the right (negative angle)
+\c;turn(180);\n; half turn
+
+In order to turn the bot towards an object found with the instruction \c;\l;radar\u cbot\radar;();\n;, you must calculate the rotation angle with the instruction \c;\l;direction\u cbot\direct;()\n;:
+\c;
+\s; item = \l;radar\u cbot\radar;(AlienSpider);
+\s; turn(\l;direction\u cbot\direct;(item.position));
+\n;
+After these lines, just fire the cannon, and there is one hostile element less.
+
+\b;For specialists
+Syntax:
+\s;\c;turn ( angle );\n;
+
+Turns the bot with a given angle, right or left, without moving either forward or backward.
+
+\t;angle: \c;\l;float\u cbot\float;\n;
+Angle of the required rotation, in degrees. A positive value turns left, a negative value turns right. \c;turn(180)\n; turns round completely.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Zero if everything is OK, or a value different from zero if an error occurred.
+\c;== 0 \n;rotation performed
+\c;!= 0 \n;rotation impossible
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/type.txt b/help/E/cbot/type.txt
new file mode 100644
index 00000000..16662081
--- /dev/null
+++ b/help/E/cbot/type.txt
@@ -0,0 +1,33 @@
+\b;Variable types
+When you define a \l;variable\u cbot\var;, you must give two elements:
+
+1) a name
+2) a type
+
+Once you defined a variable, you can use it to put information in it. However, the information that a variable can contain must always be of the correct type: a variable of type \l;float\u cbot\float; can not contain a string, etc.
+
+In a program, the name of a type is always written on \type;green background\norm;. If the name of a type is not colored, this means that the name is misspelled. Type names are always written with lower case characters. Here is a list of the different types:
+
+\s;\c;\l;int\u cbot\int;\n;
+For a whole number (12, -500, etc.).
+
+\s;\c;\l;float\u cbot\float;\n;
+For a real number (12, 3.14, 0.2, -99.98, etc.).
+
+\s;\c;\l;bool\u cbot\bool;\n;
+For a boolean variable, that can only take the values \c;true\n; or \c;false\n;.
+
+\s;\c;\l;string\u cbot\string;\n;
+For texts ("Hello!", "No object found", etc.)
+
+\s;\c;\l;point\u cbot\point;\n;
+For the coordinates of a point in space; a variable of this type consists of three parts named x, y and z.
+
+\s;\c;\l;object\u cbot\object;\n;
+A variable of this type contains the information about an object (bot, building, enemy, etc.).
+
+\s;\c;\l;void\u cbot\void;\n;
+This type is an "empty type", that you use when you do not want to specify a type.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/var.txt b/help/E/cbot/var.txt
new file mode 100644
index 00000000..8c8f95be
--- /dev/null
+++ b/help/E/cbot/var.txt
@@ -0,0 +1,67 @@
+\b;Variables
+A variable is like a box, where you can put some information. The content of the variable can change during the execution of the program.
+
+For example, you can use a variable to count the number of titanium ore units that the grabber has collected and carried to the converter. First, you must find a name for it: the name should not be too long, but explain by itself what the variable is used for. Let's call it \c;countTit\n;. This variable must contain only whole numbers, so choose the type \c;int\n;. At the beginning of the program, you must declare the variable. Then you put the value \c;0\n; into the variable, and every time you grab a titanium ore, you increase the variable by \c;1\n;. At every moment, the variable contains the number of titanium ore units that the grabber collected.
+
+For the declaration of the variable, write the following line:
+\c;\s; int countTit;\n;
+
+To put \c;0\n; into the variable, write:
+\c;\s; countTit = 0;\n;
+
+At every titanium ore grabbed, write:
+\c;\s; countTit = countTit + 1\n;
+
+You have much freedom in the choice of the name for a variable, you can call them by any name, f. ex.: \c;dist\n;, \c;direct\n;, \c;p2\n;, \c;a\n;, \c;x\n;, \c;nothing_2_shoot_at\n;, etc.
+A variable name must always begin with a letter. It can be followed by any combination of letters, digits or the underscore character \c;_\n;. You can of course not use the keywords of the CBOT language like \c;\l;for\u cbot\for;\n;, \c;\l;while\u cbot\while;\n;, \c;\l;break\u cbot\break;\n;, \c;\l;continue\u cbot\continue;\n;, \c;do\n;, etc.
+You should be careful about the choice of the names that you give to variables; writing a program can become very difficult if you forget the names of variables or if you do not remember what they are used for. Elaborate your own system to find variable names, and do not use names like \c;Bmo45\n;, \c;a\n; or \c;tgBinX\n;.
+
+In the example above, the keyword \c;int\n; indicates that this variable can contain only whole numbers, which is adequate to counting objects. If you want to measure a distance, better use a variable that can contain also real numbers, with a fractional part (like 3.45 or 0.034): in this case, use the type \c;float\n;.
+
+In fact, a variable is made up of three parts:
+1) the name
+2) the type of the information stored inside
+3) the content, i.e. the information itself
+
+\t;the name
+You need the name to be able to distinguish the different variables from each other.
+
+\t;the type
+The \l;type\u cbot\type; determines what kind of information the variable can contain. According to the type, a variable can contain a whole number, a real number, a string, the coordinates of a point, information about an object, etc.
+Here is a list of the most common variable types:
+ o \c;\l;int\u cbot\int;\n; for a whole number (12, -500, etc.)
+ o \c;\l;float\u cbot\float;\n; for a real number (3.14, 0.2, -99.98, etc.)
+ o \c;\l;string\u cbot\string;\n; for a character string ("Hello!", "No object found", etc.)
+ o \c;\l;point\u cbot\point;\n; for a x,y,z-coordinate in space
+ o \c;\l;object\u cbot\object;\n; for information about an object (bot, building, etc.)
+
+\t;The content
+The content of a variable is an information of the kind specified in the type. It can change during the execution of the program.
+
+Once you declared a variable, it still does not contain any value. Before you can use it, you must put a value inside:
+\c;\s; int i, j;
+\s; j = 25; // j takes the value 25
+\s; j = i; // can not write this, because i has got no content yet.
+\n;
+You can also declare a variable and put a value inside in the same line, writing:
+\c;\s; int countTit = 0;
+\n;
+When you assign a value to a variable with the equals sign \c;=\n;, the value on the right side is copied into the value on the left side. Consider the following example:
+\c;\s; int i, j;
+\s; i = 5+2; // i takes the value 7
+\s; j = i+6; // j takes the value of i plus 6, this is 13
+\s; i = j; // i takes the value of j, this is 13
+\n;
+At the end of this example, both variables \c;i\n; and \c;j\n; contain the value \c;13\n;.
+
+The following assignment is not correct, because on the left side of the equals sign \c;=\n;, there can be only a variable name:
+\c;\s; i+2 = j; // impossible
+\n;
+If you want to exchange the values of two variables, you must use a third variable. Here is an example to exchange the content of two variables \c;a\n; and \c;b\n; :
+\c;\s; int temp;
+\s; temp = a; // temp takes the value of a
+\s; a = b; // the content of b is copied into a
+\s; b = temp; // the content of temp is copied into b
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/void.txt b/help/E/cbot/void.txt
new file mode 100644
index 00000000..11509d2b
--- /dev/null
+++ b/help/E/cbot/void.txt
@@ -0,0 +1,11 @@
+\b;Type \c;void\n;
+Use this type when you want to declare a function that returns nothing.
+
+Example:
+\c;\s;void MyFunction(int a)
+\s;{
+\s; ...
+\s;}
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/wait.txt b/help/E/cbot/wait.txt
new file mode 100644
index 00000000..88e6ed64
--- /dev/null
+++ b/help/E/cbot/wait.txt
@@ -0,0 +1,22 @@
+\b;Instruction \c;wait\n;
+The instruction \c;wait();\n; instructs the bot to wait for some seconds, according to the value written in brackets.
+
+\b;Basic use
+In order to wait until the \l;power cell\u object\power; is recharged on a power station, wait 5 seconds with \c;wait(5);\n;.
+
+In order to wait until the \l;converter\u object\convert; finished transforming some \l;titanium ore\u object\titanore; in a \l;titanium cube\u object\titan;, wait 15 seconds with \c;wait(15);\n;.
+
+\b;For specialists
+Syntax:
+\s;\c;wait ( time );\n;
+
+Waits for a moment.
+
+\t;time: \c;\l;float\u cbot\float;\n;
+Specifies the time that the bot must wait.
+
+\t;Return value: \c;\l;void\u cbot\void;\n;
+None.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/while.txt b/help/E/cbot/while.txt
new file mode 100644
index 00000000..5e793c88
--- /dev/null
+++ b/help/E/cbot/while.txt
@@ -0,0 +1,47 @@
+\b;Instruction \c;while\n;
+The instruction \c;while () {}\n; is used to repeat a set of instructions several times.
+
+\b;Basic use
+The most frequent use of \c;while\n; consists in repeating a set of instructions again and again. In order to achieve this, write \c;while (true) {}\n; and put the instructions to be repeated in braces \c;{}\n;. As an example, here is a program that repeats again and again the following actions:
+o look for a spider,
+o turn towards it,
+o shoot.
+\c;
+\s; while (true)
+\s; {
+\s; item = \l;radar\u cbot\radar;(AlienSpider);
+\s; \l;turn\u cbot\turn;(direction(item.position));
+\s; \l;fire\u cbot\fire;(1);
+\s; }
+\n;
+Just execute this program once, and it will kill all spiders around it.
+
+\b;For specialists
+Syntax :
+\s;\c;while ( condition )
+\s;{
+\s; \n;Instructions ...\c;
+\s;}
+\n;
+This instruction allows you to perform the instructions inside the \l;block\u cbot\bloc; several times.
+
+Be careful not to confuse the instruction \c;while( ) { }\n; with the instruction \c;\l;do\u cbot\do; { } while( );\n;; the latter tests the condition only after the instructions in the block have been performed a first time.
+
+\t;\c;condition\n;
+The instructions in the block are performed over and over again, as long as the \l;condition\u cbot\cond; is true.
+
+Here is an example :
+\s;\c;int i = 0;
+\s;while ( i < 10 )
+\s;{
+\s; \n;Instructions ...\c;
+\s; i = i+1;
+\s;}
+\n;
+\t;Attention
+Do not put a \l;semicolon\u cbot\term; at the end of the line \c;while ( )\n;.
+
+The instructions \c;\l;break\u cbot\break;\n; and \c;\l;continue\u cbot\continue;\n; can be useful inside a block following the instruction \c;while { }\n;.
+
+\t;See also
+\l;Instructions\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/cbot/writeln.txt b/help/E/cbot/writeln.txt
new file mode 100644
index 00000000..260f4507
--- /dev/null
+++ b/help/E/cbot/writeln.txt
@@ -0,0 +1,21 @@
+\b;Instruction \c;writeln\n;
+Write one line of text to an open file in the files/ folder. This is a method of the \c;\l;file\u cbot\file;\n; class. This is the reason why we always write \c;handle.writeln()\n;¦:
+\c;
+\s; handle.writeln("abc");
+\n;
+The file must have been opened for writing (\c;"w"\n;) with the \c;\l;open\u cbot\open;\n; instruction. The line will automatically be terminated by the end of line characters 0x0D (CR) and 0x0A (LF).
+
+Syntax¦:
+\s;\c;handle.writeln ( string );\n;
+
+Examples¦:
+\c;
+\s; writeln("Line of text");
+
+\s; string s1 = "abc";
+\s; string s2 = "def";
+\s; writeln(s1 + " " + s2);
+\n;
+\t;See also
+\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n; and \c;\l;eof\u cbot\eof;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/command.txt b/help/E/command.txt
new file mode 100644
index 00000000..43126082
--- /dev/null
+++ b/help/E/command.txt
@@ -0,0 +1,45 @@
+\b;Controls
+You are advised to play with one hand on the arrow keys and the other hand on the mouse.
+
+\t;Bots
+\key;\key left;\norm; = turn left
+\key;\key right;\norm; = turn right
+\key;\key up;\norm; = move forward
+\key;\key down;\norm; = move back
+These controls are unavailable when working with the \l;practice bots\u object\bottr;.
+
+\key;\key gup;\norm; = take off and climb \button 28;
+\key;\key gdown;\norm; = descend and land \button 29;
+These controls are of course restricted to the \l;astronaut\u object\human; as well as the various \l;winged bots\u object\botgj; and in selected missions only.
+
+mouse forward = higher aim
+mouse backward = lower aim
+mouse right = aim right
+mouse left = aim left
+These controls are only available to the \l;shooters\u object\botfr;, the \l;orga shooters\u object\botor; and the \l;phazer shooter\u object\botphaz;.
+
+\key;\key action;\norm; = main action for a given selection (human or bot)
+This control will for example operate the arm of a \l;grabber\u object\botgr; or fire a \l;shooter\u object\botfr; \button 42;.
+
+\t;Selections
+\key;\key next;\norm; = selects next object
+\key;\key human;\norm; = selects astronaut
+\key;\key desel;\norm; = previous selection \button 10;
+
+\t;Camera
+\key;\key camera;\norm; = shifts between onboard and following cameras \button 13;
+\key;\key near;\norm; = zoom in
+\key;\key away;\norm; = zoom out
+\key;\key visit;\norm; = pauses the game and shows where the latest message originated. Press again to show origin of previous message.
+
+\t;Help
+\key;\key help;\norm; = mission instructions
+\key;\key prog;\norm; = programming help
+
+\t;Game
+\key;\key speed10;\norm; = normal speed x1
+\key;\key speed15;\norm; = medium speed x1.5
+\key;\key speed20;\norm; = faster speed x2
+\key;\key quit;\norm; = exits mission \button 11;
+
+All these commands can be redefined in the options/controls menu.
diff --git a/help/E/dexch1.txt b/help/E/dexch1.txt
new file mode 100644
index 00000000..cf330c6a
--- /dev/null
+++ b/help/E/dexch1.txt
@@ -0,0 +1,19 @@
+\b;Exercice
+Several \l;information exchange posts\u object\exchange; are standing along the way. When the bot is close enough to a post, it can read the instructions it contains. The \l;information exchange posts\u object\exchange; along the way contain the direction of the next post and the distance. And you do not know how many exchange posts you must get in touch with before arriving at your goal.
+
+\b;General principle
+ Always repeat:
+ o Retrieve the direction from the \l;exchange post\u object\exchange;.
+ o Retrieve the distance from the \l;exchange post\u object\exchange;.
+ o If no information could be retrieved, stop the program.
+ o Execute the rotation.
+ o Move forward to the next post.
+
+\b;Useful instructions
+\c;\l;while\u cbot\while;\n; to repeat the instructions
+\c;\l;receive\u cbot\receive;\n; to get the information from a post
+\c;\l;move\u cbot\move;\n; to move the bot
+\c;\l;turn\u cbot\turn;\n; to turn the bot
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/dfollow1.txt b/help/E/dfollow1.txt
new file mode 100644
index 00000000..2be46365
--- /dev/null
+++ b/help/E/dfollow1.txt
@@ -0,0 +1,20 @@
+\b;Exercise
+You must follow the \l;target bot\u object\bottr; with the explosive device, but without touching it, otherwise it will blow up. Every time the target bot stops, you must be close to it (less than 10m). After you managed to stay close to the target bot at 10 successive stops, it will lead you to the finishing pad, and the exercise is over. At every stop, the target bot checks that you are there. If you are not there, you must start over again.
+
+\b;General principle
+Repeat forever:
+o Look for the target bot.
+o Calculate the distance to the bot.
+o if the distance to the target bot is less than 5m, move backward.
+o Otherwise, calculate the direction of the target bot, and move towards it.
+
+\b;Useful instructions
+\c;\l;radar\u cbot\radar;\n; to look for the bot (category \c;\l;TargetBot\u object\bottarg;\n;)
+\c;\l;radar\u cbot\radar;\n; to detect obstacles
+\c;\l;distance\u cbot\dist;\n; to calculate a distance
+\c;\l;direction\u cbot\direct;\n; to calculate a direction
+\c;\l;if\u cbot\if;\n; to test a condition
+\c;\l;motor\u cbot\motor;\n; to set the motor speeds
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/dfor.txt b/help/E/dfor.txt
new file mode 100644
index 00000000..116be043
--- /dev/null
+++ b/help/E/dfor.txt
@@ -0,0 +1,11 @@
+\b;Exercise
+Destroy all four \l;targets\u object\bottarg; with a program using a \c;for\n; loop. You must move 10m to get from one target to another.
+
+\b;Useful instructions
+\c;\l;for\u cbot\for;\n; loop to repeat the instructions
+\c;\l;move\u cbot\move;\n; to move the bot
+\c;\l;turn\u cbot\turn;\n; to turn the bot
+\c;\l;fire\u cbot\fire;\n; to fire the cannon
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/dhelp1.txt b/help/E/dhelp1.txt
new file mode 100644
index 00000000..718907d0
--- /dev/null
+++ b/help/E/dhelp1.txt
@@ -0,0 +1,15 @@
+\b;Exercise
+Defend against all enemy attacks
+
+\b;General idea
+The range of your cannon is about 40m. The category of the enemies is \c;AlienAnt\n;. Turn towards the closest ant, even if it is still more than 40m away. But shoot only when it is closer than 40m, in order not to waste your energy.
+
+\b;Useful instructions
+\c;\l;radar\u cbot\radar;\n; to detect your enemies (category \c;\l;AlienAnt\u object\ant;\n;)
+\c;\l;direction\u cbot\direct;\n; to calculate a direction
+\c;\l;distance\u cbot\dist;\n; to calculate a distance
+\c;\l;fire\u cbot\fire;\n; to fire your cannon
+\c;\l;wait\u cbot\wait;\n; to wait
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/dlaby1.txt b/help/E/dlaby1.txt
new file mode 100644
index 00000000..75e3e368
--- /dev/null
+++ b/help/E/dlaby1.txt
@@ -0,0 +1,11 @@
+\b;Exercise
+Program the bot so that it will find its way without hitting the walls of the labyrinth. We suppose that you do not know the configuration of the labyrinth, but there are no bifurcations, and no dead-ends. The labyrinth is made of squares measuring 5m each.
+
+\b;Useful instructions
+\c;\l;radar\u cbot\radar;\n; to detect obstacles
+\c;\l;if\u cbot\if;\n; to test a condition
+\c;\l;move\u cbot\move;\n; to move the bot
+\c;\l;turn\u cbot\turn;\n; to turn the bot
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/dmove1.txt b/help/E/dmove1.txt
new file mode 100644
index 00000000..1f207bd0
--- /dev/null
+++ b/help/E/dmove1.txt
@@ -0,0 +1,10 @@
+\b;Exercise
+Program the robot in such a way that it arrives on the finishing pad, after having passed by the three blue crosses.
+The platforms and the crosses are all distant of 20m from each other.
+
+\b;Useful instructions
+\c;\l;move\u cbot\move;\n; to move the bot
+\c;\l;turn\u cbot\turn;\n; to turn the bot
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/dproc1.txt b/help/E/dproc1.txt
new file mode 100644
index 00000000..e1cda96b
--- /dev/null
+++ b/help/E/dproc1.txt
@@ -0,0 +1,21 @@
+\b;Exercice
+\b;Exercise
+The \l;bot\u object\bottr; must pass over all the \l;blue crosses\u object\waypoint; on the ground. The way that must be covered is made of two squares. The first one measures 15 meters, the second 25 meters.
+
+\image tproc1a 8 8;
+\b;General principle
+In order to solve this problem, the most efficient solution consists in creating a \l;function\u cbot\function; that instructs the bot to move on a square shape of a certain size. The main program becomes then very simple:\c;
+\c;
+\s; extern void object::Function3( )
+\s; {
+\s; Square(15);
+\s; Square(25);
+\s; }
+\n;
+\b;Useful instructions
+\c;\l;for\u cbot\for;\n; loop to repeat some instructions
+\c;\l;move\u cbot\move;\n; to move the bot
+\c;\l;turn\u cbot\turn;\n; to turn the bot
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/dproc2.txt b/help/E/dproc2.txt
new file mode 100644
index 00000000..6424eb36
--- /dev/null
+++ b/help/E/dproc2.txt
@@ -0,0 +1,14 @@
+\b;Exercise
+Follow the way in form of a spiral. The bot must move 2 times 25m forward and turn, then move 2 times 20m forward and turn, and so on.
+\image tproc2 8 8;
+
+\b;Function
+You will have noticed that the way is made of "L"-shaped parts that are fit one into another. The first one (dark blue) measures two times 25 meters. The second one (light blue) measures 5 meters less. Let us start with writing the \l;function\u cbot\function; that will move the bot on a "L"-shaped part whose length will be given as a parameter.
+
+\b;Useful instructions
+\c;\l;for\u cbot\for;\n; loop to repeat some instructions
+\c;\l;move\u cbot\move;\n; to move the bot
+\c;\l;turn\u cbot\turn;\n; to turn the bot
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/dradar1.txt b/help/E/dradar1.txt
new file mode 100644
index 00000000..2b97def6
--- /dev/null
+++ b/help/E/dradar1.txt
@@ -0,0 +1,14 @@
+\b;Exercise
+In this exercise, a "crazy bot" places many \l;blue crosses\u object\waypoint; on the ground. Just try to find them all.
+
+\b;Useful instructions
+\c;\l;radar\u cbot\radar;\n; to detect the blue crosses (category \c;\l;WayPoint\u object\waypoint;\n;)
+\c;\l;direction\u cbot\direct;\n; to calculate a direction
+\c;\l;if\u cbot\if;\n; to test a condition
+\c;\l;motor\u cbot\motor;\n; to set the motor speeds
+
+\t;Remark
+Do not wait too long, because the crazy bot gets down to work immediately. Fortunately, as long as you are in the program editor, the game will pause.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/dremova1.txt b/help/E/dremova1.txt
new file mode 100644
index 00000000..d3175a1d
--- /dev/null
+++ b/help/E/dremova1.txt
@@ -0,0 +1,35 @@
+\b;Exercise
+Convert some \l;titanium ore\u object\titanore; to \l;titanium cubes\u object\titan;, then drop 2 titanium cubes on the pads whose coordinates are:
+\c;
+ x=10, y=-60
+ x=10, y=-65
+\n;
+\image derrick 8 8;
+The \l;derrick\u object\derrick; extracts titanium ore from the subsoil; you just have to pick it up.
+
+\image convert 8 8;
+The \l;converter\u object\convert; converts titanium ore to titanium cubes. Just drop the titanium ore on the platform, move backward, and wait until it has been converted.
+
+\b;General principle
+Repeat two times :
+o Wait until there is some titanium ore.
+o Go to the titanium ore.
+o Pick it up.
+o Go to the converter.
+o Drop the titanium ore.
+o Move back 2.5 meters.
+o Wait until there is a titanium cube.
+o Pick up the titanium cube.
+o Go to the platform.
+o Drop the titanium cube.
+
+\b;Useful instructions
+\c;\l;for\u cbot\for;\n; to repeat some instructions
+\c;\l;do - while\u cbot\do;\n; to repeat some instructions
+\c;\l;radar\u cbot\radar;\n; to look for different objects
+\c;\l;goto\u cbot\goto;\n; to move the bot
+\c;\l;grab\u cbot\grab;\n; to grab an object
+\c;\l;drop\u cbot\drop;\n; to drop an object
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/dremova2.txt b/help/E/dremova2.txt
new file mode 100644
index 00000000..ec6549c7
--- /dev/null
+++ b/help/E/dremova2.txt
@@ -0,0 +1,11 @@
+\b;Exercise
+Move the \l;titanium cube\u object\titan; on the finishing pad. You do not know the position of the titanium, but we can tell you the position of the finishing pad x=10 and y=-60.
+
+\b;Useful instructions
+\c;\l;radar\u cbot\radar;\n; to find the titanium cube (category \c;\l;Titanium\u object\titan;\n;)
+\c;\l;goto\u cbot\goto;\n; to move the bot
+\c;\l;grab\u cbot\grab;\n; to grab an object
+\c;\l;drop\u cbot\drop;\n; to drop an object
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/dtrap1.txt b/help/E/dtrap1.txt
new file mode 100644
index 00000000..8cf7bd08
--- /dev/null
+++ b/help/E/dtrap1.txt
@@ -0,0 +1,26 @@
+\b;Exercise
+Instruct the bot to find all the \l;blue crosses\u object\waypoint; on the ground, but do not get too close to the \l;mines\u object\mine;. When the bot passes over a cross, it disappears. Here is the general principle:
+
+ Repeat forever:
+ o Look for a mine
+ o If a mine has been found, calculate the opposite direction
+ o Look for a cross
+ o If nothing has been found, stop the program
+ o Calculate the direction of the cross
+ o Calculate the mean value of the two directions
+ o Set the motor speeds in order to head towards the mean direction
+
+\b;The instruction \c;radar\n;
+In order to detect a mine with the \c;\l;radar\u cbot\radar;\n;, we recommend the following parameters:
+\c;\s; radar(Mine, 0, 180, 0, 5);\n;
+With the opening angle of 180 degrees, mines that are behind the bot will not be found. Mines that are at more than 5 meters are also ignored.
+
+In order to find a blue cross, simply write:
+\c;\s; radar(WayPoint);\n;
+Blue crosses will be found everywhere.
+
+In order to calculate a direction, use \c;\l;direction\u cbot\direct;\n;.
+In order to set the motor speeds, use \c;\l;motor\u cbot\motor;\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/dtrap2.txt b/help/E/dtrap2.txt
new file mode 100644
index 00000000..85acba71
--- /dev/null
+++ b/help/E/dtrap2.txt
@@ -0,0 +1,7 @@
+\b;Exercise
+Instruct your \l;bot\u object\bottr; to find all the \l;blue crosses\u object\waypoint; on the ground, but do not get too close to the \l;mines\u object\mine;.
+
+If a bot gets within less than 2m of the center of a mine (which is the position returned by the radar instruction), il will blow up. However, you must take into account the inertia of the bot. Probably a safety distance of 3 to 3.5m would be more appropriate.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/fglobal.txt b/help/E/fglobal.txt
new file mode 100644
index 00000000..f7c4caf2
--- /dev/null
+++ b/help/E/fglobal.txt
@@ -0,0 +1,5 @@
+\b;Objective
+Here you can play around without any definite objective. You can do whatever you want, explore the region, build a base camp and several bots, run various research programs, kill the insects if you find some, etc.
+
+\t;See also
+\l;Controls\u command;.
diff --git a/help/E/licences.txt b/help/E/licences.txt
new file mode 100644
index 00000000..f892ed07
--- /dev/null
+++ b/help/E/licences.txt
@@ -0,0 +1,3 @@
+The photograph of the nebula NGC3606 illuminating the sky on Orpheon and the installation program was taken with the Hubble space telescope. It is used with the permission of the authors Wolfgang Brandner (JPL/IPAC), Eva K. Grebel (Washington University), You-Hua Chu (Illinois Urbana-Champaign University) and NASA.
+
+The thunder sound on Orpheon is used by limited permission from CREATIVE.
diff --git a/help/E/mhcent1.txt b/help/E/mhcent1.txt
new file mode 100644
index 00000000..0bdecf07
--- /dev/null
+++ b/help/E/mhcent1.txt
@@ -0,0 +1,11 @@
+\b;From Mission Control
+Find some more \l;organic matter\u object\bullet; and, given an appropriate research program performed by your \l;autolab\u object\labo;, \l;you\u object\human; should be able to manufacture orga shooters yourself.
+
+Produce a \l;legged orga shooter\u object\botos; and bring it back aboard your \l;spaceship\u object\base;.
+
+Please keep in mind that low energy resources are a major concern on this planet.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhcent2.txt b/help/E/mhcent2.txt
new file mode 100644
index 00000000..99de1d4f
--- /dev/null
+++ b/help/E/mhcent2.txt
@@ -0,0 +1,7 @@
+\b;From Mission Control
+It is time for \l;you\u object\human; to improve your shooting skills again. In the following drill, hit all the \l;explosive devices\u object\tnt; but watch out: your \l;orga shooter\u object\botoj; has very little power left in it, barely enough to complete the drill.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhcent3.txt b/help/E/mhcent3.txt
new file mode 100644
index 00000000..48067c8f
--- /dev/null
+++ b/help/E/mhcent3.txt
@@ -0,0 +1,9 @@
+\b;From Mission Control
+Build a \l;radar\u object\radar; on one of the highest accessible spots and make sure that no organism can destroy it after \l;you\u object\human;'re gone.
+
+The destruction of a previous radar set up by the first expedition was probably the cause of a communication breakdown, which led to complete loss of contact.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhcent4.txt b/help/E/mhcent4.txt
new file mode 100644
index 00000000..72284c2a
--- /dev/null
+++ b/help/E/mhcent4.txt
@@ -0,0 +1,19 @@
+\b;A Word on New Policies
+We are sorry to have to bring this to your attention but this seems like a good a time to let you in on a little concern we're having at the moment. There has been a strong reaction in the public opinion and in Congress concerning your systematic termination of the "indigenous inhabitants" of the planets you've been visiting. Congress has chosen to demonstrate its sensitivity to the concerns of the general population.
+
+We hereby relay their new directives and these directives intimate for you to limit the casualties as much as humanly possible. In other words, do your very best to spare the life-forms you encounter from now on. Your mission should of course in no way find itself jeopardized by this new course of action.
+
+\b;From Mission Control
+Your energy resources appear dangerously limited at this time and so is your arsenal but you need to locate and retrieve the previous expedition's \l;black box\u object\bbox; so you can proceed to the next planet.
+
+We received a piece of information from your predecessors, via the observation satellite, regarding a new type of weaponry they have developed precisely for a predicament such as this one.
+
+This weapon will offer you an opportunity to demonstrate your newfound compassion towards \l;indigenous species\u object\ant; for it is not a weapon of mass destruction. What it offers instead, to the best of our knowledge, is an option to incapacitate them, rendering them, if only temporarily, harmless. If this is indeed the case, you'll need to act quickly before they are given a chance to become hostile to you again.
+
+\b;Procedure
+Perform the \l;research program\u object\research; and experiment for yourself but don't forget to bring this new weapon back on board. We are very curious to study its workings.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhcent5.txt b/help/E/mhcent5.txt
new file mode 100644
index 00000000..c4c0e0a1
--- /dev/null
+++ b/help/E/mhcent5.txt
@@ -0,0 +1,9 @@
+\b;From Mission Control
+You're under attack and this is no time for compassion...
+
+Your new \l;thumper\u object\bottump; might come in very handy. However, we emphasize that you should not risk a takeoff if there are any ants still alive in the vicinity of the spaceship.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhcrys1.txt b/help/E/mhcrys1.txt
new file mode 100644
index 00000000..6b4c840b
--- /dev/null
+++ b/help/E/mhcrys1.txt
@@ -0,0 +1,13 @@
+\b;From Mission Control
+Build a \l;radar\u object\radar; on the highest point in the area. Make sure that the radar will work safely even after your departure to other planets. Your \l;research center\u object\research; should be able to provide a solution.
+
+It is possible that the organisms detected are in fact the \l;worms\u object\worm; alluded to by the first expedition. If this is indeed the case, don't be excessively alarmed: they seem fairly harmless to living organisms but could cause the programs of bots and buildings to malfunction through the emission of viruses.
+
+Radars not only give you precious information about objects and organisms present in the region, they also relay information to and from the Earth once you have taken off to other planets. It is highly probable that problems with the radar stations built by the first expedition caused the transmission problems that we are aware of.
+
+In order to help you with the boring task of gathering the necessary raw material, we have developed a program that instructs the \l;wheeled grabber\u object\botgr; to look for \l;titanium ore\u object\titanore; on its own (see the programming page \button 53;).
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhcrys2.txt b/help/E/mhcrys2.txt
new file mode 100644
index 00000000..b0ceb067
--- /dev/null
+++ b/help/E/mhcrys2.txt
@@ -0,0 +1,11 @@
+\b;From Mission Control
+Cleanse the area of all hostile organisms. The way you accomplish this (\l;defense tower\u object\tower; or \l;winged shooter\u object\botfj;) is up to you.
+
+The radar seems to be perfectly suited to the detection of worms. Keep in mind though that they only appear when they are on the surface.
+
+We relayed a transmission to your \l;bot factory\u object\factory;. It concerns a bot designed to detect raw materials in the subsoil: energy sources, ore. We call it a \l;sniffer\u object\botsr; for short. Preliminary analysis leads us to believe that the presence of titanium ore on Crystalium is closely linked to the growth of large blue crystals. If this is indeed the case, this information should allow you to save some precious time. A \l;derrick\u object\derrick; is of course required for the extraction.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhcrys3.txt b/help/E/mhcrys3.txt
new file mode 100644
index 00000000..029ced15
--- /dev/null
+++ b/help/E/mhcrys3.txt
@@ -0,0 +1,9 @@
+\b;From Mission Control
+We have just received this warning from the observation satellite: a rogue bot from the previous expedition has seized the black box from your spaceship.
+
+We are going to investigate this incident further but it is of vital importance that you retrieve your black box at once.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhcrys4.txt b/help/E/mhcrys4.txt
new file mode 100644
index 00000000..a1db90ef
--- /dev/null
+++ b/help/E/mhcrys4.txt
@@ -0,0 +1,11 @@
+\b;From Mission Control
+This planet has turned out to be a very unlikely candidate for colonization. Better to leave it for good. Retrieve the \l;black box\u object\bbox; from the previous expedition and head towards the next planet.
+
+The observation satellite has indicated that its present location is at the bottom of a valley. However the pervasive stratum of electromagnetic smog could make all satellite information rather undependable.
+
+Stay alert.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhlune1.txt b/help/E/mhlune1.txt
new file mode 100644
index 00000000..8bc9c193
--- /dev/null
+++ b/help/E/mhlune1.txt
@@ -0,0 +1,22 @@
+\b;From Mission Control
+Collect 4 chunks of \l;titanium ore\u object\titanore; and bring them back aboard your \l;spaceship\u object\base;. Build the equipment necessary for this task (\l;flying bots\u object\botgj;).
+
+Before you venture any further, you should always take a look at the satellite report \button 186;.
+
+We have transmitted to your \l;spaceship\u object\base; a program that might help you in this task; please refer to the corresponding page of your SatCom with the button \button 53;.
+
+\b;Procedure
+1) A new \l;research program\u object\research; is required for winged bots to be added to the list of bots that can be produced by the factory. This research program will also make the propulsion reactor in your personal survival kit operational.
+
+2) Produce a \l;winged grabber\u object\botgj; and collect the 4 chunks of \l;titanium ore\u object\titanore;.
+
+3) Take the \l;winged grabber\u object\botgj; and the \l;wheeled grabber\u object\botgr; along with you and take off.
+
+Be careful that your winged bot does not run out of power when you are far from base. If necessary, replace the \l;power cell\u object\power; before leaving the spaceship. You can either do this manually or you can execute the enclosed program provided by Houston \button 53;.
+
+In order not to lose your way among the numerous craters on the Moon's surface, use the mini map on the lower right-hand corner of your screen.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mhlune2.txt b/help/E/mhlune2.txt
new file mode 100644
index 00000000..5d6cfbd9
--- /dev/null
+++ b/help/E/mhlune2.txt
@@ -0,0 +1,17 @@
+\b;From Mission Control
+This apparatus was set up by the previous expedition to test and train the flying capacity of winged bots.
+
+\b;Objective
+Use these drills to your advantage. Your ability to survive future critical situations may depend upon the dexterity they will have helped you develop.
+
+\b;Procedure
+Fly as quickly as possible through each target. Try to accomplish this without causing the engine to overheat. If this appears too difficult, just touch down and let the engine cool off.
+
+You should use the arrow keys on the keyboard to pilot the bot, but keep one hand on the mouse. The mouse is useless in this exercise, but will be essential in later missions.
+
+It may be useful to come back to these drills once in a while if you wish to improve your reflexes further.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhlune3.txt b/help/E/mhlune3.txt
new file mode 100644
index 00000000..a11586b5
--- /dev/null
+++ b/help/E/mhlune3.txt
@@ -0,0 +1,7 @@
+\b;From Mission Control
+Similar drill as before, only this time viewed through the camera placed on board.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhlune4.txt b/help/E/mhlune4.txt
new file mode 100644
index 00000000..cc87d088
--- /dev/null
+++ b/help/E/mhlune4.txt
@@ -0,0 +1,20 @@
+\b;From Mission Control
+We have no way of being sure where the previous expedition was headed when it left the Moon surface nor why it chose to go wherever it was going.
+
+Locate the \l;black box\u object\bbox; they must have left behind and bring it back aboard your ship. The black box should contain the coordinates of the next planet the expedition was planning to visit.
+
+Your bot's \l;power cells\u object\power; are almost entirely empty. Recharging them should be your priority. The observation satellite in orbit indicates that the subsoil in this particular area is loaded with energy. You should therefore be able to build a functional \l;power station\u object\station; on any flat surface.
+
+We have developed a program that will recharge the \l;power cell\u object\power; of a bot. Refer to the program page of your SatCom \button 53;.
+
+\b;Procedure
+1) You first need to build a \l;converter\u object\convert; that converts the chunks of titanium ore already in your possession into usable \l;titanium cubes\u object\titan;.
+
+2) You should then build both a \l;power station\u object\station; and a \l;radar\u object\radar; which will indicate the location of the black box on your mini map.
+
+3) With your power cells fully charged, retrieve the black box. It needs to be placed on the \l;spaceship\u object\base; platform for you to be able to take off.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhorph1.txt b/help/E/mhorph1.txt
new file mode 100644
index 00000000..7154f14a
--- /dev/null
+++ b/help/E/mhorph1.txt
@@ -0,0 +1,13 @@
+\b;From Mission Control
+It seems obvious enough that this planet will be no haven for humanity.
+
+Build a radar to relay future transmissions.
+
+Also... we're very sorry to inform you that you may need to exterminate all hostile organisms.
+
+The first expedition located \l;titanium ore\u object\titanore; under the surface of Orpheon. The spot is marked with a blue \l;flag\u object\flag;.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhorph2.txt b/help/E/mhorph2.txt
new file mode 100644
index 00000000..7391a1fc
--- /dev/null
+++ b/help/E/mhorph2.txt
@@ -0,0 +1,11 @@
+\b;From Mission Control
+Retrieve the black box.
+
+Electromagnetic lightning bolts appear to strike even more frequently now than they did previously. You need to protect your equipment.
+
+Please note that your spaceship also naturally acts as a lightning conductor, and our engineers assure us that your space suit does not attract lightning.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhsaari1.txt b/help/E/mhsaari1.txt
new file mode 100644
index 00000000..065eb931
--- /dev/null
+++ b/help/E/mhsaari1.txt
@@ -0,0 +1,7 @@
+\b;From Mission Control
+The observation satellite has detected a chunk of \l;uranium ore\u object\uranore; on the summit of the main mountain. You need to bring it back to your spaceship.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhsaari2.txt b/help/E/mhsaari2.txt
new file mode 100644
index 00000000..ae22711a
--- /dev/null
+++ b/help/E/mhsaari2.txt
@@ -0,0 +1,11 @@
+\b;From Mission Control
+Eliminate all hostile presence from the region.
+
+Your current situation is of utmost concern to us. The satellite has detected an extremely strong enemy presence approaching your spaceship from all directions. Use your best judgment and the quickest, most efficient defense: either \l;towers\u object\tower; or \l;shooters\u object\botfr;.
+
+In order to increase your survival chances, we have developed a program that will protect your west flank if you execute it on your \l;wheeled shooter\u object\botfr;; see the program page \button 53;.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhsaari3.txt b/help/E/mhsaari3.txt
new file mode 100644
index 00000000..2a6b8587
--- /dev/null
+++ b/help/E/mhsaari3.txt
@@ -0,0 +1,9 @@
+\b;From Mission Control
+Your satellite has located the remains of the previous expedition. You should come across a \l;black box\u object\bbox; not too far from there. It will give you the coordinates of your next destination.
+
+Exterminate the few remaining ants. We've been notified that your neutron gun is currently out of order so you will not be able to build new bots. We're convinced that you're resourceful enough at this point to come up with a solution.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhterra1.txt b/help/E/mhterra1.txt
new file mode 100644
index 00000000..0b1fb5f9
--- /dev/null
+++ b/help/E/mhterra1.txt
@@ -0,0 +1,15 @@
+\b;From Mission Control
+We've just received information that the first expedition designed a brand new weapon to be used on Terranova. It was safely stored away from possible enemy reach, inside a \l;vault\u object\safe; which can be accessed only by using four \l;keys\u object\key;. The keys are scattered on or under the planet surface.
+
+The observation satellite has located one of these keys (A) north of your present position.
+
+In compliance with Congress directives, our engineers have developed yet another strictly "defensive" bot : it is called a \l;shielder\u object\botshld; and it will offer adequate protection within a given perimeter. The data have been transmitted to your \l;research center\u object\research; along with a couple of relevant programs.
+
+As you may know, uranium ore in the subsoil is a powerful fertilizer, furthering the growth of a variety of mushrooms. Please also note that \l;titanium ore\u object\titanore; is often located at the bottom of lakes on this planet.
+
+When your mission is completed and before taking off, bring both a \l;shielder\u object\botshld; and a \l;subber\u object\botsub; aboard your spaceship.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhterra2.txt b/help/E/mhterra2.txt
new file mode 100644
index 00000000..530285a9
--- /dev/null
+++ b/help/E/mhterra2.txt
@@ -0,0 +1,9 @@
+\b;From Mission Control
+Retrieve the second \l;key\u object\key; (B). It should be located near your current position.
+
+When your mission is completed and before taking off, bring both \l;shielder\u object\botshld; and \l;subber\u object\botsub; aboard your spaceship.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhterra3.txt b/help/E/mhterra3.txt
new file mode 100644
index 00000000..f3ca9465
--- /dev/null
+++ b/help/E/mhterra3.txt
@@ -0,0 +1,9 @@
+\b;From Mission Control
+The third \l;key\u object\key; (C) is buried in a mushroom-infested area. A \l;sniffer\u object\botss; should be able to locate it and a \l;derrick\u object\derrick; should be able to extract it.
+
+When your mission is completed and before taking off, bring both \l;shielder\u object\botshld; and \l;subber\u object\botsub; aboard your spaceship.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhterra4.txt b/help/E/mhterra4.txt
new file mode 100644
index 00000000..cf29413f
--- /dev/null
+++ b/help/E/mhterra4.txt
@@ -0,0 +1,13 @@
+\b;From Mission Control
+With the help of the fourth \l;key\u object\key; (D) located nearby, you will finally gain access to the \l;vault\u object\safe;. The groundbreaking bot you'll find inside was named a "\l;phazer\u object\botphaz;".
+
+A program allowing for a collaboration between a \l;phazer\u object\botphaz; and a \l;shielder\u object\botshld; has been attached.
+
+You should soon find yourself in a position to test your new weapon. Your last mission is to dispose of the \l;Alien Queen\u object\mother;, the egglayer responsible for the growing number of insects on Terranova. The phazer might very well be the only bot capable of getting the job done.
+
+There will then be no further obstacle to the human colonization of this magnificent planet and you'll soon be able to notify Earth of the success of your mission.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhterre1.txt b/help/E/mhterre1.txt
new file mode 100644
index 00000000..7c758945
--- /dev/null
+++ b/help/E/mhterre1.txt
@@ -0,0 +1,27 @@
+\b;From the NASA Training Center
+We are pleased to inform you that you have been selected for the space exploration mission Colobot.
+
+Your psychological profile has been established as more than 98.84% favorable, and your aptitude during the extensive testing period was undeniable. The detailed results are at your disposal in the central computer under the registration number that was assigned to you.
+
+Please report to the \l;Houston Mission Control\u object\Huston; for further directives about your forthcoming mission.
+
+\b;From Houston Mission Control
+As you know, Earth is heading towards imminent disaster, due to increasing atmospheric pollution.
+
+\l;Your\u object\human; mission consists of exploring neighboring galaxies with the hopes of finding a planet that will be suitable to human needs and possibly serve as a shelter for mankind. You will be on your own for the entire mission but your spaceship will be carrying a few bots along.
+
+Eight months ago an expedition composed entirely of robots was sent across the cosmos with the same objective. It encountered a fair share of obstacles along the way, apparently landing on planets that were unsuitable for colonization, even possibly outright hostile. Very recently all communications were terminated.
+
+The reasons for the mission's failure are unclear at this date, mainly because of recurrent transmission problems. It is our hope that you will be able to use some of the data it gathered to your advantage.
+
+\b;Immediate Objective
+The Nevada desert is already bustling with activity. Bots are setting up a space station catered to your specific needs.
+
+In order to let you familiarize with your spacesuit and equipment, we have set up a few training drills.
+
+In the first drill, you need to find your survival kit that contains all the tools necessary to brave the cold of outer space. It is easy to spot since it contains both an orange and a blue tank.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mhterre2.txt b/help/E/mhterre2.txt
new file mode 100644
index 00000000..14de04fe
--- /dev/null
+++ b/help/E/mhterre2.txt
@@ -0,0 +1,14 @@
+\b;From Mission Control
+This is your second drill. \l;You\u object\human; should now familiarize yourself with the handling of basic equipment. This could turn out to be your best ally during the course of this expedition.
+
+The construction of buildings and the manufacturing of bots all require the use of \l;titanium\u object\titan;. Titanium is a mineral found in most solar systems in the universe.
+
+\b;Procedure
+1) Position yourself close to the first \l;titanium cube\u object\titan;.
+2) Build a \l;research center\u object\research; \button 163;. Note that only \l;you\u object\human; can accomplish the task of building; no bot can be substituted.
+3) With a second \l;titanium cube\u object\titan;, build a \l;bot factory\u object\factory; \button 160;.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mhterre3.txt b/help/E/mhterre3.txt
new file mode 100644
index 00000000..ca679582
--- /dev/null
+++ b/help/E/mhterre3.txt
@@ -0,0 +1,24 @@
+\b;From Mission Control
+Your \l;spaceship\u object\base; is now standing on the launching pad, ready for takeoff.
+
+The last drill left for \l;you\u object\human; to perform before embarking on your journey is to equip your spaceship with its \l;black box\u object\bbox;. The only way to reach the \l;black box\u object\bbox; is by a steep path that can only be climbed by a \l;tracked grabber\u object\botgc; which you need to build.
+
+Unfortunately your \l;bot factory\u object\factory; hasn't yet got the capacity to assemble this type of bot. You need to request your \l;research center\u object\research; to come up with a blueprint for this particular propeller.
+
+\b;Procedure
+1) Power the research center with one of the green \l;power cells\u object\power;.
+2) Click on the button \button 64;.
+3) Drop a \l;titanium cube\u object\titan; in the center of the \l;bot factory\u object\factory; and build a \l;tracked grabber\u object\botgc;.
+4) Power and radio-control the \l;tracked grabber\u object\botgc; to the top of the southwest-oriented mountain.
+5) Bring the black box back aboard your spaceship.
+6) Don't forget to take the \l;wheeled grabber\u object\botgr; along. These bots may prove very useful in the future.
+7) Climb aboard the \l;spaceship\u object\base;.
+11) Select the \l;spaceship\u object\base; and take off \button 28;.
+
+
+Please note: To work more efficiently, you can use the \l;wheeled grabber\u object\botgr;.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mhtropi1.txt b/help/E/mhtropi1.txt
new file mode 100644
index 00000000..8b4e5110
--- /dev/null
+++ b/help/E/mhtropi1.txt
@@ -0,0 +1,10 @@
+\b;From Mission Control
+The observation satellite has detected a new kind of explosive apparently designed by the previous expedition. You must locate it and bring it back to your \l;spaceship\u object\base;.
+
+\b;Procedure
+The location of the explosive is marked by a red cross on your mini map.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mhtropi2.txt b/help/E/mhtropi2.txt
new file mode 100644
index 00000000..a6f8603a
--- /dev/null
+++ b/help/E/mhtropi2.txt
@@ -0,0 +1,18 @@
+\b;From Mission Control
+It is our hope that this message will reach you.
+
+A transmission from the observation satellite a few hours ago informed us that you seemed to be wandering in a frighteningly uncoordinated manner. Your SatCom has ceased broadcasting. Your reactor seems to have suffered some sort of damage and your helmet was spotted at the bottom of a lake. If this is indeed the case, do not try to retrieve it, do not go into the water! Water on Tropica is highly toxic. You would not survive it.
+
+Get back to your ship as quickly as possible and try to transmit information about the possible causes of this disaster. The satellite's information remains undecipherable. We have been speculating about an X-factor ever since the first expedition got lost. It appears you have just encountered it.
+
+There is nothing we can really do to guide you but don't forget that you're following in the footsteps of a previous expedition. If what happened to you is what happened to them, chances are they may have left some clues along the way back to their own spaceship which landed in roughly the same area as yours. Use those clues.
+
+You may also want to consider planting flags. They indicate the direction of the wind so you can use them to orient yourself.
+
+This is all we can say for now...
+Good Luck...
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mhtropi3.txt b/help/E/mhtropi3.txt
new file mode 100644
index 00000000..02ae2348
--- /dev/null
+++ b/help/E/mhtropi3.txt
@@ -0,0 +1,16 @@
+\b;From Mission Control
+Terminate all hostile life-form.
+Perform the necessary \l;research program\u object\research; in order to develop an offensive weapon system.
+
+The satellite has detected an energy source, on a spot marked by the previous expedition with a blue flag (blue cross on the mini-map).
+
+Do not forget to take a look at the satellite report \button 186; before you venture any further in a mission; we suspect that you have not always done this.
+
+We have improved the recharge program. Please refer to the page \button 53;.
+
+A note of warning: bots cannot be submerged. If in doubt, test the water yourself if you plan to radio-control a non-winged bot across - water shouldn't be deeper than knee-level.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhtropi4.txt b/help/E/mhtropi4.txt
new file mode 100644
index 00000000..657e0da1
--- /dev/null
+++ b/help/E/mhtropi4.txt
@@ -0,0 +1,13 @@
+\b;From Mission Control
+This is another training course set up by your predecessors and intended this time to test and train the firing capacity of \l;winged bots\u object\botfj;. Use it to familiarize yourself with the two simultaneous actions of shooting while flying.
+
+Fly quickly through all targets and shoot all 10 explosive devices scattered along the way. Try to complete the drill without touching down. Watch your reactor though: if it overheats, just settle the bot and let it cool off.
+
+Use one hand on the keyboard to pilot the bot, and the other hand on the mouse to aim and to shoot (left button).
+
+It may be useful to come back to these drills once in a while if you wish to improve your reflexes further.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhtropi5.txt b/help/E/mhtropi5.txt
new file mode 100644
index 00000000..d8f30ee6
--- /dev/null
+++ b/help/E/mhtropi5.txt
@@ -0,0 +1,9 @@
+\b;From Mission Control
+Locate and retrieve another \l;black box\u object\bbox; from the previous expedition.
+
+The observation satellite seems to have spotted it underwater. Water is harmless to you as long as you wear your helmet but keep in mind that you can't carry objects underwater. A \l;subber\u object\botsub; may come in handy.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhvolca1.txt b/help/E/mhvolca1.txt
new file mode 100644
index 00000000..0344a8ab
--- /dev/null
+++ b/help/E/mhvolca1.txt
@@ -0,0 +1,13 @@
+\b;From Mission Control
+You need to retrieve an \l;explosive device\u object\tnt; that has been spotted in a deep valley next to a lake of boiling lava.
+
+Because of the high temperatures, reactors no longer function, i.e. flying is impossible. It is a long way there and you should equip your bots with \l;nuclear power cells\u object\atomic;. Nuclear power cells are manufactured from \l;uranium ore\u object\uranore;.
+
+A more efficient program for the gathering of raw materials is attached to this message.
+
+A note of warning: the explosive device is extremely volatile. Use extreme caution.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhvolca2.txt b/help/E/mhvolca2.txt
new file mode 100644
index 00000000..41dccc38
--- /dev/null
+++ b/help/E/mhvolca2.txt
@@ -0,0 +1,17 @@
+\b;From Mission Control
+The previous expedition provided us with a piece of information about some \l;organic matter\u object\bullet;, which seems to be produced by the \l;ants\u object\ant;, and which opened startling new possibilities. It apparently allows the creation of a new type of mutant bot with enhanced performance through the use of insect parts.
+
+Your mission is to experiment with the first practical application of this "green gold". Build a \l;legged grabber bot\u object\botgs;, load it on the spaceship and take off.
+
+\b;Procedure
+Take a sample of organic matter from a nest of giant ants. The analysis of it will be performed by an \l;autolab\u object\labo;, which will also perform the necessary research to allow a practical application.
+
+In order to improve your defense capacity, we have transmitted a program to your \l;grabber bots\u object\botgr; that takes care of recharging the power cell of a \l;defense tower\u object\tower; (see \button 53; ).
+
+\b;Note
+The temperature has dropped significantly, it should therefore be possible to fly.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhvolca3.txt b/help/E/mhvolca3.txt
new file mode 100644
index 00000000..ba33482c
--- /dev/null
+++ b/help/E/mhvolca3.txt
@@ -0,0 +1,7 @@
+\b;From Mission Control
+This planet is obviously unsuited to a long-lasting colonization. Retrieve the \l;black box\u object\bbox; from the previous expedition then take off.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhvolca4.txt b/help/E/mhvolca4.txt
new file mode 100644
index 00000000..2a3876a0
--- /dev/null
+++ b/help/E/mhvolca4.txt
@@ -0,0 +1,9 @@
+\b;An urgent notification from Mission Control
+As you were about to take off, we received from the satellite the following piece of information: a bot of a type yet unknown has been spotted on Volcano. Try to bring it back onto your spaceship for further study.
+
+Our engineers on Earth have very recently come up with a formula that should allow reactors to function properly, at least for a short while, despite the high temperatures. The data have been transmitted to you.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhvolca5.txt b/help/E/mhvolca5.txt
new file mode 100644
index 00000000..a83bb143
--- /dev/null
+++ b/help/E/mhvolca5.txt
@@ -0,0 +1,11 @@
+\b;From Mission Control
+Congratulations on a fine job as usual.
+
+This new weapon appears to be yet another practical application of what we've come to refer to as "green gold", the \l;organic matter\u object\bullet; produced by the insects. We've named this bot the \l;orga shooter\u object\botoj; or bot equipped with an orgaball cannon.
+
+It will most certainly come in handy as you make your way back to your \l;spaceship\u object\base;.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/mhvolca6.txt b/help/E/mhvolca6.txt
new file mode 100644
index 00000000..35225cc4
--- /dev/null
+++ b/help/E/mhvolca6.txt
@@ -0,0 +1,7 @@
+\b;From Mission Control
+You need to repel a last minute ant attack before taking off.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/E/micent1.txt b/help/E/micent1.txt
new file mode 100644
index 00000000..57f72f1d
--- /dev/null
+++ b/help/E/micent1.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Centaury.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 23.4C
+\tab;Atmosphere: oxygen, nitrogen, ammonia
+\tab;Wind: 1.2 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: some
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\tab;Detected: reusable derelicts
+\n;
diff --git a/help/E/micent2.txt b/help/E/micent2.txt
new file mode 100644
index 00000000..46c3e658
--- /dev/null
+++ b/help/E/micent2.txt
@@ -0,0 +1,15 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Centaury.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 25.4C
+\tab;Atmosphere: oxygen, nitrogen, ammonia
+\tab;Wind: 1.2 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+\n;
diff --git a/help/E/micent3.txt b/help/E/micent3.txt
new file mode 100644
index 00000000..cff00288
--- /dev/null
+++ b/help/E/micent3.txt
@@ -0,0 +1,22 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Centaury.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 25.4C
+\tab;Atmosphere: oxygen, nitrogen, ammonia
+\tab;Wind: 0.7 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: some
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\tab;Detected: spiders
+\tab; - Danger: not immediate
+\tab;Detected: reusable derelicts
+\n;
diff --git a/help/E/micent4.txt b/help/E/micent4.txt
new file mode 100644
index 00000000..d76f7316
--- /dev/null
+++ b/help/E/micent4.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Centaury.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 21.3C
+\tab;Atmosphere: oxygen, nitrogen, ammonia
+\tab;Wind: 1.9 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\tab;Detected: derelicts of no particular use
+\n;
diff --git a/help/E/micent5.txt b/help/E/micent5.txt
new file mode 100644
index 00000000..c979dbb9
--- /dev/null
+++ b/help/E/micent5.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Centaury.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 21.3C
+\tab;Atmosphere: oxygen, nitrogen, ammonia
+\tab;Wind: 1.9 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: immediate
+\n;
diff --git a/help/E/micrys1.txt b/help/E/micrys1.txt
new file mode 100644
index 00000000..9458bf1d
--- /dev/null
+++ b/help/E/micrys1.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Crystalium.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 5.4C
+\tab;Atmosphere: nitrogen
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: data not available
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: unidentified organisms
+\tab; - Danger: ?
+\n;
diff --git a/help/E/micrys2.txt b/help/E/micrys2.txt
new file mode 100644
index 00000000..2a4c1d8a
--- /dev/null
+++ b/help/E/micrys2.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Crystalium.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 3.2C
+\tab;Atmosphere: nitrogen
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: isolated (close to the spaceship)
+\tab;Titanium ore: scattered
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: worms
+\tab; - Danger: no
+\n;
diff --git a/help/E/micrys3.txt b/help/E/micrys3.txt
new file mode 100644
index 00000000..6e76e8a8
--- /dev/null
+++ b/help/E/micrys3.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Crystalium.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 4.3C
+\tab;Atmosphere: nitrogen
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\tab;Detected: unknown organisms
+\tab; - Danger: ?
+\n;
diff --git a/help/E/micrys4.txt b/help/E/micrys4.txt
new file mode 100644
index 00000000..2873cb70
--- /dev/null
+++ b/help/E/micrys4.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Crystalium.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 1.2C
+\tab;Atmosphere: nitrogen
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: electromagnetic smog
+\tab;Detected: reusable derelicts
+\n;
diff --git a/help/E/milune1.txt b/help/E/milune1.txt
new file mode 100644
index 00000000..775c0506
--- /dev/null
+++ b/help/E/milune1.txt
@@ -0,0 +1,18 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of the Moon.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: -53.1C
+\tab;Atmosphere: none
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Terrain in places too uneven for wheeled bots.
+\n;
diff --git a/help/E/milune2.txt b/help/E/milune2.txt
new file mode 100644
index 00000000..dd7ea770
--- /dev/null
+++ b/help/E/milune2.txt
@@ -0,0 +1,15 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of the Moon.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: -51.0C
+\tab;Atmosphere: none
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+\n;
diff --git a/help/E/milune3.txt b/help/E/milune3.txt
new file mode 100644
index 00000000..d50b3109
--- /dev/null
+++ b/help/E/milune3.txt
@@ -0,0 +1,15 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of the Moon.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: -58.9C
+\tab;Atmosphere: none
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+\n;
diff --git a/help/E/milune4.txt b/help/E/milune4.txt
new file mode 100644
index 00000000..a57ce4b3
--- /dev/null
+++ b/help/E/milune4.txt
@@ -0,0 +1,15 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of the Moon.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: -38.2C
+\tab;Atmosphere: none
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: everywhere
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+\n;
diff --git a/help/E/miorph1.txt b/help/E/miorph1.txt
new file mode 100644
index 00000000..6414f2d0
--- /dev/null
+++ b/help/E/miorph1.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Orpheon.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: -72.8C
+\tab;Atmosphere: none
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: some (blue flag)
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\tab;Detected: fierce electromagnetic storms
+\n;
diff --git a/help/E/miorph2.txt b/help/E/miorph2.txt
new file mode 100644
index 00000000..5db18a70
--- /dev/null
+++ b/help/E/miorph2.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Orpheon.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: -64.7C
+\tab;Atmosphere: none
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\tab;Detected: fierce electromagnetic storms
+\n;
diff --git a/help/E/misaari1.txt b/help/E/misaari1.txt
new file mode 100644
index 00000000..957227a7
--- /dev/null
+++ b/help/E/misaari1.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Saari.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 41.3C
+\tab;Atmosphere: CO2, oxygen, nitrogen
+\tab;Wind: 2.3 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: some (mountain summit)
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: everywhere
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: reusable derelicts
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\n;
diff --git a/help/E/misaari2.txt b/help/E/misaari2.txt
new file mode 100644
index 00000000..6eddf002
--- /dev/null
+++ b/help/E/misaari2.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Saari.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 38.4C
+\tab;Atmosphere: CO2, oxygen, nitrogen
+\tab;Wind: 1.4 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: everywhere
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants approaching
+\tab; - Danger: yes, immediate
+\n;
diff --git a/help/E/misaari3.txt b/help/E/misaari3.txt
new file mode 100644
index 00000000..8822ca92
--- /dev/null
+++ b/help/E/misaari3.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Saari.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 44.3C
+\tab;Atmosphere: CO2, oxygen, nitrogen
+\tab;Wind: 2.3 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: reusable derelicts
+\tab;Detected: giant ants
+\tab; - Danger: ?
+\n;
diff --git a/help/E/miterra1.txt b/help/E/miterra1.txt
new file mode 100644
index 00000000..683cffe2
--- /dev/null
+++ b/help/E/miterra1.txt
@@ -0,0 +1,22 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Terranova.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 24.8C
+\tab;Atmosphere: oxygen
+\tab;Wind: 0.7 mps
+\tab;Titanium ore: underwater
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: at some places
+\tab;Titanium ore: none
+\tab;Uranium ore: some
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: immediate
+\tab;Detected: giant wasps
+\tab; - Danger: not immediate
+\tab;Detected: reusable derelicts
+\n;
diff --git a/help/E/miterra2.txt b/help/E/miterra2.txt
new file mode 100644
index 00000000..ae7e7705
--- /dev/null
+++ b/help/E/miterra2.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Terranova.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 24.3C
+\tab;Atmosphere: oxygen
+\tab;Wind: 0.8 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: immediate
+\n;
diff --git a/help/E/miterra3.txt b/help/E/miterra3.txt
new file mode 100644
index 00000000..73697df5
--- /dev/null
+++ b/help/E/miterra3.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Terranova.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 26.1C
+\tab;Atmosphere: oxygen
+\tab;Wind: 0.4 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: some
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: immediate
+\tab;Detected: giant wasps
+\tab; - Danger: immediate
+\n;
diff --git a/help/E/miterra4.txt b/help/E/miterra4.txt
new file mode 100644
index 00000000..779d59c0
--- /dev/null
+++ b/help/E/miterra4.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Terranova.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 23.7C
+\tab;Atmosphere: oxygen
+\tab;Wind: 0.5 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: some
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: in some places (spaceship)
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: immediate
+\tab;Detected: giant egglayer
+\tab; - Danger: ?
+\n;
diff --git a/help/E/mitropi1.txt b/help/E/mitropi1.txt
new file mode 100644
index 00000000..abb2258b
--- /dev/null
+++ b/help/E/mitropi1.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Tropica.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 32.4C
+\tab;Atmosphere: helium, oxygen
+\tab;Wind: 1.2 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: explosive
+\tab; - Type: unknown
+\tab;Detected: unidentified organisms
+\tab; - Danger: ?
+\n;
diff --git a/help/E/mitropi3.txt b/help/E/mitropi3.txt
new file mode 100644
index 00000000..eed21844
--- /dev/null
+++ b/help/E/mitropi3.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Tropica.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 29.6C
+\tab;Atmosphere: helium, oxygen
+\tab;Wind: 1.5 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: isolated (blue flag)
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\tab;Detected: reusable derelicts
+\n;
diff --git a/help/E/mitropi4.txt b/help/E/mitropi4.txt
new file mode 100644
index 00000000..8717928b
--- /dev/null
+++ b/help/E/mitropi4.txt
@@ -0,0 +1,15 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Tropica.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 32.2C
+\tab;Atmosphere: helium, oxygen
+\tab;Wind: 0.7 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+\n;
diff --git a/help/E/mitropi5.txt b/help/E/mitropi5.txt
new file mode 100644
index 00000000..0f9cce87
--- /dev/null
+++ b/help/E/mitropi5.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Tropica.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 29.4C
+\tab;Atmosphere: helium, oxygen
+\tab;Wind: 0.3 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: titanium ore
+\tab; - Requires: converter
+\tab;Detected: scattered derelicts
+\tab;Detected: black box (underwater)
+\n;
diff --git a/help/E/mivolca1.txt b/help/E/mivolca1.txt
new file mode 100644
index 00000000..8c071e9b
--- /dev/null
+++ b/help/E/mivolca1.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Volcano.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 84.6C
+\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wind: 2.2 mps
+\tab;Titanium ore: everywhere
+\tab;Uranium ore: some
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: everywhere
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: reusable derelicts
+\tab;Detected: unknown organisms
+\tab; - Danger: ?
+\n;
diff --git a/help/E/mivolca2.txt b/help/E/mivolca2.txt
new file mode 100644
index 00000000..eae66bbb
--- /dev/null
+++ b/help/E/mivolca2.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Volcano.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 53.1C
+\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wind: 0.3 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: little
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: everywhere
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: yes, not immediate
+\tab;Detected: unknown flying organisms
+\tab; - Danger: yes, immediate
+\n;
diff --git a/help/E/mivolca3.txt b/help/E/mivolca3.txt
new file mode 100644
index 00000000..0d314f33
--- /dev/null
+++ b/help/E/mivolca3.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Volcano.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 83.5C
+\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wind: 3.4 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: everywhere
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\n;
diff --git a/help/E/mivolca4.txt b/help/E/mivolca4.txt
new file mode 100644
index 00000000..46046659
--- /dev/null
+++ b/help/E/mivolca4.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Volcano.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 96.7C
+\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wind: 2.8 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: bot
+\tab; - Type: unknown
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\n;
diff --git a/help/E/mivolca5.txt b/help/E/mivolca5.txt
new file mode 100644
index 00000000..1a8aceeb
--- /dev/null
+++ b/help/E/mivolca5.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Volcano.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 96.6C
+\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wind: 2.7 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: immediate
+\tab;Detected: giant spiders
+\tab; - Danger: not immediate
+\n;
diff --git a/help/E/mivolca6.txt b/help/E/mivolca6.txt
new file mode 100644
index 00000000..19e3556b
--- /dev/null
+++ b/help/E/mivolca6.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Volcano.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 96.6C
+\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wind: 2.7 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: immediate
+\n;
diff --git a/help/E/mlcent1.txt b/help/E/mlcent1.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/E/mlcent1.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/E/mlcent2.txt b/help/E/mlcent2.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/E/mlcent2.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/E/mlcent3.txt b/help/E/mlcent3.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/E/mlcent3.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/E/mlcent4.txt b/help/E/mlcent4.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/E/mlcent4.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/E/mlcent5.txt b/help/E/mlcent5.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/E/mlcent5.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/E/mlcrys1.txt b/help/E/mlcrys1.txt
new file mode 100644
index 00000000..99fa7fde
--- /dev/null
+++ b/help/E/mlcrys1.txt
@@ -0,0 +1,29 @@
+\b;Programs dispatched by Houston
+Below is one of the programs that has been developed by our engineers.
+It instructs a \l;grabber\u object\botgr; to retrieve the nearest chunk of \l;titanium ore\u object\titanore; and place it on the \l;converter\u object\convert;.
+
+In order to execute this program, select the program \c;CollectTitanium1\n; 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;.
+\c;
+\s;extern void object::CollectTitanium1()
+\s;{
+\s; // 1) Variable definition.
+\s; \l;object\u cbot\type; item; // info. about objects
+\s;
+\s; // 2) Go to the titanium ore and grab it.
+\s; item = \l;radar\u cbot\radar;(\l;TitaniumOre\u cbot\category;);// look for titanium ore
+\s; \l;goto\u cbot\goto;(item.position); // go to the position
+\s; \l;grab\u cbot\grab;(); // grab the titanium
+\s;
+\s; // 3) Go to the converter and drop it.
+\s; item = \l;radar\u cbot\radar;(\l;Converter\u cbot\category;); // look for converter
+\s; \l;goto\u cbot\goto;(item.position); // go to the position
+\s; \l;drop\u cbot\drop;(); // drop the titanium
+\s; \l;move\u cbot\move;(-2.5); // step back 2.5 m
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/E/mlcrys2.txt b/help/E/mlcrys2.txt
new file mode 100644
index 00000000..5e1a7ec3
--- /dev/null
+++ b/help/E/mlcrys2.txt
@@ -0,0 +1,38 @@
+\b;Programs dispatched by Houston
+Below is one of the programs that has been developed by our engineers.
+An upgrade on the previous program: the \l;grabber\u object\botgr;, on its way back from the converter, makes a stop, if necessary, at the \l;power station\u object\station; to recharge its power cell.
+
+This program also works on \l;winged grabbers\u object\botgj;, if the \l;derrick\u object\derrick; is on another island than the \l;converter\u object\convert;.
+\c;
+\s;extern void object::CollectTitanium2()
+\s;{
+\s; // 1) Variable definition.
+\s; \l;object\u cbot\type; item; // info. about objects
+\s;
+\s; // 2) Go to the titanium ore and grab it.
+\s; item = \l;radar\u cbot\radar;(\l;TitaniumOre\u cbot\category;);// look for titanium ore
+\s; \l;goto\u cbot\goto;(item.position); // go to the position
+\s; \l;grab\u cbot\grab;(); // grab the titanium
+\s;
+\s; // 3) Go to the converter and drop it.
+\s; item = \l;radar\u cbot\radar;(\l;Converter\u cbot\category;); // look for converter
+\s; \l;goto\u cbot\goto;(item.position); // go to the position
+\s; \l;drop\u cbot\drop;(); // drop the titanium
+\s; \l;move\u cbot\move;(-2.5); // step back 2.5 m
+\s;
+\s; // 4) If power cell half empty, recharges.
+\s; if ( energyCell.energyLevel < 0.5 )
+\s; { // if so:
+\s; item = \l;radar\u cbot\radar;(\l;PowerStation\u cbot\category;); // look for station
+\s; \l;goto\u cbot\goto;(item.position); // go there
+\s; \l;wait\u cbot\wait;(5); // wait
+\s; }
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/E/mlcrys3.txt b/help/E/mlcrys3.txt
new file mode 100644
index 00000000..1357500d
--- /dev/null
+++ b/help/E/mlcrys3.txt
@@ -0,0 +1,11 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/E/mlcrys4.txt b/help/E/mlcrys4.txt
new file mode 100644
index 00000000..1357500d
--- /dev/null
+++ b/help/E/mlcrys4.txt
@@ -0,0 +1,11 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/E/mllune1.txt b/help/E/mllune1.txt
new file mode 100644
index 00000000..1850e907
--- /dev/null
+++ b/help/E/mllune1.txt
@@ -0,0 +1,17 @@
+\b;Programs dispatched by Houston
+Following is a program that has been developed by our engineers. It allows you to switch \l;power cells\u object\power;. A charged cell needs to be placed on the ground in front of the bot.
+
+In order to execute this program, select the program \c;SwitchCell1\n; 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;.
+\c;
+\s;extern void object::SwitchCell1()
+\s;{
+\s; \l;grab\u cbot\grab;(InFront); // take the new cell in front
+\s; \l;drop\u cbot\drop;(Behind); // and drop it behind
+\s;
+\s; \l;grab\u cbot\grab;(EnergyCell); // take the cell from the bot
+\s; \l;drop\u cbot\drop;(InFront); // and drop it in front
+\s;
+\s; \l;grab\u cbot\grab;(Behind); // take the new cell
+\s; \l;drop\u cbot\drop;(EnergyCell); // and drop it on the bot
+\s;}
+\n;
diff --git a/help/E/mllune2.txt b/help/E/mllune2.txt
new file mode 100644
index 00000000..15fe0f0f
--- /dev/null
+++ b/help/E/mllune2.txt
@@ -0,0 +1,7 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/E/mllune3.txt b/help/E/mllune3.txt
new file mode 100644
index 00000000..5e7e6787
--- /dev/null
+++ b/help/E/mllune3.txt
@@ -0,0 +1,7 @@
+\b;Program(s) dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/E/mllune4.txt b/help/E/mllune4.txt
new file mode 100644
index 00000000..fbc672cd
--- /dev/null
+++ b/help/E/mllune4.txt
@@ -0,0 +1,23 @@
+\b;Programs dispatched by Houston
+Below is a program that has been developed by our engineers. It allows you to recharge the \l;power cell\u object\power; of a bot: it goes to the closest \l;power station\u object\station;, waits 5 seconds, and comes back to the initial position.
+
+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 \c;//\n; are not part of the program, but are comments that help you to understand the program.
+\c;
+\s;extern void object::Recharge1()
+\s;{
+\s; \l;point\u cbot\type; start; // variable for initial pos.
+\s; \l;object\u cbot\type; item; // info. about power station
+\s;
+\s; start = position; // store initial position
+\s;
+\s; item = \l;radar\u cbot\radar;(\l;PowerStation\u cbot\category;); // look for station
+\s; \l;goto\u cbot\goto;(item.position); // go to the power station
+\s; \l;wait\u cbot\wait;(5); // wait 5 seconds
+\s;
+\s; \l;goto\u cbot\goto;(start); // go back to initial pos.
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/E/mlnull.txt b/help/E/mlnull.txt
new file mode 100644
index 00000000..9fe96daa
--- /dev/null
+++ b/help/E/mlnull.txt
@@ -0,0 +1,3 @@
+\b;Program(s) dispatched by Houston
+No program was transmitted.
+If you feel like developing one that can be of use to the completion of this mission, be our guest but you are on your own.
diff --git a/help/E/mlorph1.txt b/help/E/mlorph1.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/E/mlorph1.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/E/mlorph2.txt b/help/E/mlorph2.txt
new file mode 100644
index 00000000..f856d805
--- /dev/null
+++ b/help/E/mlorph2.txt
@@ -0,0 +1,14 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/E/mlsaari1.txt b/help/E/mlsaari1.txt
new file mode 100644
index 00000000..1357500d
--- /dev/null
+++ b/help/E/mlsaari1.txt
@@ -0,0 +1,11 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/E/mlsaari2.txt b/help/E/mlsaari2.txt
new file mode 100644
index 00000000..805dca34
--- /dev/null
+++ b/help/E/mlsaari2.txt
@@ -0,0 +1,31 @@
+\b;Programs dispatched by Houston
+Execute the program \c;KillAnt1\n; immediately on your \l;wheeled shooter\u object\botfr;, it will protect your west flank. Meantime you can elaborate your defense strategy.
+\c;
+\s;extern void object::KillAnt1()
+\s;{
+\s; \l;object\u cbot\type; item; // info. about object
+\s;
+\s; \l;goto\u cbot\goto;(-30, 0); // go west
+\s; \l;aim\u cbot\aim;(0); // aim straight
+\s;
+\s; \l;while\u cbot\while; ( true ) // repeat forever:
+\s; {
+\s; item = \l;radar\u cbot\radar;(\l;AlienAnt\u cbot\category;, 0, 360, 0, 40);
+\s; \l;if\u cbot\if; ( item != null ) // ant detected ?
+\s; {
+\s; \l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));
+\s; \l;fire\u cbot\fire;(0.5); // shoot 0.5 s
+\s; }
+\s; \l;wait\u cbot\wait;(1); // wait 1 second
+\s; }
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/E/mlsaari3.txt b/help/E/mlsaari3.txt
new file mode 100644
index 00000000..13f3cec8
--- /dev/null
+++ b/help/E/mlsaari3.txt
@@ -0,0 +1,12 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/E/mlterra1.txt b/help/E/mlterra1.txt
new file mode 100644
index 00000000..5ac691d0
--- /dev/null
+++ b/help/E/mlterra1.txt
@@ -0,0 +1,30 @@
+\b;Programs dispatched by Houston
+According to the data transmitted by the satellite, our engineers have developed two programs. The first one guides the \l;shielder bot\u object\botshld; through the narrow valley north close to the place where the key has been located. You can follow it without fearing any attack:
+\c;
+\s;extern void object::Outward()
+\s;{
+\s; \l;shield\u cbot\shield;(1,15); // activate the shield
+\s; \l;goto\u cbot\goto;(6,160); // go close to the key
+\s; \l;shield\u cbot\shield;(0,15); // deactivate the shield
+\s;}
+\n;
+The second program guides the \l;shielder bot\u object\botshld; back to the \l;spaceship\u object\base;:
+\c;
+\s;extern void object::Return()
+\s;{
+\s; \l;shield\u cbot\shield;(1,15); // activate the shield
+\s; \l;goto\u cbot\goto;(8,60); // go to the spaceship
+\s; \l;shield\u cbot\shield;(0,15); // deactivate the shield
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/E/mlterra2.txt b/help/E/mlterra2.txt
new file mode 100644
index 00000000..f856d805
--- /dev/null
+++ b/help/E/mlterra2.txt
@@ -0,0 +1,14 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/E/mlterra3.txt b/help/E/mlterra3.txt
new file mode 100644
index 00000000..f856d805
--- /dev/null
+++ b/help/E/mlterra3.txt
@@ -0,0 +1,14 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/E/mlterra4.txt b/help/E/mlterra4.txt
new file mode 100644
index 00000000..73e1d1ab
--- /dev/null
+++ b/help/E/mlterra4.txt
@@ -0,0 +1,50 @@
+\b;Programs dispatched by Houston
+Below is a program that has been developed by our engineers.
+
+It instructs the \l;shielder\u object\botshld; to follow and protect the \l;phazer\u object\botphaz;.
+\c;
+\s;extern void object::FollowPhazer()
+\s;{
+\s; \l;object\u cbot\type; item; // info. about phazer
+\s; \l;point\u cbot\type; dest; // position where to go
+\s; \l;float\u cbot\type; dist; // distance to phazer
+\s;
+\s; item = \l;radar\u cbot\radar;(\l;PhazerShooter\u cbot\category;);
+\s; \l;if\u cbot\if; ( item == null )
+\s; {
+\s; \l;message\u cbot\message;("No phazer found");
+\s; \l;return\u cbot\return;; // stop the program
+\s; }
+\s; \l;shield\u cbot\shield;(1, 25); // activate the shield
+\s;
+\s; \l;while\u cbot\while; ( true ) // repeat forever
+\s; {
+\s; item = \l;radar\u cbot\radar;(PhazerShooter);// look for phazer
+\s; \l;if\u cbot\if; ( item == null ) break;
+\s;
+\s; dist = \l;distance\u cbot\dist;(item.position, position);
+\s; \l;if\u cbot\if; ( dist < 5 )
+\s; { // if closer than 5 m:
+\s; \l;wait\u cbot\wait;(1); // wait
+\s; }
+\s; \l;else\u cbot\if; // otherwise:
+\s; { // Calculate a position 5 m before the phazer
+\s; dest.x = (item.position.x-position.x)*((dist-5)/dist)+position.x;
+\s; dest.y = (item.position.y-position.y)*((dist-5)/dist)+position.y;
+\s; dest.z = (item.position.z-position.z)*((dist-5)/dist)+position.z;
+\s; \l;goto\u cbot\goto;(dest, 0, 1, 1); // and go there
+\s; }
+\s; }
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/E/mltropi1.txt b/help/E/mltropi1.txt
new file mode 100644
index 00000000..6d775e52
--- /dev/null
+++ b/help/E/mltropi1.txt
@@ -0,0 +1,8 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/E/mltropi3.txt b/help/E/mltropi3.txt
new file mode 100644
index 00000000..40d4b187
--- /dev/null
+++ b/help/E/mltropi3.txt
@@ -0,0 +1,27 @@
+\b;Programs dispatched by Houston
+We have improved the recharge program. When it arrives at the \l;power station\u object\station;, the bot does not wait exactly 5 seconds, but only until the \l;power cell\u object\power; is fully charged. After the bot is back at the initial position, it displays a message on the screen.
+\c;
+\s;extern void object::Recharge2()
+\s;{
+\s; \l;point\u cbot\type; start; // variable for initial pos.
+\s; \l;object\u cbot\type; item; // info. about power station
+\s;
+\s; start = position; // store initial position
+\s;
+\s; item = \l;radar\u cbot\radar;(\l;PowerStation\u cbot\category;); // look for station
+\s; \l;goto\u cbot\goto;(item.position); // go to the power station
+\s;
+\s; \l;while\u cbot\while; ( \l;energyCell.energyLevel\u cbot\object; < 1 )
+\s; {
+\s; \l;wait\u cbot\wait;(1); // wait until recharged
+\s; }
+\s;
+\s; \l;goto\u cbot\goto;(start); // go back to initial pos.
+\s; \l;message\u cbot\message;("Recharge completed");
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;SwitchCell1\u mllune1;\n;
+o \c;\l;Recharge1\u mllune4;\n;
diff --git a/help/E/mltropi4.txt b/help/E/mltropi4.txt
new file mode 100644
index 00000000..3b138af2
--- /dev/null
+++ b/help/E/mltropi4.txt
@@ -0,0 +1,9 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/E/mltropi5.txt b/help/E/mltropi5.txt
new file mode 100644
index 00000000..3b138af2
--- /dev/null
+++ b/help/E/mltropi5.txt
@@ -0,0 +1,9 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/E/mlvolca1.txt b/help/E/mlvolca1.txt
new file mode 100644
index 00000000..f1e12cea
--- /dev/null
+++ b/help/E/mlvolca1.txt
@@ -0,0 +1,61 @@
+\b;Programs dispatched by Houston
+As you will need lots of titanium for this mission, we have made the program \c;CollectTitanium\n; 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 \l;power station\u object\station; if necessary.
+\c;
+\s;extern void object::CollectTitanium3()
+\s;{
+\s; // 1) Variable definition.
+\s; \l;object\u cbot\type; item; // info. about objects
+\s;
+\s; \l;while\u cbot\while; (true) // repeat forever
+\s; {
+\s;
+\s; // 2) Go to the titanium ore and grab it.
+\s; item = \l;radar\u cbot\radar;(\l;TitaniumOre\u cbot\category;);// look for titanium
+\s; \l;goto\u cbot\goto;(item.position); // go to the position
+\s; \l;grab\u cbot\grab;(); // grab the titanium
+\s;
+\s; // 3) Go to the converter and drop it.
+\s; item = \l;radar\u cbot\radar;(\l;Converter\u cbot\category;); // look for converter
+\s; \l;goto\u cbot\goto;(item.position); // go to the position
+\s; \l;drop\u cbot\drop;(); // drop the titanium
+\s; \l;move\u cbot\move;(-2.5); // step back 2.5 m
+\s;
+\s; // 4) Wait until titanium converted and grab it
+\s; \l;do\u cbot\do;
+\s; {
+\s; \l;wait\u cbot\wait;(1); // wait for cube
+\s; item = \l;radar\u cbot\radar;(\l;Titanium\u cbot\category;, 0, 45, 0, 5);
+\s; }
+\s; \l;while\u cbot\while; ( item == null );
+\s; \l;goto\u cbot\goto;(item.position);
+\s; \l;grab\u cbot\grab;(); // grab it
+\s;
+\s; // 5) Drop on a free space
+\s; \l;goto\u cbot\goto;(\l;space\u cbot\space;(position)); // go to free space
+\s; \l;drop\u cbot\drop;(); // drop titanium
+\s;
+\s; // 6) If power cell half empty, recharges.
+\s; \l;if\u cbot\if; ( energyCell.energyLevel < 0.5 )
+\s; { // if so:
+\s; item = \l;radar\u cbot\radar;(\l;PowerStation\u cbot\category;);
+\s; \l;if\u cbot\if; ( item != null ) // station found ?
+\s; {
+\s; \l;goto\u cbot\goto;(item.position); // go there
+\s; \l;while\u cbot\while; ( energyCell.energyLevel < 1 )
+\s; { // until recharged:
+\s; \l;wait\u cbot\wait;(1); // wait
+\s; }
+\s; }
+\s; }
+\s; }
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/E/mlvolca2.txt b/help/E/mlvolca2.txt
new file mode 100644
index 00000000..ad0537da
--- /dev/null
+++ b/help/E/mlvolca2.txt
@@ -0,0 +1,53 @@
+\b;Programs dispatched by Houston
+We have developed a program that takes care of recharging the power cell of a \l;defense tower\u object\tower;:
+
+1) Go to a \l;defense tower\u object\tower;.
+2) Wait until the \l;power cell\u object\power; is 80% empty.
+3) Grab the \l;power cell\u object\power; and recharge it on a \l;power station\u object\station;.
+4) Put it back on the \l;defense tower\u object\tower;.
+
+Build the \l;power station\u object\station; 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.
+\c;
+\s;extern void object::ServiceTower1()
+\s;{
+\s; \l;object\u cbot\object; tower; // info. about tower
+\s; \l;object\u cbot\object; station; // info. about station
+\s;
+\s; // 1) go to the defense tower
+\s; tower = \l;radar\u cbot\radar;(DefenseTower); // look for tower
+\s; \l;goto\u cbot\goto;(tower.position); // go there
+\s;
+\s; \l;while\u cbot\while; ( true ) // repeat forever
+\s; {
+\s; // 2) wait until power cell is empty
+\s; \l;while\u cbot\while; ( tower.energyCell.energyLevel > 0.2 )
+\s; {
+\s; \l;wait\u cbot\wait;(2);
+\s; }
+\s; \l;grab\u cbot\grab;(); // grab the power cell
+\s;
+\s; // 3) go to the power station to recharge
+\s; station = \l;radar\u cbot\radar;(PowerStation);
+\s; \l;goto\u cbot\goto;(station.position); // go there
+\s; \l;while\u cbot\while; ( load.energyLevel < 1 )
+\s; {
+\s; \l;wait\u cbot\wait;(1); // wait until recharged
+\s; }
+\s;
+\s; // 4) go back to defense tower
+\s; \l;goto\u cbot\goto;(tower.position); // go to tower
+\s; \l;drop\u cbot\drop;(); // drop the power cell
+\s; }
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/E/mlvolca3.txt b/help/E/mlvolca3.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/E/mlvolca3.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/E/mlvolca4.txt b/help/E/mlvolca4.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/E/mlvolca4.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/E/mlvolca5.txt b/help/E/mlvolca5.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/E/mlvolca5.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/E/mlvolca6.txt b/help/E/mlvolca6.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/E/mlvolca6.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/E/mscent1.txt b/help/E/mscent1.txt
new file mode 100644
index 00000000..befd97f5
--- /dev/null
+++ b/help/E/mscent1.txt
@@ -0,0 +1,20 @@
+\b;Walkthrough
+You'll find some useful items in a small valley northeast.
+o A \l;recycler\u object\botrecy; that will allow you to make your first \l;titanium cube\u object\titan;.
+o A \l;legged grabber\u object\botgs; that is very good at climbing steep slopes.
+o A nearly charged \l;nuclear power cell\u object\atomic;.
+
+1) Power the \l;legged grabber\u object\botgs; with the \l;nuclear power cell\u object\atomic;, and use it to carry a \l;titanium cube\u object\titan; to the \l;spaceship\u object\base;. Choose the direct way over the mountains.
+
+2) Use the titanium to build a \l;converter\u object\convert;. Execute the program \c;CollectTitanium3\n; on the \l;legged grabber\u object\botgs; and you will have plenty of titanium.
+
+3) Stop the program, and use the grabber to collect some \l;uranium ore\u object\uranore; in a second small valley to the east. Again, do not take the way of the valley which is crawling with ants, but take the direct way over the mountains.
+
+4) Build a \l;winged shooter\u object\botfj; and power it with a \l;nuclear power cell\u object\atomic;. If you take the pass south-east, you will arrive immediately at the ant nest. Kill all the ants, and bring back a ball of \l;organic matter\u object\bullet; to the \l;spaceship\u object\base;.
+
+5) Build an \l;auto-lab\u object\labo;, drop the \l;organic matter\u object\bullet; on the platform and click the \button 110; button in order to develop the blueprints for the orgaShooter cannon.
+
+6) Build a \l;legged orga shooter\u object\botos;, bring it aboard and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mscent2.txt b/help/E/mscent2.txt
new file mode 100644
index 00000000..417c8f0b
--- /dev/null
+++ b/help/E/mscent2.txt
@@ -0,0 +1,5 @@
+\b;Walkthrough
+Drive the \l;legged orga shooter\u object\botos; to each of the pads in front of the targets, and hit all targets that you see with only one burst, moving the mouse during the burst. With 4 bursts, you must be able to hit all the targets.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mscent3.txt b/help/E/mscent3.txt
new file mode 100644
index 00000000..d14266fa
--- /dev/null
+++ b/help/E/mscent3.txt
@@ -0,0 +1,11 @@
+\b;Walkthrough
+In order to kill all ants and spiders in this large and mountainous region, you will need a \l;winged orga shooter\u object\botfj; powered with \l;nuclear power cells\u object\atomic;. In a small valley to the southeast you will find everything you need: \l;titanium cubes\u object\titanium;, \l;power cells\u object\power; and even a \l;winged grabber\u object\botgj; in working condition.
+
+1) Build a \l;radar\u object\radar; and a \l;winged shooter\u object\botfj; and power it. Kill the ant that is watching over the \l;uranium ore\u object\uranore; further north.
+
+2) Use the abandoned \l;nuclear plant\u object\nuclear; on the hill above and the \l;winged grabber\u object\botgj; to produce several \l;nuclear power cells\u object\atomic;, and use one to power the \l;winged shooter\u object\botfj;.
+
+3) Wipe out all insects from the region. There is one isolated ant in the northwest hidden in a hole: an approach from the west thorough the deep valley will make it easier to hit.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mscent4.txt b/help/E/mscent4.txt
new file mode 100644
index 00000000..ceb46949
--- /dev/null
+++ b/help/E/mscent4.txt
@@ -0,0 +1,12 @@
+\b;Walkthrough
+1) Search the area for \l;titanium\u object\titan;.
+2) Build a \l;converter\u object\convert;.
+3) Build a \l;research center\u object\research;.
+4) Run the \button 66;.
+5) Manufacture a \l;thumper\u object\bottump;.
+6) Position the thumper close to the derelict spaceship and "thump" the ground.
+7) Quickly retrieve the \l;black box\u object\bbox; and bring it back aboard your \l;spaceship\u object\base;.
+8) Bring the thumper along and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mscent5.txt b/help/E/mscent5.txt
new file mode 100644
index 00000000..a631c9d5
--- /dev/null
+++ b/help/E/mscent5.txt
@@ -0,0 +1,8 @@
+\b;Walkthrough
+1) Thump the deck of the \l;spaceship\u object\base;. You don't need to move the \l;thumper\u object\bottump; anywhere.
+2) Locate the \l;orga shooter\u object\botoj; approximately 70 meters to the east.
+3) Terminate the \l;ants\u object\ant; while they are still on their backs.
+4) Take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mscrys1.txt b/help/E/mscrys1.txt
new file mode 100644
index 00000000..e7e5c03e
--- /dev/null
+++ b/help/E/mscrys1.txt
@@ -0,0 +1,12 @@
+\b;Walkthrough
+1) Build a \l;bot factory\u object\factory;.
+2) Produce a \l;winged grabber\u object\botgj;.
+3) Carry a \l;titanium cube\u object\titan; to the highest point.
+4) Build a \l;radar\u object\radar; on the spot.
+5) Build a \l;research center\u object\research; next to the spaceship.
+6) Initiate the \button 68;.
+7) Build the \l;defense tower\u object\tower; next to the radar.
+8) When all the worms are destroyed, you can go back to your ship and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mscrys2.txt b/help/E/mscrys2.txt
new file mode 100644
index 00000000..d64057d1
--- /dev/null
+++ b/help/E/mscrys2.txt
@@ -0,0 +1,17 @@
+\b;Walkthrough
+1) Build a \l;bot factory\u object\factory;.
+2) Produce a \l;winged sniffer\u object\botsj;.
+3) Sniff the ground near the large crystals until you get a \l;red cross\u object\stonspot;.
+4) Build a \l;derrick\u object\derrick; near the red cross.
+5) Build a \l;converter\u object\convert;.
+
+The pairing of a derrick and a converter allows for an unlimited supply of \l;titanium\u object\titan;. In order to leave this task to a bot, execute the program \c;CollectTitanium2\n;.
+
+6) Sniff the area at the foot of the spaceship. A \l;green cross\u object\enerspot; means you can build a \l;power station\u object\station; on the spot.
+7) Build a \l;radar\u object\radar;.
+8) Produce a \l;winged shooter\u object\botfj;.
+9) Eliminate all worms.
+10) Go back to your ship and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mscrys3.txt b/help/E/mscrys3.txt
new file mode 100644
index 00000000..b015bb5a
--- /dev/null
+++ b/help/E/mscrys3.txt
@@ -0,0 +1,7 @@
+\b;Walkthrough
+If you lose the bot, it will drop the black box somewhere southwest of your spaceship on a region surrounded by crystals.
+
+In case your power runs out before you can bring the black box back, use the second grabber left on the spaceship.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mscrys4.txt b/help/E/mscrys4.txt
new file mode 100644
index 00000000..cf8c5f7c
--- /dev/null
+++ b/help/E/mscrys4.txt
@@ -0,0 +1,7 @@
+\b;Walkthrough
+Somewhere northeast in the valley itself you should come across a fully functional \l;power station\u object\station;. Northwest you will find several \l;power cells\u object\power;.
+
+A few shooters in working condition have been abandoned in and around the same area in the valley; use them to shoot all the ants. With the \l;winged grabber\u object\botgj;, you can then retrieve the \l;black box\u object\bbox; that is located behind the derelict spaceship and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mslune1.txt b/help/E/mslune1.txt
new file mode 100644
index 00000000..b97ffbec
--- /dev/null
+++ b/help/E/mslune1.txt
@@ -0,0 +1,15 @@
+\b;Walkthrough
+In order to build the \l;research center\u object\research;, drop a \l;titanium cube\u object\titan; on a flat surface not too far from the spaceship. \l;You\u object\human; can carry the cube yourself, or use the available \l;grabber\u object\botgr;.
+
+If you used the bot, move it away from the cube in order not to interfere with the construction. To shift the selection from the bot to yourself (remember that only you can build), use \key;\key human;\norm;.
+
+Position yourself close to the \l;titanium cube\u object\titan; and build a \l;research center\u object\research; \button 163;. Drop a \l;power cell\u object\power; on the \l;research center\u object\research;, select the building and click the \button 65; symbol in order to perform the .
+
+Build a \l;bot factory\u object\factory; in the same way, and drop a \l;titanium cube\u object\titan; in the center. Build a \l;winged grabber\u object\botgj; with the \button 139; symbol, and power it with a \l;power cell\u object\power;.
+
+It may be preferable to scout the area yourself in order to save power. You'll find the chunks of titanium ore at the bottom of a few craters located north of the spaceship. A \l;flag\u object\flag; may help you pin down the spot faster on subsequent trips.
+
+Collect 4 chunks of \l;titanium ore\u object\titanore; and bring them back aboard your \l;spaceship\u object\base;. Take the \l;winged grabber\u object\botgj; and the \l;wheeled grabber\u object\botgr; along with you and take off \button 28;.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mslune2.txt b/help/E/mslune2.txt
new file mode 100644
index 00000000..e46a8501
--- /dev/null
+++ b/help/E/mslune2.txt
@@ -0,0 +1,7 @@
+\b;Walkthrough
+If your bot suddenly explodes, this means that you have hit the steel structures too often. Drive more slowly, so your bot will not be damaged even if you bump into an obstacle.
+
+If you can not take off after you have completed the training, this means that you did not pass through all the targets. Go round one more time, and pass through the targets where the cross is left in the center.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mslune3.txt b/help/E/mslune3.txt
new file mode 100644
index 00000000..e46a8501
--- /dev/null
+++ b/help/E/mslune3.txt
@@ -0,0 +1,7 @@
+\b;Walkthrough
+If your bot suddenly explodes, this means that you have hit the steel structures too often. Drive more slowly, so your bot will not be damaged even if you bump into an obstacle.
+
+If you can not take off after you have completed the training, this means that you did not pass through all the targets. Go round one more time, and pass through the targets where the cross is left in the center.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mslune4.txt b/help/E/mslune4.txt
new file mode 100644
index 00000000..7535c4d7
--- /dev/null
+++ b/help/E/mslune4.txt
@@ -0,0 +1,19 @@
+\b;Walkthrough
+1) Build a converter \button 162; with the only titanium cube available.
+
+2) Deposit one chunk of titanium ore at a time at the center of the platform and let the converter do the rest.
+
+3) Build a power station \button 164; with one of the newly converted titanium cubes.
+
+4) If you don't feel like looking for the black box yourself, build a radar \button 168; and the box will appear on your mini map somewhere north of your present location, at the bottom of a crater, next to a few derelict spacecraft and debris from the previous expedition.
+
+5) Place the grabbers at the center of the power station platform to recharge them. The cells should still have a little power left in them, just enough to radio-control the bots onto the platform.
+
+6) Radio-control the winged grabber to the black box and back.
+
+7) Gather both grabbers and the black box onto the spaceship platform and climb on board yourself.
+
+8) Take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/msorph1.txt b/help/E/msorph1.txt
new file mode 100644
index 00000000..28c154db
--- /dev/null
+++ b/help/E/msorph1.txt
@@ -0,0 +1,15 @@
+\b;Walkthrough
+1) Quickly build a \l;power captor\u object\captor; near the blue flag.
+All subsequent buildings should be erected within the \button 41; covered by the power captor.
+2) Carry some empty \l;power cells\u object\power; under the power captor. When lightning strikes, they will be recharged.
+3) Build a \l;derrick\u object\derrick;.
+4) Build a \l;converter\u object\convert;.
+5) Execute the program \c;CollectTitanium3\n; in order to produce \l;titanium\u object\titan;.
+6) Build a \l;bot factory\u object\factory;.
+7) Manufacture a \l;winged orga shooter\u object\botoj;.
+8) Build a \l;radar\u object\radar;.
+9) Locate and terminate all \l;ants\u object\ant;.
+10) Return to your \l;spaceship\u object\base; and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/msorph2.txt b/help/E/msorph2.txt
new file mode 100644
index 00000000..486d4475
--- /dev/null
+++ b/help/E/msorph2.txt
@@ -0,0 +1,9 @@
+\b;Walkthrough
+You will find a \l;radar\u object\radar;, a \l;power captor\u object\captor;, a \l;power cell\u object\power; and a \l;winged orga shooter\u object\botoj; in the valley south of the spaceship. This will allow you to kill the ants close to the spaceship and to locate the \l;black box\u object\bbox; in the north next to the remains of the first expedition spaceship.
+
+Build a succession of \l;power captors\u object\captor; along the natural path offered by the northern mountain peaks. 5 or 6 captors should offer sufficient protection against lightning.
+
+Bring the black box back aboard your \l;spaceship\u object\base; and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mssaari1.txt b/help/E/mssaari1.txt
new file mode 100644
index 00000000..6bfb8087
--- /dev/null
+++ b/help/E/mssaari1.txt
@@ -0,0 +1,22 @@
+\b;Walkthrough
+1) You'll find a \l;titanium cube\u object\titan; left in a smashed up bot factory. Use it to build a \l;power station\u object\station;.
+
+2) The \l;recycler\u object\botrecy; is designed to convert derelicts back into usable titanium cubes.
+
+3) Build both a \l;repair center\u object\repair; and a \l;radar\u object\radar;.
+
+4) Recharge one of the \l;power cells\u object\power; available and power a \l;winged shooter\u object\botfj;.
+
+5) Eliminate all \l;ants\u object\ant;. Note that you should recharge and repair the shooter regularly. Check your levels.
+
+6) Fully charge the \l;grabber\u object\botgr;'s power cell, then radio-control it to the summit...
+ a) Access the first level by ramp on west;
+ b) On first level travel east to find second ramp;
+ c) On second level travel south to find third ramp;
+ d) On third level travel west for access to summit;
+...then, with the chunk, straight back to the spaceship by the most direct route so as to save the remaining power.
+
+7) Climb aboard the ship yourself and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mssaari2.txt b/help/E/mssaari2.txt
new file mode 100644
index 00000000..22371a78
--- /dev/null
+++ b/help/E/mssaari2.txt
@@ -0,0 +1,9 @@
+\b;Walkthrough
+Execute immediately the program \c;KillAnt1\n; on the \l;wheeled shooter\u object\botfr;; it will take care of the first wave of attack coming from west.
+
+Then build two \l;defense towers\u object\tower; one in the north of the \l;spaceship\u object\base;, the other one in the south (you have to do this VERY quickly). While \l;you\u object\human; are building, use the \l;grabber\u object\botgr; to get a \l;power cell\u object\power;.
+
+As soon as the successive waves of attack, made up of about fifteen \l;ants\u object\ant;, are gone, you have time to take care of the ants that did not attack. Build a \l;radar\u object\radar; in order to spot them, and a \l;converter\u object\convert;, a \l;bot factory\u object\factory;, a \l;power station\u object\station; and a \l;winged shooter\u object\botfj; in order to get rid of them...
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mssaari3.txt b/help/E/mssaari3.txt
new file mode 100644
index 00000000..84f2fa66
--- /dev/null
+++ b/help/E/mssaari3.txt
@@ -0,0 +1,9 @@
+\b;Walkthrough
+You should build a \l;radar\u object\radar; first.
+
+The \l;ants\u object\ant; appear to be running away from you. Try to circle around each one of them until they find themselves trapped between you and a \l;mine\u object\mine;. They'll opt for the mine and blow themselves up.
+
+Then bring the \l;black box\u object\bbox; aboard your ship. It is next to the derelict spaceship.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/msterra1.txt b/help/E/msterra1.txt
new file mode 100644
index 00000000..a7487ad7
--- /dev/null
+++ b/help/E/msterra1.txt
@@ -0,0 +1,6 @@
+\b;Walkthrough
+Unfortunately no walkthrough has been provided for this mission.
+You are on your own...
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/msterra2.txt b/help/E/msterra2.txt
new file mode 100644
index 00000000..a7487ad7
--- /dev/null
+++ b/help/E/msterra2.txt
@@ -0,0 +1,6 @@
+\b;Walkthrough
+Unfortunately no walkthrough has been provided for this mission.
+You are on your own...
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/msterra3.txt b/help/E/msterra3.txt
new file mode 100644
index 00000000..a7487ad7
--- /dev/null
+++ b/help/E/msterra3.txt
@@ -0,0 +1,6 @@
+\b;Walkthrough
+Unfortunately no walkthrough has been provided for this mission.
+You are on your own...
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/msterra4.txt b/help/E/msterra4.txt
new file mode 100644
index 00000000..a7487ad7
--- /dev/null
+++ b/help/E/msterra4.txt
@@ -0,0 +1,6 @@
+\b;Walkthrough
+Unfortunately no walkthrough has been provided for this mission.
+You are on your own...
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/msterre1.txt b/help/E/msterre1.txt
new file mode 100644
index 00000000..3e7e0cc2
--- /dev/null
+++ b/help/E/msterre1.txt
@@ -0,0 +1,11 @@
+\b;Walkthrough
+To find the survival kit from your starting point :
+
+1) Follow the road heading south.
+2) Turn east (left) at the first crossroad.
+3) The survival kit is lying between the northern wall of Mission Control and the first tree on the right hand side of the road.
+
+Just position yourself close to it to successfully complete the drill.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/msterre2.txt b/help/E/msterre2.txt
new file mode 100644
index 00000000..a97023d8
--- /dev/null
+++ b/help/E/msterre2.txt
@@ -0,0 +1,11 @@
+\b;Walkthrough
+Walk down the street that runs beside \l;Mission Control\u object\Huston;. You will find a \l;titanium cube\u object\titan; on the left hand side of the road, right after the \l;grabber bot\u object\botgr;.
+
+1) Face the cube. Click on the first button at the bottom left of your screen: \button 163; .
+2) Walk further down the road. The second cube is on the right past the four green \l;power cells\u object\power;.
+3) Repeat 1) but click on the second button: \button 160; .
+
+As soon as both buildings are completed, the mission is at an end.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/msterre3.txt b/help/E/msterre3.txt
new file mode 100644
index 00000000..509ae869
--- /dev/null
+++ b/help/E/msterre3.txt
@@ -0,0 +1,28 @@
+\b;Walkthrough
+Before taking off, you need to bring the following aboard your spaceship:
+
+1) \l;Black box\u object\bbox;.
+2) \l;Wheeled\u object\botgr; and \l;tracked\u object\botgc; grabbers.
+3) \l;Yourself\u object\human;.
+
+Here is a detailed breakdown of the operations:
+1) Power the \l;research center\u object\research; with one of the green \l;power cells\u object\power;.
+2) Activate the \l;research center\u object\research; then click on the \button 64; button.
+3) Place a \l;titanium cube\u object\titan; inside the \l;bot factory\u object\factory;.
+4) Step back out and activate the \l;bot factory\u object\factory;.
+5) Click on the \button 138; button.
+6) Power the \l;tracked grabber\u object\botgc; with a brand new \l;power cell\u object\power;.
+7) Radio-control the \l;tracked grabber\u object\botgc; to the top of the mountain in the south-west.
+8) Bring the \l;black box\u object\bbox; back aboard your \l;spaceship\u object\base;.
+9) Radio-control both the \l;tracked\u object\botgc; and the \l;wheeled\u object\botgr; grabbers onto the platform.
+10) Climb aboard the \l;spaceship\u object\base; yourself.
+11) Take off!
+
+In order to take off, select the \l;spaceship\u object\base;, provided that it is visible, by clicking on it. If it is not visible, you need to click one of the buttons in the upper left corner of your screen. The blue triangle \button 130; allows you to alternate between symbols for bots and symbols for buildings. Click once to shift to the list. A \button 171; symbol will now appear. Click on the button to select it.
+
+Once the spaceship is selected, click on the larger \button 28; button in the lower center of your screen. If the objects mentioned above as well as yourself are indeed standing on deck, takeoff will take place.
+
+No object or bot should hinder the closing of the eight large panel doors.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mstropi1.txt b/help/E/mstropi1.txt
new file mode 100644
index 00000000..ca0330be
--- /dev/null
+++ b/help/E/mstropi1.txt
@@ -0,0 +1,5 @@
+\b;Walkthrough
+Follow the path shown on your mini map. The explosive device lies at the bottom of a small valley populated by giant ants. They will probably attack you and you will probably lose consciousness. There is nothing you can really do about this.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mstropi2.txt b/help/E/mstropi2.txt
new file mode 100644
index 00000000..23bc0024
--- /dev/null
+++ b/help/E/mstropi2.txt
@@ -0,0 +1,21 @@
+\b;Walkthrough
+Here is a breakdown of the steps to follow to get back to the spaceship.
+
+1) Go round the lake, and head towards the green fluorescent globe. This globe is generated by a gravi-plant that will make flight impossible inside the globe.
+
+2) Follow the left flank of the valley, passing a pond on your right, and climb the small slope. On top you will be facing some giant ants: run as fast as you can towards another gravi-plant a little further on your right, your wounds will have time to heal later.
+
+3) Use your reactor to fly past the lake before the gravi-plant on your right.
+
+4) When you leave the gravi-plant, keep on the left-hand side of the lake, and follow the shore until you reach a peninsula adorned with fern-like plants.
+
+5) Do some island-hopping across the larger lake. Aim for the trees in order to avoid falling into the water on the other side of the island. The last island is 50 cm under water but you can still land on it without having your head submerged.
+
+6) The path continues to the left. A giant ant is waiting for you there, but it will not do you much harm.
+
+7) Give your reactor enough time to cool down, then fly across the small lake. Try to land as high on the right as you can, this is the best way not to fall into the second lake.
+
+8) Cross the second lake, get aboard the spaceship, and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mstropi3.txt b/help/E/mstropi3.txt
new file mode 100644
index 00000000..852a973e
--- /dev/null
+++ b/help/E/mstropi3.txt
@@ -0,0 +1,13 @@
+\b;Walkthrough
+1) There is a \l;titanium cube\u object\titan; west of your present location, near the blue flag/blue cross on your mini map. You don't need to move the cube, just build a \l;power station\u object\station; right there on the spot.
+
+2) With the titanium cubes on the spaceship, build a \l;research center\u object\research; and execute the \button 67;.
+
+3) Build a \l;bot factory\u object\factory; and a \l;winged shooter\u object\botfj;. If this bot is destroyed by enemy fire, you will find some additional \l;titanium cubes\u object\titan; in a small foggy valley northwest of the spaceship. You can bring them back with the \l;winged grabber\u object\botgj;\n;.
+
+4) Build a \l;radar station\u object\radar; in order to see the location of the ants on the mini-map, and let the hunt begin. Be careful not to run out of energy and not to overheat the reactor of a bot while over water. If a bot falls into deep water, it explodes.
+
+5) Once you have killed all the ants, get on board and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mstropi4.txt b/help/E/mstropi4.txt
new file mode 100644
index 00000000..6b73f89d
--- /dev/null
+++ b/help/E/mstropi4.txt
@@ -0,0 +1,7 @@
+\b;Walkthrough
+If your bot suddenly explodes, this means that you have hit the steel structures too often. Drive more slowly, so your bot will not be damaged even if you bump into an obstacle.
+
+If you can not take off after you completed the training, this means that you have not hit all the targets. Go round one more time, and check if any of the explosive devices or crosses in the center of the steel structures are left.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/mstropi5.txt b/help/E/mstropi5.txt
new file mode 100644
index 00000000..06802556
--- /dev/null
+++ b/help/E/mstropi5.txt
@@ -0,0 +1,15 @@
+\b;Walkthrough
+1) Locate the \l;black box\u object\bbox; on your own. You can try to spot it from above, using your jet engine, or dive into the water.
+2) Build a \l;converter\u object\convert; near the chunks of titanium ore. You'll find them in the vicinity of the spaceship to the east.
+3) Produce two \l;cubes\u object\titan;.
+4) Build a \l;bot factory\u object\factory; not too far from the black box.
+5) Manufacture a \l;subber\u object\botsub;.
+6) Bring the black box back on board.
+7) Take off.
+
+The black box is lying at the bottom of a small lake, northeast of the spaceship.
+
+You can build the bot factory right beside the lake, on the south bank.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/msvolca1.txt b/help/E/msvolca1.txt
new file mode 100644
index 00000000..7c606a2e
--- /dev/null
+++ b/help/E/msvolca1.txt
@@ -0,0 +1,15 @@
+\b;Walkthrough
+1) Start by recharging a \l;regular power cell\u object\power; and power the \l;research center\u object\research;. Use it to research the technology for the building of a \l;nuclear plant\u object\nuclear; \button 170;.
+
+2) Produce a \l;wheeled grabber\u object\botgr;.
+
+3) Find some \l;uranium ore\u object\uranore; northwest of your position. The nuclear plant will then transform it into \l;nuclear power cells\u object\atomic; of a longer duration.
+
+4) Power a \l;wheeled shooter\u object\botfr; with one of your new nuclear cells. Dispatch it to kill all intruding \l;spiders\u object\spider; along the way.
+
+5) A \l;radar\u object\radar; is optional but could turn out useful to mark the position of the spiders on your mini map.
+
+6) A wheeled grabber should be part of the expedition. It will both clear the way cluttered with \l;titanium ore\u object\titanore; and bring the \l;explosive device\u object\tnt; back.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/msvolca2.txt b/help/E/msvolca2.txt
new file mode 100644
index 00000000..319cd4db
--- /dev/null
+++ b/help/E/msvolca2.txt
@@ -0,0 +1,19 @@
+\b;Walkthrough
+1) Quickly build a \l;defense tower\u object\tower; north of your spaceship. After you \l;powered\u object\power; it, execute the program \c;ServiceTower1\n; on one of the \l;grabbers\u object\botgr; which will recharge the power cell when it is empty. Place another power cell 2 m north of the tower as a first target for the attacking wasps.
+
+2) Build a \l;power station\u object\station; close to the defense tower.
+
+3) Build a \l;converter\u object\convert; south of the spaceship and execute the program \c;CollectTitanium3\n; on the second \l;grabber\u object\botgr; in order to produce some \l;titanium\u object\titan;.
+
+4) Build a \l;bot factory\u object\factory; and a \l;winged shooter\u object\botfj; to eliminate the \l;ants\u object\ant;.
+
+5) Use a \l;winged grabber\u object\botgj; to bring back some \l;organic matter\u object\bullet; from the island in the middle of the lava lake.
+
+6) Build an \l;autolab\u object\labo;, drop the \l;organic matter\u object\bullet; on the platform and click the button \button 109; in order to develop the blueprints for legged bots.
+
+7) As soon as the organic matter has been analyzed, produce a \l;legged grabber\u object\botgs; and bring it aboard the spaceship.
+
+8) Take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/msvolca3.txt b/help/E/msvolca3.txt
new file mode 100644
index 00000000..bcd857b8
--- /dev/null
+++ b/help/E/msvolca3.txt
@@ -0,0 +1,11 @@
+\b;Walkthrough
+1) Power a \l;legged shooter\u object\botfs;. There is even a \l;nuclear cell\u object\atomic; left behind the \l;bot factory\u object\factory;.
+
+2) Climb the northern cliff and kill a few \l;ants\u object\ant;. The best access is from the east.
+
+3) Keep going until all ants are out of the way.
+
+4) Climb the northern cliff with a \l;legged grabber\u object\botgs; and retrieve the \l;black box\u object\bbox; that you will find in the derelict bot factory.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/msvolca4.txt b/help/E/msvolca4.txt
new file mode 100644
index 00000000..4000a249
--- /dev/null
+++ b/help/E/msvolca4.txt
@@ -0,0 +1,13 @@
+\b;Walkthrough
+A gap in the northwest mountain leads the way to a lake of boiling lava.
+
+Just hop from one rocky island to the next. Keep checking your reactor, let it cool off completely before taking off again. The mini map will help you to figure out where the closest island is.
+
+In case of an ant attack, don't worry too much. Just take the time for your reactor to cool off, without lingering longer than necessary, and your built-in shield should do its duty. However we advise you to save the game from time to time (key Esc, and "Save"), so you will not have to start from the beginning in case of a landing in the lava lake.
+
+The bot is at the westernmost point on your map though you'll have to take a roundabout route to reach it. A \l;nuclear power cell\u object\atomic; lies nearby.
+
+You don't have to radio-control the bot back to the spaceship by the same way you came because its reactor has a greater range than yours. One or two stops may still be needed and watch out for those ants.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/msvolca5.txt b/help/E/msvolca5.txt
new file mode 100644
index 00000000..938b80b0
--- /dev/null
+++ b/help/E/msvolca5.txt
@@ -0,0 +1,11 @@
+\b;Walkthrough
+Everything is blowing up around you. You need to leave the old basecamp as quickly as possible. Just retreat the same way you came.
+
+\l;Ants\u object\ant; are fairly easy to avoid. If you're badly hit, find a quiet spot and wait until your shield has regenerated.
+
+\l;Spiders\u object\spider; are a bit tougher but also more stupid. As soon as they see you, they burst their abdomen, dying in the process. If one fragment hits you, you'll die too. One risky but efficient method to rid yourself of a spider consists in moving dangerously close and, when the spider's abdomen starts inflating, swiftly fly backwards to safety.
+
+As soon as you have reached a quiet island, you can use the \l;winged orga shooter\u object\botoj; to clear your way of hostile insects. Be careful not to lose it, otherwise the whole mission would be in vain.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/msvolca6.txt b/help/E/msvolca6.txt
new file mode 100644
index 00000000..b5b7fcb1
--- /dev/null
+++ b/help/E/msvolca6.txt
@@ -0,0 +1,9 @@
+\b;Walkthrough
+It is safer for \l;you\u object\human; to stay on the \l;spaceship\u object\base;. You may get hit a few times but not fatally.
+
+Put your new \l;winged orga shooter\u object\botoj; to good use and don't waste any time. First shoot the ants on your right, then turn clockwise around the spaceship, flying at low altitude.
+
+If you can not do it this way, place the \l;winged orga shooter\u object\botoj; on a safe place north of the spaceship, then save yourself. You can then take your time to shoot the ants one after another; they can do no harm to the spaceship and the black box.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/E/navig.txt b/help/E/navig.txt
new file mode 100644
index 00000000..63622750
--- /dev/null
+++ b/help/E/navig.txt
@@ -0,0 +1,22 @@
+\b;Navigation
+The three buttons on the upper left-hand corner of the screen allow you to navigate in the different texts of the help file:
+
+\button 30; Home
+Get back to the home page, i.e. the first page that was displayed, for example when you hit the \key;\key help;\norm; or \key;\key prog;\norm; key.
+
+\button 55; Previous
+Get back to the previous page, i.e. the page that was displayed before you clicked on a link.
+
+\button 48; Next
+Get again to the next page, after you used the "Home" or "Previous" button.
+
+\t;Remark
+When a button is gray, this means that it can not be used at this precise moment. For example, when you are in the home page, the "Home" button is gray, because it does not make sense to use it.
+
+This remark is valid for all buttons in COLOBOT.
+
+\t;Text scrolling
+If your mouse is equipped with a wheel, you can use it to scroll the text up and down. Otherwise, use the arrow keys and the scroll bar on the right-hand side of the screen.
+
+\t;Font size
+The cursor on the upper side of the screen allows you to change the font size of the text.
diff --git a/help/E/object/ant.txt b/help/E/object/ant.txt
new file mode 100644
index 00000000..87b82f40
--- /dev/null
+++ b/help/E/object/ant.txt
@@ -0,0 +1,11 @@
+\b;Ant
+\image ant 8 8;
+Ants shoot tiny corrosive balls that eventually gnaw into the protective shielding of bots and buildings, causing them to explode.
+
+\l;You\u object\human; can resist their attack much longer than most buildings and bots, and your protective shield will be restored as your wounds heal. However, if you stay too long in their range or if there are too many of them, your life is in great danger.
+
+\t;Object \l;Category\u cbot\category;
+\c;AlienAnt\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/atomic.txt b/help/E/object/atomic.txt
new file mode 100644
index 00000000..367dff0e
--- /dev/null
+++ b/help/E/object/atomic.txt
@@ -0,0 +1,15 @@
+\b;Nuclear Power Cell
+\image atomic 4 4;
+A nuclear power cell supplies the bots and some buildings with energy.
+Its capacity is 100 times that of a \l;regular power cell\u object\power;.
+
+Nuclear power cells cannot be recharged or recycled. A \l;nuclear plant\u object\nuclear; and some \l;uranium ore\u object\uranore; is needed to produce a new and fully charged nuclear power cell.
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Object \l;Category\u cbot\category;
+\c;NuclearCell\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/barrier.txt b/help/E/object/barrier.txt
new file mode 100644
index 00000000..14646cb0
--- /dev/null
+++ b/help/E/object/barrier.txt
@@ -0,0 +1,8 @@
+\b;Barrier
+The barrier is nothing more than an obstacle used in the exercises.
+
+\t;Object \l;Category\u cbot\category;
+\c;Barrier\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/base.txt b/help/E/object/base.txt
new file mode 100644
index 00000000..84577068
--- /dev/null
+++ b/help/E/object/base.txt
@@ -0,0 +1,11 @@
+\b;\button 171; Spaceship
+\image base 8 8;
+\l;Your\u object\human; means of transportation from one planet to the next, the only way to travel safely across the cosmos and accomplish your missions.
+
+In addition to yourself, the spaceship can carry bots and raw materials. Whenever a mission is completed, you must select the spaceship, then click on the command \button 28;.
+
+\t;Object \l;Category\u cbot\category;
+\c;SpaceShip\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/bbox.txt b/help/E/object/bbox.txt
new file mode 100644
index 00000000..4b4a8557
--- /dev/null
+++ b/help/E/object/bbox.txt
@@ -0,0 +1,14 @@
+\b;Black Box
+\image bbox 4 4;
+A black box is actually orange so as to be easier to identify and locate. Each \l;spaceship\u object\base; is equipped with a black box that records and stores information about the flight.
+
+A black box can also be used to leave important information. On every planet the first expedition has left a black box containing the coordinates of the planet it was heading towards next.
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Object \l;Category\u cbot\category;
+\c;BlackBox\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/botfc.txt b/help/E/object/botfc.txt
new file mode 100644
index 00000000..b95751e3
--- /dev/null
+++ b/help/E/object/botfc.txt
@@ -0,0 +1,20 @@
+\b;\button 144; Tracked Shooter
+\image botfc 8 8;
+Tracked bot equipped with a fireball cannon.
+
+The fireball cannon is an efficient weapon against most kinds of \l;enemies\u object\mother;. Use it sparingly though for it requires large amounts of energy. A \l;regular power cell\u object\power; will only allow you to shoot 4 fireball bursts.
+
+Tip : it is possible to move the mouse while shooting, so as to sweep a larger area.
+
+Tracked bots can ascend steep inclinations but they are quite slow and use a lot of energy. On flat ground for short distances, a \l;wheeled shooter\u object\botfr; is a better option. When it is possible to build \l;winged bots\u object\botfj;, these represent the best solution for long distances.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the fireball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;TrackedShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/botfj.txt b/help/E/object/botfj.txt
new file mode 100644
index 00000000..b852517d
--- /dev/null
+++ b/help/E/object/botfj.txt
@@ -0,0 +1,22 @@
+\b;\button 145; Winged Shooter
+\image botfj 8 8;
+Jet propelled flying bot equipped with a fireball cannon.
+
+The fireball cannon is an efficient weapon against most kinds of \l;enemies\u object\mother;. Use it sparingly though for it requires large amounts of energy. A \l;regular power cell\u object\power; will only allow you to shoot 4 fireball bursts.
+
+Tip : it is possible to move the mouse while shooting, so as to sweep a larger area.
+
+The display at the bottom of your screen indicates the temperature of the reactor. Keep an eye on it. If the reactor overheats, the engine will stop and the bot will crash.
+
+Winged bots can fly across natural obstacles such as mountains or lakes but their energy supply is used up quickly. They're slow on the ground. To cover a short distance that will not call for flying, it is recommended to use a \l;wheeled shooter\u object\botfr; instead.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;jet\u cbot\jet;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the fireball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WingedShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/botfr.txt b/help/E/object/botfr.txt
new file mode 100644
index 00000000..43cea003
--- /dev/null
+++ b/help/E/object/botfr.txt
@@ -0,0 +1,20 @@
+\b;\button 143; Wheeled Shooter
+\image botfr 8 8;
+Wheeled bot equipped with a fireball cannon.
+
+The fireball cannon is an efficient weapon against most kinds of \l;enemies\u object\mother;. Use it sparingly though for it requires large amounts of energy. A \l;regular power cell\u object\power; will only allow you to shoot 4 fireball bursts.
+
+Tip : it is possible to move the mouse while shooting, so as to sweep a larger area.
+
+Wheels constitute a standard, fast and energy-saving mode of propulsion, which is perfectly adapted for a relatively flat terrain. Whenever the terrain gets sloped, it is advised to use a \l;winged shooter\u object\botfj; instead, or, if this is impossible, a \l;tracked shooter\u object\botfc;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the fireball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WheeledShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/botfs.txt b/help/E/object/botfs.txt
new file mode 100644
index 00000000..5a5c2728
--- /dev/null
+++ b/help/E/object/botfs.txt
@@ -0,0 +1,20 @@
+\b;\button 151; Legged Shooter
+\image botfs 8 8;
+Ant-legged creeping bot equipped with a fireball cannon.
+
+The fireball cannon is an efficient weapon against most kinds of \l;enemies\u object\mother;. Use it sparingly though for it requires large amounts of energy. A \l;regular power cell\u object\power; will only allow you to shoot 4 fireball bursts.
+
+Tip : it is possible to move the mouse while shooting, so as to sweep a larger area.
+
+A moving legged shooter uses up half as much energy as a \l;wheeled shooter\u object\botfr;. A legged bot is also perfectly adapted to climb the steepest slopes.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the fireball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;LeggedShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/botgc.txt b/help/E/object/botgc.txt
new file mode 100644
index 00000000..8abb41c7
--- /dev/null
+++ b/help/E/object/botgc.txt
@@ -0,0 +1,33 @@
+\b;\button 138; Tracked Grabber
+\image botgc 8 8;
+Tracked bot equipped with an operating arm.
+
+\button 32; Grabs an object or lays it down again, at a position that is determined by one of the following options :
+\button 33; The object is lying in front of the bot, on the ground or on the back of a second bot.
+\button 35; The object is the bot's own power cell.
+\button 34; The object is lying behind the bot, on the ground.
+
+The following objects can be transported :
+o \l;Titanium ore\u object\titanore;.
+o \l;Uranium ore\u object\uranore;.
+o \l;Cube of titanium\u object\titan;.
+o \l;Regular power cell\u object\power;.
+o \l;Nuclear power cell\u object\atomic;.
+o \l;Black box\u object\bbox;.
+o \l;Keys A, B, C, and D\u object\key;.
+o \l;Organic matter\u object\bullet;.
+
+Tracked bots can ascend steep inclinations but they are quite slow and use much energy. On flat ground for short distances, a \l;wheeled grabber\u object\botgr; is a better option. When it is possible to build \l;winged bots\u object\botgj;, these represent the best solution for long distances.
+
+A grabber won't function underwater. What you'll need instead is a \l;subber\u object\botsub;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the operating arm, use \c;\l;grab\u cbot\grab;\n; and \c;\l;drop\u cbot\drop;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;TrackedGrabber\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/botgj.txt b/help/E/object/botgj.txt
new file mode 100644
index 00000000..f237bfaf
--- /dev/null
+++ b/help/E/object/botgj.txt
@@ -0,0 +1,35 @@
+\b;\button 139; Winged Grabber
+\image botgj 8 8;
+Jet propelled flying bot equipped with an operating arm.
+
+\button 32; Grabs an object or lays it down again, at a position that is determined by one of the following options :
+\button 33; The object is lying in front of the bot, on the ground or on the back of a second bot.
+\button 35; The object is the bot's own power cell.
+\button 34; The object is lying behind the bot, on the ground.
+
+The following objects can be transported :
+o \l;Titanium ore\u object\titanore;.
+o \l;Uranium ore\u object\uranore;.
+o \l;Cube of titanium\u object\titan;.
+o \l;Regular power cell\u object\power;.
+o \l;Nuclear power cell\u object\atomic;.
+o \l;Black box\u object\bbox;.
+o \l;Keys A, B, C, and D\u object\key;.
+o \l;Organic matter\u object\bullet;.
+
+The display at the bottom of your screen indicates the temperature of the reactor. Keep an eye on it. If the reactor overheats, the engine will stop and the bot will crash.
+
+Winged bots can fly across natural obstacles such as mountains or lakes but their energy supply is used up quickly. They're slow on the ground. To cover a short distance that will not call for flying, it is recommended to use a \l;wheeled grabber\u object\botgr; instead.
+
+A grabber won't function underwater. What you'll need instead is a \l;subber\u object\botsub;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the operating arm, use \c;\l;grab\u cbot\grab;\n; and \c;\l;drop\u cbot\drop;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WingedGrabber\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/botgr.txt b/help/E/object/botgr.txt
new file mode 100644
index 00000000..8dcc5991
--- /dev/null
+++ b/help/E/object/botgr.txt
@@ -0,0 +1,33 @@
+\b;\button 137; Wheeled Grabber
+\image botgr 8 8;
+Wheeled bot equipped with an operating arm.
+
+\button 32; Grabs an object or lays it down again, at a position that is determined by one of the following options :
+\button 33; The object is lying in front of the bot, on the ground or on the back of a second bot.
+\button 35; The object is the bot's own power cell.
+\button 34; The object is lying behind the bot, on the ground.
+
+The following objects can be transported :
+o \l;Titanium ore\u object\titanore;.
+o \l;Uranium ore\u object\uranore;.
+o \l;Converted titanium\u object\titan;.
+o \l;Regular power cell\u object\power;.
+o \l;Nuclear power cell\u object\atomic;.
+o \l;Black box\u object\bbox;.
+o \l;Keys A, B, C, and D\u object\key;.
+o \l;Organic matter\u object\bullet;.
+
+Wheels constitute a standard, fast and energy-saving mode of propulsion, which is perfectly adapted for a relatively flat terrain. Whenever the terrain gets sloped, it is advised to use a \l;winged shooter\u object\botfj; instead, or, if this is impossible, a \l;tracked shooter\u object\botfc;.
+
+A grabber won't function underwater. What you'll need instead is a \l;subber\u object\botsub;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the operating arm, use \c;\l;grab\u cbot\grab;\n; and \c;\l;drop\u cbot\drop;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WheeledGrabber\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/botgs.txt b/help/E/object/botgs.txt
new file mode 100644
index 00000000..b839c9fb
--- /dev/null
+++ b/help/E/object/botgs.txt
@@ -0,0 +1,34 @@
+\b;\button 150; Legged Grabber
+\image botgs 8 8;
+Ant-legged creeping bot equipped with an operating arm.
+
+\button 32; Grabs an object or lays it down again, at a position that is determined by one of the following options :
+\button 33; The object is lying in front of the bot, on the ground or on the back of a second bot.
+\button 35; The object is the bot's own power cell.
+\button 34; The object is lying behind the bot, on the ground.
+
+The following objects can be transported :
+o \l;Titanium ore\u object\titanore;.
+o \l;Uranium ore\u object\uranore;.
+o \l;Converted titanium\u object\titan;.
+o \l;Regular power cell\u object\power;.
+o \l;Nuclear power cell\u object\atomic;.
+o \l;Black box\u object\bbox;.
+o \l;Keys A, B, C, and D\u object\key;.
+o \l;Organic matter\u object\bullet;.
+
+A moving legged grabber uses up half as much energy as a \l;wheeled grabber\u object\botgr;. A legged bot is also perfectly adapted to climb the steepest slopes.
+
+A grabber won't function underwater. What you'll need instead is a \l;subber\u object\botsub;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the operating arm, use \c;\l;grab\u cbot\grab;\n; and \c;\l;drop\u cbot\drop;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;LeggedGrabber\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
+
diff --git a/help/E/object/botoc.txt b/help/E/object/botoc.txt
new file mode 100644
index 00000000..43fecf54
--- /dev/null
+++ b/help/E/object/botoc.txt
@@ -0,0 +1,18 @@
+\b;\button 154; Tracked Orga Shooter
+\image botoc 8 8;
+Tracked bot equipped with an orgaball cannon.
+
+The orgaball cannon is more effective than the \l;fireball cannon\u object\botfc;. It shoots small spheres of corrosive \l;organic matter\u object\bullet;. A \l;regular power cell\u object\power; will allow you to shoot 11 orgaball bursts.
+
+Tracked bots can ascend steep inclinations but they are quite slow and use a lot of energy. On flat ground for short distances, a \l;wheeled orga shooter\u object\botor; is a better option. When it is possible to build \l;winged bots\u object\botoj;, these represent the best solution for long distances.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the orgaball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;TrackedOrgaShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/botoj.txt b/help/E/object/botoj.txt
new file mode 100644
index 00000000..70f7b99d
--- /dev/null
+++ b/help/E/object/botoj.txt
@@ -0,0 +1,20 @@
+\b;\button 155; Winged Orga Shooter
+\image botoj 8 8;
+Jet propelled flying bot equipped with an orgaball cannon.
+
+The orgaball cannon is more effective than the \l;fireball cannon\u object\botfj;. It shoots small spheres of corrosive \l;organic matter\u object\bullet;. A \l;regular power cell\u object\power; will allow you to shoot 11 orgaball bursts.
+
+The display at the bottom of your screen indicates the temperature of the reactor. Keep an eye on it. If the reactor overheats, the engine will stop and the bot will crash.
+
+Winged bots can fly across natural obstacles such as mountains or lakes but their energy supply is used up quickly. They're slow on the ground. To cover a short distance that will not call for flying, it is recommended to use a \l;wheeled orga shooter\u object\botor; instead.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;jet\u cbot\jet;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the orgaball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WingedOrgaShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/botor.txt b/help/E/object/botor.txt
new file mode 100644
index 00000000..8da2ce7c
--- /dev/null
+++ b/help/E/object/botor.txt
@@ -0,0 +1,19 @@
+\b;\button 153; Wheeled Orga Shooter
+\image botor 8 8;
+Wheeled bot equipped with an orgaball cannon.
+
+The orgaball cannon is more effective than the \l;fireball cannon\u object\botfr;. It shoots small spheres of corrosive \l;organic matter\u object\bullet;. A \l;regular power cell\u object\power; will allow you to shoot 11 orgaball bursts.
+
+Wheels constitute a standard, fast and energy-saving mode of propulsion, which is perfectly adapted for a relatively flat terrain. Whenever the terrain gets sloped, it is advised to instead use a \l;winged orga shooter\u object\botoj;, or, if this is impossible, a \l;tracked orga shooter\u object\botoc;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the orgaball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WheeledOrgaShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
+
diff --git a/help/E/object/botos.txt b/help/E/object/botos.txt
new file mode 100644
index 00000000..a1ff6d09
--- /dev/null
+++ b/help/E/object/botos.txt
@@ -0,0 +1,18 @@
+\b;\button 156; Legged Orga Shooter
+\image botos 8 8;
+Ant-legged creeping bot equipped with an orgaball cannon.
+
+The orgaball cannon is more effective than the \l;fireball cannon\u object\botfs;. It shoots small spheres of corrosive \l;organic matter\u object\bullet;. A \l;regular power cell\u object\power; will allow you to shoot 11 orgaball bursts.
+
+A moving legged orga shooter uses up half as much energy as a \l;wheeled orga shooter\u object\botor;. A legged bot is also perfectly adapted to climb the steepest slopes.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the orgaball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;LeggedOrgaShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/botphaz.txt b/help/E/object/botphaz.txt
new file mode 100644
index 00000000..232463e1
--- /dev/null
+++ b/help/E/object/botphaz.txt
@@ -0,0 +1,14 @@
+\b;\button 147; Phazer Shooter
+\image botphaz 8 8;
+Tracked bot equipped with a very powerful phazer cannon, efficient against most kinds of enemies. When you aim upward, it can shoot up to 60 meters. It is the only weapon that can kill the \l;Alien Queen\u object\mother;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the phazer cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;PhazerShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/botrecy.txt b/help/E/object/botrecy.txt
new file mode 100644
index 00000000..68d06f26
--- /dev/null
+++ b/help/E/object/botrecy.txt
@@ -0,0 +1,14 @@
+\b;\button 148; Recycler
+\image botrecy 8 8;
+Tracked bot designed to convert a \l;derelict bot\u object\wreck; back into a reusable \l;titanium cube\u object\titan;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the recycling of a derelict bot, use \c;\l;recycle\u cbot\recycle;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;RecyclerBot\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/botsc.txt b/help/E/object/botsc.txt
new file mode 100644
index 00000000..5d6424ea
--- /dev/null
+++ b/help/E/object/botsc.txt
@@ -0,0 +1,20 @@
+\b;\button 141; Tracked Sniffer
+\image botsc 8 8;
+Tracked bot equipped to prospect the geological structure of the subsoil. Whenever it locates something of use, the sniffer lays down the following marks:
+
+- a \l;red cross\u object\stonspot; -> \l;titanium ore\u object\titanore;.
+- a \l;yellow circle\u object\uranspot; -> \l;uranium ore\u object\uranore;.
+- a \l;green cross\u object\enerspot; -> energy deposit, useful for a \l;power station\u object\station; or a \l;power plant\u object\energy;.
+
+Tracked bots can ascend steep inclinations but they are quite slow and use a lot of energy. On flat ground for short distances, a \l;wheeled sniffer\u object\botsr; is a better option. When it is possible to build \l;winged bots\u object\botsj;, these represent the best solution for long distances.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the sniffing arm, use \c;\l;sniff\u cbot\sniff;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;TrackedSniffer\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/botshld.txt b/help/E/object/botshld.txt
new file mode 100644
index 00000000..d1bcdaa8
--- /dev/null
+++ b/help/E/object/botshld.txt
@@ -0,0 +1,18 @@
+\b;\button 157; Shielder
+\image botshld 8 8;
+Tracked bot designed to protect and defend against all \l;enemy\u object\mother; attacks within a perimeter of 10 to 25 meters. The individual shields of bots and buildings are re-energized through the shielder's defensive actions. This bot is the only way to get through narrow passages adorned with poisonous green mushrooms.
+
+A \l;regular power cell\u object\power; allows for a 20-second activity span with a radius of 25 meters, much too short in most cases. A \l;nuclear power cell\u object\atomic; is of course more suited to this bot.
+
+The energy consumption is proportional to the radius of the protective sphere. With a radius of 10 meters, the bot can work 2.5 times longer than with the maximum radius of 25 meters.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the deployment of the shield, use \c;\l;shield\u cbot\shield;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;Shielder\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/botsj.txt b/help/E/object/botsj.txt
new file mode 100644
index 00000000..9085244f
--- /dev/null
+++ b/help/E/object/botsj.txt
@@ -0,0 +1,22 @@
+\b;\button 142; Winged Sniffer
+\image botsj 8 8;
+Jet propelled flying bot equipped to prospect the geological structure of the subsoil. Whenever it locates something of use, the sniffer lays down the following marks:
+
+- a \l;red cross\u object\stonspot; -> \l;titanium ore\u object\titanore;.
+- a \l;yellow circle\u object\uranspot; -> \l;uranium ore\u object\uranore;.
+- a \l;green cross\u object\enerspot; -> energy deposit, useful for a \l;power station\u object\station; or a \l;power plant\u object\energy;.
+
+The display at the bottom of your screen indicates the temperature of the reactor. Keep an eye on it. If the reactor overheats, the engine stops and the bot crashes.
+
+Winged bots can fly across natural obstacles such as mountains or lakes but their energy supply uses up quickly. They're slow on the ground. To cover a short distance that will not call for flying, it is recommended to use a \l;wheeled sniffer\u object\botsr; instead.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;jet\u cbot\jet;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the sniffing arm, use \c;\l;sniff\u cbot\sniff;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WingedSniffer\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/botsr.txt b/help/E/object/botsr.txt
new file mode 100644
index 00000000..9e5609c8
--- /dev/null
+++ b/help/E/object/botsr.txt
@@ -0,0 +1,20 @@
+\b;\button 140; Wheeled Sniffer
+\image botsr 8 8;
+Wheeled bot equipped to prospect the geological structure of the subsoil. Whenever it locates something of use, the sniffer lays down the following marks:
+
+- a \l;red cross\u object\stonspot; -> \l;titanium ore\u object\titanore;.
+- a \l;yellow circle\u object\uranspot; -> \l;uranium ore\u object\uranore;.
+- a \l;green cross\u object\enerspot; -> energy deposit, useful for a \l;power station\u object\station; or a \l;power plant\u object\energy;.
+
+Wheels constitute a standard, fast and energy-saving mode of propulsion, which is perfectly adapted for a relatively flat terrain. Whenever the terrain gets sloped, it is advised to use a \l;winged sniffer\u object\botsj; instead, or, if this is impossible, a \l;tracked sniffer\u object\botsc;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the sniffing arm, use \c;\l;sniff\u cbot\sniff;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WheeledSniffer\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/botss.txt b/help/E/object/botss.txt
new file mode 100644
index 00000000..b2bb5b53
--- /dev/null
+++ b/help/E/object/botss.txt
@@ -0,0 +1,20 @@
+\b;\button 152; Legged Sniffer
+\image botss 8 8;
+Ant-legged creeping bot equipped to prospect the geological structure of the subsoil. Whenever it locates something of use, the sniffer lays down the following marks:
+
+- a \l;red cross\u object\stonspot; -> \l;titanium ore\u object\titanore;.
+- a \l;yellow circle\u object\uranspot; -> \l;uranium ore\u object\uranore;.
+- a \l;green cross\u object\enerspot; -> energy deposit, useful for a \l;power station\u object\station; or a \l;power plant\u object\energy;.
+
+A moving legged shooter uses up half as much energy as a \l;wheeled sniffer\u object\botsr;. A legged bot is also perfectly adapted to climb the steepest slopes.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the sniffing arm, use \c;\l;sniff\u cbot\sniff;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;LeggedSniffer\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/botsub.txt b/help/E/object/botsub.txt
new file mode 100644
index 00000000..4b9f8959
--- /dev/null
+++ b/help/E/object/botsub.txt
@@ -0,0 +1,16 @@
+\b;\button 149; Subber
+\image botsub 8 8;
+Amphibious tracked bot equipped with an operating claw. The subber is the only bot capable of moving and running operations underwater.
+
+It is best to check the \l;power cell\u object\power; readings prior to immersion since replacing or recharging it underwater is impossible. The subber can only pick up objects from the ground, as opposed to, for example, a battery from the back of another bot.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the operating claw, use \c;\l;grab\u cbot\grab;\n; and \c;\l;drop\u cbot\drop;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;Subber\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/bottarg.txt b/help/E/object/bottarg.txt
new file mode 100644
index 00000000..4807d784
--- /dev/null
+++ b/help/E/object/bottarg.txt
@@ -0,0 +1,11 @@
+\b;\button 173; Target Bot
+\image bottarg 8 8;
+Wheeled bot intended solely for target practice. It is autonomous and its trajectory is dependant upon the nature of the exercise.
+
+Note that target bots, loaded as they are with \l;TNT\u object\tnt;, are extremely sensitive to shocks.
+
+\t;Object \l;Category\u cbot\category;
+\c;TargetBot\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/bottr.txt b/help/E/object/bottr.txt
new file mode 100644
index 00000000..65f185c6
--- /dev/null
+++ b/help/E/object/bottr.txt
@@ -0,0 +1,12 @@
+\b;\button 158; Practice Bot
+\image bottr 8 8;
+Wheeled bot intended solely for training and practice. Its only purpose is to help you get accustomed to the programming of the bots' various ground movements.
+
+\t;Instructions
+To program the bot's movements, use the following commands: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;PracticeBot\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/bottump.txt b/help/E/object/bottump.txt
new file mode 100644
index 00000000..8398f770
--- /dev/null
+++ b/help/E/object/bottump.txt
@@ -0,0 +1,18 @@
+\b;\button 146; Thumper
+\image bottump 8 8;
+Tracked bot designed to hit the ground with enormous force. The purpose of the thumping is to turn \l;ants\u object\ant; and \l;spiders\u object\spider; belly up within a radius of 100 meters. An insect on its back is not dead but will struggle to get right side up again. After approximately 60 seconds of effort, it will usually succeed.
+
+To visualize the zone of impact, hit the button \button 41;. Little red dots outline the circular zone for 20 seconds.
+
+The bot uses up a large amount of power. A thump will drain 2/5ths of a \l;regular power cell\u object\power;.
+
+\t;Instructions
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the thumping, use \c;\l;thump\u cbot\thump;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;Thumper\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/bullet.txt b/help/E/object/bullet.txt
new file mode 100644
index 00000000..5df1efe5
--- /dev/null
+++ b/help/E/object/bullet.txt
@@ -0,0 +1,12 @@
+\b;Organic Matter
+\image bullet 4 4;
+The organic matter is the insects' secretion. \l;Wasps\u object\wasp; often use balls of organic matter to bombard you. You should perhaps try to get hold of some since it could allow you, given the necessary \l;analysis\u object\labo;, to discover new and strange technologies that will improve the efficiency of your bots.
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Object \l;Category\u cbot\category;
+\c;OrgaMatter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/captor.txt b/help/E/object/captor.txt
new file mode 100644
index 00000000..d13df6f7
--- /dev/null
+++ b/help/E/object/captor.txt
@@ -0,0 +1,25 @@
+\b;\button 174; Power Captor
+\image captor 8 8;
+The power captor acts as both a lightning conductor and a power converter.
+It offers protection within a radius of 50 meters against the perilous lightning bolts of magnetic storms. Additionally, when the captor is hit by lightning, all bots and \l;power cells\u object\power; placed underneath, with the exception of the \l;nuclear power cells\u object\atomic;, are recharged.
+
+To visualize the zone shielded by a power captor, select it then hit the button \button 41;. Red dots outline the circular zone for 20 seconds.
+
+In the vastness of space, few planets suffer from magnetic storms. Among the ones you'll be visiting, only Orpheon is subject to this phenomenon.
+
+Note that your \l;spaceship\u object\base; can also act as a lightning conductor. However it will not recharge power cells.
+
+\t;Requirements for building
+Any flat surface of at least 10 meters wide.
+
+\t;Power source
+Lightning bolts.
+
+\t;Duration of operation
+1 second.
+
+\t;Object \l;Category\u cbot\category;
+\c;PowerCaptor\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/convert.txt b/help/E/object/convert.txt
new file mode 100644
index 00000000..49836688
--- /dev/null
+++ b/help/E/object/convert.txt
@@ -0,0 +1,24 @@
+\b;\button 162; Converter
+\image convert 8 8;
+This building was designed to convert chunks of \l;titanium ore\u object\titanore; into usable \l;titanium cubes\u object\titan;. All \l;you\u object\human; need to do is place a chunk at the center of the platform and step back. The converter takes care of the rest.
+
+\t;Requirements for building
+Any flat surface of at least 6 meters wide.
+
+\t;Input
+Titanium ore.
+
+\t;Output
+Titanium.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+15 seconds.
+
+\t;Object \l;Category\u cbot\category;
+\c;Converter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/derrick.txt b/help/E/object/derrick.txt
new file mode 100644
index 00000000..4eea1369
--- /dev/null
+++ b/help/E/object/derrick.txt
@@ -0,0 +1,29 @@
+\b;\button 161; Derrick
+\image derrick 8 8;
+The derrick is intended for the extraction of raw materials.
+
+In order to determine the best site on which to erect a derrick, a \l;sniffer\u object\botsr; should be used to prospect the subsoil. The marks it lays down provide information about the specifics of what the derrick will be able to extract:
+
+- a \l;red cross\u object\stonspot; -> \l;titanium ore\u object\titanore;.
+- a \l;yellow circle\u object\uranspot; -> \l;uranium ore\u object\uranore;.
+
+\t;Requirements for building
+Any flat and geologically adequate surface of at least 2.5 meters wide.
+
+\t;Input
+Titanium or uranium ore in the subsoil.
+
+\t;Output
+Chunks of titanium or uranium ore.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+10 seconds for titanium and 30 for uranium.
+
+\t;Object \l;Category\u cbot\category;
+\c;Derrick\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/egg.txt b/help/E/object/egg.txt
new file mode 100644
index 00000000..d3e11e20
--- /dev/null
+++ b/help/E/object/egg.txt
@@ -0,0 +1,8 @@
+\b;Alien Egg
+The alien eggs are laid by the \l;Alien Queen\u object\mother;. After a short time, they will hatch and an \l;ant\u object\ant;, a \l;wasp\u object\wasp;, a \l;spider\u object\spider; or a \l;worm\u object\worm; will come out.
+
+\t;Object \l;Category\u cbot\category;
+\c;AlienEgg\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/energy.txt b/help/E/object/energy.txt
new file mode 100644
index 00000000..45a695bf
--- /dev/null
+++ b/help/E/object/energy.txt
@@ -0,0 +1,28 @@
+\b;\button 167; Power Plant
+\image energy 8 8;
+The power plant is a \l;power cell\u object\power; factory. It transforms a \l;titanium cube\u object\titan; into a regular power cell fully charged and ready for use.
+
+A power plant requires some energy in the subsoil. If the satellite report says that energy is available only at some places, you will need a \l;sniffer bot\u object\botsr; to prospect the subsoil. The marks it lays down provide information about the specifics of its findings: a \l;green cross\u object\enerspot; means that there is an energy deposit at this location beneath the surface, which is indispensable for the construction of a power plant or a \l;power station\u object\station;.
+
+If the large power cell at the base of the plant remains red after the construction is completed, this means that the site is not geologically adequate.
+
+\t;Requirements for building
+Any flat and geologically adequate surface of at least 4 meters wide.
+
+\t;Input
+Titanium.
+
+\t;Output
+Regular power cell.
+
+\t;Power source
+Subsoil energy.
+
+\t;Duration of operation
+12 seconds.
+
+\t;Object \l;Category\u cbot\category;
+\c;PowerPlant\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/enerspot.txt b/help/E/object/enerspot.txt
new file mode 100644
index 00000000..44bf6235
--- /dev/null
+++ b/help/E/object/enerspot.txt
@@ -0,0 +1,17 @@
+\b;Underground Energy Deposit
+\image enerspot 4 4;
+Whenever a \l;sniffer\u object\botsr; uncovers a source of energy in the subsoil, it lays down a green cross. The following buildings can be erected nearby :
+
+o \l;Power station\u object\station;
+o \l;Power plant\u object\energy;
+
+In order to prospect the subsoil you need a \l;sniffer bot\u object\botsr;, which can also discover \l;titanium ore\u object\titanore; deposits (indicated by a \l;red cross\u object\stonspot;) or \l;uranium ore\u object\uranore; deposits (indicated by a \l;yellow circle\u object\uranspot;).
+
+\t;Transport
+Impossible.
+
+\t;Object \l;Category\u cbot\category;
+\c;EnergySite\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/exchange.txt b/help/E/object/exchange.txt
new file mode 100644
index 00000000..2cb763a7
--- /dev/null
+++ b/help/E/object/exchange.txt
@@ -0,0 +1,31 @@
+\b;\button 172; Information Exchange Post
+\image info 8 8;
+This building stores digital information. A post can contain up to 10 pieces of information, each one referenced by a name.
+For example, a post can contain 3 informations¦:\c;
+\tab;"Position.x" 23.45
+\tab;"Position.y" -102.70
+\tab;"Quantity" 3.00
+\n;
+To put new information, you must execute the command \c;\l;send\u cbot\send;\n;.
+To read information from a post, you must execute the command \c;\l;receive\u cbot\receive;\n;.
+
+\t;Requirements for building
+Any flat surface of at least 2.5 meters wide.
+
+\t;Input
+None.
+
+\t;Output
+Digital information.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+1 second.
+
+\t;Object \l;Category\u cbot\category;
+\c;ExchangePost\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/factory.txt b/help/E/object/factory.txt
new file mode 100644
index 00000000..cc86ca11
--- /dev/null
+++ b/help/E/object/factory.txt
@@ -0,0 +1,33 @@
+\b;\button 160; Bot Factory
+\image factory 8 8;
+This building is intended for the manufacturing of bots using \l;titanium\u object\titan;.
+
+1) Place the titanium cube inside the factory.
+2) Step back out.
+3) Select the factory.
+4) Click on the button showing the diagram of the bot you want the factory to assemble (e.g. \button 137; for a \l;wheeled grabber\u object\botgr;).
+
+The finished bot does not include an onboard \l;power cell\u object\power;. You'll need to supply it with one for it to be able to leave the factory.
+
+The list of feasible bots will depend upon the research your \l;research center\u object\research; has completed at this time.
+
+\t;Requirements for building
+Any flat surface of at least 7.5 meters wide.
+
+\t;Input
+Titanium.
+
+\t;Output
+Completed bot.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+15 seconds.
+
+\t;Object \l;Category\u cbot\category;
+\c;BotFactory\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/flag.txt b/help/E/object/flag.txt
new file mode 100644
index 00000000..4740d2ff
--- /dev/null
+++ b/help/E/object/flag.txt
@@ -0,0 +1,22 @@
+\b;Colored Flag
+\image flag 4 4;
+The colored flags are helpful to mark strategic locations or positions that \l;you\u object\human; will need to find again. Flags appear on the mini-map in the shape of a cross of the same color as the flag.
+
+Use the buttons \button 118; and \button 119; to plant and remove flags, the colors of which you can choose with the buttons above.
+
+When your mini-map is out of order, the fact that flags follow the direction of the wind can help you to find your way and not to walk around in circles.
+
+When programming, you can use flags to give a bot a reference to a certain position: the instruction \c;\l;radar\u cbot\radar;\n; allows bots to know the exact position of a flag of a given color.
+
+\t;Transport
+Impossible.
+
+\t;Object \l;Category\u cbot\category;
+\c;BlueFlag\n;
+\c;RedFlag\n;
+\c;GreenFlag\n;
+\c;YellowFlag\n;
+\c;VioletFlag\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/goal.txt b/help/E/object/goal.txt
new file mode 100644
index 00000000..d59fa12f
--- /dev/null
+++ b/help/E/object/goal.txt
@@ -0,0 +1,8 @@
+\b;Finishing Pad
+The finishing pad is an objective to be reached in some exercises.
+
+\t;Object \l;Category\u cbot\category;
+\c;GoalArea\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/human.txt b/help/E/object/human.txt
new file mode 100644
index 00000000..399384af
--- /dev/null
+++ b/help/E/object/human.txt
@@ -0,0 +1,19 @@
+\b;\button 136; Astronaut
+\image human 8 8;
+The astronaut is you within the game.
+
+If you die, the mission immediately fails.
+
+You can construct buildings with the help of the neutron gun holstered to your survival kit. The survival kit allows you, in most missions, to fly, thanks to the reactor placed underneath, or to swim with no time limit. You can carry most objects but the weight will slow down your movements considerably. Flying, swimming and walking underwater are also made impossible if you are carrying an object. The use of a \l;grabber\u object\botgr; or a \l;subber\u object\botsub; is advised for tasks such as these.
+
+You cannot carry \l;uranium ore\u object\uranore; because of the risks attached to radioactivity.
+
+A special button \button 111; allows you to ensure that the ground around you is flat. This is important since building is only possible on a flat surface. A flat surface is designated green while a sloping one is red.
+
+A button \button 118; allows you to mark a location with \l;flags\u object\flag; of various colors. This can help you not to get lost, to find important positions again, or to indicate a position to a bot. 5 flags of 5 different colors are at your disposal. You can remove a flag by using the next button \button 119; and store it for further use.
+
+\t;Object \l;Category\u cbot\category;
+\c;Me\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/huston.txt b/help/E/object/huston.txt
new file mode 100644
index 00000000..8bcaa64e
--- /dev/null
+++ b/help/E/object/huston.txt
@@ -0,0 +1,11 @@
+\b;\button 176; Mission Control
+\image huston 8 8;
+Earth control center for all \l;your\u object\human; space missions. Though still named after the well-known mission control of the old days, "Houston" is actually located in the middle of the Nevada Desert, the new center for space exploration activities.
+
+The Mission Control Center watches over you day and night, and a whole team of scientists and engineers are working hard trying to find a solution to all the problems that you encounter.
+
+\t;Object \l;Category\u cbot\category;
+\c;Houston\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/key.txt b/help/E/object/key.txt
new file mode 100644
index 00000000..e21d292f
--- /dev/null
+++ b/help/E/object/key.txt
@@ -0,0 +1,17 @@
+\b;Keys A, B, C and D
+\image key 4 4;
+The keys give \l;you\u object\human; access to the \l;vault\u object\safe;. You'll need 4 of them.
+
+o Key A, blue and triangle-shaped
+o Key B, red and pentagon-shaped
+o Key C, green and shaped like a 6-pointed star
+o Key D, yellow and circular
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Objects \l;Category\u cbot\category;
+\c;KeyA\n;, \c;KeyB\n;, \c;KeyC\n; and \c;KeyD\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/labo.txt b/help/E/object/labo.txt
new file mode 100644
index 00000000..d6a03462
--- /dev/null
+++ b/help/E/object/labo.txt
@@ -0,0 +1,24 @@
+\b;\button 166; Autolab
+\image labo 8 8;
+The lab is intended for the analysis of \l;organic matter\u object\bullet;. It will help \l;you\u object\human; become familiar with the insects' very own technology and perhaps even use it to your advantage. Place a chunk of \l;organic matter\u object\bullet; on the platform, select the lab, and click the button corresponding to the desired research program.
+
+\t;Requirements for building
+Any flat surface of at least 6 meters wide.
+
+\t;Input
+Organic matter.
+
+\t;Output
+New and improved technologies.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+20 seconds.
+
+\t;Object \l;Category\u cbot\category;
+\c;AutoLab\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/lrv.txt b/help/E/object/lrv.txt
new file mode 100644
index 00000000..e4271afc
--- /dev/null
+++ b/help/E/object/lrv.txt
@@ -0,0 +1,9 @@
+\b;Apollo Lunar Roving Vehicle
+
+
+
+\c;< no archive picture available >\n;
+
+
+
+The Lunar Jeep (LRV) was brought to the moon on July 30th 1971 by the astronauts David Scott and Jim Irwin from Apollo mission 15. Its batteries are still partly charged, which allows you to remote control it. But this old-fashioned technology will be of no use to you.
diff --git a/help/E/object/mine.txt b/help/E/object/mine.txt
new file mode 100644
index 00000000..6da1b95c
--- /dev/null
+++ b/help/E/object/mine.txt
@@ -0,0 +1,14 @@
+\b;Mine
+\image mine 8 8;
+Mines were a defensive weapons system used by the first expedition. Because of the dangers this system causes for the mission itself, they are no longer used in your expedition. In some exercises mines are used to learn how to avoid obstacles. There is no way to remove them or to create new ones.
+
+With a \l;practice bot\u object\bottr;, don't get any closer than 2 meters to the position given by the instruction \l;radar\u cbot\radar;.
+
+\t;Transport
+Impossible.
+
+\t;Object \l;Category\u cbot\category;
+\c;Mine\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/mother.txt b/help/E/object/mother.txt
new file mode 100644
index 00000000..bb26c86a
--- /dev/null
+++ b/help/E/object/mother.txt
@@ -0,0 +1,15 @@
+\b;Alien Queen
+\image mother 8 8;
+This huge insect is the mother of them all. It lays \l;eggs\u object\egg; and from these eggs will hatch all the various kinds of insects \l;you\u object\human;'re likely to encounter. All of them are extremely hazardous to yourself and your mission. The queen's protective shell is particularly resistant to attack.
+
+It gives birth to the following insects :
+o \l;ants\u object\ant;
+o \l;spiders\u object\spider;
+o \l;wasps\u object\wasp;
+o \l;worms\u object\worm;
+
+\t;Object \l;Category\u cbot\category;
+\c;AlienQueen\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/nest.txt b/help/E/object/nest.txt
new file mode 100644
index 00000000..c14e16f2
--- /dev/null
+++ b/help/E/object/nest.txt
@@ -0,0 +1,8 @@
+\b;Nest
+The alien nest is an odd structure out of which \l;organic matter\u object\bullet; erupts on a regular basis. \l;Wasps\u object\wasp; visit nests regularly to collect ammunition that they will use to bombard your bots, buildings and yourself.
+
+\t;Object \l;Category\u cbot\category;
+\c;AlienNest\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/nuclear.txt b/help/E/object/nuclear.txt
new file mode 100644
index 00000000..6d06b3f3
--- /dev/null
+++ b/help/E/object/nuclear.txt
@@ -0,0 +1,24 @@
+\b;\button 170; Nuclear Plant
+\image nuclear 8 8;
+The nuclear plant is a \l;nuclear power cell\u object\atomic; factory. It transforms a chunk of \l;uranium ore\u object\uranore; into a \l;nuclear power cell\u object\atomic; fully charged and ready for use.
+
+\t;Requirements for building
+Any flat surface of at least 10 meters wide.
+
+\t;Input
+Uranium ore.
+
+\t;Output
+Nuclear power cell.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+30 seconds.
+
+\t;Object \l;Category\u cbot\category;
+\c;NuclearPlant\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/power.txt b/help/E/object/power.txt
new file mode 100644
index 00000000..03e2bc2b
--- /dev/null
+++ b/help/E/object/power.txt
@@ -0,0 +1,16 @@
+\b;Regular Power Cell
+\image power 4 4;
+A power cell supplies the bots and a few buildings with energy.
+
+An entirely red power cell is empty. The green section indicates the remaining capacity. A power cell can be recharged using a \l;power station\u object\station;. A \l;power plant\u object\energy; is needed to produce a new and fully charged power cell.
+
+The capacity of a regular power cell is 100 times smaller than that of a \l;nuclear power cell\u object\atomic; produced by a \l;nuclear plant\u object\nuclear; using \l;uranium ore\u object\uranore;.
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Object \l;Category\u cbot\category;
+\c;PowerCell\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/radar.txt b/help/E/object/radar.txt
new file mode 100644
index 00000000..453f2ea9
--- /dev/null
+++ b/help/E/object/radar.txt
@@ -0,0 +1,26 @@
+\b;\button 168; Radar
+\image radar 8 8;
+The radar indicates the direction of the nearest \l;enemy\u object\mother;. Moreover, the information given by the radar allows the mini-map at the bottom right corner of your screen to show the position of all bots, buildings and enemies as small squares and triangles of different colors.
+
+Radar stations also act as relays for communication with the Earth from distant planets.
+
+\t;Requirements for building
+Any flat surface of at least 2.5 meters wide.
+
+\t;Input
+None.
+
+\t;Output
+Information for the mini-map.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+Constant.
+
+\t;Object \l;Category\u cbot\category;
+\c;RadarStation\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/repair.txt b/help/E/object/repair.txt
new file mode 100644
index 00000000..4adac267
--- /dev/null
+++ b/help/E/object/repair.txt
@@ -0,0 +1,24 @@
+\b;\button 169; Repair Center
+\image repair 8 8;
+The repair center regenerates the shield on damaged bots. A bot's shield will absorb a certain amount of \l;enemy\u object\mother; hits. If there is no shield left, this means that the bot itself, when hit next, will be destroyed.
+
+\t;Requirements for building
+Any flat surface of at least 6 meters wide.
+
+\t;Input
+Damaged bot.
+
+\t;Output
+Repaired bot with regenerated shield.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+A few seconds depending on the repair job to be done.
+
+\t;Object \l;Category\u cbot\category;
+\c;RepairCenter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/research.txt b/help/E/object/research.txt
new file mode 100644
index 00000000..47e66333
--- /dev/null
+++ b/help/E/object/research.txt
@@ -0,0 +1,27 @@
+\b;\button 163; Research Center
+\image research 8 8;
+The research center is an enormous computer. Its most useful feature is its ability to come up with new technologies as well as improvements on existing ones regarding buildings and bots in particular.
+
+The 65'536 processors it contains use up a large amount of energy.
+Each research program necessitates a brand new and fully charged \l;power cell\u object\power;
+
+\t;Requirements for building
+Any flat surface of at least 5 meters wide.
+
+\t;Input
+Request for research.
+
+\t;Output
+New and improved technologies.
+
+\t;Power source
+Regular or nuclear power cell.
+
+\t;Duration of operation
+Between 9 seconds and 1 minute depending on the research.
+
+\t;Object \l;Category\u cbot\category;
+\c;ResearchCenter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/safe.txt b/help/E/object/safe.txt
new file mode 100644
index 00000000..79bc849e
--- /dev/null
+++ b/help/E/object/safe.txt
@@ -0,0 +1,9 @@
+\b;\button 175; Vault
+\image safe 8 8;
+This dome-shaped building was conceived by the first expedition. Its purpose was to offer protection to a new type of advanced bot. To protect it from insect attacks, the vault was locked by 4 \l;keys\u object\key;. Only after you find the 4 keys and place each one of them on their corresponding slots will you be given access to the bot.
+
+\t;Object \l;Category\u cbot\category;
+\c;Vault\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/spider.txt b/help/E/object/spider.txt
new file mode 100644
index 00000000..7e65b27b
--- /dev/null
+++ b/help/E/object/spider.txt
@@ -0,0 +1,9 @@
+\b;Spider
+\image spider 8 8;
+Spiders work like suicide commandoes: whenever a spider gets within a close enough range of its target, it inflates its abdomen and bursts into a multitude of tiny burning fragments. These fragments will set fire to everything they get in contact with. Luckily the spider won't survive.
+
+\t;Object \l;Category\u cbot\category;
+\c;AlienSpider\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/start.txt b/help/E/object/start.txt
new file mode 100644
index 00000000..a4523e12
--- /dev/null
+++ b/help/E/object/start.txt
@@ -0,0 +1,8 @@
+\b;Starting Pad
+The starting pad is a platform used in some exercises.
+
+\t;Object \l;Category\u cbot\category;
+\c;StartArea\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/station.txt b/help/E/object/station.txt
new file mode 100644
index 00000000..17ad780d
--- /dev/null
+++ b/help/E/object/station.txt
@@ -0,0 +1,28 @@
+\b;\button 164; Power Station
+\image station 8 8;
+The power station extracts energy from the underground and recharges \l;regular power cells\u object\power; through induction. To recharge a power cell loaded at the back of a bot, just move the bot to the center of the platform and wait a few seconds. A \l;power cell\u object\power; carried at arm's length can also be recharged. \l;Nuclear power cells\u object\atomic; are non-rechargeable.
+
+A power plant needs some energy in the subsoil. If the satellite report says that energy is available only at some places, you will need a \l;sniffer bot\u object\botsr; to prospect the subsoil. The marks it lays down provide information about the specifics of its findings: a \l;green cross\u object\enerspot; means that there is an energy deposit at this location beneath the surface, which is indispensable to the construction of a power station or a \l;power plant\u object\energy;.
+
+The large power cell at the top of the station remaining red after the construction is completed can only mean that the site is not geologically adequate.
+
+\t;Requirements for building
+Any flat and geologically adequate surface at least 6 meters wide.
+
+\t;Input
+Empty power cell.
+
+\t;Output
+Recharged power cell.
+
+\t;Power source
+Subsoil energy.
+
+\t;Duration of operation
+A few seconds, depending on the capacity to be recharged.
+
+\t;Object \l;Category\u cbot\category;
+\c;PowerStation\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/stonspot.txt b/help/E/object/stonspot.txt
new file mode 100644
index 00000000..2c9f4deb
--- /dev/null
+++ b/help/E/object/stonspot.txt
@@ -0,0 +1,14 @@
+\b;Underground Titanium Deposit
+\image stonspot 4 4;
+A red cross reveals the presence of a stratum of \l;titanium ore\u object\titanore; in the subsoil. It will be possible to extract it using a \l;derrick\u object\derrick;.
+
+A \l;sniffer\u object\botsr; will lay down a red cross each time it uncovers a deposit. \l;Sniffer bots\u object\botsr; can also detect the presence of \l;uranium ore\u object\uranore; as indicated by a \l;yellow circle\u object\uranspot; and of energy as indicated by a \l;green cross\u object\enerspot;.
+
+\t;Transport
+Impossible.
+
+\t;Object \l;Category\u cbot\category;
+\c;TitaniumSite\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/titan.txt b/help/E/object/titan.txt
new file mode 100644
index 00000000..2e0d306d
--- /dev/null
+++ b/help/E/object/titan.txt
@@ -0,0 +1,14 @@
+\b;Titanium
+\image titan 4 4;
+Titanium is indispensable for the construction of buildings, \l;bots\u object\factory; and \l;regular power cells\u object\energy;. There is usually some left on the \l;spaceship\u object\base; when you embark on a new mission.
+
+If more is needed, you'll have to \l;convert\u object\convert; chunks of \l;titanium ore\u object\titanore; into usable titanium cubes.
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Object \l;Category\u cbot\category;
+\c;Titanium\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/titanore.txt b/help/E/object/titanore.txt
new file mode 100644
index 00000000..a42551d3
--- /dev/null
+++ b/help/E/object/titanore.txt
@@ -0,0 +1,14 @@
+\b;Titanium Ore
+\image titanore 4 4;
+\l;Titanium\u object\titan; is indispensable for the construction of buildings, \l;bots\u object\factory; and \l;regular power cells\u object\energy;. The titanium \l;you\u object\human; see in its usable, cube shaped form has been \l;converted\u object\convert; from raw chunks of titanium ore.
+
+Titanium ore can be found either directly on the surface or in the subsoil. In the latter case, it needs to be first located and identified by a \l;sniffer\u object\botsr;, then extracted using a \l;derrick\u object\derrick;. If a sniffer identifies a titanium ore deposit, it lays down a \l;red cross\u object\stonspot;.
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Object \l;Category\u cbot\category;
+\c;TitaniumOre\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/tnt.txt b/help/E/object/tnt.txt
new file mode 100644
index 00000000..264d5acf
--- /dev/null
+++ b/help/E/object/tnt.txt
@@ -0,0 +1,12 @@
+\b; Explosive (TNT)
+\image tnt 4 4;
+A TNT charge is extremely sensitive. You should approach it with caution so as not to hit it or give it any kind of shock. The risk is minimized once the explosive is within a \l;grabber\u object\botgr;'s grasp.
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Object \l;Category\u cbot\category;
+\c;TNT\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/tower.txt b/help/E/object/tower.txt
new file mode 100644
index 00000000..27443a6d
--- /dev/null
+++ b/help/E/object/tower.txt
@@ -0,0 +1,22 @@
+\b;\button 165; Defense Tower
+\image tower 8 8;
+The tower constitutes the best defense against \l;enemy\u object\mother; attacks, whether they originate on the ground or from the skies.
+
+The tower requires either a \l;regular\u object\power; or a \l;nuclear\u object\atomic; power cell. A regular power cell provides a capacity for 8 shots. A nuclear power cell is of course preferable. The tower starts blinking when it runs out of power.
+
+The range is 40 meters. To visualize it, select the tower then hit the button \button 41;. Red dots outline the circular zone for 20 seconds.
+
+\t;Requirements for building
+Any flat surface of at least 3.5 meters wide.
+
+\t;Power source
+Regular or nuclear power cell.
+
+\t;Duration of operation
+1 second.
+
+\t;Object \l;Category\u cbot\category;
+\c;DefenseTower\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/uranore.txt b/help/E/object/uranore.txt
new file mode 100644
index 00000000..354f2a25
--- /dev/null
+++ b/help/E/object/uranore.txt
@@ -0,0 +1,16 @@
+\b;Uranium Ore
+\image uranore 4 4;
+Uranium ore is essential to the production of \l;nuclear power cells\u object\atomic;.
+
+It is to be found on the surface or in the subsoil. In the latter case, it needs to be first located and identified by a \l;sniffer\u object\botsr;, then extracted using a \l;derrick\u object\derrick;. If a sniffer identifies a deposit of uranium ore, it lays down a \l;yellow circle\u object\uranspot;.
+
+A \l;nuclear plant\u object\nuclear; will then take care of converting the chunk into a new and fully charged \l;nuclear power cell\u object\atomic;.
+
+\t;Transport
+All \l;grabbers\u object\botgr;. Due to its radioactivity, the \l;astronaut\u object\human; can not transport it.
+
+\t;Object \l;Category\u cbot\category;
+\c;UraniumOre\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/uranspot.txt b/help/E/object/uranspot.txt
new file mode 100644
index 00000000..2f90e070
--- /dev/null
+++ b/help/E/object/uranspot.txt
@@ -0,0 +1,15 @@
+\b; Underground Uranium Deposit
+\image uranspot 4 4;
+A yellow circle reveals the presence of a stratum of \l;uranium ore\u object\uranore; in the subsoil. It will be possible to extract it using a \l;derrick\u object\derrick;.
+
+A \l;sniffer\u object\botsr; will lay down a yellow circle each time it uncovers a deposit. \l;Sniffer bots\u object\botsr; can also detect the presence of \l;titanium ore\u object\titanore; as indicated by a \l;red cross\u object\stonspot; and of energy as indicated by a \l;green cross\u object\enerspot;.
+
+
+\t;Transport
+Impossible.
+
+\t;Object \l;Category\u cbot\category;
+\c;UraniumSite\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/wasp.txt b/help/E/object/wasp.txt
new file mode 100644
index 00000000..19c70649
--- /dev/null
+++ b/help/E/object/wasp.txt
@@ -0,0 +1,11 @@
+\b;Wasp
+\image wasp 8 8;
+The wasp is a formidable enemy, very hard to shoot down since its flying is particularly swift. Wasps carry balls of \l;organic matter\u object\bullet; that they will hurl at your bots and buildings and at yourself from above.
+
+The \l;defense tower\u object\tower; is the easiest way to get rid of them.
+
+\t;Object \l;Category\u cbot\category;
+\c;AlienWasp\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/waypoint.txt b/help/E/object/waypoint.txt
new file mode 100644
index 00000000..e3d322c0
--- /dev/null
+++ b/help/E/object/waypoint.txt
@@ -0,0 +1,12 @@
+\b;Checkpoint
+\image waypoint 4 4;
+In the exercises, blue crosses indicate positions that have to be crossed. They disappear as soon as a \l;practice bot\u object\bottr; crosses them.
+
+\t;Transport
+Impossible.
+
+\t;Object \l;Category\u cbot\category;
+\c;WayPoint\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/worm.txt b/help/E/object/worm.txt
new file mode 100644
index 00000000..8644162b
--- /dev/null
+++ b/help/E/object/worm.txt
@@ -0,0 +1,11 @@
+\b;Worm
+\image worm 8 8;
+Worms transmit viruses to programmed bots. The virus alters the programming to such an extent that the bot either functions in a very erratic way or stops functioning altogether.
+
+Worms live in the subsoil but sometimes emerge and crawl on the surface. When they are underground they are undetectable and indestructible.
+
+\t;Object \l;Category\u cbot\category;
+\c;AlienWorm\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/object/wreck.txt b/help/E/object/wreck.txt
new file mode 100644
index 00000000..dd0315e6
--- /dev/null
+++ b/help/E/object/wreck.txt
@@ -0,0 +1,10 @@
+\b;Derelict bot
+A derelict bot is what's left of a bot after it has been disabled by a \l;spider\u object\spider; or by friendly fire.
+
+A \l;recycler\u object\botrecy; can convert a derelict bot back into a reusable \l;titanium cube\u object\titan;.
+
+\t;Object \l;Category\u cbot\category;
+\c;Wreck\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/E/tant1.txt b/help/E/tant1.txt
new file mode 100644
index 00000000..950b9bac
--- /dev/null
+++ b/help/E/tant1.txt
@@ -0,0 +1,16 @@
+\b;Objective
+As a defense against several giant ants attacking from the north, rotate the bot when shooting in order to perform barrage fire.
+
+\t;Program
+When you are radio-guiding a bot, you can rotate the cannon during the burst in order to sweep a whole zone. You can also do this when programming the bot, but you have to turn the whole bot with the instruction \c;\l;motor\u cbot\motor;( , )\n;. This instruction asks for two numbers: the speed of the left-hand motor, and the speed of the right-hand motor. These numbers must range between -1 and +1.\c; motor(1,1);\n; moves the bot forward with maximum speed (both motors at full power).\c; motor(-1,-1);\n; moves the bot backward with maximum speed.\c; motor(1,0.9);\n; moves the bot forward with a slight turn to the right: the left-hand motor turns a little faster than the right-hand motor. And \c;motor(1,-1);\n; will turn the bot clockwise on the spot: the left-hand motor moves forward, the right-hand motor moves backward.
+
+After a \l;motor\u cbot\motor; instruction the motors will keep this speed until the next \c;motor\n;, \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n; or \c;\l;goto\u cbot\goto;\n; instruction. For example, if you perform a rotation on the spot with \c;motor(1,-1);\n; and afterward you shoot with \c;fire(1);\n;, the bot will continue to turn during the burst, and will sweep a whole zone.
+
+The ants attack from the north. In order to sweep the whole zone north of the bot, first turn 90 degrees left with \c;turn(90);\n;, then repeat always with \c;\l;while\u cbot\while; (true)\n; the following instructions:
+o rotate clockwise with \c;motor(1,-1);\n;
+o a 2 seconds burst with \c;fire(2);\n;
+o rotate counter-clockwise with \c;motor(-1,1);\n;
+o a 2 seconds burst.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/tant2.txt b/help/E/tant2.txt
new file mode 100644
index 00000000..a775f77f
--- /dev/null
+++ b/help/E/tant2.txt
@@ -0,0 +1,33 @@
+\b;Objective
+As a defense against ants attacking from all sides, adapt the program \c;Spider2\n; in order to fly at a given altitude.
+
+\t;Program
+The program necessary for this task is somewhat similar to the program \c;Spider2\n; that looks for the closest ant, turns towards it and fires:
+\c;
+\s;extern void object::Spider2()
+\s;{
+\s; object item;
+\s;
+\s; while (true)
+\s; {
+\s; item = radar(AlienSpider);
+\s; turn(direction(item.position));
+\s; fire(1);
+\s; }
+\s;}
+\n;
+You can copy-paste it to the editor, and adapt it. Replace \c;radar(AlienSpider);\n; by \c;radar(AlienAnt);\n;, and write before the \c;while\n; loop another loop that activates the jet beneath the \l;winged shooter\u object\botfj; until the bot reaches an altitude of 20 meters.
+
+The instruction \c;\l;jet\u cbot\jet;()\n; controls the jet beneath winged bots. The number in brackets must range between \c;-1\n; and \c;1\n;.\c; jet(1);\n; moves the bot upward with maximum speed.\c; jet(-1);\n; moves the bot downward with maximum speed, and \c;jet(0);\n; stabilizes the altitude. As the bot must reach a precise altitude, move it upward slowly with \c;jet(0.2);\n;, wait until it has reached the desired height, then stabilize the altitude with \c;jet(0);\n;.
+
+In order to "wait until it has reached the desired height", we need a conditional loop: the instructions inside the loop will be repeated only as long as a certain condition is true. The altitude of the bot is given by \c;position.z\n;. We already saw that \c;position\n; gives the position of the bot. And a position is given by the three coordinates x, y and z: the x-axis is the axis west-east, the y-axis is the axis south-north, and the z-axis is the vertical axis. Therefore we must wait while \c;position.z\n; is smaller than 20:
+\c;
+\s; while (position.z < 20)
+\s; {
+\s; wait(0.2);
+\s; }
+\n;
+After waiting 0.2 seconds, the program will check if the altitude is still below 20 meters. If this is the case, it will wait a little more, if not, the program continues after the loop, i.e. after the closing brace \c;}\n;. Do not forget after the loop to stabilize the altitude with \c;jet(0);\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/tant3.txt b/help/E/tant3.txt
new file mode 100644
index 00000000..0798edad
--- /dev/null
+++ b/help/E/tant3.txt
@@ -0,0 +1,40 @@
+\b;Objective
+Adapt the program \c;Tower1\n; in order to avoid wasting energy when shooting at ants that are out of range.
+
+\t;Program
+The program \c;Tower1\n; shoots in the direction of the closest ant, even if it is still out of range:
+\c;
+\s;extern void object::Tour1()
+\s;{
+\s; object item;
+\s;
+\s; jet(0.2);
+\s; while(position.z < 20)
+\s; {
+\s; wait(0.2);
+\s; }
+\s; jet(0);
+\s;
+\s; while(true)
+\s; {
+\s; item = radar(AlienAnt);
+\s; turn(direction(item.position));
+\s; fire(1);
+\s; }
+\s;}
+\n;
+If the bot must perform the same task than before with only a \l;regular power cell\u object\power;, you can insert a loop that waits until the ant is close enough, i.e. until the ant is at less than 40 meters. Only one burst will be needed for every ant then.
+
+You can give the instruction \c;\l;radar\u cbot\radar();\n; more parameters (numbers) indicating where the radar should look for the ants. For example \c;radar(AlienAnt,0,360,0,40);\n; will only look for ants that are closer than 40 meters. The two first numbers tell the radar to search in all directions, the two last numbers tell the radar to detect only ants that are at a distance between 0 and 40 meters. If no ant is found that is closer than 40 meters, the instruction \c;\l;radar\u cbot\radar();\n; returns the value \c;null\n;. We can then write a conditional loop similar to the one written in the last exercise that waits as long as there is no ant closer than 40 meters:
+\c;
+\s; while (radar(AlienAnt, 0, 360, 0, 40) == null)
+\s; {
+\s; wait(0.2);
+\s; }
+\n;
+Notice that two equal signs "==" are needed to perform a comparison of equality.
+
+Just insert these lines before the instruction \c;fire(0);\n;, and the bot will wait before shooting until the ant is closer than 40 meters. Like this a regular power cell is enough to kill all ants.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/tant4.txt b/help/E/tant4.txt
new file mode 100644
index 00000000..7c58831f
--- /dev/null
+++ b/help/E/tant4.txt
@@ -0,0 +1,10 @@
+\b;Objectif
+Program a \l;winged shooter\u object\botfj; to hunt all ants in the region.
+
+\t;Program
+In this swamp, a wheeled or tracked shooter is of little use. And ants, in opposition to spiders, keep moving: you can not just turn towards the closest ant, move forward and shoot.
+
+The easiest way to solve the problem consists in flying at a height of 10 meters, aiming downward with \c;aim(-20);\n;, and approaching the ant with a conditional loop as long as the \l;distance\u cbot\dist; is greater than 20m. In this conditional loop, you must look for the closest ant, turn towards it, set the motors at full speed with \c;motor(1,1);\n;, and wait a little, for example 0.2 seconds. All these instructions must be repeated until the ant is at less than 20 meters. Then just shoot it.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/tant5.txt b/help/E/tant5.txt
new file mode 100644
index 00000000..e822f2fb
--- /dev/null
+++ b/help/E/tant5.txt
@@ -0,0 +1,52 @@
+\b;Objective
+Adapt the flying height of the \l;winged shooter\u object\botfj; to the terrain.
+
+\t;Program
+Here is one more time the program of the previous exercise that hunts ants:
+\c;
+\s;extern void object::JetFighter1()
+\s;{
+\s; object item;
+\s;
+\s; aim(-20);
+\s; jet(0.2);
+\s; while (position.z < 10)
+\s; {
+\s; wait(0.2);
+\s; }
+\s; jet(0);
+\s;
+\s; while (true)
+\s; {
+\s; while (radar(AlienAnt, 0, 360, 0, 20) == null)
+\s; {
+\s; item = radar(AlienAnt);
+\s; turn(direction(item.position));
+\s; motor(1,1);
+\s; wait(0.2);
+\s; }
+\s; fire(1);
+\s; }
+\s;}
+\n;
+The bot always stays at an altitude of 10m above sea level. This is not adapted to the mountainous terrain of the present exercise, the bot has got to adapt to the terrain. The best way to do so is to insert just before the \c;wait(0.2);\n; a test to see if the height above ground is too low or too high, and to react accordingly.
+
+We already saw that \c;position.z\n; gives the altitude above sea level. \c;\l;topo\u cbot\topo;(position)\n; gives the altitude of the ground at the position of the bot. If we want the bot to stay at an altitude between 6 and 9m above ground, we must treat the following cases: if \c;position.z-topo(position)\n; is smaller than 6, the bot must climb with \c;jet(1);\n;. If \c;position.z-topo(position)\n; is greater than 9, the bot must go down with \c;jet(-1);\n;. In order to program these tests, use the instruction \c;\l;if\u cbot\if;\n;, that executes the instructions in braces only once if the condition is true:
+\c;
+\s; jet(0);
+\s; if (position.z-topo(position) < 6)
+\s; {
+\s; jet(1);
+\s; }
+\s;
+\s; if (position.z-topo(position) > 9)
+\s; {
+\s; jet(-1);
+\s; }
+\n;
+Before starting the testing, stabilize the altitude with \c;jet(0);\n;: in case the height above ground lies between 6 and 9m, the bot must neither climb nor go down. If afterwards either \c;jet(1);\n; or \c;jet(-1);\n; is executed, it will cancel the previous \c;jet(0);\n;.
+
+Just insert these lines before the \c;wait(0.2)\n;, and the bot will adapt to the terrain. You can then delete the first lines of the program that set the initial altitude at 10m.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/tcell1.txt b/help/E/tcell1.txt
new file mode 100644
index 00000000..f001d85c
--- /dev/null
+++ b/help/E/tcell1.txt
@@ -0,0 +1,38 @@
+\b;Objective
+Program the \l;grabber bot\u object\botgr; to change the \l;power cell\u object\power; of the \l;winged shooter\u object\botfj;. The winged shooter can then shoot the spiders.
+
+\t;Procedure
+1) Program the \l;grabber bot\u object\botgr;.
+2) Execute the program with the arrow button \button 21;.
+The \l;winged shooter\u object\botfj; is already programmed, it will do its job as soon as it has got a new power cell.
+
+\t;Program
+You will need the following instructions:
+\c;
+\s;grab();\n;
+\n;Takes whatever there is in front of the bot.
+\c;
+\s;drop();\n;
+\n;Drops whatever the bot is carrying in front.
+\c;
+\s;turn();\n;
+\n;We have seen this instruction already in the previous exercise: it performs a rotation of a certain angle, given in degrees.
+
+Let us see the beginning of the program:
+o pick up the empty power cell with \c;grab();\n;
+o turn left 90 degrees (quarter turn) with \c;turn(90)\n;
+o drop the empty cell with \c;drop();\n;
+o etc.
+
+It is up to you now to write the rest of the program!
+
+If you have got a problem, you can always look at the solution: select the \c;Solution\n; program, and click the braces button \button 22;.
+
+\t;Remarks
+Be careful to write the instructions precisely, respecting lower and upper case letters.
+
+Always write one instruction per line, finishing each line with a semicolon.
+
+In case your program does not do exactly what you wanted, you can put the bot back at the starting point with the button \button 59;. You can also start over again from the beginning (hit the key "Esc", the click "Restart"). The program you have written will not be lost.
+
+\key;\key help;\norm; allows you to review these instructions at all times.
diff --git a/help/E/tcell2.txt b/help/E/tcell2.txt
new file mode 100644
index 00000000..6d989599
--- /dev/null
+++ b/help/E/tcell2.txt
@@ -0,0 +1,48 @@
+\b;Objective
+Power the \l;winged shooters\u object\botfj; with \l;power cells\u object\power;, so that they can kill the ants in the ant nest located in a hole north of your position.
+
+\t;Program
+The \l;wheeled grabber\u object\botgr; must go to a \l;power cell\u object\power;, grab it, go to a \l;winged shooter\u object\botfj;, and drop the cell. This task is very similar to the task performed in the previous exercise. Here is this program again:
+\c;
+\s;extern void object::Titanium2()
+\s;{
+\s; object item;
+\s;
+\s; item = radar(TitaniumOre);
+\s; goto(item.position);
+\s; grab();
+\s;
+\s; item = radar(Converter);
+\s; goto(item.position);
+\s; drop();
+\s;}
+\n;
+The best way to solve the present exercise is to copy \button 61; the program above into the clipboard (from \c;object\n; to \c;drop();\n;), and paste \button 62; it into the program editor. Then you just have to make the necessary changes in order to adapt it to the new task.
+
+Instead of looking for titanium ore (\c;TitaniumOre\n;), look for a power cell (\c;PowerCell\n;). Instead of going to a converter (\c;Converter\n;), go to a winged shooter (\c;WingedShooter\n;). As soon as the winged shooter has got a new power cell, it will get down to work.
+
+If you want to know more about the "names" of the different objects in the programming language, please refer to the \l;text about categories\u cbot\category;.
+
+\t;Further improvement: loops
+Once the program explained above works properly, you can improve it in order to repeat the task over and over again. Like this you will not have to execute the program several times in order to power several bots.
+
+All programs written until now execute all instructions only once, one after another, from the beginning to the end of the program. You can also tell the bot to repeat some instructions: just write \c;while (true)\n;, an open brace, the instructions to be repeated, and a closing brace. Repeating some instructions several times in this way is called a loop. Here is an example of a program that repeats over and over the instructions that look for a power cell, grab it, and drop it on a winged shooter:
+\c;
+\s; while (true)
+\s; {
+\s; item = radar(PowerCell);
+\s; goto(item.position);
+\s; grab();
+\s;
+\s; item = radar(WingedShooter);
+\s; goto(item.position);
+\s; drop();
+\s; }
+\n;
+Of course the variable declaration \c;object item;\n; must not be inside the loop, but just before: declare a variable only once.
+
+\t;Remark
+A bot can execute a program perfectly well on his own. Meantime you can for example select the astronaut and take a look at what is happening at the nest, the show is worth it. But be careful not to get shot by your own bots...
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/tchasse.txt b/help/E/tchasse.txt
new file mode 100644
index 00000000..eb807f5a
--- /dev/null
+++ b/help/E/tchasse.txt
@@ -0,0 +1,18 @@
+\b;Exercise
+You must find a way to destroy the four moving \l;target bots\u object\bottarg; without wasting one shot. Notice that after every move, the targets will stay motionless during one second.
+
+\b;General principle
+1) Detect a target with the instruction \c;\l;radar\u cbot\radar;(TargetBot);\n;.
+2) Turn towards the target with \c;\l;turn\u cbot\turn;(direction());\n;.
+3) After the rotation, check if the target did not move.
+4) If it did not, wait 0.2 seconds with \c;\l;wait\u cbot\wait;(0.2);\n;.
+5) Re-check if the target did not move.
+6) If it did not, shoot with \c;\l;fire\u cbot\fire;(2);\n; and wait 2 seconds for the target to be hit by the bullets and destroyed.
+
+There are of course other ways to achieve the goal.
+
+\b;Remark
+In order to increase the efficiency of your shots, aim a little downward with \c;\l;aim\u cbot\aim;(-3);\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/tdragst.txt b/help/E/tdragst.txt
new file mode 100644
index 00000000..38b62d30
--- /dev/null
+++ b/help/E/tdragst.txt
@@ -0,0 +1,64 @@
+\b;Exercise
+Reach the finishing pad (25m in front of you) as fast as possible, using the instruction \c;motor( , )\n;. You will have to slow down progressively at the end of the move, otherwise the bot will get blown up on the \l;mines\u object\mine;.
+
+You could very well write no more than \c;\l;move\u cbot\move;(25);\n;, this would work perfectly well. However, the aim of this exercise is to learn how to use the instruction \c;\l;motor\u cbot\motor;\n;.
+
+This instruction asks for two values:
+1) The speed of the left-hand motor.
+2) The speed of the right-hand motor.
+
+\s;\c; motor( left, right );
+\n;
+The values must range between -1 and 1:
+-1 = full throttle backward
+ 0 = stop
+ 1 = full throttle forward
+
+For example, \c;motor(0.5, 0.5);\n; will move the motor forward with half-speed, until new instructions are given to the motors.
+
+With the instruction \c;motor(0.5, 0.6);\n;, the bot will move forward with half-speed, turning at the same time slightly to the left: the right-hand motor moves a little faster (\c;0.6\n;) than the left-hand motor (\c;0.5\n;).
+
+\b;General principle
+In order to move forward for exactly 25 meters and not more, you must move full speed during the first 23 meters, then reduce the speed of the motors progressively during the last two meters.
+The \l;variable\u cbot\var; \l;position\u cbot\object; gives you at any moment the current position of the bot, and the instruction \c;\l;distance\u cbot\dist;( , );\n; returns the distance between two points. The best way to know where you are consists in saving the current position before the start into a \l;variable\u cbot\var;, for example a variable called \c;start\n;. Then you can calculate the distance between the starting position and your current position with \c;distance(position, start)\n;.
+
+\b;The program
+1) declare the variables
+\s;\c; point start;
+\s; float len;
+\n;
+2) save the starting position
+\s;\c; start = position;
+\n;
+3) start full throttle :
+\s;\c; motor(1, 1);
+\n;
+4) Perform an infinite \c;\l;while\u cbot\while;\n; loop:
+\s;\c; while ( true )
+\s; {
+\s; len = distance(position, start);
+\s; if ( len > 25-2 )
+\s; {
+\s; motor( less than before ! );
+\s; }
+\s; }
+\n;
+As long as the distance between the start and the current position is smaller than 23m, the instruction in braces after the \c;\l;if\u cbot\if;\n; instruction will not be executed, so the motors keep their maximum speed as they were told by the \c;\l;motor\u cbot\motor;(1,1);\n; instruction.
+
+In order to slow down progressively, the speed of the motors must be proportional to the remaining distance:
+o \c;2.0\n; meters left -> speed = \c;1.00\n; (maximum)
+o \c;1.5\n; meters left -> speed = \c;0.75\n;
+o \c;1.0\n; meter left -> speed = \c;0.50\n;
+o \c;0.5\n; meter left -> speed = \c;0.25\n;
+o \c;0.0\n; meter left -> speed = \c;0.00\n; (stop)
+
+\image tdragst1 12 6;
+You can use the following \l;expression\u cbot\expr; \c;(25-len)/2\n; in order to calculate the value for the speed instruction that must be given to the motors.
+
+It is now up to you to put everything together and to test the program.
+
+\b;Remark
+You can use values greater than 1 for the instruction \c;\l;motor\u cbot\motor;();\n;, but the bot will not move any faster.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/texch1.txt b/help/E/texch1.txt
new file mode 100644
index 00000000..914ba70f
--- /dev/null
+++ b/help/E/texch1.txt
@@ -0,0 +1,31 @@
+\b;Exercise
+Several \l;information exchange posts\u object\exchange; stand in the middle of a \l;mine\u object\mine; field. When the bot is close enough to an exchange post, it can read the information that it contains. Every exchange post contains the angle of the rotation that must be performed in order to reach the next exchange post, without touching a \l;mine\u object\mine;.
+The exchange posts are distant 20m from each other.
+
+\b;General principe
+Repeat 5 times :
+ o Move 20m forward.
+ o Read the direction of the next \l;information exchange post\u object\exchange;.
+ o Execute the necessary rotation.
+
+\image tinfo1 8 8;
+In order to repeat the steps above, use a \c;\l;for\u cbot\for;\n; loop, as we saw it before.
+\s;\c; for ( int i=0 ; i<5 ; i=i+1 )
+\n;
+Move forward with the instruction \c;move(20);\n;.
+
+Use the instruction \c;\l;receive\u cbot\receive;("Direction");\n; in order to read the information contained in the \l;exchange post\u object\exchange;. This is of course possible only when the bot is close enough to the exchange post.
+You will need a \l;variable\u cbot\var; to contain the value retrieved from the exchange post. Let us call it \c;dir\n;; you must declare it with the following line:
+\s;\c; float dir;
+\n;
+Then retrieve the rotation angle from the exchange post, and put it into the variable:
+\s;\c; dir = receive(...);
+\n;
+Then you can execute the rotation:
+\s;\c; turn(dir);
+\n;
+\b;Remark
+You can click on an \l;information exchange post\u object\exchange; in order to read what information it contains. In this exercise, every exchange post contains only one value called \c;"Direction"\n;, but it can contain up to 10 different values, as you will see in some of the following exercises.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/texch2.txt b/help/E/texch2.txt
new file mode 100644
index 00000000..842770cf
--- /dev/null
+++ b/help/E/texch2.txt
@@ -0,0 +1,36 @@
+\b;Exercise
+In this exercise, the \l;information exchange posts\u object\exchange; along the way contain the direction of the next post and the distance. And you do not know how many exchange posts you must get in touch with before arriving at your goal.
+
+\b;General principle
+ Repeat forever:
+ o Retrieve the direction from the \l;exchange post\u object\exchange;.
+ o Retrieve the distance from the \l;exchange post\u object\exchange;.
+ o If no information could be retrieved, stop the program.
+ o Execute the rotation.
+ o Move forward to the next post.
+
+In order to repeat always, use a \c;\l;while\u cbot\while; (true)\n; loop. The instructions between the braces \c;{ }\n; will be repeated over and over, or until a \c;\l;break\u cbot\break;\n; instruction is executed.
+\s;\c; while ( true )
+\n;
+This time you need 2 \l;variables\u cbot\var;, one for the rotation angle, one for the distance, for example \c;dir\n; and \c;len\n; :
+\s;\c; float dir, len;
+\n;
+Then you can retrieve the information:
+\s;\c; dir = receive("Direction");
+\s;\c; len = receive("Length");
+\n;
+A variable of the \l;type\u cbot\type; \c;\l;float\u cbot\float;\n; can take a special value called \c;\l;nan\u cbot\nan;\n;. This value means that the variable contains no number (Not A Number).
+When there is no \l;exchange post\u object\exchange; nearby, either because the bot has reached the goal, or because it took the wrong way, the two variables \c;dir\n; and \c;len\n; contain this value. You can test this with the instruction \c;\l;if\u cbot\if;\n;, and stop the program if necessary with the instruction \c;\l;break\u cbot\break;\n;:
+\s;\c; if ( dir == nan ) break;
+\n;
+If the information retrieval from the \l;exchange post\u object\exchange; has been performed successfully, execute the rotation:
+\s;\c; turn(dir);
+\n;
+And move forward:
+\s;\c; move(len);
+\n;
+\b;Remark
+You can click on an \l;information exchange post\u object\exchange; in order to read what information it contains. In this exercise, every exchange post contains two values called \c;"Direction"\n; and \c;"Length"\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/tfollow1.txt b/help/E/tfollow1.txt
new file mode 100644
index 00000000..25f6fb93
--- /dev/null
+++ b/help/E/tfollow1.txt
@@ -0,0 +1,62 @@
+\b;Exercise
+You must follow the \l;target bot\u object\bottr; with the explosive device, but without touching it, otherwise it will blow up. Every time the target bot stops, you must be close to it (less than 10m). After you managed to stay close to the target bot at 10 successive stops, it will lead you to the finishing pad, and the exercise is over. At every stop, the target bot checks that you are there. If you are not there, you must start over again.
+
+\b;General principle
+Repeat forever :
+o Look for the target bot.
+o Calculate the distance to the bot.
+o if the distance to the target bot is less than 5m, move backward.
+o Otherwise, calculate the direction of the target bot, and move towards it.
+
+As many times before, use \c;\l;while\u cbot\while; (true)\n; in order to perform the infinite loop:
+\s;\c;while (true)
+\s;{
+\s; \n;instructions to be repeated ...\c;
+\s;}
+\n;
+Look for the target bot with the instruction \c;\l;radar\u cbot\radar;\n;:
+\s;\c; target = radar(TargetBot);
+\n;
+You do not have to test if the radar found a target bot: there must be one.
+
+Use the instruction \c;\l;distance\u cbot\dist;( , )\n; to calculate the distance between two points. The first point will be the position of your own bot, given by \c;position\n;. The second point is the position of the target bot, given by \c;target.position\n;.
+\s;\c;len = distance(position, target.position);
+\n;
+If the distance to the target bot is smaller than 5m, move backward with a speed inversely proportional to the distance: the closer you are to the bot, the faster you must move backward.
+ Distance = 5.0 meters -> speed = 0.0
+ Distance = 2.5 meters -> speed = -0.5
+ Distance = 0.0 meters -> speed = -1.0
+You can use the \l;expression\u cbot\expr; \c;distance/5-1\n; in order to achieve this, together with the \c;\l;if\u cbot\if;\n; to test if the target is closer than 5m:
+\s;\c;if ( len < 5 ) // too close ?
+\s;{
+\s; motor(len/5-1, len/5-1); // moves backward
+\s;}
+\n;
+If the distance to the target is greater than 5m, move towards the target. First calculate the angle necessary to face the target with the instruction \c;\l;direction\u cbot\direct;\n;. You can then adjust the speed of the right-hand and left-hand motor in order to follow the target:
+\s;\c;else
+\s;{
+\s; dir = direction(target.position);
+\s; if ( dir >= 0 ) // target on the left side?
+\s; {
+\s; motor(1-dir/90, 1);
+\s; }
+\s; else // target on the right side?
+\s; {
+\s; \n;it is up to you to fill in\c;
+\s; }
+\s;}
+\n;
+When the target is on your left, \c;dir\n; takes a positive value, ranging between 0 and 180. The \l;expression\u cbot\expr; \c;1-dir/90\n; returns a speed ranging between 1 and -1, according to the direction:
+ direction = 0 -> speed = 1.0
+ direction = 45 -> speed = 0.5
+ direction = 90 -> speed = 0.0
+ direction = 135 -> speed = -0.5
+ direction = 180 -> speed = -1.0
+
+\image radar2 14 10;
+When the target is on the right side, \c;dir\n; is negative, ranging between 0 and -180.
+
+The only task left for you now is to declare the \l;variables\u cbot\var; that you use in the program. \c;target\n; is of type \c;object\n;, whereas \c;dir\n; and \c;len\n; are of type \c;float\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/tfor.txt b/help/E/tfor.txt
new file mode 100644
index 00000000..07285d69
--- /dev/null
+++ b/help/E/tfor.txt
@@ -0,0 +1,57 @@
+\b;Exercise
+Destroy the six \l;targets\u object\bottarg; with a program using a loop. The bot must move 5m forward to get from one target to the next.
+
+\b;General principle
+The program must execute the following scheme:
+Repeat 6 times :
+ o move 5m forward
+ o turn 90 degrees left
+ o shoot
+ o turn 90 degrees right
+
+\image tfor1 14 5;
+\b;Instruction \c;for ( )\n;
+The instruction \c;\l;for\u cbot\for;\n; asks for 3 expressions:
+1) Initialize the counting variable.
+2) The end \l;condition\u cbot\cond;.
+3) The counting \l;expression\u cbot\expr;.
+
+Here is the loop once it is integrated into the program frame:
+\s;\c;extern void object::Massacre( )
+\s;{
+\s; for ( int i=0 ; i<6 ; i=i+1 )
+\s; {
+\s; \n;instructions repeated 6 times ...\c;
+\s; }
+\s;}
+\n;
+ATTENTION: The line \c;for ( )\n; must not be followed by a \l;semicolon\u cbot\term; !
+
+\b;Explanation of the instruction \c;for ( )\n;
+1) \c;int i=0\n;
+ The \l;variable\u cbot\var; i is set to zero before the beginning of the loop.
+
+2) \c;i<6\n;
+ The loop will be executed as long as i is smaller than 6.
+
+3) \c;i=i+1\n;
+ At the end of every loop, add 1 to the variable i.
+
+\b;Blocks
+Use braces \c;{ }\n; in order to create a \l;block\u cbot\bloc;. All the instructions that must be executed in the \c;for\n; loop are held together by a block. The whole program itself is made up of a block:
+\c;
+\s;extern void object::massacre( )
+\s;{
+\s; \n;fill in here ...\c;
+\s;}
+\n;
+Never change these characters. Just add the instructions of the program between the braces.
+You can fit several blocks one into the other. For example the \c;for\n; block is fitted into the block of the whole program. In order to improve readability, the editor lines up the braces belonging to the different blocks.
+
+\b;Remember
+The instruction used to move forward is \c;\l;move\u cbot\move;();\n;.
+The instruction used to turn the bot is \c;\l;turn\u cbot\turn;();\n;. A positive angle turns left.
+The instruction used to fire the cannon is \c;\l;fire\u cbot\fire;(1);\n;. A one-second burst allows to destroy all six \l;targets\u object\bottarg;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/tlaby1.txt b/help/E/tlaby1.txt
new file mode 100644
index 00000000..c5deb7c6
--- /dev/null
+++ b/help/E/tlaby1.txt
@@ -0,0 +1,62 @@
+\b;Exercise
+Program the bot so that it will find its way without hitting the walls of the labyrinth. We suppose that you do not know the configuration of the labyrinth, but there are no bifurcations, and no dead-ends. The labyrinth is made of squares measuring 5m each.
+
+\b;The instruction \c;radar\n;
+The instruction \c;\l;radar\u cbot\radar;(Barrier, 0, 45, 0, 5);\n; will find any \l;barrier\u object\barrier; in front of the radar that is closer than 5m. Let us take a closer look at the five parameters used:
+
+\s;\c;Barrier\n;
+\l;Category\u cbot\category; of the object that the radar must look for, i.e. a barrier.
+
+\s;\c;0\n;
+Direction of the radar. \c;0\n; means that the radar must search straight forward.
+
+\s;\c;45\n;
+Opening angle in degrees. With an opening angle of 45 degrees, barriers situated between 22.5 degrees to the left and 22.5 degrees to the right will be detected.
+
+\s;\c;0\n;
+Minimum detection distance. \c;0\n; means that even object that are very close to the bot will be detected.
+
+\s;\c;5\n;
+Maximum detection range. Any barrier situated beyond \c;5\n; meters will not be detected.
+
+To take another example, \c;\l;radar\u cbot\radar;(Barrier, 90, 45, 0, 5);\n; will direct the radar 90 degrees to the left, in order to test if the way to the left is free.
+
+\image tlaby1 10 10;
+\b;General principle
+The program must only take care of one square portion of the labyrinth. You will have to execute it several times in order to arrive at the finishing pad.
+o If there is nothing in front, move forward.
+o If there is nothing on the left side, quarter turn left, move forward.
+o If there is nothing on the right side, quarter turn right, move forward.
+
+1) First of all declare three \l;variables\u cbot\var; of type \c;\l;object\u cbot\object;\n;, that we call \c;front\n;, \c;left\n; and \c;right\n;. Variables of this type can contain the description of any object, for example of a barrier found by the radar.
+\s;\c; object front, left, right;\n;
+
+2) Look for barriers in all three directions, and put the result of the \c;radar\n; instruction into the three variables defined at point 1). If the radar finds nothing, the variable will contain the value \c;\l;null\u cbot\null;\n;.
+\s;\c; front = radar(Barrier, 0, 45, 0, 5);
+\s; left = radar(Barrier, 90, 45, 0, 5);
+\s; right = radar(Barrier, -90, 45, 0, 5);
+\n;
+3) Test if the way is free in front of the bot with the instruction \c;\l;if\u cbot\if;\n;. If the test is true, the instructions in braces \c;{ }\n; will be executed, otherwise the execution will resume after the closing brace \c;}\n;.
+The instruction \c;return\n; leaves the program: the job is done.
+\s;\c;if ( front == null )
+\s;{
+\s; move(5);
+\s; return;
+\s;}
+\n;
+4) Test if it is possible to turn left; if so, turn left with the instruction \c;\l;turn\u cbot\turn;\n; and move 5m forward.
+\s;\c;if ( left == null )
+\s;{
+\s; turn(90);
+\s; move(5);
+\s; return;
+\s;}
+\n;
+5) Test if it is possible to turn right.
+ ...
+
+\b;Attention
+The instruction \c;if ( )\n; must never be followed by a \l;semicolon\u cbot\term;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/tlaby2.txt b/help/E/tlaby2.txt
new file mode 100644
index 00000000..b09ec7f2
--- /dev/null
+++ b/help/E/tlaby2.txt
@@ -0,0 +1,55 @@
+\b;Exercise
+This exercise is very similar to the previous one. This time the bot should find its way alone from the start to the goal; you will have to execute the program only once.
+
+\b;Remark
+The labyrinth is not exactly the same, but this should be of no importance, as the program adapts to what it "sees".
+
+\image tlaby1 10 10;
+\b;General principle
+Use an infinite \c;\l;while\u cbot\while;\n; loop in order to execute the previous program several times:
+\s;\c;while ( true )
+\s;{
+\s; \n;If there is nothing in front, move forward\c;
+\s; \n;If there is nothing on your left hand, turn left\c;
+\s; \n;If there is nothing on your right hand, turn right\c;
+\s;}
+\n;
+Inside this \c;while\n; loop, replace the \c;return\n; instructions by \c;\l;continue\u cbot\continue;\n; instructions. \c;return\n; would quit the program, which is not what we want here. \c;continue\n; will just resume the execution at the beginning of the \c;\l;while\u cbot\while;\n; loop:
+\s;\c;if ( front == null )
+\s;{
+\s; move(5);
+\s; continue;
+\s;}
+\n;
+\b;Remember
+Here is again the program of the previous exercise :
+\c;
+\s;object front, left, right;
+\s;
+\s;front = radar(Barrier, 0, 45, 0, 5);
+\s;left = radar(Barrier, 90, 45, 0, 5);
+\s;right = radar(Barrier, -90, 45, 0, 5);
+\s;
+\s;if ( front == null )
+\s;{
+\s; move(5);
+\s; return;
+\s;}
+\s;if ( left == null )
+\s;{
+\s; turn(90);
+\s; move(5);
+\s; return;
+\s;}
+\s;if ( right == null )
+\s;{
+\s; turn(-90);
+\s; move(5);
+\s; return;
+\s;}
+\n;
+\b;Help
+If you need some help, just click on the hyperlinks of the instructions \c;\l;radar\u cbot\radar;\n;, \c;\l;if\u cbot\if;\n;, \c;\l;move\u cbot\move;\n; or \c;\l;turn\u cbot\turn;\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/tmove1.txt b/help/E/tmove1.txt
new file mode 100644
index 00000000..24604c1f
--- /dev/null
+++ b/help/E/tmove1.txt
@@ -0,0 +1,33 @@
+\b;Exercise
+Program the robot in such a way that it arrives on the finishing pad, after having passed by the three blue crosses.
+
+\b;Procedure
+1) Take the power cell and put it on the rear of the bot.
+2) Walk around on reconnaissance to understand what the bot must do.
+3) Program the bot. To do so, you must select it, and then click on the braces button \button 22;; you will get into the program editor.
+4) Once you finished writing the program, click "OK", and execute the program with the arrow key \button 21;.
+
+\b;Program
+The pads are at a distance of 20 meters from each other.
+The instruction \c;move(20);\n; moves 20 meters forward.
+The instruction \c;turn(90);\n; turns left with an angle of 90 degrees.
+The instruction \c;turn(-90);\n; turns right with an angle of 90 degrees.
+
+The frame of the program consists in:
+\c;
+\s; extern void object::MoveBot( )
+\s; {
+\s; \n;\\write the necessary instructions here ...\c;
+\s; }
+\n;
+For now, you must not change the frame of the program. Just insert the instructions you need to move the bot around between the braces \c;{ }\n;.
+
+\b;Attention
+Be very careful about upper case and lower case letters!
+Every instruction must be terminated with a semicolon.
+
+\b;Helpful trick
+When you write the program, you can watch the scene by clicking on the button \button 51;, and by moving the mouse to the edges of the window to turn the camera.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/tmove2.txt b/help/E/tmove2.txt
new file mode 100644
index 00000000..14e873f5
--- /dev/null
+++ b/help/E/tmove2.txt
@@ -0,0 +1,66 @@
+\b;Exercise
+This exercise is very similar to the previous one. The bot must move exactly in the same way, but when writing the program, you must use a new concept that is extremely important in programming: \l;variables\u cbot\var;.
+We saw that all the pads are at a distance form each other of 20 meters. And all the rotations performed consist in 90 degree angles. Instead of rewriting the same values over and over again in the program, we can store them in a variable:
+
+Instead of:
+\c;\s; move(20);
+\s; turn(90);
+\s; move(20);
+\s; turn(-90);
+\s; ...
+\n;
+We write :
+\c;\s; dist = 20;
+\s; dir = 90;
+\s; move(dist);
+\s; turn(dir);
+\s; move(dist);
+\s; turn(-dir);
+\s; ...
+\n;
+\b;Variables
+A \l;variable\u cbot\var; is composed of three elements:
+1) The name
+2) The type of the content
+3) The content
+
+\t;The name
+Use the name to refer to a variable. For example, instead of writing \c;move(20);\n;, write \c;move(dist);\n;: "dist" is the name of the variable. You can choose almost any name for a variable, for example \c;dist\n;, \c;dir\n;, \c;p2\n;, \c;a\n;, \c;x\n;, \c;nothing_2_grab\n;, etc.
+
+\t;The type
+The type of a variable determines what kind of information the variable can contain. According to the type, a variable can contain a whole number, a real number, a character string, the coordinates of a point, etc. Here is a list with the most common variable types:
+ o \c;\l;int\u cbot\int;\n; for a whole number (12, -500, etc.)
+ o \c;\l;float\u cbot\float;\n; for a real number (3.14, 0.2, -99.98, etc.)
+ o \c;\l;string\u cbot\string;\n; for a character string ("Hello!", "Nothing to grab", etc.)
+ o \c;\l;point\u cbot\point;\n; for the x,y,z-coordinates of a point in space
+ o \c;\l;object\u cbot\object;\n; for the information about an object (bot, building, etc.)
+
+\t;The content
+The content of a variable can be a number, a string, coordinates, etc., according to the type of the variable. The content of a variable can change many times during the execution of a program.
+
+Before you can use a variable, you have to declare it. For example, before you can use the two variables \c;dist\n; and \c;dir\n;, you must declare them with the following lines:
+\c;
+\s; float dist;
+\s; float dir;
+\n;
+Now you can use the two variables. To put the value 20 into \c;dist\n; and 90 into \c;dir\n;, write:
+\c;
+\s; dist = 20;
+\s; dir = 90;
+\n;
+Now you can move and turn the bot with the instructions \c;\l;move\u cbot\move;\n; and \c;\l;turn\n;\u cbot\turn;:
+\c;
+\s; move(dist);
+\s; turn(dir);
+\n;
+You can also use a whole \l;mathematical expression\u cbot\expr; instead of just the variable:
+\c;
+\s; move(dist+100);
+\s; turn(-dir);
+\n;
+The latter instruction will be needed to turn the bot right.
+
+Now, rewrite the program of the previous exercise, but use a variable for the distance and another variable for the angle of the rotation.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/tproc1.txt b/help/E/tproc1.txt
new file mode 100644
index 00000000..484d7897
--- /dev/null
+++ b/help/E/tproc1.txt
@@ -0,0 +1,59 @@
+\b;Exercise
+The \l;bot\u object\bottr; must pass over all the \l;blue crosses\u object\waypoint; on the ground. The way that must be covered is made of two squares. The first one measures 15 meters, the second 25 meters.
+
+\image tproc1a 8 8;
+\b;General principle
+In order to solve this problem, the most efficient solution consists in creating a \l;function\u cbot\function; that instructs the bot to move on a square shape of a certain size. The main program becomes then very simple:\c;
+\s;extern void object::Function1( )
+\s;{
+\s; Square(15);
+\s; Square(25);
+\s;}
+\n;
+You still have to define the function called \c;Square\n;. In order to do this, you will have to write some instructions outside the \l;block\u cbot\bloc; that until now was the frame of each one of your programs. At the very end of the program, after the last closing brace, we will define the function \c;Square\n;. The program will take the following shape:
+\c;
+\s;extern void object::Function1( )
+\s;{
+\s; \n;main function ...\c;
+\s;}
+\s;
+\s;void object::Square(float length)
+\s;{
+\s; \n;new function ...\c;
+\s;}
+\n;
+Let us look in detail at the different elements of the declaration of the function \c;Square\n;:
+
+\c;\l;void\u cbot\void;\n;
+This means that this function will return no value.
+
+\c;\l;object\u cbot\object;::\n;
+When you write this in front of the function name, you can have access in the function to all the characteristics of the bot, such as \c;position\n;, \c;orientation\n;, etc. In this exercise, this element is not compulsory, as we will not need the characteristics of the bot in the function.
+
+\c;Square ( )\n;
+This is the name of the function. You can call it Square, or any other name.
+
+\c;\l;float\u cbot\float; length\n;
+Here you define the parameters that the function will get when it is called. The first time the function is actually called with \c;Square(15)\n;, the variable \c;length\n; will contain the value \c;15\n;. The second time, \c;length\n; will contain \c;25\n;.
+
+Here is in detail what will happen when the program is executed:
+- First the main function \c;Function\n; will be executed.
+- At the line \c;Square(15)\n;, the program will follow the red arrow and enter the function \c;Square\n; a first time, \c;length\n; containing \c;15\n;.
+- At the end of the function \c;Square\n;, the program follows the orange arrow and comes back to the main function.
+- At the line \c;Square(25)\n;, the program will follow the blue arrow and enter the function \c;Square\n; a second time.
+- At the end of the function \c;Square\n;, the program follows the light blue arrow and comes back to the main function.
+
+\image tproc1b 17 12;
+In the function \c;Square\n;, use the instructions \c;\l;move\u cbot\move;\n; and \c;\l;turn\u cbot\turn;\n;. In order to make it shorter, you can use a \c;\l;for\u cbot\for;\n; loop, that will repeat the instructions \c;\l;move\u cbot\move;\n; and \c;\l;turn\u cbot\turn;\n; 4 times; however, this is not compulsory.
+\c;
+\s;void object::Square(float length)
+\s;{
+\s; for ( int i=0 ; i<4 ; i=i+1 )
+\s; {
+\s; move(length);
+\s; turn(90);
+\s; }
+\s;}
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/tproc2.txt b/help/E/tproc2.txt
new file mode 100644
index 00000000..6be8e7b2
--- /dev/null
+++ b/help/E/tproc2.txt
@@ -0,0 +1,34 @@
+\b;Exercise
+Follow the way in form of a spiral. The bot must move 2 times 25m forward and turn, then move 2 times 20m forward and turn, and so on.
+\image tproc2 8 8;
+\b;Function
+You will have noticed that the way is made of "L"-shaped parts that are fit one into another. The first one (dark blue) measures two times 25 meters. The second one (light blue) measures 5 meters less. Let us start with writing the \l;function\u cbot\function; that will move the bot on a "L"-shaped part whose length will be given as a parameter:
+\c;
+\s;void object::Part(float length)
+\s;{
+\s; for ( int i=0 ; i<2 ; i=i+1 )
+\s; {
+\s; move(length);
+\s; turn(90);
+\s; }
+\s;}
+\n;
+Now you just need to write the main function, that will call the function \c;Part\n;. At the beginning the variable \c;rest\n; will be set to 25m. The \c;while\n; loop will then repeat the instructions inside the block as long as \c;rest\n; is greater than zero. Inside the loop, first call the function \c;Part\n; (see above), then subtract 5m to the length of the L.
+\c;
+\s;extern void object::Function2( )
+\s;{
+\s; float rest = 25;
+\s; while ( rest > 0 )
+\s; {
+\s; Part(rest);
+\s; rest = rest-5;
+\s; }
+\s;}
+\n;
+The function \c;Part\n; will be called a last time with the value \c;5\n;. Then the expression \c;rest-5\n; will set the value of the variable \c;rest\n; to zero, and the \c;while\n; loop will stop.
+
+\b;Remark
+You will have noticed that in the previous exercise, the main function was at the beginning of the program, whereas in this exercise, it is at the end of the program, after the function \c;Part\n;. The rank order of the functions in the program does not matter, you can write a program either way.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/tradar1.txt b/help/E/tradar1.txt
new file mode 100644
index 00000000..d55a31c6
--- /dev/null
+++ b/help/E/tradar1.txt
@@ -0,0 +1,57 @@
+\b;Exercise
+Let the bot find all the \l;blue crosses\u object\waypoint; on the ground. As soon as the bot passed over one of the crosses, it will disappear. Here is the general principle that you will apply:
+
+Repeat forever:
+ o Look for a cross
+ o If there is none, stop the program.
+ o Calculate the direction of the cross.
+ o Set the speed of the motors in such a way that they will find their way to the cross.
+
+\b;The program
+Use a \c;\l;while\u cbot\while;\n; loop in order to repeat several instructions over and over:
+\s;\c;while ( true )
+\s;{
+\s; \n;instructions...\c;
+\s;}
+\n;
+The instruction \c;\l;radar\u cbot\radar;\n; will detect the blue crosses and put their description into a variable, for example \c;spot\n;. In this case, \c;\l;radar\u cbot\radar;()\n; needs only one parameter, i.e. the category of the object that it must look for:
+\s;\c;spot = radar(WayPoint);
+\n;
+Once all the crosses have been found, \c;radar\n; will return the value \c;\l;null\u cbot\null;\n;. You will have to test this case and react accordingly with the instruction \c;\l;if\u cbot\if;\n;:
+\s;\c;if ( spot == null ) // no more ?
+\s;{
+\s; motor(0, 0); // stops the motors
+\s; break; // stops the loop
+\s;}
+\n;The instruction \c;\l;break\u cbot\break;\n; will stop the infinite loop \c;while (true)\n;.
+
+Use the instruction \c;\l;direction\u cbot\direct;()\n; to calculate the angle of the rotation that the bot must perform in order to turn towards the blue cross. The coordinates of the object are given by \c;spot.position\n;. The following line will put the angle of the necessary rotation into the \l;variable\u cbot\var; \c;dir\n;:
+\s;\c;dir = direction(spot.position);
+\n;
+The value of the angle is positive if the blue cross is on your left hand, and negative if it is on your right hand. If the cross to be reached is on your left hand, you must set the right-hand motor to full speed, and set the left-hand motor to a lower speed, according to the angle:
+
+ direction = \c; 0\n; -> speed = \c; 1.0\n;
+ direction = \c; 45\n; -> speed = \c; 0.5\n;
+ direction = \c; 90\n; -> speed = \c; 0.0\n;
+ direction = \c;135\n; -> speed = \c;-0.5\n;
+ direction = \c;180\n; -> speed = \c;-1.0\n;
+
+The graphic below shows the speed of the left-hand and right-hand motor as set by the instruction \c;\l;motor\u cbot\motor;\n;, according to the angle:
+
+\image radar2 14 10;
+If the cross is straight ahead, the angle is 0 degrees. The motors will get the speeds 1 and 1, which means full speed ahead. If the cross is behind, the right motor will be set to speed -1: it will turn around. You can use the \l;expression\u cbot\expr; \c;1+dir/90\n; in order to calculate the necessary speed of the motors:
+\s;\c;if ( dir < 0 ) // on the right side?
+\s;{
+\s; motor(1, 1+dir/90); // turns more or less
+\s;}
+\n;
+Use the same principle if the angle has got a positive value, ranging between 0 and 180 degrees. It is up to you to work out the exact instructions to be performed:
+\s;\c;else // on the left side?
+\s;{
+\s; \n;up to you to fill in here...\c;
+\s;}
+\n;
+At the beginning of the program, you must still declare all the variables. \c;spot\n; is of type \c;\l;object\u cbot\object;\n;, whereas \c;dir\n; is of type \c;\l;float\u cbot\float;\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/tradar2.txt b/help/E/tradar2.txt
new file mode 100644
index 00000000..8ad15fce
--- /dev/null
+++ b/help/E/tradar2.txt
@@ -0,0 +1,8 @@
+\b;Exercise
+In this exercise, a "crazy bot" places many \l;blue crosses\u object\waypoint; on the ground. In order to find them, you can reuse the program written in the previous exercise. This can show you the flexibility of such a program: it adapts to whatever environment it encounters.
+
+\t;Remark
+Do not wait too long, because the crazy bot gets down to work immediately. Fortunately, as long as you are in the program editor, the game will pause.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/tremote1.txt b/help/E/tremote1.txt
new file mode 100644
index 00000000..70c55aa0
--- /dev/null
+++ b/help/E/tremote1.txt
@@ -0,0 +1,39 @@
+\b;Exercise
+Remote control a robot using an \l;information exchange post\u object\exchange;, so it will transport \l;uranium ore\u object\uranore;.
+The main actors of this exercise are¦:
+
+1) A \l;sniffer\u object\botsr; (can't carry anything).
+2) An \l;information exchange post\u object\exchange; that receives information from a sender and then transmits it to a receiver.
+3) A \l;grabber\u object\botgr; which waits for orders from the exchange post. You have no way control this robot directly.
+
+\image tremot1a 16 8;
+An information exchange post stores "name/value" couples. To control the "slave" robot we use just one couple¦:
+
+ name="order", valuer=order number
+
+The slace robot understands following orders¦:
+\c;
+ 1 -> grab(); // take an object
+ 2 -> drop(); // drop an object
+ 3 -> move(10); // move 10 meters forward
+ 4 -> move(-10); // move 10 meters backwards
+\n;
+To instruct the slave to move forward 10 meters all you have to do is¦:
+\c;\s; \l;send\u cbot\send;("order", 3, 100); // order 3 -> "move(10)"
+\n;
+After the send instruction we wait for 5 seconds to be sure the move is done.
+\c;\s; \l;wait\u cbot\wait;(5);
+\n;
+Remark: There is a better way for waiting the order has been executed, but we'll see this later in exercise "Remote Control #2".
+
+To finish the exercise you must¦:
+
+1) Take the uranium ore
+2) Move forward by 10 meters
+3) Drop the uranium ore
+4) Move backwards by 10 meters
+
+It's up to you to write the program.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/tremote2.txt b/help/E/tremote2.txt
new file mode 100644
index 00000000..58083be3
--- /dev/null
+++ b/help/E/tremote2.txt
@@ -0,0 +1,50 @@
+\b;Exercise
+Remote control a robot using an \l;information exchange post\u object\exchange;, so it will pass over the 6 blue waypoints.
+The main actors of this exercise are¦:
+
+1) A \l;wheeled grabber\u object\botgr; robot without an energy cell. This is the master you have to program.
+2) An \l;information exchange post\u object\exchange; that receives information from the master and then transmits it to the slave.
+3) A \l;practice bot\u object\bottr; which waits for orders from the exchange post. This robot has already been programmed.
+
+\image tremot2a 16 8;
+An information exchange post stores "name/value" couples. To control the "slave" robot we use two couples¦:
+
+1) name="order", value=order number
+2) nom="param", valuer=parameter for the operation
+
+Order #1 means "move" and order #2 means "turn". The parameter is the distance to move or the turning angle. For example to make the slave move 20 meters write¦:
+\c;\s; \l;send\u cbot\send;("order", 1, 100); // order "move"
+\s; \l;send\u cbot\send;("param", 20, 100); // distance 20 meters
+\n;
+These two instruction send following 2 pieces of information to the exchange post¦:
+\c; order=1
+ param=20
+\n;
+The slave robot waits for an order and executes it. Once the order has been executed by the slave, it removes the order from the exchange post. Once an order has been sent, the master must wait for the slave finishing the order before sending the next order. This is done by testing if the order is still inside the exchange post. Just write¦:
+\c;\s; while ( \l;testinfo\u cbot\testinfo;("order", 100) ) // wait for end of work
+\s; {
+\s; wait(1);
+\s; }
+\n;
+As we must give more than one order its most convenient to write a \l;function\u cbot\function; \c;SendToPost\n;, that sends the order and wait for its completion¦:
+\c;\s;void object::SendToPost(float order, float param)
+\s;{
+\s; send("param", param, 100); // send the parameter
+\s; send("order", order, 100); // send the order
+\s;
+\s; while ( testinfo("order", 100) ) // wait for end of work
+\s; {
+\s; wait(1);
+\s; }
+\s;}
+\n;
+To move forward by 20 meters, you must write in the main program¦:
+\c;\s; SendToPost(1, 20); // move(20);
+\n;
+This is the route the robot must travel through¦:
+
+\image tremot2b 8 8;
+It's up to you to finish the programming.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/tremote3.txt b/help/E/tremote3.txt
new file mode 100644
index 00000000..b8875f05
--- /dev/null
+++ b/help/E/tremote3.txt
@@ -0,0 +1,103 @@
+\b;Exercice
+Remote control a slave robot without using an \l;information exchange post\u object\exchange;. The robot should pass over the 6 blue crosses. You must use a \l;string\u cbot\string; to pass the orders to the slave bot. This string contains the order the slave shoud execute, for exemple \c;"move(20)"\n;. You can see that this is the same syntax as used in the CBOT language but we could have chosen any other syntax for exemple something like \c;"advance=20"\n;. The string will be a \c;\l;static\u cbot\static;\n; class member that will be used to communicate from the master to the slave.
+
+The two main actors of this exercise are:
+1) The \l;wheeled grabber\u object\botgr; without an energy pack and therefore immobile. This is the master you should program so it will transmit orders to the slave.
+2) The slave \l;practice bot\u object\bottr; which is already programmed and just waits for orders from the master.
+
+\b;The slave
+First of all we must understand how the program of the slave works. The \l;class\u cbot\class; \c;exchange\n; contains the mechanism for exchaning the orders. We declare a \c;\l;static\u cbot\static;\n; class member \c;m_order\n; which will contain the order to be executed. The word \c;static\n; insures that the member \c;m_order\n; is shared between all instances of the \l;class\u cbot\class; exchange.
+
+\c;\s;\l;public\u cbot\public; \l;class\u cbot\class; exchange
+\s;{
+\s; \l;static\u cbot\static; \l;private\u cbot\private; \l;string\u cbot\string; m_order = "";
+
+\n;The \c;put\n; method will be used by the master robot for transmitting an order. As long as the string \c;m_order\n; is not empty, the slave has not finished the order and the \c;put\n; method will return \c;false\n; and will do nothing.
+
+\c;\s; \l;synchronized\u cbot\synchro; \l;bool\u cbot\bool; put(string order)
+\s; {
+\s; if ( m_order == "" )
+\s; {
+\s; m_order = order;
+\s; return true;
+\s; }
+\s; else
+\s; {
+\s; return false;
+\s; }
+\s; }
+\n;
+Another method \c;get\n; will be used by the slave to retrieve the orders. This method returns the string contained in \c;m_order\n; and empties it, so a new order can be accepted:
+
+\c;\s; \l;synchronized\u cbot\synchro; string get()
+\s; {
+\s; string ret = m_order;
+\s; m_order = "";
+\s; return ret;
+\s; }
+\s;}
+\n;
+The main program of the slave contains an instance of the class \c;exchange\n; called \c;list\n;.
+
+\c;\s;\l;extern\u cbot\extern; void object::Slave3( )
+\s;{
+\s; exchange list();
+\s; string todo;
+\n;
+The outer \c;while\n; loop lasts for ever. The inner \c;while\n; loop waits for an order by using the \c;get\n; method of the \c;exchange\n; class. As soon as \c;get\n; returns a non empty string, the while loop stops.
+
+\c;\s; \l;while\u cbot\while; ( true )
+\s; {
+\s; \l;while\u cbot\while; ( true )
+\s; {
+\s; todo = list.get();
+\s; if ( todo != "" ) break;
+\s; wait(1);
+\s; }
+\n;
+Now we have received the order in the \c;todo\n; variable. All we have to do is execute it:
+
+\c;\s; if ( \l;strfind\u cbot\strfind;(todo, "move") == 0 )
+\s; {
+\s; move(\l;strval\u cbot\strval;(\l;strmid\u cbot\strmid;(todo,5)));
+\s; }
+\s; if ( strfind(todo, "turn") == 0 )
+\s; {
+\s; turn(strval(strmid(todo,5)));
+\s; }
+\s; }
+\s;}
+\n;
+\b;The master
+In the master we write an function called \c;SendOrder\n; which will send an order to the slave:
+
+\c;\s;void object::SendOrder(string order)
+\s;{
+\s; exchange list();
+\s;
+\s; while ( list.put(order) == false )
+\s; {
+\s; wait(1);
+\s; }
+\s;}
+\n;
+The \c;while\n; loop waits until a pending order has been terminated, that is the slaved has exited from the \c;get\n; method.
+Now the main program of the master is very simple:
+
+\c;\s;extern void object::Remote3( )
+\s;{
+\s; SendOrder("move(20)");
+\s; SendOrder("turn(90)");
+\s; SendOrder("move(20)");
+\s; SendOrder("turn(90)");
+\s; SendOrder("move(10)");
+\s; SendOrder("turn(90)");
+\s; SendOrder("move(10)");
+\s; SendOrder("turn(-90)");
+\s; SendOrder("move(10)");
+\s;}
+\n;
+\key;\key help;\norm; show these instruction at any time.
+
+\t;See also
+\l;Controls\u command; and \l;programming\u cbot;.
diff --git a/help/E/tremote4.txt b/help/E/tremote4.txt
new file mode 100644
index 00000000..876a00f3
--- /dev/null
+++ b/help/E/tremote4.txt
@@ -0,0 +1,129 @@
+\b;Exercise
+Remote control a slave robot without using an \l;information exchange post\u object\exchange;. The robot should pass over the 6 blue crosses. You must use a \c;\l;static\u cbot\static;\n; variable to pass the orders to the slave bot.
+
+The two main actors of this exercise are:
+1) The \l;wheeled grabber\u object\botgr; without an energy pack and therefore immobile. This is the master you should program so it will transmit orders to the slave.
+2) The slave \l;practice bot\u object\bottr; which is already programmed and just waits for orders from the master.
+
+\b;The slave
+First of all we must understand how the program of the slave works. The \l;class\u cbot\class; \c;order\n; contains two members: \c;m_type\n; is the order to execute (move or turn) and \c;m_param\n; is the distance to move or the rotation angle¦:
+
+\c;\s;\l;public\u cbot\public; \l;class\u cbot\class; order
+\s;{
+\s; \l;int\u cbot\int; m_type = \l;nan\u cbot\nan;;
+\s; \l;float\u cbot\float; m_param;
+\s;}
+\n;
+A second \l;class\u cbot\class; \c;exchange\n; contains the mechanism for exchanging the orders. We declare a \c;\l;static\u cbot\static;\n; class member \c;m_order\n; which will contain the order to be executed. The word \c;static\n; insures that the member \c;m_order\n; is shared between all instances of the \l;class\u cbot\class; exchange.
+
+\c;\s;\l;public\u cbot\public; \l;class\u cbot\class; exchange
+\s;{
+\s; \l;static\u cbot\static; \l;private\u cbot\private; order m_order = new order;
+\n;
+\n;The \c;put\n; method will be used by the master robot for transmitting an order. As long as \c;m_order\n; is different from \c;\l;nan\u cbot\nan;\n;, the slave has not finished the order and the \c;put\n; method will return \c;false\n; and will do nothing¦:
+
+\c;\s; \l;synchronized\u cbot\synchro; \l;bool\u cbot\bool; put(order a)
+\s; {
+\s; if ( m_order.m_type == nan )
+\s; {
+\s; m_order = a;
+\s; return true;
+\s; }
+\s; else
+\s; {
+\s; return false;
+\s; }
+\s; }
+\n;
+Another method \c;get\n; will be used by the slave to retrieve the orders. This method returns the order to be executed:
+
+\c;\s; \l;synchronized\u cbot\synchro; order get()
+\s; {
+\s; return m_order;
+\s; }
+\n;
+A third method \c;delete\n; will be used by the slave to indicate that the order has been executed:
+
+\c;\s; \l;synchronized\u cbot\synchro; void delete()
+\s; {
+\s; m_order.m_type = nan;
+\s; }
+\s;}
+\n;
+The main program of the slave contains an instance of the class \c;exchange\n; called \c;list\n;. We put () after the word \c;list\n; in order to create an instance of the class \c;exchange\n;.
+
+\c;\s;\l;extern\u cbot\extern; void object::Slave3( )
+\s;{
+\s; exchange list();
+\s; order todo;
+\n;
+The outer \c;while\n; loop lasts for ever. The inner \c;while\n; loop waits for an order by using the \c;get\n; method of the \c;exchange\n; class. As soon as \c;get\n; returns a value different from \c;nan\n;, the while loop stops.
+
+\c;\s; \l;while\u cbot\while; ( true )
+\s; {
+\s; \l;while\u cbot\while; ( true )
+\s; {
+\s; todo = list.get();
+\s; if ( todo.m_type != nan ) break;
+\s; wait(1);
+\s; }
+\n;
+Now we have received the order in the \c;todo\n; variable. All we have to do is execute it:
+
+\c;\s; if ( todo.m_type == 1 )
+\s; {
+\s; move(todo.m_param);
+\s; }
+\s; else if ( todo.m_type == 2 )
+\s; {
+\s; turn(todo.m_param);
+\s; }
+\s; else
+\s; {
+\s; message("Unknown order");
+\s; }
+\n;
+As soon as the execution of the order is finished, we must call the \c;delete\n; method so the master knows that another order can be sent¦:
+
+\c;\s; list.delete();
+\s; }
+\s;}
+\n;
+\b;The master
+In the master we write an function called \c;SendOrder\n; which will send an order to the slave:
+
+\c;\s;void object::SendOrder(float order, float param)
+\s;{
+\s; exchange list();
+\s; order todo();
+\s;
+\s; todo.m_type = order;
+\s; todo.m_param = param;
+\s;
+\s; while ( list.put(todo) == false )
+\s; {
+\s; wait(1);
+\s; }
+\s;}
+\n;
+The \c;while\n; loop waits until a pending order has been terminated, that is the slaved has exited from the \c;get\n; method and the \c;delete\n; method has been called.
+Now the main program of the master is very simple:
+
+\c;\s;extern void object::Remote4( )
+\s;{
+\s; SendOrder(1, 20); // move(20);
+\s; SendOrder(2, 90); // turn(90);
+\s; SendOrder(1, 20); // move(20);
+\s; SendOrder(2, 90); // turn(90);
+\s; SendOrder(1, 10); // move(10);
+\s; SendOrder(2, 90); // turn(90);
+\s; SendOrder(1, 10); // move(10);
+\s; SendOrder(2,-90); // turn(-90);
+\s; SendOrder(1, 10); // move(10);
+\s;}
+\n;
+\key;\key help;\norm; show these instruction at any time.
+
+
+\t;See also
+\l;Controls\u command; and \l;programming\u cbot;.
diff --git a/help/E/tremote5.txt b/help/E/tremote5.txt
new file mode 100644
index 00000000..f2313946
--- /dev/null
+++ b/help/E/tremote5.txt
@@ -0,0 +1,113 @@
+\b;Exercise
+Remote control a slave robot without using an \l;information exchange post\u object\exchange;. The robot should pass over the 6 blue crosses.
+
+The two main actors of this exercise are:
+1) The \l;wheeled grabber\u object\botgr; without an energy pack and therefore immobile. This is the master you should program so it will transmit orders to the slave.
+2) The slave \l;practice bot\u object\bottr; which is already programmed and just waits for orders from the master.
+
+The orders shall be stored, so the master will be able to transmit several orders without waiting for each order being processed. We use an \l;array\u cbot\array; for this purpose.
+
+\b;The slave
+First of all we must understand how the program of the slave works. The \l;class\u cbot\class; \c;order\n; contains two members: \c;m_type\n; is the order to execute (move or turn) and \c;m_param\n; is the distance to move or the rotation angle¦:
+
+\c;\s;\l;public\u cbot\public; \l;class\u cbot\class; order
+\s;{
+\s; \l;int\u cbot\int; m_type;
+\s; \l;float\u cbot\float; m_param;
+\s;}
+\n;
+A second \l;class\u cbot\class; \c;exchange\n; contains the mechanism for exchanging the orders. We declare a \c;\l;static\u cbot\static;\n; class member \c;m_fifo\n; which will contain the list of orders to be executed. The word \c;static\n; insures that the member \c;m_fifo\n; is shared between all instances of the \l;class\u cbot\class; exchange.
+
+\c;\s;{
+\s; \l;static\u cbot\static; \l;private\u cbot\private; order m_fifo[] = null;
+\n;
+The \c;put\n; method will be used by the master robot for transmitting an order. The order will simply be added at the end of the \c;m_fifo\n; array:
+
+\c;\s; \l;synchronized\u cbot\synchro; void put(order a)
+\s; {
+\s; m_fifo[sizeof(m_fifo)] = a;
+\s; }
+\n;
+Another method \c;get\n; will be used by the slave to retrieve the orders. This method returns the order to be executed. If the list is empty, \c;null\n; will be returned and the robot must wait for more orders. Otherwise the first order in the list must be returned and the remaining orders must be "scrolled up". As an array can not be "shortened" we use a temporary array \c;copy\n;¦:
+
+\c;\s; \l;synchronized\u cbot\synchro; order get()
+\s; {
+\s; if ( sizeof(m_fifo) == 0 ) return null;
+\s;
+\s; order a = m_fifo[0];
+\s; order copy[] = null;
+\s; for ( int i=1 ; i 9)
+\s; {
+\s; \l;jet\u cbot\jet;(-1);
+\s; }
+\s; \l;wait\u cbot\wait;(0.2);
+\s; }
+\s; \l;fire\u cbot\fire;(1);
+\s; }
+\s;}
+\n;
+In order to adapt the program to shooting wasps, you need to make a few changes. Replace all \c;radar(AlienAnt)\n; with \c;radar(AlienWasp)\n;. The cannon must aim straight forward and not downward, replace \c;aim(-20);\n; with \c;aim(0);\n;. And the bot must fly at the same height as the wasp. For this, you must compare the altitude of the bot given by \c;position.z\n; with the altitude of the wasp given by \c;item.position.z\n;: if \c;position.z > item.position.z\n;, go down slowly with \c;jet(-0.3);\n;. If \c;position.z < item.position.z-1\n;, climb slowly with \c;jet(0.3);\n;. A winged shooter is higher than a wasp, therefore it is better if the altitude of the bot is a little lower than the altitude of the wasp. In this case, we admit that the altitude of the bot ranges between the altitude of the wasp and the altitude of the wasp minus 1.
+
+\t;Further improvement
+Wasps move very fast. In order to increase your chances to get them, better to repeat just before the \c;fire(1);\n; a \c;radar\n; and a \c;turn\n; in order to perform a last readjustment of the direction before the shot.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/twasp2.txt b/help/E/twasp2.txt
new file mode 100644
index 00000000..fcec44ab
--- /dev/null
+++ b/help/E/twasp2.txt
@@ -0,0 +1,84 @@
+\b;Objective
+Bring down the flying wasps in a more efficient way than with the previous program.
+
+\b;Program
+Here is again the program of the previous exercise that shoots down all the wasps after many, many unsuccessful attempts:
+\c;
+\s;extern void object::Wasp1()
+\s;{
+\s; \l;object\u cbot\type; item;
+\s;
+\s; \l;aim\u cbot\aim;(0);
+\s;
+\s; \l;while\u cbot\while; (true)
+\s; {
+\s; \l;while\u cbot\while; (\l;radar\u cbot\radar;(AlienWasp, 0, 360, 0, 20) == null)
+\s; {
+\s; item = \l;radar\u cbot\radar;(AlienWasp);
+\s; \l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));
+\s; \l;motor\u cbot\motor;(1,1);
+\s;
+\s; \l;jet\u cbot\jet;(0);
+\s; \l;if\u cbot\if; (position.z > item.position.z)
+\s; {
+\s; \l;jet\u cbot\jet;(-0.3);
+\s; }
+\s;
+\s; \l;if\u cbot\if; (position.z < item.position.z - 1)
+\s; {
+\s; \l;jet\u cbot\jet;(0.3);
+\s; }
+\s;
+\s; \l;wait\u cbot\wait;(0.2);
+\s; }
+\s; item = \l;radar\u cbot\radar;(AlienWasp);
+\s; \l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));
+\s; \l;fire\u cbot\fire;(1);
+\s; }
+\s;}
+\n;
+The many failures are due to the fact that the wasp is already gone before the bullets can reach it. The only way to improve the program consists in setting the power of the two motors and of the jet in such a way that the bot follows the movement of the target during the burst.
+
+Just before the shot, the program adjusts a last time the direction with \c;turn(direction(item.position));\n;. In order to follow the wasp during the burst, you have to "remember" the angle of this last rotation: if the angle was positive (rotation to the left), the bot must continue to turn left during the burst; if the angle was negative, the bot must continue to turn right.
+
+In order to "remember" the angle of the last rotation, we need a variable that can contain just one number. If we choose to call it \c;angle\n;, we must define the variable with the following line at the beginning of the program:
+\c;
+\s; \l;float\u cbot\type; angle;
+\n;
+The variable type \l;float\u cbot\type; is the variable type that can contain any number, i.e. whole numbers or real numbers. Please refer to the \l;text about variable types\u cbot\type; if you want to know more about the different types of variables and what they can contain.
+
+Just before the instruction \c;fire(1);\n;, instead of writing \c;\l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));\n;, we will put the rotation angle into the variable \c;angle\n;:
+\c;
+\s; angle = direction(item.position);
+\n;
+Then we perform the rotation, and we set the power of the motors so that the bot continues the movement:
+\c;
+\s; turn(angle);
+\s; if (angle < 0)
+\s; {
+\s; motor(1,0.5);
+\s; }
+\s; else
+\s; {
+\s; motor(0.5,1);
+\s; }
+\n;
+The instruction \c;else\n; determines what instructions the program should execute if the condition stated in the \c;if\n; instruction is false.
+
+Then we must set the power of the jet so that the bot follows the wasp also in the vertical direction:
+\c;
+\s; jet(0);
+\s; if(position.z > item.position.z)
+\s; {
+\s; jet(-0.3);
+\s; }
+\s;
+\s; if(position.z < item.position.z - 1)
+\s; {
+\s; jet(0.3);
+\s; }
+\n;
+As you will see, this program is much more efficient than the previous one!
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/E/win.txt b/help/E/win.txt
new file mode 100644
index 00000000..88e55a42
--- /dev/null
+++ b/help/E/win.txt
@@ -0,0 +1,3 @@
+
+Houston congratulates you in the name of mankind for the success of your missin.
+The Great Migration to Terra Nova will start very soon.
diff --git a/help/F/authors.txt b/help/F/authors.txt
new file mode 100644
index 00000000..392b4ee5
--- /dev/null
+++ b/help/F/authors.txt
@@ -0,0 +1,7 @@
+Development team: Beta tester core team:
+
+- Daniel Roux - Adrien Roux - Michael Jubin
+- Denis Dumoulin - Didier Raboud - Daniel Sauthier
+- Otto Kölbl - Nicolas Beuchat - Nicolas Stubi
+- Michael Walz - Joël Roux - Patrick Thévoz
+- Didier Gertsch
diff --git a/help/F/cbot.txt b/help/F/cbot.txt
new file mode 100644
index 00000000..87b2a004
--- /dev/null
+++ b/help/F/cbot.txt
@@ -0,0 +1,91 @@
+\b;Programming - the CBOT language
+The CBOT language is very close in structure and syntax to C++ and Java. It has been adapted for the specific purposes of COLOBOT, and for an efficient pedagogical approach.
+This language is made up of instructions (see below), \l;blocks\u cbot\bloc;, \l;functions\u cbot\function;, \l;classes\u cbot\class;, \l;variables\u cbot\var;, \l;arrays\u cbot\array;, \l;expressions\u cbot\expr; and \l;conditions\u cbot\cond;.
+
+o \c;\token;Instructions\norm;\n;
+In the program editor, an instruction in the CBOT language is always displayed on an orange background. If an instruction hasn't got an orange background, this means that it has been misspelled. Instruction names are always written in lower case.
+
+o \c;\type;Type\norm;\n;
+The \l;type\u cbot\type; of a variable appears with a green background.
+
+o \c;\const;Constants\norm;\n;
+Constants like \l;categories\u cbot\category; are displayed with a red background.
+
+\t;Instructions in the CBOT language:
+\c;\l;extern\u cbot\extern; \n;Indicate the main function
+\c;\l;if\u cbot\if; \n;Choice structure
+\c;\l;else\u cbot\if; \n;Alternative choice structure
+\c;\l;for\u cbot\for; \n;Loop structure
+\c;\l;while\u cbot\while; \n;Control structure
+\c;\l;do\u cbot\do; \n;Control structure
+\c;\l;break\u cbot\break; \n;Exit from a loop
+\c;\l;continue\u cbot\continue; \n;Continues the loop
+\c;\l;return\u cbot\return; \n;Exit from a function
+\c;\l;sizeof\u cbot\sizeof; \n;Size of an array
+
+\t;Specific instructions for bots:
+\c;\l;radar\u cbot\radar; \n;Object detection
+\c;\l;direction\u cbot\direct; \n;Calculates a rotation angle
+\c;\l;distance\u cbot\dist; \n;Calculates a distance
+\c;\l;distance2d\u cbot\dist2d; \n;Calculates a distance
+\c;\l;wait\u cbot\wait; \n;Waits
+\c;\l;move\u cbot\move; \n;Moves forward or backward
+\c;\l;turn\u cbot\turn; \n;Turns
+\c;\l;goto\u cbot\goto; \n;Goes to a given position
+\c;\l;motor\u cbot\motor; \n;Direct motor control
+\c;\l;jet\u cbot\jet; \n;Direct jet engine control
+\c;\l;message\u cbot\message; \n;Displays a message
+\c;\l;retobject\u cbot\retobj; \n;Returns an object from a function
+\c;\l;errmode\u cbot\errmode; \n;Error treatement control
+\c;\l;abstime\u cbot\abstime; \n;Returns the absolute time
+
+\t;Instructions about topology:
+\c;\l;space\u cbot\space; \n;Calculates a free space
+\c;\l;topo\u cbot\topo; \n;Returns the altitude of a point
+\c;\l;flatground\u cbot\flatgrnd; \n;Returns radius of a flat area
+
+\t;Instructions specific to some bots:
+\c;\l;grab\u cbot\grab; \n;Picks up an object
+\c;\l;drop\u cbot\drop; \n;Puts down an object
+\c;\l;sniff\u cbot\sniff; \n;Sounds the subsoil
+\c;\l;thump\u cbot\thump; \n;Overturns alien insects
+\c;\l;recycle\u cbot\recycle; \n;Recycles a derelict bot
+\c;\l;shield\u cbot\shield; \n;Extends or withdraws the shield
+\c;\l;fire\u cbot\fire; \n;Fires the cannon
+\c;\l;aim\u cbot\aim; \n;Vertical angle of the cannon
+
+\t;Specific instructions for exchange posts:
+\c;\l;receive\u cbot\receive; \n;Receives an information
+\c;\l;send\u cbot\send; \n;Sends a new information
+\c;\l;testinfo\u cbot\testinfo; \n;Tests if an information exists
+\c;\l;deleteinfo\u cbot\delinfo; \n;Deletes an existing information
+
+\t;Specific instructions for classes:
+\c;\l;class\u cbot\class; \n;Class declararion
+\c;\l;public\u cbot\public; \n;Declares a public function
+\c;\l;private\u cbot\private; \n;Declares a private class member
+\c;\l;static\u cbot\static; \n;Declares a static class member
+\c;\l;synchronized\u cbot\synchro; \n;Prevents simultaneous execution
+\c;\l;new\u cbot\new; \n;Creates a new instance
+\c;\l;this\u cbot\this; \n;Reference to the current instance
+
+\t;Specific instructions for strings:
+\c;\l;strlen\u cbot\strlen; \n;Gets string length
+\c;\l;strleft\u cbot\strleft; \n;Extracts left part
+\c;\l;strright\u cbot\strright; \n;Extracts right part
+\c;\l;strmid\u cbot\strmid; \n;Extracts center part
+\c;\l;strfind\u cbot\strfind; \n;Finds a substring.
+\c;\l;strval\u cbot\strval; \n;Converts string to number
+\c;\l;strupper\u cbot\strupper; \n;Converts to upper case
+\c;\l;strlower\u cbot\strlower; \n;Converts to lower case
+
+\t;Specific instructions for files:
+\c;\l;open\u cbot\open; \n;Opens a file
+\c;\l;close\u cbot\close; \n;Closes a file
+\c;\l;writeln\u cbot\writeln; \n;Writes line to a file
+\c;\l;readln\u cbot\readln; \n;Reads line from a file
+\c;\l;eof\u cbot\eof; \n;Tests if end of file
+\c;\l;deletefile\u cbot\deletef; \n;Deletes a file
+
+\t;See also
+\l;Types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/abstime.txt b/help/F/cbot/abstime.txt
new file mode 100644
index 00000000..bdfe4c90
--- /dev/null
+++ b/help/F/cbot/abstime.txt
@@ -0,0 +1,11 @@
+\b;Instruction \c;abstime\n;
+Syntax¦:
+\s;\c;abstime ( );\n;
+
+Return the time in seconds elapsed since the beginning of the mission.
+
+\t;Return: \c;\l;float\u cbot\float;\n;
+Time in seconds.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/aim.txt b/help/F/cbot/aim.txt
new file mode 100644
index 00000000..8d1e460f
--- /dev/null
+++ b/help/F/cbot/aim.txt
@@ -0,0 +1,21 @@
+\b;Instruction \c;aim\n;
+Syntax :
+\s;\c;aim ( angle );\n;
+
+This instruction sets the vertical angle of the cannon. The following robots are equipped with a cannon:
+o \l;Shooter\u object\botfr;
+o \l;Orga shooter\u object\botor;
+o \l;Phazer shooter\u object\botphaz;
+
+When controlling the robot through programming, the only way to turn the gun left or right is to turn the whole robot with the instruction \c;\l;turn\u cbot\turn;\n;.
+
+\t;angle: \c;\l;float\u cbot\float;\n;
+Angle in degrees of the gun relative to the robot. A positive value orients the gun upward. For shooters and orga shooters, the angle must range from \c;-20\n; to \c;+20\n; degrees. For phazer shooters, the angle must range from \c;-20\n; to \c;45\n; degrees.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Zero if everything is OK, a value different from zero if the rotation could not be performed:
+\c;== 0 \n;The gun has now got the desired orientation
+\c;!= 0 \n;rotation impossible
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/array.txt b/help/F/cbot/array.txt
new file mode 100644
index 00000000..152bed55
--- /dev/null
+++ b/help/F/cbot/array.txt
@@ -0,0 +1,31 @@
+\b;Arrays
+An array is basically a collection of variables of the same type or class. You can use N dimensionnal arrays in the CBOT language. Each dimension is limited to 9999 elements. You must use square brackets \c;[]\n; after the type name or the variable name to declare an array.
+\c;
+\s;int [ ] a; // an array of int
+\s;int a [12]; // an array of int limited to 12 elements
+\s;string s[3]; // an array of 3 strings
+\s;float xy[][]; // an 2 dimensionnal array of floats
+\n;
+Actually when the CBOT interpreter encounters an array declaration, it just creates a \c;\l;null\u cbot\null;\n; \l;reference\u cbot\pointer;:
+\c;
+\s;int a[5]; // a is now a null reference
+\n;
+As soon as you put values into the array, the elements are created and the reference is initialized:
+\c;
+\s;a[2] = 213; // a points to
+\s; // 3 élements [0], [1] et [2]
+\n;
+After this operation, \c;a\n; contains a reference to the elements of the array. Elements \c;[0]\n; and \c;[1]\n; are created but not initialized because an array cannot contain empty elements. The \c;\l;sizeof\u cbot\sizeof;\n; instruction allows you to obtain the number of elements contained in an array.
+
+When an array is declared with a maximum size, the program will stop as soon as there is an access beyond the maximum array size. No error is signalled during compilation even if the error is obvious:
+\c;
+\s;{
+\s; int a[5];
+\s; a[7] = 123; // no error at compile time
+\s; // but error at run time
+\s;}
+\n;
+If you pass an array as parameter to a \l;function\u cbot\function;, the function only receives a \l;reference\u cbot\pointer; to the array. That means if you modify an array element in the function, the element of the array that has been passed the function will be actuallay modified.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/bloc.txt b/help/F/cbot/bloc.txt
new file mode 100644
index 00000000..287536ea
--- /dev/null
+++ b/help/F/cbot/bloc.txt
@@ -0,0 +1,49 @@
+\b;Blocks
+You can use braces \c;{ }\n; to group a number of instructions together in order to make one single block out of them, for example:
+\c;
+\s; {
+\s; float t;
+\s; t = a;
+\s; a = b;
+\s; b = t; // switches round a and b
+\s; }
+\n;
+Every instruction in the block is followed by a \l;semicolon\u cbot\term;, but the block itself is not.
+Let us take the following example with the instruction \c;\l;if\u cbot\if;\n; to illustrate the use of blocks in a program:
+\c;
+\s; if ( a < b )
+\s; \n;instruction 1\c;;
+\s; \n;instruction 2\c;;
+\s; \n;instruction 3\c;;
+\n;
+If the \l;condition\u cbot\cond; is true, instructions 1, 2 and 3 are performed. If the condition is false, only instruction 1 is ignored, instructions 2 and 3 are performed. The fact that instruction 2 is lined up with instruction 1 does not matter.
+If you want to perform instructions 1 and 2 only if the condition is true, you have to bracket them together in a block:
+\c;
+\s; if ( a < b )
+\s; {
+\s; \n;instruction 1\c;;
+\s; \n;instruction 2\c;;
+\s; }
+\s; \n;instruction 3\c;;
+\n;
+Blocks may be needed with instructions \c;\l;if\u cbot\if;\n;, \c;\l;while\u cbot\while;\n; and \c;\l;for\u cbot\for;\n;, in order to group several instructions that should be performed only if a condition is true, or repeated several times.
+You can fit blocks into other blocks, on as many levels as you need. Here is an example of imbrication on two levels :
+\c;
+\s; if ( a > b )
+\s; {
+\s; int i = 0;
+\s; while ( i < 18 )
+\s; {
+\s; move(10);
+\s; turn(5);
+\s; i = i+1;
+\s; }
+\s; }
+\n;
+You had better line up the open brace \c;{\n; with the closing brace \c;}\n; in order to improve readability, but it is not compulsory. The following example takes less space, is equivalent to the previous example, but it is not advisable to write your programs in the following style :
+\c;
+\s; if(a>b) { int i=0; while(i<18) {
+\s; move(10);turn(5);i=i+1; }}
+\n;
+\t;See also
+\l;Instructions\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/bool.txt b/help/F/cbot/bool.txt
new file mode 100644
index 00000000..b97ab9d4
--- /dev/null
+++ b/help/F/cbot/bool.txt
@@ -0,0 +1,5 @@
+\b;Type \c;bool\n;
+In a variable of this type you can put a boolean value, that is a value that can take only two states: true or false.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/break.txt b/help/F/cbot/break.txt
new file mode 100644
index 00000000..2833e6c2
--- /dev/null
+++ b/help/F/cbot/break.txt
@@ -0,0 +1,25 @@
+\b;Instruction \c;break\n;
+Syntax :
+\s;\c;while ( condition )
+\s;{
+\s; break;
+\s;}
+\n;
+With this instruction, you can get out immediately of a \c;\l;while\u cbot\while;\n; or \c;\l;for\u cbot\for;\n; loop.
+
+Here is an example:
+\s;\c;int i = 0;
+\s;while ( true )
+\s;{
+\s; \n;Instructions ...\c;
+\s; i = i+1;
+\s; if ( i >= 10 )
+\s; {
+\s; break;
+\s; }
+\s; \n;more instructions ...\c;
+\s;}
+\n;
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/category.txt b/help/F/cbot/category.txt
new file mode 100644
index 00000000..6dd7f3c2
--- /dev/null
+++ b/help/F/cbot/category.txt
@@ -0,0 +1,108 @@
+\b;Value \c;Categories\n;
+Categories represent the names of objects in the CBOT language. Everything in COLOBOT is an object: robots, buildings, raw materials, etc., even yourself.
+
+In a program, categories are always displayed on a \const;red background\norm;. If a category isn't highlighted in red, it is misspelled. Caps and lower cases should be kept as is.
+
+Below are the different categories available :
+
+\t;Buildings :
+
+\button 176; \c;\l;Houston\u object\Huston; \n;Mission Control
+\button 171; \c;\l;SpaceShip\u object\base; \n;Spaceship
+\button 160; \c;\l;BotFactory\u object\factory; \n;Robot Factory
+\button 163; \c;\l;ResearchCenter\u object\research; \n;Research Center
+\button 168; \c;\l;RadarStation\u object\radar; \n;Radar
+\button 172; \c;\l;ExchangePost\u object\exchange; \n;Information Exchange Post
+\button 169; \c;\l;RepairCenter\u object\repair; \n;Repair Center
+\button 165; \c;\l;DefenseTower\u object\tower; \n;Defense Tower
+\button 166; \c;\l;AutoLab\u object\labo; \n;Organic Matter Analyzer
+\button 164; \c;\l;PowerStation\u object\station; \n;Power Station
+\button 167; \c;\l;PowerPlant\u object\energy; \n;Power Cell Factory
+\button 170; \c;\l;NuclearPlant\u object\nuclear; \n;Nuclear Plant
+\button 162; \c;\l;Converter\u object\convert; \n;Titanium Converter
+\button 161; \c;\l;Derrick\u object\derrick; \n;Derrick
+\button 174; \c;\l;PowerCaptor\u object\captor; \n;Parabolic Lightning Conductor
+\button 175; \c;\l;Vault\u object\safe; \n;Vault
+ \c;\l;StartArea\u object\start; \n;Starting Pad
+ \c;\l;GoalArea\u object\goal; \n;Finishing Pad
+ \c;\l;AlienNest\u object\nest; \n;Alien Nest
+
+
+\t;Portable Objects :
+
+ \c;\l;TitaniumOre\u object\titanore; \n;Titanium Ore
+ \c;\l;UraniumOre\u object\uranore; \n;Uranium Ore
+ \c;\l;Titanium\u object\titan; \n;Cube of converted Titanium
+ \c;\l;PowerCell\u object\power; \n;Regular Power Cell
+ \c;\l;NuclearCell\u object\atomic; \n;Nuclear Power Cell
+ \c;\l;OrgaMatter\u object\bullet; \n;Organic Matter
+ \c;\l;BlackBox\u object\bbox; \n;Black Box
+ \c;\l;TNT\u object\tnt; \n;Explosive device
+ \c;\l;KeyA..D\u object\key; \n;Keys A, B, C and D
+
+
+\t;Robots :
+
+\button 158; \c;\l;PracticeBot\u object\bottr; \n;Practice Bot
+\button 173; \c;\l;TargetBot\u object\bottarg; \n;Target Bot
+
+\button 137; \c;\l;WheeledGrabber\u object\botgr; \n;Wheeled Grabber
+\button 138; \c;\l;TrackedGrabber\u object\botgc; \n;Tracked Grabber
+\button 139; \c;\l;WingedGrabber\u object\botgj; \n;Winged Grabber
+\button 150; \c;\l;LeggedGrabber\u object\botgs; \n;Legged Grabber
+
+\button 140; \c;\l;WheeledSniffer\u object\botsr; \n;Wheeled Sniffer
+\button 141; \c;\l;TrackedSniffer\u object\botsc; \n;Tracked Sniffer
+\button 142; \c;\l;WingedSniffer\u object\botsj; \n;Winged Sniffer
+\button 152; \c;\l;LeggedSniffer\u object\botss; \n;Legged Sniffer
+
+\button 143; \c;\l;WheeledShooter\u object\botfr; \n;Wheeled Shooter
+\button 144; \c;\l;TrackedShooter\u object\botfc; \n;Tracked Shooter
+\button 145; \c;\l;WingedShooter\u object\botfj; \n;Winged Shooter
+\button 151; \c;\l;LeggedShooter\u object\botfs; \n;Legged Shooter
+
+\button 153; \c;\l;WheeledOrgaShooter\u object\botor; \n;Wheeled Orga Shooter
+\button 154; \c;\l;TrackedOrgaShooter\u object\botoc; \n;Tracked Orga Shooter
+\button 155; \c;\l;WingedOrgaShooter\u object\botoj; \n;Winged Orga Shooter
+\button 156; \c;\l;LeggedOrgaShooter\u object\botos; \n;Legged Orga Shooter
+
+\button 149; \c;\l;Subber\u object\botsub; \n;Subber
+\button 148; \c;\l;Recycler\u object\botrecy; \n;Recycler
+\button 157; \c;\l;Shielder\u object\botshld; \n;Shielder
+\button 146; \c;\l;Thumper\u object\bottump; \n;Thumper
+\button 147; \c;\l;PhazerShooter\u object\botphaz; \n;Phazer Shooter
+
+
+\t;Enemies :
+
+ \c;\l;AlienQueen\u object\mother; \n;Alien Queen
+ \c;\l;AlienEgg\u object\egg; \n;Alien Egg
+ \c;\l;AlienAnt\u object\ant; \n;Ant
+ \c;\l;AlienSpider\u object\spider; \n;Spider
+ \c;\l;AlienWasp\u object\wasp; \n;Wasp
+ \c;\l;AlienWorm\u object\worm; \n;Worm
+
+
+\t;Miscellaneous :
+
+\button 136; \c;\l;Me\u object\human; \n;You!
+ \c;\l;Mine\u object\mine; \n;Mine
+ \c;\l;Barrier\u object\barrier; \n;Barrier
+ \c;\l;Wreck\u object\wreck; \n;Derelict bot
+ \c;\l;Ruin\u object\ruin; \n;Derelict building
+
+
+\t;Flags and Other Indicators :
+
+ \c;\l;BlueFlag\u object\flag; \n;Blue Flag
+ \c;\l;RedFlag\u object\flag; \n;Red Flag
+ \c;\l;GreenFlag\u object\flag; \n;Green Flag
+ \c;\l;YellowFlag\u object\flag; \n;Yellow Flag
+ \c;\l;VioletFlag\u object\flag; \n;Violet Flag
+ \c;\l;WayPoint\u object\waypoint; \n;Checkpoint
+ \c;\l;EnergySite\u object\enerspot; \n;Underground Energy Deposit
+ \c;\l;TitaniumSite\u object\stonspot; \n;Underground Titanium Deposit
+ \c;\l;UraniumSite\u object\uranspot; \n;Underground Uranium Deposit
+
+\t;See also
+\l;CBOT Language\u cbot; and \l;Variables\u cbot\type;.
diff --git a/help/F/cbot/class.txt b/help/F/cbot/class.txt
new file mode 100644
index 00000000..942d7b0e
--- /dev/null
+++ b/help/F/cbot/class.txt
@@ -0,0 +1,72 @@
+\b;Instruction \c;class\n;
+This allows you to declare a class definition using following syntax:
+\c;
+\s;public class ClassName
+\s;{
+\s; declarations;
+\s;}
+\n;
+Classes can only be \l;public\u cbot\public;, that is they can be used from all bots in a mission. Class members are also public, that is they are accessible from outside the class. Class members can be fields or functions (also called methods), for example the followin class \c;MyClass\n; contains 4 fields (a, b, x and s) and one method (MyFunction).
+\c;
+\s;public class MyClass
+\s;{
+\s; int a, b;
+\s; float x = 3.33;
+\s; string s = "hello";
+\s; float MyFunction( float value )
+\s; {
+\s; return (value*x)-1;
+\s; }
+\s;}
+\n;
+As shown in this exemple the class members can be initialized (\c;x=3.33\n;). You can also define a constructor which is a special method having the same name as the class name. This method will be called automatically at creation time of a class instance. You can also declare more than one method with the same name but different parameters.
+\c;
+\s;public class MyClass
+\s;{
+\s; int a, b;
+\s; void MyClass( )
+\s; {
+\s; a = 2; b = 3;
+\s; }
+\s; void MyClass( int a, int b )
+\s; {
+\s; this.a = a; this.b = b;
+\s; }
+\s;}
+\n;
+In this example two constructors are declared for \c;MyClass\n;, one without parameters and the other one with two parameters. As the names of the parameters of the second constructor are the same as the names of the two members \c;a\n; et \c;b\n; we must use the \c;\l;this\u cbot\this;.a\n; and \c;\l;this\u cbot\this;.b\n; to avoid confusion with the parameters. Another more simpler solution would be to give different names to the parameters.
+\c;
+\s;void Test( )
+\s;{
+\s; MyClass item1(); // constr. w/o parameters
+\s; MyClass item2(4, 5); // constr. with 2 parameters
+\s; MyClass item3; // no constructor called,
+\s; // therefore item3 == null
+\s;}
+\n;
+You can also define a destructor. This must be a \c;void\n; fonction without parameters that has the same name as the class name but prefixed by the ~ character. The destructor is called automatically as soon as the class instance is no more referenced by anyone.
+\c;
+\s;public class MyClass
+\s;{
+\s; static private int counter = 0; // instance counter
+\s; void MyClass( )
+\s; {
+\s; counter ++; // one instance more
+\s; }
+\s; void ~MyClass( )
+\s; {
+\s; counter --; // one instance less
+\s; }
+\s;}
+\s;void Test()
+\s;{
+\s; MyClass item1( ); // counter = 1
+\s; MyClass item2( ); // counter = 2
+\s; item1 = null; // counter = 1
+\s;} // counter = 0
+\n;
+If you pass a class instance as parameter to a \l;function\u cbot\function;, the function only receives a \l;reference\u cbot\pointer; to the instance. That means if you modify the instance in the function, the instance that has been passed to the function will be actuallay modified.
+
+\t;See also
+\c;\l;public\u cbot\public;\n;, \c;\l;private\u cbot\private;\n;, \c;\l;static\u cbot\static;\n;, \c;\l;synchronized\u cbot\synchro;\n;, \c;\l;new\u cbot\new;\n;, \c;\l;reference\u cbot\pointer;\n;, \c;\l;this\u cbot\this;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/close.txt b/help/F/cbot/close.txt
new file mode 100644
index 00000000..bca89ae3
--- /dev/null
+++ b/help/F/cbot/close.txt
@@ -0,0 +1,8 @@
+\b;Instruction \c;close\n;
+Close a file opened previously with \c;\l;open\u cbot\open;\n;. This is a method of the \c;\l;file\u cbot\file;\n; class; therefore you cannot write \c;close()\n; but only \c;handle.close()\n;¦:
+\c;
+\s; handle.close();
+\n;
+\t;See also
+\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;readln\u cbot\readln;\n;, \c;\l;writeln\u cbot\writeln;\n; and \c;\l;eof\u cbot\eof;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/cond.txt b/help/F/cbot/cond.txt
new file mode 100644
index 00000000..f6f41794
--- /dev/null
+++ b/help/F/cbot/cond.txt
@@ -0,0 +1,29 @@
+\b;Conditions
+A condition is a special \l;expression\u cbot\expr; that returns a \l;boolean\u cbot\bool; value, that can only be either \c;\l;true\u cbot\true;\n; or \c;\l;false\u cbot\false;\n;. With a condition, you can choose f. ex. if the instructions in a \c;\l;while\u cbot\while;\n; loop must be repeated again, or if the instruction in a \c;\l;if\u cbot\if;\n; bloc must be executed.
+Here are some operators that you can use in conditions to compare two values :
+
+\c;a == b \n;\c;a\n; equals \c;b\n;
+\c;a != b \n;\c;a\n; is different from \c;b\n;
+\c;a < b \n;\c;a\n; smaller than \c;b\n;
+\c;a <= b \n;\c;a\n; smaller than or equal to \c;b\n;
+\c;a > b \n;\c;a\n; greater than \c;b\n;
+\c;a >= b \n;\c;a\n; greater than or equal to \c;b\n;
+
+For example :
+
+\c;12 == 12 \n;returns true
+\c;45 != 47 \n;returns true
+\c;99 == 98 \n;returns false
+\c;12 < -1 \n;returns false
+\c;12 >= 10 \n;returns true
+\c;12 >= 12 \n;returns true
+
+\t;Remarque
+Be careful not to confuse the equality comparison \c;==\n; with the assignment of a \l;variable\u cbot\var; \c;=\n;.
+
+\c;a == b\n; is an expression that compares \c;a\n; with \c;b\n;.
+\c;a = b\n; is an expression that copies the value of \c;b\n; into \c;a\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/F/cbot/continue.txt b/help/F/cbot/continue.txt
new file mode 100644
index 00000000..d516aa78
--- /dev/null
+++ b/help/F/cbot/continue.txt
@@ -0,0 +1,25 @@
+\b;Instruction \c;continue\n;
+Syntax :
+\s;\c;while ( condition )
+\s;{
+\s; continue;
+\s;}
+\n;
+With this instruction, you can jump over the rest of instructions in the \c;\l;bloc\u cbot\bloc;\n; of a \c;\l;while\u cbot\while;\n; or \c;\l;for\u cbot\for;\n; loop: The execution will resume at the beginning of the bloc, the next time the loop is repeated.
+
+Here is an example:
+\s;\c;int i = 0;
+\s;while ( i < 5 )
+\s;{
+\s; i = i+1;
+\s; if ( i == 3 )
+\s; {
+\s; continue;
+\s; }
+\s; \n;Instructions ...\c;
+\s;}
+\n;
+The instructions will only be executed for the values of \c;i\n; 1, 2, 4 and 5.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/deletef.txt b/help/F/cbot/deletef.txt
new file mode 100644
index 00000000..dc6e93f9
--- /dev/null
+++ b/help/F/cbot/deletef.txt
@@ -0,0 +1,10 @@
+\b;Instruction \c;deletefile\n;
+The deletefile instruction deletes an existing file in the files/ folder.
+
+Files can only be deleted in the files/ folder which is located in the folder where Colobot has been installed. You cannot not delete files that are located elsewhere than in the files/ folder.
+
+Syntax¦:
+\s;\c;deletefile ( filename );\n;
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/delinfo.txt b/help/F/cbot/delinfo.txt
new file mode 100644
index 00000000..6d93b26b
--- /dev/null
+++ b/help/F/cbot/delinfo.txt
@@ -0,0 +1,15 @@
+\b;Instruction \c;deleteinfo\n;
+Syntax¦:
+\s;\c;deleteinfo ( name, power );\n;
+
+Delete an existing information in the closest \l;information exchange post\u object\exchange;.
+
+\t;name: \c;string\n;
+Name of the information to be deleted. This name is a string: it must be written in quotation marks "¦".
+
+\t;power: \c;float\n;
+Power of the transmitter, which corresponds to the maximal distance between the sender and the exchange post. If the distance is longer, the information won't be deleted. Default value is 10 metres.
+
+\t;See also
+\c;\l;receive\u cbot\receive;\n;, \c;\l;send\u cbot\send;\n; and \c;\l;testinfo\u cbot\testinfo;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/direct.txt b/help/F/cbot/direct.txt
new file mode 100644
index 00000000..d400e805
--- /dev/null
+++ b/help/F/cbot/direct.txt
@@ -0,0 +1,15 @@
+\b;Instruction \c;direction\n;
+Syntax :
+\s;\c;direction ( pos );\n;
+
+Calculates the rotation that a robot must perform in order to point towards a given position.
+
+\t;pos: \c;\l;point\u cbot\point;\n;
+Position towards which the robot must point.
+
+\t;Return value: \c;\l;float\u cbot\float;\n;
+Angle of the rotation that must be performed. -90 means f. ex. a rotation of 90 degrees to the right.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/F/cbot/dist.txt b/help/F/cbot/dist.txt
new file mode 100644
index 00000000..a4183d44
--- /dev/null
+++ b/help/F/cbot/dist.txt
@@ -0,0 +1,30 @@
+\b;Instruction \c;distance\n;
+With the instruction \c;distance( , )\n; you can calculate the distance between two positions.
+
+\b;Basic use
+If you write \c;position\n; alone, this gives you the position of the bot that executes the program. If you write the name of a variable followed by \c;.position\n;, this gives you the position of the object described in the variable.
+
+Here is a program that moves forward, covering exactly the distance between the bot and the closest ant:
+\c;
+\s; item = \l;radar\u cbot\radar;(AlienAnt);
+\s; \l;move\u cbot\move;(distance(position, item.position));
+\n;
+This is of course pure suicide. Better to stop 40 meters before, in order to be at shooting range:
+\c;
+\s; item = radar(AlienAnt);
+\s; move(distance(position, item.position) - 40);
+\n;
+\b;For specialists
+Syntax:
+\s;\c;distance ( pos1, pos2 );\n;
+
+Calculates the distance between two positions.
+
+\t;pos1, pos2: \c;\l;point\u cbot\point;\n;
+Coordinates of the two positions.
+
+\t;Return value: \c;\l;float\u cbot\float;\n;
+Distance between the two positions.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/dist2d.txt b/help/F/cbot/dist2d.txt
new file mode 100644
index 00000000..89ea1cb2
--- /dev/null
+++ b/help/F/cbot/dist2d.txt
@@ -0,0 +1,14 @@
+\b;Instruction \c;distance2d\n;
+Syntax:
+\s;\c;distance2d ( pos1, pos2 );\n;
+
+Calculates the distance between two positions (ignores the z coordinate).
+
+\t;pos1, pos2: \c;\l;point\u cbot\point;\n;
+Coordinates of the two positions.
+
+\t;Return value: \c;\l;float\u cbot\float;\n;
+Distance between the two positions.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/do.txt b/help/F/cbot/do.txt
new file mode 100644
index 00000000..391745c6
--- /dev/null
+++ b/help/F/cbot/do.txt
@@ -0,0 +1,28 @@
+\b;Instruction \c;do - while\n;
+Syntax:
+\s;\c;do
+\s;{
+\s; \n;Instructions ...\c;
+\s;}
+\s;while ( condition );
+\n;
+This instruction allows you to perform several times the instructions inside the \l;block\u cbot\bloc;. The instructions are executed at least once, because the condition is tested only afterwards.
+Be careful not to confuse the instruction \c;do { } while ( );\n; with the instruction \c;\l;while\u cbot\while; ( ) { }\n;; the latter tests the condition before the instructions in the block are executed.
+
+\t;\c;condition\n;
+The instructions in the block are performed over and over again, as long as the \l;condition\u cbot\cond; is true.
+
+Here is an example :
+\s;\c;do
+\s;{
+\s; p = radar(TitaniumOre);
+\s;}
+\s;while ( p == null );
+\n;
+\t;Attention
+Always put a \l;semicolon\u cbot\term; at the end of the line \c;while ( )\n;.
+
+The instructions \c;\l;break\u cbot\break;\n; and \c;\l;continue\u cbot\continue;\n; can be useful inside a block following the instruction \c;do { }\n;.
+
+\t;See also
+\l;Instructions\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/drop.txt b/help/F/cbot/drop.txt
new file mode 100644
index 00000000..9b383dd1
--- /dev/null
+++ b/help/F/cbot/drop.txt
@@ -0,0 +1,29 @@
+\b;Instruction \c;drop\n;
+The instruction \c;drop();\n; instructs the bot to drop whatever the operating arm is carrying on the ground, on the platform of a building or on the power cell location of a bot.
+
+\b;Basic use
+The instruction \c;drop();\n; written in this form drops the object in front of the bot. Here is a short program that grabs an object in front of the bot and drops it 5 meters further:
+\c;
+\s; \l;grab\u cbot\grab;();
+\s; \l;move\u cbot\move;(5);
+\s; drop();
+\n;
+\b;For specialists
+Syntax:
+\s;\c;drop ( oper );\n;
+
+This instruction appeals to the operating arm of a \l;grabber bot\u object\botgr;, in order to drop what it is holding.
+
+\t;oper: \c;\l;int\u cbot\int;\n; (default value\c;InFront\n;)
+Oper indicates where the robot should drop the object. If no indication is given, the object is dropped in front of the bot.
+\c;InFront \n; Drops in front (default value).
+\c;Behind \n; Drops behind.
+\c;EnergyCell\n; Drops on the bot's own power cell location.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Normally an error stops the program. You can prevent the program from stopping on errors by using the \c;\l;errmode\u cbot\errmode;(0)\n; instruction. A value different from zero if an error occurred is then returned by \c;drop();\n;.
+\c;== 0 \n;object was dropped
+\c;!= 0 \n;error, no object was dropped
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/eof.txt b/help/F/cbot/eof.txt
new file mode 100644
index 00000000..30c2f4c3
--- /dev/null
+++ b/help/F/cbot/eof.txt
@@ -0,0 +1,15 @@
+\b;Instruction \c;eof\n;
+Test the end of file condition of an open file. This is a method of the \c;\l;file\u cbot\file;\n; class; therefore you cannot write \c;eof()\n; but only \c;handle.eof()\n;¦:
+\c;
+\s; if ( handle.eof() )
+\n;
+Example¦:
+\c;
+\s; while ( not handle.eof() )
+\s; {
+\s; s = handle.readln();
+\s; }
+\n;
+\t;See also
+\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n; and \c;\l;writeln\u cbot\writeln;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/errmode.txt b/help/F/cbot/errmode.txt
new file mode 100644
index 00000000..8b4286ab
--- /dev/null
+++ b/help/F/cbot/errmode.txt
@@ -0,0 +1,33 @@
+\b;Instruction \c;errmode\n;
+The \c;errmode();\n; instruction allows you to chose if the program should stop when an error occurs in one of the following instructions: \c;\l;goto\u cbot\goto;\n;, \c;\l;move\u cbot\move;\n;, \c;\l;grab\u cbot\grab;\n;, \c;\l;drop\u cbot\drop;\n;, etc.
+
+\b;For specialists
+Syntax¦:
+\s;\c;errmode ( mode );\n;
+
+Normally the program is stopped when an error occurs. If you use the instruction \c;errmode(0);\n; at the beginning of the program, the instructions listed above return a value different from zero if the instruction could not be performed.
+
+\t;mode: \c;\l;float\u cbot\float;\n; (\c;1\n; per default)
+Error treatment mode.
+\c;0\n; -> continues program execution and returns a non zero value
+\c;1\n; -> stops the program (default behavior)
+
+Exemple 1¦:
+\s;\c;errmode(0);
+\s;while ( goto(pos) != 0 )
+\s;{
+\s; wait(2);
+\s;}
+\n;
+Exemple 2¦:
+\s;\c;errmode(0);
+\s;int err;
+\s;err = goto(pos);
+\s;if ( err != 0 )
+\s;{
+\s; \n;goto did not perform correctly ...\c;
+\s; \n;take some appropriate action ...\c;
+\s;}
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/expr.txt b/help/F/cbot/expr.txt
new file mode 100644
index 00000000..1ff8bc73
--- /dev/null
+++ b/help/F/cbot/expr.txt
@@ -0,0 +1,88 @@
+\b;Expressions
+Expressions can include the following operators:
+
+\c;+\n; addition
+\c;-\n; subtraction
+\c;*\n; multiplication
+\c;/\n; division
+\c;%\n; remainder of the division (only for the type \c;\l;int\u cbot\int;\n;)
+
+With the addition operator \c;+\n;, you can not only add numbers, you can also append \l;strings\u cbot\string;.
+\c;
+\s; int i = 12+3; // returns 15
+\s; string s = "a"+"bc"; // returns "abc"
+\s; int i = 2-5; // returns -3
+\s; float f = 3.01*10; // returns 30.1
+\s; int i = 5/3; // returns 1
+\s; float f = 5/3; // returns 1.67
+\s; float f = 5/0; // returns an error
+\s; int i = 13%5; // returns 3
+\s; int i = -8%3; // returns -2
+\n;
+An expression can include constants or \l;variables\u cbot\var;. For example:
+
+\s;\c; 12+dist\n;
+
+Multiplications and divisions are performed before additions and subtractions. In order to be sure that the operations are performed in the right order, use brackets:
+\c;
+\s; 12*a+b/c \n;is equivalent to\c; (12*a)+(b/c)
+\s; 2.5*(dist+range)
+\n;
+In order to improve readability, you can put as many spaces as you want:
+\c;
+\s; 12*a + b/c
+\s; 2.5 * (dist+range)
+\n;
+Here is a list of mathematical functions:
+
+\c;sin(angle) \n;sinus
+\c;cos(angle) \n;cosinus
+\c;tan(angle) \n;tangent
+\c;asin(value) \n;arc-sinus
+\c;acos(value) \n;arc-cosinus
+\c;atan(value) \n;arc-tangente
+\c;sqrt(value) \n;square root
+\c;pow(x, y) \n;x power y
+\c;rand() \n;random value ranging between 0 and 1
+
+Angles are in degrees.
+
+\t;Compound assignment operators (for specialists)
+Besides the \c;=\n; operators for variable assignment there are several compound-assignment operators.
+
+The compound-assignment operators combine the \c;=\n; assignment operator with another binary operator such as \c;+\n; or \c;-\n;. Compound-assignment operators perform the operation specified by the additional operator and then assign the result to the left operand. For example, a compound-assignment expression such as
+
+\c;\s;expression1 += expression2
+
+is equivalent to
+
+\c;\s;expression1 = expression1 + expression2
+
+\c;+=\n; addition
+\c;-=\n; subtraction
+\c;*=\n; multiplication
+\c;/=\n; division
+\c;%=\n; remainder of the division (only for the type \c;\l;int\u cbot\int;\n;)
+
+\t;Prefix and posfix increment- and decrement operators (for specialists)
+The operators \c;++\n; and \c;--\n; allow you to increment (++) or to decrement (--) a variable in very compact and efficient manner.
+
+For example to increment the variable \c;a\n; you can write
+\c;\s; a++ ;
+\n;instead of
+\c;\s; a = a + 1 ;
+\n;
+The value of the expression \c;a++\n; is the value of the variable \c;a\n; before the increment. If you use the prefix operator \c;++a\n; the value of the expression is the value of the variable \c;a\n; after the increment. The same holds for the \c;--\n; decrement operator.
+
+Exemples:
+\c;\s; a = 2 ;
+\s; b = a++ ;
+\s; // now b contains 2 and a contains 3
+
+\c;\s; a = 2 ;
+\s; b = ++a ;
+\s; // now b contains 3 and a contains 3
+\n;
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/extern.txt b/help/F/cbot/extern.txt
new file mode 100644
index 00000000..08d2cba1
--- /dev/null
+++ b/help/F/cbot/extern.txt
@@ -0,0 +1,30 @@
+\b;Instruction \c;extern\n;
+The \c;extern\n; instruction determines the \l;function\u cbot\function; that acts as main program of a robot. The name of the function declared with \c;extern\n; will apear in the program list in the lower left corner of the screen.
+\c;
+\s;extern void object::MowDown( )
+\s;{
+\s; while ( true )
+\s; {
+\s; fire(1);
+\s; turn(10);
+\s; }
+\s;}
+\n;
+If the program contains other functions, only the main function must be preceded by \c;extern\n;.
+\c;
+\s;extern void object::Square( )
+\s;{
+\s; for ( int i=0 ; i<4 ; i++ )
+\s; {
+\s; Line(10);
+\s; }
+\s;}
+\s;
+\s;void object::Line(float dist)
+\s;{
+\s; move(dist);
+\s; turn(90);
+\s;}
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/false.txt b/help/F/cbot/false.txt
new file mode 100644
index 00000000..e5b1ffa9
--- /dev/null
+++ b/help/F/cbot/false.txt
@@ -0,0 +1,6 @@
+\b;Type \c;false\n;
+This value means that a condition is not true; it is one of the two values that a \l;boolean\u cbot\bool; \l;variable\u cbot\var; can take.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/F/cbot/file.txt b/help/F/cbot/file.txt
new file mode 100644
index 00000000..44bac38f
--- /dev/null
+++ b/help/F/cbot/file.txt
@@ -0,0 +1,18 @@
+\b;Type \c;file\n;
+This type is used for accessing files in the files/ folder.
+\c;
+\s; file handle();
+\n;
+Use the syntax above for declaring a file handle. You must use () to create an instance of the \c;file\n; class. Without the () the handle would have the value \c;\l;null\u cbot\null;\n;.
+
+Files can only be created and opened in the files/ folder which is located in the folder where Colobot has been installed. You cannot not create or open files elsewhere than in the files/ folder.
+
+\b;For specialists
+\c;file\n; is actually not a simple type but a class. \c;open\n;, \c;close\n;, \c;writeln\n; etc. are methods of the \c;file\n; class. This is the reason why we always write \c;handle.method()\n;¦:
+\c;
+\s; handle.open("test.txt", "w");
+\s; handle.close();
+\n;
+\t;See also
+\c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n;, \c;\l;writeln\u cbot\writeln;\n; and \c;\l;eof\u cbot\eof;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/fire.txt b/help/F/cbot/fire.txt
new file mode 100644
index 00000000..fad947a6
--- /dev/null
+++ b/help/F/cbot/fire.txt
@@ -0,0 +1,31 @@
+\b;Instruction \c;fire\n;
+The instruction \c;fire();\n; fires the bot's onboard cannon.
+
+\b;Basic use
+Generally this instruction is used to shoot one-second bursts:
+\c;
+\s; fire(1);
+\n;
+\b;For specialists
+Syntax:
+\s;\c;fire ( time );\n;
+
+Fires the gun, with a burst that lasts a certain time. The longer the burst, the more energy it needs. This instruction can be used with the following bot types:
+o \l;Shooter\u object\botfr;
+o \l;Orga shooter\u object\botor;
+o \l;Phazer shooter\u object\botphaz;
+
+When controlling the robot through programming, the only way to turn the gun left or right is to turn the whole robot with the instruction \c;\l;turn\u cbot\turn;\n;.
+
+In order to move the gun upward or downward, use the instruction \c;\l;aim\u cbot\aim;\n;.
+
+\t;time: \c;\l;float\u cbot\float;\n;
+Duration of the burst. Generally, the value given is 1. Shorter bursts can also be performed in order to spare time and energy.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Zero if OK, or a value different from zero if an error occurred.
+\c;== 0 \n;the cannon has been fired
+\c;!= 0 \n;error, the cannon could not be fired
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/flatgrnd.txt b/help/F/cbot/flatgrnd.txt
new file mode 100644
index 00000000..ae821eb4
--- /dev/null
+++ b/help/F/cbot/flatgrnd.txt
@@ -0,0 +1,17 @@
+\b;Instruction \c;flatground\n;
+Syntax¦:
+\s;\c;flatground ( center, rmax );\n;
+
+Calculates the maximal radius of a flat zone on which a building ca be built.
+
+\t;center: \c;\l;point\u cbot\point;\n;
+Center of the circlular zone.
+
+\t;rmax: \c;\l;float\u cbot\float;\n;
+Maximal radius.
+
+\t;Return value: \c;\l;float\u cbot\float;\n;
+Radius of the flat zone (always between 0 and rmax).
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/float.txt b/help/F/cbot/float.txt
new file mode 100644
index 00000000..77876058
--- /dev/null
+++ b/help/F/cbot/float.txt
@@ -0,0 +1,25 @@
+\b;Type \c;float\n;
+Use this type for most variables that contains numbers. Variables of this type can contain positive and negative numbers, whole or real numbers, for example:
+\c;
+\s; 12.9
+\s; 1.125
+\s; 0.002
+\s; -4.1
+\n;
+If you need only whole numbers (f. ex. 12 or -5000), you should rather use the type \c;\l;int\u cbot\int;\n;.
+
+\t;Attention
+Do not insert space or colon characters into a number. To separate the whole part from the fractional part, use a dot.
+\c;
+\s; Write and not
+\s; 12.56 12 . 56
+\s; -54.34 -54,34
+\s;12895.69 12,895.69
+\n;
+\t;For specialists
+Floating point numbers are represented in Colobot with 32 bits.
+The highest value that can be represented is 3.4E+38.
+The smallest value that can be represented is 3.4E-38.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/for.txt b/help/F/cbot/for.txt
new file mode 100644
index 00000000..2465dd72
--- /dev/null
+++ b/help/F/cbot/for.txt
@@ -0,0 +1,40 @@
+\b;Instruction \c;for\n;
+Syntax:
+\s;\c;for ( before ; condition ; end )
+\s;{
+\s; \n;Instructions ...\c;
+\s;}
+\n;
+This instruction allows you to execute a certain number of times the instructions contained in the \l;block\u cbot\bloc;.
+
+\t;\c;before\n;
+This instruction is executed before the first loop instance.
+
+\t;\c;condition\n;
+This \l;condition\u cbot\cond; determines if another instance of the loop must be executed. It is tested before every instance of the loop.
+
+\t;\c;end\n;
+This instruction is executed at the end of every instance of the loop.
+
+Example: count from 1 to 4
+\c;\s;\c;for ( i = 0 ; i <= 4 ; i++ )
+\s;{
+\s; message(i) ;
+\s;}
+\n;
+The following example is strictly equivalent to a \c;for\n;-loop, but it uses the instruction \c;\l;while\u cbot\while;\n;:
+\s;\c;before;
+\s;while ( condition )
+\s;{
+\s; \n;Instructions ...\c;
+\s; end;
+\s;}
+\n;
+\t;Attention
+Do not put a \l;semicolon\u cbot\term; at the end of the line \c;for ( )\n;.
+
+The instructions \c;\l;break\u cbot\break;\n; and \c;\l;continue\u cbot\continue;\n; can be useful inside a block following the instruction \c;for \n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/F/cbot/function.txt b/help/F/cbot/function.txt
new file mode 100644
index 00000000..9b403896
--- /dev/null
+++ b/help/F/cbot/function.txt
@@ -0,0 +1,85 @@
+\b;Functions
+With functions you can divide your program into several parts, each of them will execute a specific task.
+Let's imagine following program¦:
+\c;
+\s;extern void object::Remote( )
+\s;{
+\s; send("order", 1, 100);
+\s; wait(5);
+\s; send("order", 3, 100);
+\s; wait(5);
+\s; send("order", 2, 100);
+\s; wait(5);
+\s; send("order", 4, 100);
+\s; wait(5);
+\s;}
+\n;
+\c;send\n; and \c;wait\n; are repeated several times. So it would be a good thing if we created a function that executes these two instructions:
+\c;
+\s;void object::SendToPost( float op )
+\s;{
+\s; send("order", op, 100);
+\s; wait(5);
+\s;}
+\s;extern void object::Remote( )
+\s;{
+\s; SendToPost(1);
+\s; SendToPost(3);
+\s; SendToPost(2);
+\s; SendToPost(4);
+\s;}
+\n;
+A function can have paramteters¦:
+\c;
+\s;void Example( int a, float x, string s )
+\n;
+The \c;Exemple\n; function will reveive un integer \c;a\n;, a floating point number \c;x\n; and a string \c;s\n;. Parameters are "passed by value", that is the values of parameter variables in a function are copies of the values the caller specified as variables. If you pass an \c;int\n; to a function, its parameter is a copy of whatever value was being passed as argument, and the function can change its parameter value without affecting values in the code that invoked the function.
+
+If you pass a \l;class\u cbot\class; instance or an \l;array\u cbot\array; as parameter to a function, the function only receives a \l;reference\u cbot\pointer; to the instance or the array. That means if you modify the instance or the array in the function, the instance or the array that has been specified by the caller will be actuallay modified.
+
+A function can also return a result with the \c;\l;return\u cbot\return;\n; instruction. Therefore the function must be declared no longer as void but as a type:
+\c;
+\s;float Mean( float a, float b )
+\s;{
+\s; return (a+b)/2;
+\s;}
+\s;
+\s;extern void object::Test( )
+\s;{
+\s; float value;
+\s; value = Mean(2, 6);
+\s; message( value ); // will display 4
+\s;}
+\n;
+Some other examples¦:
+\c;
+\s;float Pi( )
+\s;{
+\s; return 3.1415;
+\s;}
+\s;
+\s;string Sign( float a )
+\s;{
+\s; if ( a > 0 ) return "positive";
+\s; if ( a < 0 ) return "négative";
+\s; return "null";
+\s;}
+\n;
+You can declare several functions with the same name but different parameters¦:
+\c;
+\s;float Pythagoras( float a, float b )
+\s;{
+\s; return sqrt((a*a)+(b*b));
+\s;}
+\s;
+\s;float Pythagoras( float a, float b, float c )
+\s;{
+\s; return sqrt((a*a)+(b*b)+(c*c));
+\s;}
+\n;
+CBOT will call either the one or the other function depending on the paramteres passed.
+
+You can also declare a function \l;public\u cbot\public; so it can be used by other bots.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/goto.txt b/help/F/cbot/goto.txt
new file mode 100644
index 00000000..7657012c
--- /dev/null
+++ b/help/F/cbot/goto.txt
@@ -0,0 +1,35 @@
+\b;Instruction \c;goto\n;
+The instruction \c;goto();\n; instructs the bot to reach a given position.
+
+\b;Basic use
+The most current use consists in moving the bot to an object located with the instruction \c;\l;radar\u cbot\radar;();\n;. If the information returned by the \c;\l;radar\u cbot\radar;();\n; has been stored in a certain variable, write the name of the variable followed by \c;.position\n; in order to get the position of the object. Here is an example of a program that looks for a \l;titanium cube\u object\titan;, goes to the position and grabs it:
+\c;
+\s; item = \l;radar\u cbot\radar;(Titanium);
+\s; goto(item.position);
+\s; \l;grab\u cbot\grab;();
+\n;
+\b;For specialists
+Syntax:
+\s;\c;goto ( position, altitude, goal, crash );\n;
+
+Tells the robot to go to the given position, avoiding all the obstacles if this is possible.
+
+\t;pos: \c;\l;point\u cbot\point;\n;
+Coordinates of the goal position.
+
+\t;altitude: \c;\l;float\u cbot\float;\n;
+Flight altitude for \l;winged bots\u object\botgj;. The altitude is useful only for \l;winged bots\u object\botgj;. From the initial altitude, the bot climbs higher until it reaches the specified hight. When arriving close to destination, it goes down to touch the ground at the given position. If no value is given, an altitude of 10 meters is the default value. On very short moves, even winged bot stay on the ground. For all bot except winged bots, this parameter is ignored.
+
+\t;goal: \c;\l;int\u cbot\int;\n; (default value \c;0\n;)
+This parameter tells the bot how it must reach the goal:
+\c;0\n; stops exactly at the goal position
+\c;1\n; goes close to the goal position, without stopping.
+If no value is given, \c;1\n; (precision) is the default value.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Normally an error stops the program. You can prevent the program from stopping on errors by using the \c;\l;errmode\u cbot\errmode;(0)\n; instruction. A value different from zero if an error occurred is then returned by \c;goto()\n;.
+\c;== 0 \n;Goal position reached
+\c;!= 0 \n;Goal position impossible to reach
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/grab.txt b/help/F/cbot/grab.txt
new file mode 100644
index 00000000..5cc81374
--- /dev/null
+++ b/help/F/cbot/grab.txt
@@ -0,0 +1,29 @@
+\b;Instruction \c;grab\n;
+The instruction \c;grab();\n; instructs the bot to use the operating arm to grab an object located on the ground, on the platform of a building or on the power cell location of a bot.
+
+\b;Basic use
+The instruction \c;grab();\n; written in this form grabs the object located in front of the bot. Here is a short program that grabs an object in front of the bot and drops it 5 meters further:
+\c;
+\s; grab();
+\s; \l;move\u cbot\move;(5);
+\s; \l;drop\u cbot\drop;();
+\n;
+\b;For specialists
+Syntax:
+\s;\c;grab ( oper );\n;
+
+This instruction appeals to the operating arm of a \l;grabber bot\u object\botgr;, in order to grab the closest object.
+
+\t;oper: \c;\l;int\u cbot\int;\n; (default value\c;InFront\n;)
+Oper indicates where the bot should look for an object to grab. If no indication is given, the object is picked up in front of the bot.
+\c;InFront \n; Grabs in front (default value).
+\c;Behind \n; Grabs behind.
+\c;EnergyCell\n; Grabs the bot's own power cell.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Normally an error stops the program. You can prevent the program from stopping on errors by using the \c;\l;errmode\u cbot\errmode;(0)\n; instruction. A value different from zero if an error occurred is then returned by \c;grab();\n;.
+\c;== 0 \n;an object was grabbed
+\c;!= 0 \n;error, no object was grabbed
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/if.txt b/help/F/cbot/if.txt
new file mode 100644
index 00000000..ad2ed990
--- /dev/null
+++ b/help/F/cbot/if.txt
@@ -0,0 +1,40 @@
+\b;Instructions \c;if\n; and \c;else\n;
+With the instruction \c;if() {}\n; you can execute a set of instructions only if a certain condition is true. Write the condition in brackets \c;()\n;, and the instructions in braces \c;{}\n;.
+
+\b;Basic use
+Here is a concrete example: The bot will shoot only if the target is closer than 40 meters:
+\c;
+\s; item = \l;radar\u cbot\radar;(AlienAnt);
+\s; if (\l;distance\u cbot\dist;(position, item.position) < 40)
+\s; {
+\s; fire(1);
+\s; }
+\n;
+You can also test if an object exists at all. If the instruction \c;\l;radar\u cbot\radar;();\n; does not find the requested object, it returns the value \c;null\n;. So you can test if an object does not exists with the condition \c;(item == null)\n;, or test if it exists with \c;(item != null)\n;. Two equal signs \c;==\n; test equality, an exclamation mark followed by an equal sign \c;!=\n; test inequality. Here is a test that will go to rechage the \l;power cell\u object\power; only if there is a \l;power station\u object\station;:
+\c;
+\s; item = \l;radar\u cbot\radar;(PowerStation);
+\s; if (item != null)
+\s; {
+\s; \l;goto\u cbot\goto;(item.position);
+\s; \l;wait\u cbot\wait;(5);
+\s; }
+\n;
+\b;For specialists
+Syntax:
+\s;\c;if ( condition )
+\s;{
+\s; \n;Instructions A ...\c;
+\s;}
+\s;else
+\s;{
+\s; \n;Instructions B ...\c;
+\s;}
+\n;
+With this conditional structure you can execute a \l;bloc\u cbot\bloc; A or a \l;bloc\u cbot\bloc; B depending on a \l;condition\u cbot\cond;. If the condition is true, bloc A is executed. If the condition is false, bloc B is executed.
+Part \c;else { }\n; is not compulsory.
+
+\t;Attention
+Do not put a \l;semicolon\u cbot\term; at the end of the line \c;if ( )\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/int.txt b/help/F/cbot/int.txt
new file mode 100644
index 00000000..deb86d9e
--- /dev/null
+++ b/help/F/cbot/int.txt
@@ -0,0 +1,20 @@
+\b;Type \c;int\n;
+Use this type for variables that contain only whole numbers, negative or positive. For example:
+\c;
+\s; 12
+\s; 1000
+\s; -4
+\n;
+To represent real numbers like 12.05 or -0.005, use the type \c;\l;float\u cbot\float;\n;.
+
+\t;Attention
+Do not put space or colon signs inside a number.
+
+\t;For specialists
+Numbers of the type \c;int\n; are represented with 32 bits.
+The highest number that can be represented is (2^31)-1, that is 2'147'483'647.
+The smallest number that can be represented is -(2^31), that is -2'147'483'648.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/F/cbot/jet.txt b/help/F/cbot/jet.txt
new file mode 100644
index 00000000..71e8da2d
--- /dev/null
+++ b/help/F/cbot/jet.txt
@@ -0,0 +1,16 @@
+\b;Instruction \c;jet\n;
+Syntax:
+\s;\c;jet ( power );\n;
+
+Direct control of the jet of a \l;winged bot\u object\botgj;. The jet is what makes the bot fly. Use this instruction in order to take off, climb, descend or land.
+
+\t;power: \c;\l;float\u cbot\float;\n;
+Power of the jet, ranges between \c;-1\n; and \c;+1\n;. \c;jet(1);\n; instructs the bot to climb as fast as possible, \c;jet(-1);\n; descends as fast as possible, \c;jet(0);\n; stabilizes the altitude. In order to get slower altitude changes, use intermediate values, for example \c;jet(0.3);\n;.
+
+
+\t;Return value: \c;\l;void\u cbot\void;\n;
+None.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/F/cbot/message.txt b/help/F/cbot/message.txt
new file mode 100644
index 00000000..01d0f706
--- /dev/null
+++ b/help/F/cbot/message.txt
@@ -0,0 +1,25 @@
+\b;Instruction \c;message\n;
+Syntax:
+\s;\c;message ( text, type );\n;
+
+Prints a message on top of the screen. After a few seconds, the message disappears automatically.
+
+\t;text: \c;\l;string\u cbot\string;\n;
+Text that is to be displayed. It is possible to append several texts and/or values with the operator \c;+\n;:
+\c;message("Not found");\n;
+\c;message(angle);\n;
+\c;message(n + " object(s) found");\n;
+\c;message("Distance = " + dist + " meters");\n;
+
+\t;type: \c;\l;int\u cbot\int;\n; (default value \c;DisplayMessage\n;)
+Type of the message, that determines the background color.
+o \c;DisplayMessage\n; Standard message on yellow background.
+o \c;DisplayInfo \n; Information on green background.
+o \c;DisplayWarning\n; Warning on blue background.
+o \c;DisplayError \n; Error on red background.
+
+\t;Return value: \c;\l;void\u cbot\void;\n;
+None.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/motor.txt b/help/F/cbot/motor.txt
new file mode 100644
index 00000000..712a1ff3
--- /dev/null
+++ b/help/F/cbot/motor.txt
@@ -0,0 +1,39 @@
+\b;Instruction \c;motor\n;
+The instruction \c;motor( , );\n; sets the speed for the left-hand and the right-hand motor of the bot.
+
+\b;Basic use
+The speed given to the motors will remain constant during the execution of the following instructions. Thanks to this characteristic it is possible to perform a rotation during the instruction \c;\l;fire\u cbot\fire;();\n;. This will sweep a whole zone with only one burst. Here is an example that will sweep the zone in front of the bot:
+\c;
+\s; \l;turn\u cbot\turn;(45); // turns 45 degrees left
+\s; motor(0.5, -0.5); // slow rotation to the right
+\s; \l;fire\u cbot\fire;(2); // fire
+\s; motor(0,0); // stops the rotation
+\n;
+With the left-hand motor turning half-speed forward and the right-hand motor turning half-speed backward, the bot will turn slowly on itself during the 2-second-burst.
+
+\b;For specialists
+Syntax :
+\s;\c;motor ( left, right );\n;
+
+Gives speed instructions to the right and left motors of the robot. The motors will keep this speed until a new motor instruction is performed, or until a \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n; or \c;\l;goto\u cbot\goto;\n; instruction is performed.
+
+\t;left: \c;\l;float\u cbot\float;\n;
+Speed instruction for the left motor; the value must range between -1 and 1.
+
+\t;right: \c;\l;float\u cbot\float;\n;
+Speed instruction for the right motor; the value must range between -1 and 1.
+
+Examples :
+\c;motor(1, 1);\n; moves forward with highest possible speed.
+\c;motor(-0.5, -0.5);\n; moves backward with half speed.
+\c;motor(1, -1);\n; turns right as fast as possible.
+
+Note :
+\c;motor(2, 2);\n; will not move forward any faster than \c;motor(1, 1)\n;
+\c;motor(-2, -2);\n; will not move backward any faster than \c;motor(-1, -1)\n;
+
+\t;Return value: \c;\l;void\u cbot\void;\n;
+None.
+
+\t;See also
+\l;Instructions\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/move.txt b/help/F/cbot/move.txt
new file mode 100644
index 00000000..74177b22
--- /dev/null
+++ b/help/F/cbot/move.txt
@@ -0,0 +1,22 @@
+\b;Instruction \c;move\n;
+The instruction \c;move();\n; instructs the bot to move forward or backward while keeping the same orientation. In brackets you must specify the length of the move in meters.
+
+\b;Basic use
+If you want the bot to move forward 30 meters, write \c;move(30);\n;. In order to move the bot backward after it dropped a chunk of \l;titanium ore\u object\titanore; on the \l;converter\u object\convert;, write \c;move(-2.5);\n;.
+
+\b;For specialists
+Syntax:
+\s;\c;move ( length );\n;
+
+Moves forward or backward of a given distance, always keeping the current orientation of the bot.
+
+\t;length: \c;\l;float\u cbot\float;\n;
+Length of the move, in meters. A negative value makes the bot move backward.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Normally an error stops the program. You can prevent the program from stopping on errors by using the \c;\l;errmode\u cbot\errmode;(0)\n; instruction. A value different from zero if an error occurred is then returned by \c;move()\n;.
+\c;== 0 \n;Move executed
+\c;!= 0 \n;error, the instruction was not performed correctly
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/nan.txt b/help/F/cbot/nan.txt
new file mode 100644
index 00000000..f4732189
--- /dev/null
+++ b/help/F/cbot/nan.txt
@@ -0,0 +1,16 @@
+\b;Type \c;nan\n;
+This special value indicates that a \l;variable\u cbot\var; of type \c;\l;int\u cbot\int;\n; or \c;\l;float\u cbot\float;\n; contains no number, but "nothing".
+For example, if the instruction \c;\l;receive\u cbot\receive;\n; can not get the requested information, it returns \c;nan\n; :
+\c;
+\s; value = receive("Length");
+\s; if ( value == nan ) // not found ?
+\s; {
+\s;
+\s; }
+\n;
+\t;Dictionnary
+\c;nan\n; = Not A Number
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/F/cbot/new.txt b/help/F/cbot/new.txt
new file mode 100644
index 00000000..97261784
--- /dev/null
+++ b/help/F/cbot/new.txt
@@ -0,0 +1,21 @@
+\b;Instruction \c;new\n; (for specialists)
+The \c;new\n; operator creates a \l;class\u cbot\class; instance:
+\c;\s; MyClass item; // now item is a null reference
+\s; item = new MyClass(); // now item is a reference
+\s; // to a new class instance
+\n;
+If you want to create a new instance at declaration time you can ommit the new \c;new\n; operator by putting () after the declaration:
+
+Instead of:
+\c;\s; MyClass item = new MyClass();
+\n;you can write:
+\c;\s; MyClass item();
+\n;
+If your class has a constructor with parameters you can write:
+\c;\s; MyClass item = new MyClass(2, 3);
+\n;or:
+\c;\s; MyClass item(2, 3);
+\n;
+\t;See also
+\c;\l;class\u cbot\class;\n;, \c;\l;reference\u cbot\pointer;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/null.txt b/help/F/cbot/null.txt
new file mode 100644
index 00000000..6e5219da
--- /dev/null
+++ b/help/F/cbot/null.txt
@@ -0,0 +1,7 @@
+\b;Type \c;null\n;
+This special value indicates that the variable containing it does not reference an instance.
+
+\t;See also
+\l;References\u cbot\pointer;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/F/cbot/object.txt b/help/F/cbot/object.txt
new file mode 100644
index 00000000..242de885
--- /dev/null
+++ b/help/F/cbot/object.txt
@@ -0,0 +1,70 @@
+\b;Type \c;object\n;
+Use this type for variables that contain the characteristics of an object, be it a bot, a building, some raw material, an enemy, etc.
+
+\c;\l;int\u cbot\int; object.category \n;\l;Category\u cbot\category; of the object
+\c;\l;point\u cbot\point; object.position \n;Position of the object (x,y,z)
+\c;\l;float\u cbot\float; object.orientation \n;Orientation of the object (0..360)
+\c;\l;float\u cbot\float; object.pitch \n;Forward/backward angle of the object
+\c;\l;float\u cbot\float; object.roll \n;Right/left angle of the object
+\c;\l;float\u cbot\float; object.energyLevel \n;Energy level (0..1)
+\c;\l;float\u cbot\float; object.shieldLevel \n;Shield level (0..1)
+\c;\l;float\u cbot\float; object.temperature \n;Jet temperature (0..1)
+\c;\l;float\u cbot\float; object.altitude \n;Altitude above ground
+\c;\l;float\u cbot\float; object.lifeTime \n;Lifetime of the object
+\c;object object.energyCell \n;Power cell on the bot
+\c;object object.load \n;Object carried by the bot
+
+\s;\c;category\n;
+The \n;\l;category\u cbot\category; of an object allows you to know what it is, f. ex. what kind of bot, building, enemy, etc.
+
+\s;\c;position\n;
+Position of the object on the planet, in meters. The coordinates \c;x\n; and \c;y\n; correspond to the location on a map, the \c;z\n; coordinate corresponds to the altitude above (respectively below) sea level.
+
+\s;\c;orientation\n;
+Orientation of the object, in degrees. The orientation tells you what direction the object is facing. An orientation of \c;0\n; corresponds to an object facing eastwards, thus following the positive \c;x\n; axis. The orientation is measured counterclockwise.
+
+\s;\c;pitch\n;
+Forward/backward angle of the robot. A pitch of \c;0\n; means that the bot is standing on flat ground. A positive inclination means that it is facing upwards, a negative inclination means that it is facing downwards.
+
+\s;\c;roll\n;
+Left/right angle of the bot, in degrees. A positive value means that the bot is leaning to the left side, a negative value means that it is leaning to the right side.
+
+\s;\c;energyLevel\n;
+Energy level, between 0 and 1. A normal \l;power cell\u object\power; that is fully charged returns the value \c;1\n;. A \l;nuclear power cell\u object\atomic; never returns a value higher than 1, it just lasts longer. Attention: The energy level of a bot is always zero, because the energy is not contained in the bot, but in the power cell. To know the energy level of the power cell of a bot, you must write \c;energyCell.energyLevel\n;.
+
+\s;\c;shieldLevel\n;
+Shield level of a robot or building. A level \c;1\n; indicates that the shield is still perfect. Every time that the bot or building gets a bullet or collides with another object, the shield level decreases. When the level reaches \c;0\n;, the next bullet or collision will destroy the bot or building.
+Bots can re-energize their shield on a \l;repair center\u object\repair;. The shield of a building is repaired if it lays inside the protection sphere of a \l;shielder\u object\botshld;.
+
+\s;\c;temperature\n;
+Temperature of the jet of \l;winged bots\u object\botgj;. \c;0\n; corresponds to a cold jet. When used, the temperature increases progressively. When it reaches the value \c;1\n;, the jet is overheated and stops working, until it cooled down a little.
+
+\s;\c;altitude\n;
+The \c;z\n; coordinate of the position indicates the altitude above sea level, whereas the \c;altitude\n; indicates the height above ground. This value is meaningful only for \l;winged bots\u object\botgj; and for \l;wasps\u object\wasp;. For all other objects, this value is zero.
+
+\s;\c;lifeTime\n;
+The age of the object in seconds since it's creation.
+
+\s;\c;energyCell\n;
+This information is special, because it returns the information about another object, in this case the power pack. This means that energyCell contains all the characteristics of a normal object, for example \c;category\n; (PowerCell or NuclearCell), \c;position\n; (the position of the cell), etc.
+If you want to know the energy level of a robot, you must not check \c;energyLevel\n;, but \c;energyCell.energyLevel\n;.
+If the bot has bot no power cell, \c;energyCell\n; returns \c;null\n;.
+
+\s;\c;load\n;
+This information also returns the description of a whole object: the description of the object carried by a \l;grabber\u object\botgr;. If it carries nothing, \c;load\n; returns \c;null\n;.
+
+\b;Examples
+The type \c;object\n; returns the special value \c;\l;null\u cbot\null;\n; when the object does not exist. For example:
+\c;
+\s; object a;
+\s; a = radar(BotGrabberRoller);
+\s; if ( a == null ) // object does not exist ?
+\s; {
+\s; }
+\s; if ( a.position.z > 50 ) // is it on a mountain ?
+\s; {
+\s; }
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/F/cbot/open.txt b/help/F/cbot/open.txt
new file mode 100644
index 00000000..8af2abd4
--- /dev/null
+++ b/help/F/cbot/open.txt
@@ -0,0 +1,20 @@
+\b;Instruction \c;open\n;
+Open a text file in the files/ folder. This is a method of the \c;\l;file\u cbot\file;\n; class. This is the reason why we always write \c;handle.open()\n;¦:
+\c;
+\s; handle.open("test.txt", "w");
+\n;
+To open a file, proceed as follows¦:
+\c;
+\s; file handle();
+\s; handle.open("filename", "w");
+\s; handle.writeln("abc");
+\s; handle.close();
+\n;
+\c;"r"\n; mode: open for reading.
+\c;"w"\n; mode: open for writing.
+
+Files can only be created and opened in the files/ folder which is located in the folder where Colobot has been installed. You cannot not create or open files that are located elsewhere than in the files/ folder.
+
+\t;See also
+\c;\l;file\u cbot\file;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n;, \c;\l;writeln\u cbot\writeln;\n; and \c;\l;eof\u cbot\eof;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/openfile.txt b/help/F/cbot/openfile.txt
new file mode 100644
index 00000000..6e8d59e1
--- /dev/null
+++ b/help/F/cbot/openfile.txt
@@ -0,0 +1,11 @@
+\b;Instruction \c;openfile\n;
+\c;openfile();\n; opens an text file in the files/ folder. This is not a method of the \c;\l;file\u cbot\file;\n; class but openfile returne a \l;reference\u cbot\pointer; to a new instance of the file class. You must supply two parameters, the filename and the opening mode.
+\c;
+\s;file handle = openfile("filename", "r");
+\n;
+\c;"r"\n; mode: open for reading.
+\c;"w"\n; mode: open for writing.
+
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/point.txt b/help/F/cbot/point.txt
new file mode 100644
index 00000000..916be40f
--- /dev/null
+++ b/help/F/cbot/point.txt
@@ -0,0 +1,36 @@
+\b;Type \c;point\n;
+Variables of this type contain the coordinates of a point in space. This type is made of three values that represent the \c;x\n;, \c;y\n; and \c;z\n; coordinates.
+\c;x\n; and \c;y\n; correspond to the place on the ground. The positive \c;x\n; axis faces towards east, the positive \c;y\n; axis faces towards north.
+The \c;z\n; value corresponds to the altitude above sea level.
+
+If you want to declare a variable of type point, you can write:
+\c;
+\s; point a (10, 20, 30);
+\n;
+You can also set the variable taking one value after another:
+\c;
+\s; point b;
+\s; b.x = 10;
+\s; b.y = 20;
+\s; b.z = 30;
+\n;
+With these examples, the following \l;condition\u cbot\cond; is true:
+\c;
+\s; if ( a == b )
+\s; {
+\s; }
+\n;
+The following declaration :
+\c;
+\s; point c (4, 7);
+\n;
+Is equivalent to :
+\c;
+\s; point c;
+\s; c.x = 4;
+\s; c.y = 7;
+\s; c.z = 0;
+\n;
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/pointer.txt b/help/F/cbot/pointer.txt
new file mode 100644
index 00000000..3d7b348c
--- /dev/null
+++ b/help/F/cbot/pointer.txt
@@ -0,0 +1,53 @@
+\b;References (for specialists)
+CBOT uses references for \l;classes\u cbot\class; and \l;arrays\u cbot\array;. Any class variable actually contains a reference to the instance. The instance actually contains the class fields. Several references can reference the same instance. A \c;\l;null\u cbot\null;\n; reference references nothing. You can compare an instance to a suitcase and a reference to a carrier. Each time we need a new suitcase we create a new instance with a carrier. But a suitcase can be carried by more than one carrier. A carrier who carries no suitcase is a \c;\l;null\u cbot\null;\n; reference.
+
+Example:
+\c;\s;{
+\s; MyClass item1(); // create a new instance
+\s; // referenced by item1
+\s; MyClass item2; // create a null reference
+\s; item2 = item1; // copy the reference,
+\s; // item2 and item1 now reference
+\s; // the same instance
+\s; item1.a = 12; // modifies the instance
+\s; // referenced by item1 (and item2)
+\s; message(item2.a);// displays 12
+\s;}
+\n;
+If you pass a \l;class\u cbot\class; instance as parameter to a function, the function only receives a reference to the instance. That means if you modify the instance in the function, the instance that has been specified by the caller will be actuallay modified.
+
+\c;\s;void Test( MyClass item )
+\s;{
+\s; item.a = 12; // modify the original instance
+\s; item = new MyClass(); // new local instance
+\s; item.a = 33; // modifie the local instance
+\s;}
+\n;
+Calling the fucntion \c;Test()\n;¦:
+\c;\s;{
+\s; MyClass toto();
+\s; Test(toto);
+\s; message(toto.a); // displays 12
+\s;}
+\n;
+The instance containing the field \c;a = 33\n; is referenced only by the newly created instance \c;item\n; inside the fucntion \c;Test\n;. At the end of \c;Test\n; this newly created instance referenced by \c;item\n; is automatically deleted.
+
+A function can return an instance¦:
+\c;\s;MyClass Test2( )
+\s;{
+\s; MyClass item = new MyClass();
+\s; item.x = 33;
+\s; return item;
+\s;}
+\n;
+Call the function like this:
+\c;\s;{
+\s; MyClass toto;
+\s; toto = Test2(); // toto will contain a reference to
+\s; // the instance created by Test2()
+\s; message(toto.a); // displays 33
+\s;}
+\n;
+\t;See also
+\c;\l;class\u cbot\class;\n;, \c;\l;new\u cbot\new;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/private.txt b/help/F/cbot/private.txt
new file mode 100644
index 00000000..5a2921a2
--- /dev/null
+++ b/help/F/cbot/private.txt
@@ -0,0 +1,19 @@
+\b;Instruction \c;private\n; (for specialists)
+\l;Class\u cbot\class; members can be \l;public\u cbot\public; (by default) or private. A member can be declared privat by putting \c;private\n; before the type declaration of the member. Private members are not accessible from outside the class definition.
+\c;
+\s;public class MyClass
+\s;{
+\s; int b; // public by défault
+\s; public int a; // als public
+\s; private point position; // privat
+\s;}
+\s;void Test()
+\s;{
+\s; MyClass item;
+\s; item.a = item.b = 12; // ok
+\s; message( item.position ); // this is an error
+\s;}
+\n;
+\t;See also
+\c;\l;class\u cbot\class;\n;, \c;\l;public\u cbot\public;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/public.txt b/help/F/cbot/public.txt
new file mode 100644
index 00000000..d7e8d920
--- /dev/null
+++ b/help/F/cbot/public.txt
@@ -0,0 +1,51 @@
+\b;Instruction \c;public\n; (for specialists)
+This instruction has two distinct purposes¦:
+
+1) Make a function available to other bots.
+2) Make a class member accessible from outside the class definition.
+
+\b;Instruction \c;public\n; for functions
+If you put \c;public\n; before a \l;function\u cbot\function; definition, you can make the function available to programs in other bots in the same mission.
+
+For example in the first bot we would have¦:
+\c;
+\s;public void object::Segment(float dist, float angle)
+\s;{
+\s; move(dist);
+\s; turn(angle);
+\s;}
+\n;
+And in another bot we would have¦:
+\c;
+\s;extern void object::Square( )
+\s;{
+\s; for ( int i=0 ; i<4 ; i++ )
+\s; {
+\s; Segment(10, 90);
+\s; fire(1);
+\s; }
+\s;}
+\n;
+If you have declared a function \c;public\n;, you cannot define a function with the same name and arguments in another bot of the same mission.
+
+If a bot containing a \c;public\n; function is destroyed, the other bots that make use of this function will be stopped with an error.
+
+\b;Instruction \c;public\n; for classes
+\l;Class\u cbot\class; members can be public (by default) or \l;privat\u cbot\private;. A member can be declared private by putting \c;private\n; before the member type. Private members are not accessible from outside the class definition.
+\c;
+\s;public class MyClass
+\s;{
+\s; int b; // public by default
+\s; public int a; // also public
+\s; private point position; // privat
+\s;}
+\s;void Test()
+\s;{
+\s; MyClass item;
+\s; item.a = item.b = 12; // ok
+\s; message( item.position ); // this is an error
+\s;}
+\n;
+\t;See also
+\c;\l;class\u cbot\class;\n;, \c;\l;private\u cbot\private;\n;, \c;\l;functions\u cbot\function;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/radar.txt b/help/F/cbot/radar.txt
new file mode 100644
index 00000000..d16fa639
--- /dev/null
+++ b/help/F/cbot/radar.txt
@@ -0,0 +1,60 @@
+\b;Instruction \c;radar\n;
+With the instruction \c;radar()\n;, you can look for objects like \l;enemies\u object\mother;, bots, buildings or raw materials.
+
+\b;Basic use
+Write in brackets the \l;name of the object\u cbot\category; that you look for. Put the result in a variable of the \l;type\u cbot\type; \c;object\n;. Here is an example that looks for the closest ant:
+\c;
+\s;// At the beginning of the program:
+\s;object item; // variable declaration
+\s;
+\s;// Look for the closest ant
+\s;item = radar(AlienAnt);
+\n;
+\b;For specialists
+Syntax:
+\s;\c;radar ( category, angle, focus, min, max, way );\n;
+
+Detects an object according to several parameters.
+
+\image radar1 8 8;
+Seen from above, the purple zone corresponds to the zone where objects will be detected.
+
+\t;category: \c;\l;int\u cbot\int;\n;
+\l;Category\u cbot\category; of the objects that should be detected. For example, when you are looking for an ant, write \c;radar (AlienAnt)\n;.
+
+\t;angle: \c;\l;float\u cbot\float;\n; (default value\c;0\n;)
+Direction that the radar is facing, in degrees.
+\c; 0\n; -> radar is facing straight ahead
+\c;-90\n; -> radar is facing a quarter turn right
+\c; 90\n; -> radar is facing a quarter turn left
+
+\t;focus: \c;\l;float\u cbot\float;\n; (default value\c;360\n;)
+Opening angle of the radar, in degrees.
+
+\t;min: \c;\l;float\u cbot\float;\n; (default value \c;0\n;)
+Minimum detection distance, in meters. Objects that are closer than the minimum distance will not be detected.
+
+\t;max: \c;\l;float\u cbot\float;\n; (Default value\c;1000\n;)
+Maximum detection distance, in meters. Objects that are farther away than the maximum distance will not be detected.
+
+\t;way: \c;\l;float\u cbot\float;\n; (default value\c;1\n;)
+Determines which way the objects are detected. With value \c;1\n;, returns the closest object found in the specified zone. With value \c;-1\n;, the farthest object in the zone will be returned.
+
+\t;Return value: \c;\l;object\u cbot\object;\n;
+Returns the first object found that corresponds to the specified category in the specified zone. If no object was found, returns the value \c;\l;null\u cbot\null;\n;.
+
+\t;Remark
+You do not have to give all the parameters. Here are two examples of instructions that are equivalent:
+\c;
+\s; radar(Titanium, 0, 360, 0, 1000);
+\s; radar(Titanium); // equivalent
+
+\s; radar(Titanium, 0, 90, 0, 1000);
+\s; radar(Titanium, 0, 90); // equivalent
+\n;
+When one or more parameters are not specified, the default values indicated above are used instead; only the first parameter is compulsory.
+Generally, only the first parameter is specified: f. ex. \c;radar (AlienAnt)\n; detects the closest ant, wherever it may be.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/F/cbot/readln.txt b/help/F/cbot/readln.txt
new file mode 100644
index 00000000..4889c0c5
--- /dev/null
+++ b/help/F/cbot/readln.txt
@@ -0,0 +1,20 @@
+\b;Instruction \c;readln\n;
+Read one line from an open file in the files/ folder. This is a method of the \c;\l;file\u cbot\file;\n; class. This is the reason why we always write \c;handle.readln()\n;¦:
+\c;
+\s; s = handle.readln();
+\n;
+The file must have been opened for reading (\c;"r"\n;) with the \c;\l;open\u cbot\open;\n; instruction. \c;readln\n; returns the string containing the whole line but without the end of line characters 0x0D (CR) and 0x0A (LF).
+
+Syntax¦:
+\s;\c;string = handle.readln ( );\n;
+
+Example¦:
+\c;
+\s; string s;
+\s; s = handle.readln();
+\s; if ( s == "abc" )
+\s; ...
+\n;
+\t;See also
+\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;writeln\u cbot\writeln;\n; and \c;\l;eof\u cbot\eof;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/receive.txt b/help/F/cbot/receive.txt
new file mode 100644
index 00000000..68b140f5
--- /dev/null
+++ b/help/F/cbot/receive.txt
@@ -0,0 +1,18 @@
+\b;Instruction \c;receive\n;
+Syntax:
+\s;\c;receive ( name, power );\n;
+
+Retrieves an information from the closest \l;information exchange post\u object\exchange;.
+
+\t;name: \c;string\n;
+Name of the information required from the exchange post. This name is a string: it must be written in quotation marks "¦".
+
+\t;power: \c;float\n;
+Power of the receiver, which corresponds to maximal distance between the receiver and the exchange post. If the distance is longer, no information is received. Default value is 10 metres.
+
+\t;Return value: \c;\l;float\u cbot\float;\n;
+Value of the retrieved information. If no exchange post is close enough, or if the name of the requested information does not exist in the exchange post, the value \c;nan\n; is returned.
+
+\t;See also
+\c;\l;send\u cbot\send;\n;, \c;\l;testinfo\u cbot\testinfo;\n; and \c;\l;deleteinfo\u cbot\delinfo;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/recycle.txt b/help/F/cbot/recycle.txt
new file mode 100644
index 00000000..10d9979d
--- /dev/null
+++ b/help/F/cbot/recycle.txt
@@ -0,0 +1,14 @@
+\b;Instruction \c;recycle\n;
+Syntax:
+\s;\c;recycle ( );\n;
+
+Recycles the derelict bot in front of the \l;recycler\u object\botrecy; into a \l;titanium cube\u object\titan;.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Zero if OK, or a value different from zero if an error occurred.
+\c;== 0 \n;the derelict bot has been recycled
+\c;!= 0 \n;error, no derelict bot could be recycled
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/F/cbot/retobj.txt b/help/F/cbot/retobj.txt
new file mode 100644
index 00000000..3cfd3ca7
--- /dev/null
+++ b/help/F/cbot/retobj.txt
@@ -0,0 +1,15 @@
+\b;Instruction \c;retobject\n;
+Syntax:
+\s;\c;retobject ( number );\n;
+
+Returns the object corresponding to the given number.
+
+\t;number: \c;\l;int\u cbot\int;\n;
+Number of the object, between 0 and n. "n" represents the total number of objects in the scene.
+
+\t;Return value: \c;\l;object\u cbot\object;\n;
+Object corresponding to the number. The return value \c;\l;null\u cbot\null;\n; means that no object corresponds to this number, because the number was too high, and there are not so many objects in the scene.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/F/cbot/return.txt b/help/F/cbot/return.txt
new file mode 100644
index 00000000..5c74e3e1
--- /dev/null
+++ b/help/F/cbot/return.txt
@@ -0,0 +1,31 @@
+\b;Instruction \c;return\n;
+Returns from a function. Syntax:
+\c;
+\s;void function ( )
+\s;{
+\s; return;
+\s;}
+\n;
+\b;For specialists
+If the \l;function\u cbot\function; has a return type, the \c;return\n; instruction must be followed by the value to be returned:
+\c;
+\s;float Pi ( )
+\s;{
+\s; return 3.1415;
+\s;}
+
+\s;float Mean (float a, float b)
+\s;{
+\s; return (a+b)/2;
+\s;}
+
+\s;string Sign (float a)
+\s;{
+\s; if ( a > 0 ) return "positive";
+\s; if ( a < 0 ) return "négative";
+\s; return "null";
+\s;}
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/F/cbot/search.txt b/help/F/cbot/search.txt
new file mode 100644
index 00000000..e63e6c4b
--- /dev/null
+++ b/help/F/cbot/search.txt
@@ -0,0 +1,18 @@
+\b;Instruction \c;search\n;
+Syntax:
+\s;\c;search ( category, position );\n;
+
+Detects the object of the given category that is closest to the given position.
+
+\t;category: \c;\l;int\u cbot\int;\n;
+\l;Category\u cbot\category; of the requested object.
+
+\t;position: \c;\l;point\u cbot\point;\n;
+\c;search\n; returns the object of the given category that is closest to the position indicated here.
+
+\t;Return value: \c;\l;object\u cbot\object;\n;
+Characteristics of the object that has been found. The value \c;\l;null\u cbot\null;\n; means that no object of this category has been found.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
+
diff --git a/help/F/cbot/send.txt b/help/F/cbot/send.txt
new file mode 100644
index 00000000..10aa0606
--- /dev/null
+++ b/help/F/cbot/send.txt
@@ -0,0 +1,19 @@
+\b;Instruction \c;send\n;
+Syntax¦:
+\s;\c;send ( name, value, power );\n;
+
+Sends an information to the closest \l;information exchange post\u object\exchange;.
+
+\t;name: \c;string\n;
+Name of the information to be sent to the exchange post. This name is a string: it must be written in quotation marks "¦".
+If there is any information having this name, a new entry is created, as far as the total number of entries does not exceed 10. If there is already an information having this name, value is simply replaced by the new.
+
+\t;value: \c;float\n;
+Value of the information to be sent.
+
+\t;power: \c;float\n;
+Power of the transmitter, which corresponds to the maximal distance to where information can be the sent. Default value is 10 metres.
+
+\t;See also
+\c;\l;receive\u cbot\receive;\n;, \c;\l;testinfo\u cbot\testinfo;\n; and \c;\l;deleteinfo\u cbot\delinfo;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/shield.txt b/help/F/cbot/shield.txt
new file mode 100644
index 00000000..d9aff476
--- /dev/null
+++ b/help/F/cbot/shield.txt
@@ -0,0 +1,19 @@
+\b;Instruction \c;shield\n;
+Syntax:
+\s;\c;shield ( oper );\n;
+
+Activates or deactivates the shield of the \l;ahielder\u object\botshld;. You can of course move the shielder when the shield is active. It protects all objects that are inside the shielded sphere from enemy fire. The radius of the sphere can range between 10 and 25 meters.
+
+\t;oper: \c;\l;float\u cbot\float;\n;
+\c;1\n; activates the shield.
+\c;0\n; deactivates the shield
+A normal \l;power cell\u object\power; fully charged can maintain the shield active during 20 seconds. When the cell is empty, the shield deactivates.
+
+\t;radius: \c;\l;float\u cbot\float;\n;
+Radius of the shield, ranging between 10 and 25 meters.
+
+\t;Return value: \c;\l;void\u cbot\void;\n;
+None.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/sizeof.txt b/help/F/cbot/sizeof.txt
new file mode 100644
index 00000000..c0722c15
--- /dev/null
+++ b/help/F/cbot/sizeof.txt
@@ -0,0 +1,22 @@
+\b;Instruction \c;sizeof\n;
+The sizeof function lets you know the number of elements contained in an \l;array\u cbot\array;.
+That is the index of the last element plus one ("empty" elements are counted).
+\c;
+\s;{
+\s; int a[12];
+\s; a[5] = 345;
+\s; message( sizeof(a) ); // will display 6
+\s;}
+\n;
+In this example we have 6 elements in the array after \c;a[5]=345\n;. The non initialized elements \c;[0]\n;, \c;[1]\n;, \c;[2]\n;, \c;[3]\n; and \c;[4]\n; will be counted.
+
+With multidimensionnal arrays you can get the size of a sub array:
+\c;
+\s;float xy[][]; // 2 dimensionnal array
+\s;xy[5][10] = 67;
+\s;message( sizeof(xy) ); // will display 6
+\s;message( sizeof(xy[5]) ); // will display 11
+\s;
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/sniff.txt b/help/F/cbot/sniff.txt
new file mode 100644
index 00000000..27872224
--- /dev/null
+++ b/help/F/cbot/sniff.txt
@@ -0,0 +1,17 @@
+\b;Instruction \c;sniff\n;
+Syntax:
+\s;\c;sniff ( );\n;
+
+Sounds the underground in front of the \l;sniffer\u object\botsr;. According to what raw materials were detected, the following objects will be created:
+
+\c;TitaniumSpot\n; -> \l;Red cross\u object\stonspot;
+\c;UraniumSpot \n; -> \l;Yellow circle\u object\uranspot;
+\c;PowerSpot \n; -> \l;Green cross\u object\enerspot;
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Zero if everything is OK, or a value different from zero if an error occurred.
+\c;== 0 \n;sounding performed
+\c;!= 0 \n;sounding impossible
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/space.txt b/help/F/cbot/space.txt
new file mode 100644
index 00000000..baa660a9
--- /dev/null
+++ b/help/F/cbot/space.txt
@@ -0,0 +1,23 @@
+\b;Instruction \c;space\n;
+Syntax :
+\s;\c;space ( center, rmin, rmax, dist );\n;
+
+Determines the position of the nearest free space around a given position.
+
+\t;center: \c;\l;point\u cbot\point;\n; (default: bot position)
+Desired position of the free space.
+
+\t;rmin: \c;\l;float\u cbot\float;\n; (default value: \c;8\n;)
+Minimum distance from the desired position.
+
+\t;rmax: \c;\l;float\u cbot\float;\n; (default value: \c;50\n;)
+Maximum distance from the desired position.
+
+\t;dist: \c;\l;float\u cbot\float;\n; (default value: \c;4\n;)
+Required distance between two free spaces.
+
+\t;Return: \c;\l;point\u cbot\point;\n;
+Position of the free space.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/static.txt b/help/F/cbot/static.txt
new file mode 100644
index 00000000..7d5e6032
--- /dev/null
+++ b/help/F/cbot/static.txt
@@ -0,0 +1,22 @@
+\b;Instruction \c;static\n; (for specialists)
+\l;Class\u cbot\class; members declared with \c;static\n; are shared between all instances of the class.
+\c;
+\s;public class MyClass
+\s;{
+\s; static int nb = 1;
+\s; static string [ ] list = null;
+\s;}
+\s;void Test ()
+\s;{
+\s; MyClasse item1();
+\s; MyClasse item2();
+\s; item1.nb = 3;
+\s; item1.list[item1.nb] = "Hello";
+\s; message( item2.list[item2.nb] ); // display "Hello"
+\s;}
+\n;
+\c;Static\n; members can be declared \c;\l;private\u cbot\private;\n; so they will be only acessible from within class members (including constructors and destructors).
+
+\t;See also
+\c;\l;class\u cbot\class;\n;, \c;\l;synchronized\u cbot\synchro;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/strfind.txt b/help/F/cbot/strfind.txt
new file mode 100644
index 00000000..3d42b0d5
--- /dev/null
+++ b/help/F/cbot/strfind.txt
@@ -0,0 +1,20 @@
+\b;Instruction \c;strfind\n;
+Find a substring in a string and returns the position of the first substring found or \l;nan\u cbot\nan; if the substring has not been found.
+
+Syntax¦:
+\s;\c;strfind ( string, sub );\n;
+
+\t;string: \c;\l;string\u cbot\string;\n;
+String we are searching in.
+
+\t;sub: \c;\l;string\u cbot\string;\n;
+Substring we are searching for.
+
+Examples¦:
+\s;\c; int pos = strfind("abcdef", "ab"); // pos will be 0
+\s; int pos = strfind("abcdef", "de"); // pos will be 3
+\s; int pos = strfind("abcdef", "xy"); // pos will be \l;nan\u cbot\nan;
+\n;
+\t;See also
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/string.txt b/help/F/cbot/string.txt
new file mode 100644
index 00000000..cc7b1a17
--- /dev/null
+++ b/help/F/cbot/string.txt
@@ -0,0 +1,33 @@
+\b;Type \c;string\n;
+Use a variable of this type for storing characters or strings.
+
+For example:
+\s;\c; "Hello!"
+\s; "This is a string"
+\s; "x"
+\s; "" // empty string
+\n;
+You can append two strings with the \c;+\n; operator :
+\s;\c; "Good morning," + " " + "Sir"
+\n;
+Returns the string:
+\s;\c; "Good morning, Sir"
+\n;
+If you want to put a quotation mark (") or a backslash (\) in a string you must write¦:
+\s;\c;"This is \"very\" important"
+\n;which will result in the string \c; This is "very" important.
+\s;\c;"%user%\\ant.txt"
+\n;will result in \c;%user%\ant.txt
+\n;
+Following instructions can be used with strings¦:
+\c;\l;strlen\u cbot\strlen; \n;Get string length
+\c;\l;strleft\u cbot\strleft; \n;Extract left part
+\c;\l;strright\u cbot\strright; \n;Extract right part
+\c;\l;strmid\u cbot\strmid; \n;Extract center part
+\c;\l;strfind\u cbot\strfind; \n;Find a substring.
+\c;\l;strval\u cbot\strval; \n;Convert string to number
+\c;\l;strupper\u cbot\strupper; \n;Convert to upper case
+\c;\l;strlower\u cbot\strlower; \n;Convert to lower case
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/strleft.txt b/help/F/cbot/strleft.txt
new file mode 100644
index 00000000..fa80fdeb
--- /dev/null
+++ b/help/F/cbot/strleft.txt
@@ -0,0 +1,16 @@
+\b;Instruction \c;strleft\n;
+Extracts the first (that is, leftmost) characters from a string.
+
+Syntax¦:
+\s;\c;strleft ( string, len );\n;
+
+\t;len: \c;\l;int\u cbot\int;\n;
+Number of characters to be extracted.
+
+Examples¦:
+\s;\c; string s = strleft("abcdef", 2); // s is "ab"
+\s; string s = strleft("abc", 10); // s is "abc"
+\n;
+\t;See also
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/strlen.txt b/help/F/cbot/strlen.txt
new file mode 100644
index 00000000..1cc384a7
--- /dev/null
+++ b/help/F/cbot/strlen.txt
@@ -0,0 +1,14 @@
+\b;Instruction \c;strlen\n;
+Get the length of a string.
+
+Syntax¦:
+\s;\c;strlen ( string );\n;
+
+Examples¦:
+\s;\c; int len = strlen("abc"); // len is 3
+\s; int len = strlen(""); // len is 0
+\s; if ( strlen(s) == 0 ) // is string empty ?
+\n;
+\t;See also
+\c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/strlower.txt b/help/F/cbot/strlower.txt
new file mode 100644
index 00000000..b4b7e50b
--- /dev/null
+++ b/help/F/cbot/strlower.txt
@@ -0,0 +1,12 @@
+\b;Instruction \c;strlower\n;
+Convert all characters in a string to lowercase.
+
+Syntax¦:
+\s;\c;strlower ( string );\n;
+
+Examples¦:
+\s;\c; string s = strlower("Abc"); // s is "abc"
+\n;
+\t;See also
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/strmid.txt b/help/F/cbot/strmid.txt
new file mode 100644
index 00000000..cf90bd3b
--- /dev/null
+++ b/help/F/cbot/strmid.txt
@@ -0,0 +1,20 @@
+\b;Instruction \c;strmid\n;
+Extracts a substring of a given length starting at a given position from a string.
+
+Syntax¦:
+\s;\c;strmid ( string, pos, len );\n;
+
+\t;pos: \c;\l;int\u cbot\int;\n;
+The index of the first character that is to be included in the extracted substring.
+
+\t;len: \c;\l;int\u cbot\int;\n;
+Number of characters to be extracted.
+
+Examples¦:
+\s;\c; string s = strmid("abcdef", 1, 2); // s is "bc"
+\s; string s = strmid("abcdef", 4, 5); // s is "ef"
+\s; string s = strmid("abcdef", 9, 2); // s is ""
+\n;
+\t;See also
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/strright.txt b/help/F/cbot/strright.txt
new file mode 100644
index 00000000..18824e65
--- /dev/null
+++ b/help/F/cbot/strright.txt
@@ -0,0 +1,16 @@
+\b;Instruction \c;strright\n;
+Extracts the last (that is, rightmost) characters from a string.
+
+Syntax¦:
+\s;\c;strright ( string, len );\n;
+
+\t;len: \c;\l;int\u cbot\int;\n;
+Number of characters to be extracted.
+
+Examples¦:
+\s;\c; string s = strright("abcdef", 2); // s is "ef"
+\s; string s = strright("abc", 10); // s is "abc"
+\n;
+\t;See also
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/strupper.txt b/help/F/cbot/strupper.txt
new file mode 100644
index 00000000..7091f0ce
--- /dev/null
+++ b/help/F/cbot/strupper.txt
@@ -0,0 +1,12 @@
+\b;Instruction \c;strupper\n;
+Convert all characters in a string to uppercase.
+
+Syntax¦:
+\s;\c;strupper ( string );\n;
+
+Examples¦:
+\s;\c; string s = strupper("Abc"); // s is "ABC"
+\n;
+\t;See also
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/strval.txt b/help/F/cbot/strval.txt
new file mode 100644
index 00000000..491fc185
--- /dev/null
+++ b/help/F/cbot/strval.txt
@@ -0,0 +1,19 @@
+\b;Instruction \c;strval\n;
+Convert a string to a number. Don't confuse the string \c;"45"\n; that contains actually the two characters \c;4\n; and \c;5\n; and the number \c;45\n;.
+
+Examples¦:
+\s;\c; string s = "45"+"12"; // s contains "4512"
+\s; float n = 45 + 12; // n contains 67
+\n;
+Syntax¦:
+\s;\c;strval ( string );\n;
+\n;
+Examples¦:
+\s;\c; float n = strval("1.23"); // n is 1.23
+\s; float n = strval("12abc45"); // n is 12
+\s; float n = strval("abc"); // n is 0
+\s; float n = strval("100")+2; // n is 102
+\n;
+\t;See also
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/synchro.txt b/help/F/cbot/synchro.txt
new file mode 100644
index 00000000..8817c38a
--- /dev/null
+++ b/help/F/cbot/synchro.txt
@@ -0,0 +1,25 @@
+\b;Instruction \c;synchronized\n; (for specialists)
+A \l;class\u cbot\class; method can be declared \c;synchronized\n;. This is to make sure that the method is never being executed by more than one bot at the same time.
+
+The following example illustrates the problem:
+\c;
+\s;class blocking
+\s;{
+\s; static int nb = 33;
+\s; synchronized int inc( )
+\s; {
+\s; int val = nb;
+\s; wait ( 2 ); // wait 2 sec.
+\s; nb = nb + 1;
+\s; return val;
+\s; }
+\s;}
+\n;
+What happens if two bots execute the \c;inc\n; method at the same time¦?
+Both of them will execute \c;val=nb\n; and wait 2 seconds so both of them will have \c;val=33\n;. With \c;synchronized\n; the first bot starts execution with \c;val=33\n; and then waits 2 seconds and returns. Only once the first bot has returned from the \c;inc\n; method, the second bot will be allowed to enter the \c;inc\n; method and therefore the second bot will always have \c;val=34\n;.
+
+You can have more than one synchronized method in your \l;class\u cbot\class; in order to prevent simultaneous execution across more than one method. In other words: as long as a bot's program is inside a synchronized method, no other bot can enter any synchronized method of the same class.
+
+\t;See also
+\c;\l;class\u cbot\class;\n;, \c;\l;static\u cbot\static;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/term.txt b/help/F/cbot/term.txt
new file mode 100644
index 00000000..c53d552d
--- /dev/null
+++ b/help/F/cbot/term.txt
@@ -0,0 +1,31 @@
+\b;Semicolon
+Always use a semicolon \c;;\n; after a simple expression. For example:
+\c;
+\s; int counter = 0;
+\n;
+However, after a \l;bloc\u cbot\bloc;, never put a semicolon:
+\c;
+\s; {
+\s; float dist;
+\s; dist = distance(p1, p2);
+\s; } \n;// no semicolon here!\c;
+\n;
+Do not use a semicolon either immediately after the instructions \c;\l;while\u cbot\while;\n;, \c;\l;if\u cbot\if;\n; or \c;\l;for\u cbot\for;\n;:
+\c;
+\s; if ( a < b ) \n;// no semicolon here!\c;
+\s; {
+\s; b = 100-a;
+\s; }
+\n;
+An instruction is always ended by a semicolon, and not by the end of the line. So you can very well put several instructions on the same line:
+\c;
+\s; int d=20;
+\s; move(d);
+\s; turn(90);
+\n;
+Is equivalent to:
+\c;
+\s; int d=20; move(d); turn(90);
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/testinfo.txt b/help/F/cbot/testinfo.txt
new file mode 100644
index 00000000..634063af
--- /dev/null
+++ b/help/F/cbot/testinfo.txt
@@ -0,0 +1,18 @@
+\b;Instruction \c;testinfo\n;
+Syntax¦:
+\s;\c;testinfo ( name, power );\n;
+
+Tests if an information exists in the closest \l;information exchange post\u object\exchange;.
+
+\t;name: \c;string\n;
+Name of the information to be tested in the exchange post. This name is a string: it must be written in quotation marks "¦".
+
+\t;power: \c;float\n;
+Power of the transmitter, which corresponds to the maximal distance between the transmitter and the exchange post. If the distance is longer, the function returns \c;false\n;. Default value is 10 metres.
+
+\t;Return: \c;\l;bool\u cbot\bool;\n;
+Return \c;true\n; if the information exists. Return and \c;false\n; if the information does not exist or if the receiver is too far away from the exchange post.
+
+\t;See also
+\c;\l;receive\u cbot\receive;\n;, \c;\l;send\u cbot\send;\n; and \c;\l;deleteinfo\u cbot\delinfo;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/this.txt b/help/F/cbot/this.txt
new file mode 100644
index 00000000..81516bc3
--- /dev/null
+++ b/help/F/cbot/this.txt
@@ -0,0 +1,54 @@
+\b;Instruction \c;this\n;
+Occasionally, a \l;class\u cbot\class; method needs to know the reference to the instance it is acting upon. For example the instance might want to pass it's own reference to another function. An implicit reference name \c;this\n; is available to methods and \c;this\n; is a reference to the current instance.
+\c;
+\s;public class MyClass
+\s;{
+\s; int m_int;
+\s; string m_str;
+\s; void MyFunction()
+\s; {
+\s; OtherFunction(this);
+\s; m_int = 2;
+\s; }
+\s;}
+\s;
+\s;void OtherFunction(MyClass obj)
+\s;{
+\s; message(obj.m_str);
+\s;}
+\s;
+\s;extern void object::Test()
+\s;{
+\s; MyClass item();
+\s; item.m_str = "Hello";
+\s; item.MyFunction(); // display "Hello"
+\s;}
+\n;
+You can also put \c;this\n; before a field name in a method but this is not necessary. In the example above in the method \c;MyFunction()\n; following two lines have strictly the same meaning:
+\c;
+\s; m_int = 2;
+\s; this.m_int = 2; // identical
+\n;
+In a method of the \c;\l;object\u cbot\object;\n; class, you can also use \c;this.\n; before a fieldname.
+\c;
+\s;extern void object::Display()
+\s;{
+\s; message(orientation);
+\s; message(this.orientation); // same thing but
+\s; // more explicit
+\s;}
+\n;
+However if a field name is hidden by a parameter declaration or a variable declaration you must use \c;this\n;. In the following example the name \c;value\n; of the parameter is the same as the name of the field \c;value\n; of the \l;class\u cbot\class; \c;MyClass\n;, we must therefore write \c;this.value\n; in order to distinguish the field from the parameter.
+\c;
+\s;public class MyClass
+\s;{
+\s; int value;
+\s; void Put( int value )
+\s; {
+\s; this.value = value;
+\s; }
+\s;}
+\n;
+\t;See also
+\c;\l;class\u cbot\class;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; et \l;catégories\u cbot\category;.
diff --git a/help/F/cbot/thump.txt b/help/F/cbot/thump.txt
new file mode 100644
index 00000000..8ce7f161
--- /dev/null
+++ b/help/F/cbot/thump.txt
@@ -0,0 +1,13 @@
+\b;Instruction \c;thump\n;
+Syntax:
+\s;\c;thump ( );\n;
+
+Activates the weapon system of the \l;thumper\u object\bottump;, that turns ants and spiders belly up and makes them completely harmless for a while.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Zero if everything is OK, a value different from zero if an error occurred.
+\c;== 0 \n;Thumping performed
+\c;!= 0 \n;Operation impossible
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/topo.txt b/help/F/cbot/topo.txt
new file mode 100644
index 00000000..e8fef09a
--- /dev/null
+++ b/help/F/cbot/topo.txt
@@ -0,0 +1,14 @@
+\b;Instruction \c;topo\n;
+Syntax:
+\s;\c;topo ( position );\n;
+
+Returns the altitude of the ground at a give position. The altitude zero corresponds to sea level. A negative value indicates that at this position ground is covered with water.
+
+\t;position: \c;\l;point\u cbot\point;\n;
+Coordinates of the position whose altitude you want to know.
+
+\t;Return value: \c;\l;float\u cbot\float;\n;
+Altitude of the ground at the given position.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/true.txt b/help/F/cbot/true.txt
new file mode 100644
index 00000000..2d29fa1d
--- /dev/null
+++ b/help/F/cbot/true.txt
@@ -0,0 +1,5 @@
+\b;Type \c;true\n;
+This value means that a condition is true; it is one of the two values that a \l;boolean\u cbot\bool; \l;variable\u cbot\var; can take.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/turn.txt b/help/F/cbot/turn.txt
new file mode 100644
index 00000000..a163dcb5
--- /dev/null
+++ b/help/F/cbot/turn.txt
@@ -0,0 +1,33 @@
+\b;Instruction \c;turn\n;
+Use the instruction \c;turn();\n; to instruct the bot to perform a rotation on itself of a certain number of degrees.
+
+\b;Basic use
+90 degreed means a quarter turn, 180 degrees means a half turn. A positive angle will perform a counterclockwise rotation, a negative angle means a clockwise rotation. Here are some examples with \c;turn();\n;:
+
+\c;turn(90);\n; quarter turn to the left
+\c;turn(-90);\n; quarter turn to the right (negative angle)
+\c;turn(180);\n; half turn
+
+In order to turn the bot towards an object found with the instruction \c;\l;radar\u cbot\radar;();\n;, you must calculate the rotation angle with the instruction \c;\l;direction\u cbot\direct;()\n;:
+\c;
+\s; item = \l;radar\u cbot\radar;(AlienSpider);
+\s; turn(\l;direction\u cbot\direct;(item.position));
+\n;
+After these lines, just fire the cannon, and there is one hostile element less.
+
+\b;For specialists
+Syntax:
+\s;\c;turn ( angle );\n;
+
+Turns the bot with a given angle, right or left, without moving either forward or backward.
+
+\t;angle: \c;\l;float\u cbot\float;\n;
+Angle of the required rotation, in degrees. A positive value turns left, a negative value turns right. \c;turn(180)\n; turns round completely.
+
+\t;Return value: \c;\l;int\u cbot\int;\n;
+Zero if everything is OK, or a value different from zero if an error occurred.
+\c;== 0 \n;rotation performed
+\c;!= 0 \n;rotation impossible
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/type.txt b/help/F/cbot/type.txt
new file mode 100644
index 00000000..16662081
--- /dev/null
+++ b/help/F/cbot/type.txt
@@ -0,0 +1,33 @@
+\b;Variable types
+When you define a \l;variable\u cbot\var;, you must give two elements:
+
+1) a name
+2) a type
+
+Once you defined a variable, you can use it to put information in it. However, the information that a variable can contain must always be of the correct type: a variable of type \l;float\u cbot\float; can not contain a string, etc.
+
+In a program, the name of a type is always written on \type;green background\norm;. If the name of a type is not colored, this means that the name is misspelled. Type names are always written with lower case characters. Here is a list of the different types:
+
+\s;\c;\l;int\u cbot\int;\n;
+For a whole number (12, -500, etc.).
+
+\s;\c;\l;float\u cbot\float;\n;
+For a real number (12, 3.14, 0.2, -99.98, etc.).
+
+\s;\c;\l;bool\u cbot\bool;\n;
+For a boolean variable, that can only take the values \c;true\n; or \c;false\n;.
+
+\s;\c;\l;string\u cbot\string;\n;
+For texts ("Hello!", "No object found", etc.)
+
+\s;\c;\l;point\u cbot\point;\n;
+For the coordinates of a point in space; a variable of this type consists of three parts named x, y and z.
+
+\s;\c;\l;object\u cbot\object;\n;
+A variable of this type contains the information about an object (bot, building, enemy, etc.).
+
+\s;\c;\l;void\u cbot\void;\n;
+This type is an "empty type", that you use when you do not want to specify a type.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/var.txt b/help/F/cbot/var.txt
new file mode 100644
index 00000000..8c8f95be
--- /dev/null
+++ b/help/F/cbot/var.txt
@@ -0,0 +1,67 @@
+\b;Variables
+A variable is like a box, where you can put some information. The content of the variable can change during the execution of the program.
+
+For example, you can use a variable to count the number of titanium ore units that the grabber has collected and carried to the converter. First, you must find a name for it: the name should not be too long, but explain by itself what the variable is used for. Let's call it \c;countTit\n;. This variable must contain only whole numbers, so choose the type \c;int\n;. At the beginning of the program, you must declare the variable. Then you put the value \c;0\n; into the variable, and every time you grab a titanium ore, you increase the variable by \c;1\n;. At every moment, the variable contains the number of titanium ore units that the grabber collected.
+
+For the declaration of the variable, write the following line:
+\c;\s; int countTit;\n;
+
+To put \c;0\n; into the variable, write:
+\c;\s; countTit = 0;\n;
+
+At every titanium ore grabbed, write:
+\c;\s; countTit = countTit + 1\n;
+
+You have much freedom in the choice of the name for a variable, you can call them by any name, f. ex.: \c;dist\n;, \c;direct\n;, \c;p2\n;, \c;a\n;, \c;x\n;, \c;nothing_2_shoot_at\n;, etc.
+A variable name must always begin with a letter. It can be followed by any combination of letters, digits or the underscore character \c;_\n;. You can of course not use the keywords of the CBOT language like \c;\l;for\u cbot\for;\n;, \c;\l;while\u cbot\while;\n;, \c;\l;break\u cbot\break;\n;, \c;\l;continue\u cbot\continue;\n;, \c;do\n;, etc.
+You should be careful about the choice of the names that you give to variables; writing a program can become very difficult if you forget the names of variables or if you do not remember what they are used for. Elaborate your own system to find variable names, and do not use names like \c;Bmo45\n;, \c;a\n; or \c;tgBinX\n;.
+
+In the example above, the keyword \c;int\n; indicates that this variable can contain only whole numbers, which is adequate to counting objects. If you want to measure a distance, better use a variable that can contain also real numbers, with a fractional part (like 3.45 or 0.034): in this case, use the type \c;float\n;.
+
+In fact, a variable is made up of three parts:
+1) the name
+2) the type of the information stored inside
+3) the content, i.e. the information itself
+
+\t;the name
+You need the name to be able to distinguish the different variables from each other.
+
+\t;the type
+The \l;type\u cbot\type; determines what kind of information the variable can contain. According to the type, a variable can contain a whole number, a real number, a string, the coordinates of a point, information about an object, etc.
+Here is a list of the most common variable types:
+ o \c;\l;int\u cbot\int;\n; for a whole number (12, -500, etc.)
+ o \c;\l;float\u cbot\float;\n; for a real number (3.14, 0.2, -99.98, etc.)
+ o \c;\l;string\u cbot\string;\n; for a character string ("Hello!", "No object found", etc.)
+ o \c;\l;point\u cbot\point;\n; for a x,y,z-coordinate in space
+ o \c;\l;object\u cbot\object;\n; for information about an object (bot, building, etc.)
+
+\t;The content
+The content of a variable is an information of the kind specified in the type. It can change during the execution of the program.
+
+Once you declared a variable, it still does not contain any value. Before you can use it, you must put a value inside:
+\c;\s; int i, j;
+\s; j = 25; // j takes the value 25
+\s; j = i; // can not write this, because i has got no content yet.
+\n;
+You can also declare a variable and put a value inside in the same line, writing:
+\c;\s; int countTit = 0;
+\n;
+When you assign a value to a variable with the equals sign \c;=\n;, the value on the right side is copied into the value on the left side. Consider the following example:
+\c;\s; int i, j;
+\s; i = 5+2; // i takes the value 7
+\s; j = i+6; // j takes the value of i plus 6, this is 13
+\s; i = j; // i takes the value of j, this is 13
+\n;
+At the end of this example, both variables \c;i\n; and \c;j\n; contain the value \c;13\n;.
+
+The following assignment is not correct, because on the left side of the equals sign \c;=\n;, there can be only a variable name:
+\c;\s; i+2 = j; // impossible
+\n;
+If you want to exchange the values of two variables, you must use a third variable. Here is an example to exchange the content of two variables \c;a\n; and \c;b\n; :
+\c;\s; int temp;
+\s; temp = a; // temp takes the value of a
+\s; a = b; // the content of b is copied into a
+\s; b = temp; // the content of temp is copied into b
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/void.txt b/help/F/cbot/void.txt
new file mode 100644
index 00000000..11509d2b
--- /dev/null
+++ b/help/F/cbot/void.txt
@@ -0,0 +1,11 @@
+\b;Type \c;void\n;
+Use this type when you want to declare a function that returns nothing.
+
+Example:
+\c;\s;void MyFunction(int a)
+\s;{
+\s; ...
+\s;}
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/wait.txt b/help/F/cbot/wait.txt
new file mode 100644
index 00000000..88e6ed64
--- /dev/null
+++ b/help/F/cbot/wait.txt
@@ -0,0 +1,22 @@
+\b;Instruction \c;wait\n;
+The instruction \c;wait();\n; instructs the bot to wait for some seconds, according to the value written in brackets.
+
+\b;Basic use
+In order to wait until the \l;power cell\u object\power; is recharged on a power station, wait 5 seconds with \c;wait(5);\n;.
+
+In order to wait until the \l;converter\u object\convert; finished transforming some \l;titanium ore\u object\titanore; in a \l;titanium cube\u object\titan;, wait 15 seconds with \c;wait(15);\n;.
+
+\b;For specialists
+Syntax:
+\s;\c;wait ( time );\n;
+
+Waits for a moment.
+
+\t;time: \c;\l;float\u cbot\float;\n;
+Specifies the time that the bot must wait.
+
+\t;Return value: \c;\l;void\u cbot\void;\n;
+None.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/while.txt b/help/F/cbot/while.txt
new file mode 100644
index 00000000..5e793c88
--- /dev/null
+++ b/help/F/cbot/while.txt
@@ -0,0 +1,47 @@
+\b;Instruction \c;while\n;
+The instruction \c;while () {}\n; is used to repeat a set of instructions several times.
+
+\b;Basic use
+The most frequent use of \c;while\n; consists in repeating a set of instructions again and again. In order to achieve this, write \c;while (true) {}\n; and put the instructions to be repeated in braces \c;{}\n;. As an example, here is a program that repeats again and again the following actions:
+o look for a spider,
+o turn towards it,
+o shoot.
+\c;
+\s; while (true)
+\s; {
+\s; item = \l;radar\u cbot\radar;(AlienSpider);
+\s; \l;turn\u cbot\turn;(direction(item.position));
+\s; \l;fire\u cbot\fire;(1);
+\s; }
+\n;
+Just execute this program once, and it will kill all spiders around it.
+
+\b;For specialists
+Syntax :
+\s;\c;while ( condition )
+\s;{
+\s; \n;Instructions ...\c;
+\s;}
+\n;
+This instruction allows you to perform the instructions inside the \l;block\u cbot\bloc; several times.
+
+Be careful not to confuse the instruction \c;while( ) { }\n; with the instruction \c;\l;do\u cbot\do; { } while( );\n;; the latter tests the condition only after the instructions in the block have been performed a first time.
+
+\t;\c;condition\n;
+The instructions in the block are performed over and over again, as long as the \l;condition\u cbot\cond; is true.
+
+Here is an example :
+\s;\c;int i = 0;
+\s;while ( i < 10 )
+\s;{
+\s; \n;Instructions ...\c;
+\s; i = i+1;
+\s;}
+\n;
+\t;Attention
+Do not put a \l;semicolon\u cbot\term; at the end of the line \c;while ( )\n;.
+
+The instructions \c;\l;break\u cbot\break;\n; and \c;\l;continue\u cbot\continue;\n; can be useful inside a block following the instruction \c;while { }\n;.
+
+\t;See also
+\l;Instructions\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/cbot/writeln.txt b/help/F/cbot/writeln.txt
new file mode 100644
index 00000000..260f4507
--- /dev/null
+++ b/help/F/cbot/writeln.txt
@@ -0,0 +1,21 @@
+\b;Instruction \c;writeln\n;
+Write one line of text to an open file in the files/ folder. This is a method of the \c;\l;file\u cbot\file;\n; class. This is the reason why we always write \c;handle.writeln()\n;¦:
+\c;
+\s; handle.writeln("abc");
+\n;
+The file must have been opened for writing (\c;"w"\n;) with the \c;\l;open\u cbot\open;\n; instruction. The line will automatically be terminated by the end of line characters 0x0D (CR) and 0x0A (LF).
+
+Syntax¦:
+\s;\c;handle.writeln ( string );\n;
+
+Examples¦:
+\c;
+\s; writeln("Line of text");
+
+\s; string s1 = "abc";
+\s; string s2 = "def";
+\s; writeln(s1 + " " + s2);
+\n;
+\t;See also
+\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n; and \c;\l;eof\u cbot\eof;\n;.
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/command.txt b/help/F/command.txt
new file mode 100644
index 00000000..43126082
--- /dev/null
+++ b/help/F/command.txt
@@ -0,0 +1,45 @@
+\b;Controls
+You are advised to play with one hand on the arrow keys and the other hand on the mouse.
+
+\t;Bots
+\key;\key left;\norm; = turn left
+\key;\key right;\norm; = turn right
+\key;\key up;\norm; = move forward
+\key;\key down;\norm; = move back
+These controls are unavailable when working with the \l;practice bots\u object\bottr;.
+
+\key;\key gup;\norm; = take off and climb \button 28;
+\key;\key gdown;\norm; = descend and land \button 29;
+These controls are of course restricted to the \l;astronaut\u object\human; as well as the various \l;winged bots\u object\botgj; and in selected missions only.
+
+mouse forward = higher aim
+mouse backward = lower aim
+mouse right = aim right
+mouse left = aim left
+These controls are only available to the \l;shooters\u object\botfr;, the \l;orga shooters\u object\botor; and the \l;phazer shooter\u object\botphaz;.
+
+\key;\key action;\norm; = main action for a given selection (human or bot)
+This control will for example operate the arm of a \l;grabber\u object\botgr; or fire a \l;shooter\u object\botfr; \button 42;.
+
+\t;Selections
+\key;\key next;\norm; = selects next object
+\key;\key human;\norm; = selects astronaut
+\key;\key desel;\norm; = previous selection \button 10;
+
+\t;Camera
+\key;\key camera;\norm; = shifts between onboard and following cameras \button 13;
+\key;\key near;\norm; = zoom in
+\key;\key away;\norm; = zoom out
+\key;\key visit;\norm; = pauses the game and shows where the latest message originated. Press again to show origin of previous message.
+
+\t;Help
+\key;\key help;\norm; = mission instructions
+\key;\key prog;\norm; = programming help
+
+\t;Game
+\key;\key speed10;\norm; = normal speed x1
+\key;\key speed15;\norm; = medium speed x1.5
+\key;\key speed20;\norm; = faster speed x2
+\key;\key quit;\norm; = exits mission \button 11;
+
+All these commands can be redefined in the options/controls menu.
diff --git a/help/F/dexch1.txt b/help/F/dexch1.txt
new file mode 100644
index 00000000..cf330c6a
--- /dev/null
+++ b/help/F/dexch1.txt
@@ -0,0 +1,19 @@
+\b;Exercice
+Several \l;information exchange posts\u object\exchange; are standing along the way. When the bot is close enough to a post, it can read the instructions it contains. The \l;information exchange posts\u object\exchange; along the way contain the direction of the next post and the distance. And you do not know how many exchange posts you must get in touch with before arriving at your goal.
+
+\b;General principle
+ Always repeat:
+ o Retrieve the direction from the \l;exchange post\u object\exchange;.
+ o Retrieve the distance from the \l;exchange post\u object\exchange;.
+ o If no information could be retrieved, stop the program.
+ o Execute the rotation.
+ o Move forward to the next post.
+
+\b;Useful instructions
+\c;\l;while\u cbot\while;\n; to repeat the instructions
+\c;\l;receive\u cbot\receive;\n; to get the information from a post
+\c;\l;move\u cbot\move;\n; to move the bot
+\c;\l;turn\u cbot\turn;\n; to turn the bot
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/dfollow1.txt b/help/F/dfollow1.txt
new file mode 100644
index 00000000..2be46365
--- /dev/null
+++ b/help/F/dfollow1.txt
@@ -0,0 +1,20 @@
+\b;Exercise
+You must follow the \l;target bot\u object\bottr; with the explosive device, but without touching it, otherwise it will blow up. Every time the target bot stops, you must be close to it (less than 10m). After you managed to stay close to the target bot at 10 successive stops, it will lead you to the finishing pad, and the exercise is over. At every stop, the target bot checks that you are there. If you are not there, you must start over again.
+
+\b;General principle
+Repeat forever:
+o Look for the target bot.
+o Calculate the distance to the bot.
+o if the distance to the target bot is less than 5m, move backward.
+o Otherwise, calculate the direction of the target bot, and move towards it.
+
+\b;Useful instructions
+\c;\l;radar\u cbot\radar;\n; to look for the bot (category \c;\l;TargetBot\u object\bottarg;\n;)
+\c;\l;radar\u cbot\radar;\n; to detect obstacles
+\c;\l;distance\u cbot\dist;\n; to calculate a distance
+\c;\l;direction\u cbot\direct;\n; to calculate a direction
+\c;\l;if\u cbot\if;\n; to test a condition
+\c;\l;motor\u cbot\motor;\n; to set the motor speeds
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/dfor.txt b/help/F/dfor.txt
new file mode 100644
index 00000000..116be043
--- /dev/null
+++ b/help/F/dfor.txt
@@ -0,0 +1,11 @@
+\b;Exercise
+Destroy all four \l;targets\u object\bottarg; with a program using a \c;for\n; loop. You must move 10m to get from one target to another.
+
+\b;Useful instructions
+\c;\l;for\u cbot\for;\n; loop to repeat the instructions
+\c;\l;move\u cbot\move;\n; to move the bot
+\c;\l;turn\u cbot\turn;\n; to turn the bot
+\c;\l;fire\u cbot\fire;\n; to fire the cannon
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/dhelp1.txt b/help/F/dhelp1.txt
new file mode 100644
index 00000000..718907d0
--- /dev/null
+++ b/help/F/dhelp1.txt
@@ -0,0 +1,15 @@
+\b;Exercise
+Defend against all enemy attacks
+
+\b;General idea
+The range of your cannon is about 40m. The category of the enemies is \c;AlienAnt\n;. Turn towards the closest ant, even if it is still more than 40m away. But shoot only when it is closer than 40m, in order not to waste your energy.
+
+\b;Useful instructions
+\c;\l;radar\u cbot\radar;\n; to detect your enemies (category \c;\l;AlienAnt\u object\ant;\n;)
+\c;\l;direction\u cbot\direct;\n; to calculate a direction
+\c;\l;distance\u cbot\dist;\n; to calculate a distance
+\c;\l;fire\u cbot\fire;\n; to fire your cannon
+\c;\l;wait\u cbot\wait;\n; to wait
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/dlaby1.txt b/help/F/dlaby1.txt
new file mode 100644
index 00000000..75e3e368
--- /dev/null
+++ b/help/F/dlaby1.txt
@@ -0,0 +1,11 @@
+\b;Exercise
+Program the bot so that it will find its way without hitting the walls of the labyrinth. We suppose that you do not know the configuration of the labyrinth, but there are no bifurcations, and no dead-ends. The labyrinth is made of squares measuring 5m each.
+
+\b;Useful instructions
+\c;\l;radar\u cbot\radar;\n; to detect obstacles
+\c;\l;if\u cbot\if;\n; to test a condition
+\c;\l;move\u cbot\move;\n; to move the bot
+\c;\l;turn\u cbot\turn;\n; to turn the bot
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/dmove1.txt b/help/F/dmove1.txt
new file mode 100644
index 00000000..1f207bd0
--- /dev/null
+++ b/help/F/dmove1.txt
@@ -0,0 +1,10 @@
+\b;Exercise
+Program the robot in such a way that it arrives on the finishing pad, after having passed by the three blue crosses.
+The platforms and the crosses are all distant of 20m from each other.
+
+\b;Useful instructions
+\c;\l;move\u cbot\move;\n; to move the bot
+\c;\l;turn\u cbot\turn;\n; to turn the bot
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/dproc1.txt b/help/F/dproc1.txt
new file mode 100644
index 00000000..e1cda96b
--- /dev/null
+++ b/help/F/dproc1.txt
@@ -0,0 +1,21 @@
+\b;Exercice
+\b;Exercise
+The \l;bot\u object\bottr; must pass over all the \l;blue crosses\u object\waypoint; on the ground. The way that must be covered is made of two squares. The first one measures 15 meters, the second 25 meters.
+
+\image tproc1a 8 8;
+\b;General principle
+In order to solve this problem, the most efficient solution consists in creating a \l;function\u cbot\function; that instructs the bot to move on a square shape of a certain size. The main program becomes then very simple:\c;
+\c;
+\s; extern void object::Function3( )
+\s; {
+\s; Square(15);
+\s; Square(25);
+\s; }
+\n;
+\b;Useful instructions
+\c;\l;for\u cbot\for;\n; loop to repeat some instructions
+\c;\l;move\u cbot\move;\n; to move the bot
+\c;\l;turn\u cbot\turn;\n; to turn the bot
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/dproc2.txt b/help/F/dproc2.txt
new file mode 100644
index 00000000..6424eb36
--- /dev/null
+++ b/help/F/dproc2.txt
@@ -0,0 +1,14 @@
+\b;Exercise
+Follow the way in form of a spiral. The bot must move 2 times 25m forward and turn, then move 2 times 20m forward and turn, and so on.
+\image tproc2 8 8;
+
+\b;Function
+You will have noticed that the way is made of "L"-shaped parts that are fit one into another. The first one (dark blue) measures two times 25 meters. The second one (light blue) measures 5 meters less. Let us start with writing the \l;function\u cbot\function; that will move the bot on a "L"-shaped part whose length will be given as a parameter.
+
+\b;Useful instructions
+\c;\l;for\u cbot\for;\n; loop to repeat some instructions
+\c;\l;move\u cbot\move;\n; to move the bot
+\c;\l;turn\u cbot\turn;\n; to turn the bot
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/dradar1.txt b/help/F/dradar1.txt
new file mode 100644
index 00000000..2b97def6
--- /dev/null
+++ b/help/F/dradar1.txt
@@ -0,0 +1,14 @@
+\b;Exercise
+In this exercise, a "crazy bot" places many \l;blue crosses\u object\waypoint; on the ground. Just try to find them all.
+
+\b;Useful instructions
+\c;\l;radar\u cbot\radar;\n; to detect the blue crosses (category \c;\l;WayPoint\u object\waypoint;\n;)
+\c;\l;direction\u cbot\direct;\n; to calculate a direction
+\c;\l;if\u cbot\if;\n; to test a condition
+\c;\l;motor\u cbot\motor;\n; to set the motor speeds
+
+\t;Remark
+Do not wait too long, because the crazy bot gets down to work immediately. Fortunately, as long as you are in the program editor, the game will pause.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/dremova1.txt b/help/F/dremova1.txt
new file mode 100644
index 00000000..d3175a1d
--- /dev/null
+++ b/help/F/dremova1.txt
@@ -0,0 +1,35 @@
+\b;Exercise
+Convert some \l;titanium ore\u object\titanore; to \l;titanium cubes\u object\titan;, then drop 2 titanium cubes on the pads whose coordinates are:
+\c;
+ x=10, y=-60
+ x=10, y=-65
+\n;
+\image derrick 8 8;
+The \l;derrick\u object\derrick; extracts titanium ore from the subsoil; you just have to pick it up.
+
+\image convert 8 8;
+The \l;converter\u object\convert; converts titanium ore to titanium cubes. Just drop the titanium ore on the platform, move backward, and wait until it has been converted.
+
+\b;General principle
+Repeat two times :
+o Wait until there is some titanium ore.
+o Go to the titanium ore.
+o Pick it up.
+o Go to the converter.
+o Drop the titanium ore.
+o Move back 2.5 meters.
+o Wait until there is a titanium cube.
+o Pick up the titanium cube.
+o Go to the platform.
+o Drop the titanium cube.
+
+\b;Useful instructions
+\c;\l;for\u cbot\for;\n; to repeat some instructions
+\c;\l;do - while\u cbot\do;\n; to repeat some instructions
+\c;\l;radar\u cbot\radar;\n; to look for different objects
+\c;\l;goto\u cbot\goto;\n; to move the bot
+\c;\l;grab\u cbot\grab;\n; to grab an object
+\c;\l;drop\u cbot\drop;\n; to drop an object
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/dremova2.txt b/help/F/dremova2.txt
new file mode 100644
index 00000000..ec6549c7
--- /dev/null
+++ b/help/F/dremova2.txt
@@ -0,0 +1,11 @@
+\b;Exercise
+Move the \l;titanium cube\u object\titan; on the finishing pad. You do not know the position of the titanium, but we can tell you the position of the finishing pad x=10 and y=-60.
+
+\b;Useful instructions
+\c;\l;radar\u cbot\radar;\n; to find the titanium cube (category \c;\l;Titanium\u object\titan;\n;)
+\c;\l;goto\u cbot\goto;\n; to move the bot
+\c;\l;grab\u cbot\grab;\n; to grab an object
+\c;\l;drop\u cbot\drop;\n; to drop an object
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/dtrap1.txt b/help/F/dtrap1.txt
new file mode 100644
index 00000000..8cf7bd08
--- /dev/null
+++ b/help/F/dtrap1.txt
@@ -0,0 +1,26 @@
+\b;Exercise
+Instruct the bot to find all the \l;blue crosses\u object\waypoint; on the ground, but do not get too close to the \l;mines\u object\mine;. When the bot passes over a cross, it disappears. Here is the general principle:
+
+ Repeat forever:
+ o Look for a mine
+ o If a mine has been found, calculate the opposite direction
+ o Look for a cross
+ o If nothing has been found, stop the program
+ o Calculate the direction of the cross
+ o Calculate the mean value of the two directions
+ o Set the motor speeds in order to head towards the mean direction
+
+\b;The instruction \c;radar\n;
+In order to detect a mine with the \c;\l;radar\u cbot\radar;\n;, we recommend the following parameters:
+\c;\s; radar(Mine, 0, 180, 0, 5);\n;
+With the opening angle of 180 degrees, mines that are behind the bot will not be found. Mines that are at more than 5 meters are also ignored.
+
+In order to find a blue cross, simply write:
+\c;\s; radar(WayPoint);\n;
+Blue crosses will be found everywhere.
+
+In order to calculate a direction, use \c;\l;direction\u cbot\direct;\n;.
+In order to set the motor speeds, use \c;\l;motor\u cbot\motor;\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/dtrap2.txt b/help/F/dtrap2.txt
new file mode 100644
index 00000000..85acba71
--- /dev/null
+++ b/help/F/dtrap2.txt
@@ -0,0 +1,7 @@
+\b;Exercise
+Instruct your \l;bot\u object\bottr; to find all the \l;blue crosses\u object\waypoint; on the ground, but do not get too close to the \l;mines\u object\mine;.
+
+If a bot gets within less than 2m of the center of a mine (which is the position returned by the radar instruction), il will blow up. However, you must take into account the inertia of the bot. Probably a safety distance of 3 to 3.5m would be more appropriate.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/fglobal.txt b/help/F/fglobal.txt
new file mode 100644
index 00000000..f7c4caf2
--- /dev/null
+++ b/help/F/fglobal.txt
@@ -0,0 +1,5 @@
+\b;Objective
+Here you can play around without any definite objective. You can do whatever you want, explore the region, build a base camp and several bots, run various research programs, kill the insects if you find some, etc.
+
+\t;See also
+\l;Controls\u command;.
diff --git a/help/F/licences.txt b/help/F/licences.txt
new file mode 100644
index 00000000..f892ed07
--- /dev/null
+++ b/help/F/licences.txt
@@ -0,0 +1,3 @@
+The photograph of the nebula NGC3606 illuminating the sky on Orpheon and the installation program was taken with the Hubble space telescope. It is used with the permission of the authors Wolfgang Brandner (JPL/IPAC), Eva K. Grebel (Washington University), You-Hua Chu (Illinois Urbana-Champaign University) and NASA.
+
+The thunder sound on Orpheon is used by limited permission from CREATIVE.
diff --git a/help/F/mhcent1.txt b/help/F/mhcent1.txt
new file mode 100644
index 00000000..0bdecf07
--- /dev/null
+++ b/help/F/mhcent1.txt
@@ -0,0 +1,11 @@
+\b;From Mission Control
+Find some more \l;organic matter\u object\bullet; and, given an appropriate research program performed by your \l;autolab\u object\labo;, \l;you\u object\human; should be able to manufacture orga shooters yourself.
+
+Produce a \l;legged orga shooter\u object\botos; and bring it back aboard your \l;spaceship\u object\base;.
+
+Please keep in mind that low energy resources are a major concern on this planet.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhcent2.txt b/help/F/mhcent2.txt
new file mode 100644
index 00000000..99de1d4f
--- /dev/null
+++ b/help/F/mhcent2.txt
@@ -0,0 +1,7 @@
+\b;From Mission Control
+It is time for \l;you\u object\human; to improve your shooting skills again. In the following drill, hit all the \l;explosive devices\u object\tnt; but watch out: your \l;orga shooter\u object\botoj; has very little power left in it, barely enough to complete the drill.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhcent3.txt b/help/F/mhcent3.txt
new file mode 100644
index 00000000..48067c8f
--- /dev/null
+++ b/help/F/mhcent3.txt
@@ -0,0 +1,9 @@
+\b;From Mission Control
+Build a \l;radar\u object\radar; on one of the highest accessible spots and make sure that no organism can destroy it after \l;you\u object\human;'re gone.
+
+The destruction of a previous radar set up by the first expedition was probably the cause of a communication breakdown, which led to complete loss of contact.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhcent4.txt b/help/F/mhcent4.txt
new file mode 100644
index 00000000..72284c2a
--- /dev/null
+++ b/help/F/mhcent4.txt
@@ -0,0 +1,19 @@
+\b;A Word on New Policies
+We are sorry to have to bring this to your attention but this seems like a good a time to let you in on a little concern we're having at the moment. There has been a strong reaction in the public opinion and in Congress concerning your systematic termination of the "indigenous inhabitants" of the planets you've been visiting. Congress has chosen to demonstrate its sensitivity to the concerns of the general population.
+
+We hereby relay their new directives and these directives intimate for you to limit the casualties as much as humanly possible. In other words, do your very best to spare the life-forms you encounter from now on. Your mission should of course in no way find itself jeopardized by this new course of action.
+
+\b;From Mission Control
+Your energy resources appear dangerously limited at this time and so is your arsenal but you need to locate and retrieve the previous expedition's \l;black box\u object\bbox; so you can proceed to the next planet.
+
+We received a piece of information from your predecessors, via the observation satellite, regarding a new type of weaponry they have developed precisely for a predicament such as this one.
+
+This weapon will offer you an opportunity to demonstrate your newfound compassion towards \l;indigenous species\u object\ant; for it is not a weapon of mass destruction. What it offers instead, to the best of our knowledge, is an option to incapacitate them, rendering them, if only temporarily, harmless. If this is indeed the case, you'll need to act quickly before they are given a chance to become hostile to you again.
+
+\b;Procedure
+Perform the \l;research program\u object\research; and experiment for yourself but don't forget to bring this new weapon back on board. We are very curious to study its workings.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhcent5.txt b/help/F/mhcent5.txt
new file mode 100644
index 00000000..c4c0e0a1
--- /dev/null
+++ b/help/F/mhcent5.txt
@@ -0,0 +1,9 @@
+\b;From Mission Control
+You're under attack and this is no time for compassion...
+
+Your new \l;thumper\u object\bottump; might come in very handy. However, we emphasize that you should not risk a takeoff if there are any ants still alive in the vicinity of the spaceship.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhcrys1.txt b/help/F/mhcrys1.txt
new file mode 100644
index 00000000..6b4c840b
--- /dev/null
+++ b/help/F/mhcrys1.txt
@@ -0,0 +1,13 @@
+\b;From Mission Control
+Build a \l;radar\u object\radar; on the highest point in the area. Make sure that the radar will work safely even after your departure to other planets. Your \l;research center\u object\research; should be able to provide a solution.
+
+It is possible that the organisms detected are in fact the \l;worms\u object\worm; alluded to by the first expedition. If this is indeed the case, don't be excessively alarmed: they seem fairly harmless to living organisms but could cause the programs of bots and buildings to malfunction through the emission of viruses.
+
+Radars not only give you precious information about objects and organisms present in the region, they also relay information to and from the Earth once you have taken off to other planets. It is highly probable that problems with the radar stations built by the first expedition caused the transmission problems that we are aware of.
+
+In order to help you with the boring task of gathering the necessary raw material, we have developed a program that instructs the \l;wheeled grabber\u object\botgr; to look for \l;titanium ore\u object\titanore; on its own (see the programming page \button 53;).
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhcrys2.txt b/help/F/mhcrys2.txt
new file mode 100644
index 00000000..b0ceb067
--- /dev/null
+++ b/help/F/mhcrys2.txt
@@ -0,0 +1,11 @@
+\b;From Mission Control
+Cleanse the area of all hostile organisms. The way you accomplish this (\l;defense tower\u object\tower; or \l;winged shooter\u object\botfj;) is up to you.
+
+The radar seems to be perfectly suited to the detection of worms. Keep in mind though that they only appear when they are on the surface.
+
+We relayed a transmission to your \l;bot factory\u object\factory;. It concerns a bot designed to detect raw materials in the subsoil: energy sources, ore. We call it a \l;sniffer\u object\botsr; for short. Preliminary analysis leads us to believe that the presence of titanium ore on Crystalium is closely linked to the growth of large blue crystals. If this is indeed the case, this information should allow you to save some precious time. A \l;derrick\u object\derrick; is of course required for the extraction.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhcrys3.txt b/help/F/mhcrys3.txt
new file mode 100644
index 00000000..029ced15
--- /dev/null
+++ b/help/F/mhcrys3.txt
@@ -0,0 +1,9 @@
+\b;From Mission Control
+We have just received this warning from the observation satellite: a rogue bot from the previous expedition has seized the black box from your spaceship.
+
+We are going to investigate this incident further but it is of vital importance that you retrieve your black box at once.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhcrys4.txt b/help/F/mhcrys4.txt
new file mode 100644
index 00000000..a1db90ef
--- /dev/null
+++ b/help/F/mhcrys4.txt
@@ -0,0 +1,11 @@
+\b;From Mission Control
+This planet has turned out to be a very unlikely candidate for colonization. Better to leave it for good. Retrieve the \l;black box\u object\bbox; from the previous expedition and head towards the next planet.
+
+The observation satellite has indicated that its present location is at the bottom of a valley. However the pervasive stratum of electromagnetic smog could make all satellite information rather undependable.
+
+Stay alert.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhlune1.txt b/help/F/mhlune1.txt
new file mode 100644
index 00000000..8bc9c193
--- /dev/null
+++ b/help/F/mhlune1.txt
@@ -0,0 +1,22 @@
+\b;From Mission Control
+Collect 4 chunks of \l;titanium ore\u object\titanore; and bring them back aboard your \l;spaceship\u object\base;. Build the equipment necessary for this task (\l;flying bots\u object\botgj;).
+
+Before you venture any further, you should always take a look at the satellite report \button 186;.
+
+We have transmitted to your \l;spaceship\u object\base; a program that might help you in this task; please refer to the corresponding page of your SatCom with the button \button 53;.
+
+\b;Procedure
+1) A new \l;research program\u object\research; is required for winged bots to be added to the list of bots that can be produced by the factory. This research program will also make the propulsion reactor in your personal survival kit operational.
+
+2) Produce a \l;winged grabber\u object\botgj; and collect the 4 chunks of \l;titanium ore\u object\titanore;.
+
+3) Take the \l;winged grabber\u object\botgj; and the \l;wheeled grabber\u object\botgr; along with you and take off.
+
+Be careful that your winged bot does not run out of power when you are far from base. If necessary, replace the \l;power cell\u object\power; before leaving the spaceship. You can either do this manually or you can execute the enclosed program provided by Houston \button 53;.
+
+In order not to lose your way among the numerous craters on the Moon's surface, use the mini map on the lower right-hand corner of your screen.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mhlune2.txt b/help/F/mhlune2.txt
new file mode 100644
index 00000000..5d6cfbd9
--- /dev/null
+++ b/help/F/mhlune2.txt
@@ -0,0 +1,17 @@
+\b;From Mission Control
+This apparatus was set up by the previous expedition to test and train the flying capacity of winged bots.
+
+\b;Objective
+Use these drills to your advantage. Your ability to survive future critical situations may depend upon the dexterity they will have helped you develop.
+
+\b;Procedure
+Fly as quickly as possible through each target. Try to accomplish this without causing the engine to overheat. If this appears too difficult, just touch down and let the engine cool off.
+
+You should use the arrow keys on the keyboard to pilot the bot, but keep one hand on the mouse. The mouse is useless in this exercise, but will be essential in later missions.
+
+It may be useful to come back to these drills once in a while if you wish to improve your reflexes further.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhlune3.txt b/help/F/mhlune3.txt
new file mode 100644
index 00000000..a11586b5
--- /dev/null
+++ b/help/F/mhlune3.txt
@@ -0,0 +1,7 @@
+\b;From Mission Control
+Similar drill as before, only this time viewed through the camera placed on board.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhlune4.txt b/help/F/mhlune4.txt
new file mode 100644
index 00000000..cc87d088
--- /dev/null
+++ b/help/F/mhlune4.txt
@@ -0,0 +1,20 @@
+\b;From Mission Control
+We have no way of being sure where the previous expedition was headed when it left the Moon surface nor why it chose to go wherever it was going.
+
+Locate the \l;black box\u object\bbox; they must have left behind and bring it back aboard your ship. The black box should contain the coordinates of the next planet the expedition was planning to visit.
+
+Your bot's \l;power cells\u object\power; are almost entirely empty. Recharging them should be your priority. The observation satellite in orbit indicates that the subsoil in this particular area is loaded with energy. You should therefore be able to build a functional \l;power station\u object\station; on any flat surface.
+
+We have developed a program that will recharge the \l;power cell\u object\power; of a bot. Refer to the program page of your SatCom \button 53;.
+
+\b;Procedure
+1) You first need to build a \l;converter\u object\convert; that converts the chunks of titanium ore already in your possession into usable \l;titanium cubes\u object\titan;.
+
+2) You should then build both a \l;power station\u object\station; and a \l;radar\u object\radar; which will indicate the location of the black box on your mini map.
+
+3) With your power cells fully charged, retrieve the black box. It needs to be placed on the \l;spaceship\u object\base; platform for you to be able to take off.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhorph1.txt b/help/F/mhorph1.txt
new file mode 100644
index 00000000..7154f14a
--- /dev/null
+++ b/help/F/mhorph1.txt
@@ -0,0 +1,13 @@
+\b;From Mission Control
+It seems obvious enough that this planet will be no haven for humanity.
+
+Build a radar to relay future transmissions.
+
+Also... we're very sorry to inform you that you may need to exterminate all hostile organisms.
+
+The first expedition located \l;titanium ore\u object\titanore; under the surface of Orpheon. The spot is marked with a blue \l;flag\u object\flag;.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhorph2.txt b/help/F/mhorph2.txt
new file mode 100644
index 00000000..7391a1fc
--- /dev/null
+++ b/help/F/mhorph2.txt
@@ -0,0 +1,11 @@
+\b;From Mission Control
+Retrieve the black box.
+
+Electromagnetic lightning bolts appear to strike even more frequently now than they did previously. You need to protect your equipment.
+
+Please note that your spaceship also naturally acts as a lightning conductor, and our engineers assure us that your space suit does not attract lightning.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhsaari1.txt b/help/F/mhsaari1.txt
new file mode 100644
index 00000000..065eb931
--- /dev/null
+++ b/help/F/mhsaari1.txt
@@ -0,0 +1,7 @@
+\b;From Mission Control
+The observation satellite has detected a chunk of \l;uranium ore\u object\uranore; on the summit of the main mountain. You need to bring it back to your spaceship.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhsaari2.txt b/help/F/mhsaari2.txt
new file mode 100644
index 00000000..ae22711a
--- /dev/null
+++ b/help/F/mhsaari2.txt
@@ -0,0 +1,11 @@
+\b;From Mission Control
+Eliminate all hostile presence from the region.
+
+Your current situation is of utmost concern to us. The satellite has detected an extremely strong enemy presence approaching your spaceship from all directions. Use your best judgment and the quickest, most efficient defense: either \l;towers\u object\tower; or \l;shooters\u object\botfr;.
+
+In order to increase your survival chances, we have developed a program that will protect your west flank if you execute it on your \l;wheeled shooter\u object\botfr;; see the program page \button 53;.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhsaari3.txt b/help/F/mhsaari3.txt
new file mode 100644
index 00000000..2a6b8587
--- /dev/null
+++ b/help/F/mhsaari3.txt
@@ -0,0 +1,9 @@
+\b;From Mission Control
+Your satellite has located the remains of the previous expedition. You should come across a \l;black box\u object\bbox; not too far from there. It will give you the coordinates of your next destination.
+
+Exterminate the few remaining ants. We've been notified that your neutron gun is currently out of order so you will not be able to build new bots. We're convinced that you're resourceful enough at this point to come up with a solution.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhterra1.txt b/help/F/mhterra1.txt
new file mode 100644
index 00000000..0b1fb5f9
--- /dev/null
+++ b/help/F/mhterra1.txt
@@ -0,0 +1,15 @@
+\b;From Mission Control
+We've just received information that the first expedition designed a brand new weapon to be used on Terranova. It was safely stored away from possible enemy reach, inside a \l;vault\u object\safe; which can be accessed only by using four \l;keys\u object\key;. The keys are scattered on or under the planet surface.
+
+The observation satellite has located one of these keys (A) north of your present position.
+
+In compliance with Congress directives, our engineers have developed yet another strictly "defensive" bot : it is called a \l;shielder\u object\botshld; and it will offer adequate protection within a given perimeter. The data have been transmitted to your \l;research center\u object\research; along with a couple of relevant programs.
+
+As you may know, uranium ore in the subsoil is a powerful fertilizer, furthering the growth of a variety of mushrooms. Please also note that \l;titanium ore\u object\titanore; is often located at the bottom of lakes on this planet.
+
+When your mission is completed and before taking off, bring both a \l;shielder\u object\botshld; and a \l;subber\u object\botsub; aboard your spaceship.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhterra2.txt b/help/F/mhterra2.txt
new file mode 100644
index 00000000..530285a9
--- /dev/null
+++ b/help/F/mhterra2.txt
@@ -0,0 +1,9 @@
+\b;From Mission Control
+Retrieve the second \l;key\u object\key; (B). It should be located near your current position.
+
+When your mission is completed and before taking off, bring both \l;shielder\u object\botshld; and \l;subber\u object\botsub; aboard your spaceship.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhterra3.txt b/help/F/mhterra3.txt
new file mode 100644
index 00000000..f3ca9465
--- /dev/null
+++ b/help/F/mhterra3.txt
@@ -0,0 +1,9 @@
+\b;From Mission Control
+The third \l;key\u object\key; (C) is buried in a mushroom-infested area. A \l;sniffer\u object\botss; should be able to locate it and a \l;derrick\u object\derrick; should be able to extract it.
+
+When your mission is completed and before taking off, bring both \l;shielder\u object\botshld; and \l;subber\u object\botsub; aboard your spaceship.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhterra4.txt b/help/F/mhterra4.txt
new file mode 100644
index 00000000..cf29413f
--- /dev/null
+++ b/help/F/mhterra4.txt
@@ -0,0 +1,13 @@
+\b;From Mission Control
+With the help of the fourth \l;key\u object\key; (D) located nearby, you will finally gain access to the \l;vault\u object\safe;. The groundbreaking bot you'll find inside was named a "\l;phazer\u object\botphaz;".
+
+A program allowing for a collaboration between a \l;phazer\u object\botphaz; and a \l;shielder\u object\botshld; has been attached.
+
+You should soon find yourself in a position to test your new weapon. Your last mission is to dispose of the \l;Alien Queen\u object\mother;, the egglayer responsible for the growing number of insects on Terranova. The phazer might very well be the only bot capable of getting the job done.
+
+There will then be no further obstacle to the human colonization of this magnificent planet and you'll soon be able to notify Earth of the success of your mission.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhterre1.txt b/help/F/mhterre1.txt
new file mode 100644
index 00000000..7c758945
--- /dev/null
+++ b/help/F/mhterre1.txt
@@ -0,0 +1,27 @@
+\b;From the NASA Training Center
+We are pleased to inform you that you have been selected for the space exploration mission Colobot.
+
+Your psychological profile has been established as more than 98.84% favorable, and your aptitude during the extensive testing period was undeniable. The detailed results are at your disposal in the central computer under the registration number that was assigned to you.
+
+Please report to the \l;Houston Mission Control\u object\Huston; for further directives about your forthcoming mission.
+
+\b;From Houston Mission Control
+As you know, Earth is heading towards imminent disaster, due to increasing atmospheric pollution.
+
+\l;Your\u object\human; mission consists of exploring neighboring galaxies with the hopes of finding a planet that will be suitable to human needs and possibly serve as a shelter for mankind. You will be on your own for the entire mission but your spaceship will be carrying a few bots along.
+
+Eight months ago an expedition composed entirely of robots was sent across the cosmos with the same objective. It encountered a fair share of obstacles along the way, apparently landing on planets that were unsuitable for colonization, even possibly outright hostile. Very recently all communications were terminated.
+
+The reasons for the mission's failure are unclear at this date, mainly because of recurrent transmission problems. It is our hope that you will be able to use some of the data it gathered to your advantage.
+
+\b;Immediate Objective
+The Nevada desert is already bustling with activity. Bots are setting up a space station catered to your specific needs.
+
+In order to let you familiarize with your spacesuit and equipment, we have set up a few training drills.
+
+In the first drill, you need to find your survival kit that contains all the tools necessary to brave the cold of outer space. It is easy to spot since it contains both an orange and a blue tank.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mhterre2.txt b/help/F/mhterre2.txt
new file mode 100644
index 00000000..14de04fe
--- /dev/null
+++ b/help/F/mhterre2.txt
@@ -0,0 +1,14 @@
+\b;From Mission Control
+This is your second drill. \l;You\u object\human; should now familiarize yourself with the handling of basic equipment. This could turn out to be your best ally during the course of this expedition.
+
+The construction of buildings and the manufacturing of bots all require the use of \l;titanium\u object\titan;. Titanium is a mineral found in most solar systems in the universe.
+
+\b;Procedure
+1) Position yourself close to the first \l;titanium cube\u object\titan;.
+2) Build a \l;research center\u object\research; \button 163;. Note that only \l;you\u object\human; can accomplish the task of building; no bot can be substituted.
+3) With a second \l;titanium cube\u object\titan;, build a \l;bot factory\u object\factory; \button 160;.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mhterre3.txt b/help/F/mhterre3.txt
new file mode 100644
index 00000000..ca679582
--- /dev/null
+++ b/help/F/mhterre3.txt
@@ -0,0 +1,24 @@
+\b;From Mission Control
+Your \l;spaceship\u object\base; is now standing on the launching pad, ready for takeoff.
+
+The last drill left for \l;you\u object\human; to perform before embarking on your journey is to equip your spaceship with its \l;black box\u object\bbox;. The only way to reach the \l;black box\u object\bbox; is by a steep path that can only be climbed by a \l;tracked grabber\u object\botgc; which you need to build.
+
+Unfortunately your \l;bot factory\u object\factory; hasn't yet got the capacity to assemble this type of bot. You need to request your \l;research center\u object\research; to come up with a blueprint for this particular propeller.
+
+\b;Procedure
+1) Power the research center with one of the green \l;power cells\u object\power;.
+2) Click on the button \button 64;.
+3) Drop a \l;titanium cube\u object\titan; in the center of the \l;bot factory\u object\factory; and build a \l;tracked grabber\u object\botgc;.
+4) Power and radio-control the \l;tracked grabber\u object\botgc; to the top of the southwest-oriented mountain.
+5) Bring the black box back aboard your spaceship.
+6) Don't forget to take the \l;wheeled grabber\u object\botgr; along. These bots may prove very useful in the future.
+7) Climb aboard the \l;spaceship\u object\base;.
+11) Select the \l;spaceship\u object\base; and take off \button 28;.
+
+
+Please note: To work more efficiently, you can use the \l;wheeled grabber\u object\botgr;.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mhtropi1.txt b/help/F/mhtropi1.txt
new file mode 100644
index 00000000..8b4e5110
--- /dev/null
+++ b/help/F/mhtropi1.txt
@@ -0,0 +1,10 @@
+\b;From Mission Control
+The observation satellite has detected a new kind of explosive apparently designed by the previous expedition. You must locate it and bring it back to your \l;spaceship\u object\base;.
+
+\b;Procedure
+The location of the explosive is marked by a red cross on your mini map.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mhtropi2.txt b/help/F/mhtropi2.txt
new file mode 100644
index 00000000..a6f8603a
--- /dev/null
+++ b/help/F/mhtropi2.txt
@@ -0,0 +1,18 @@
+\b;From Mission Control
+It is our hope that this message will reach you.
+
+A transmission from the observation satellite a few hours ago informed us that you seemed to be wandering in a frighteningly uncoordinated manner. Your SatCom has ceased broadcasting. Your reactor seems to have suffered some sort of damage and your helmet was spotted at the bottom of a lake. If this is indeed the case, do not try to retrieve it, do not go into the water! Water on Tropica is highly toxic. You would not survive it.
+
+Get back to your ship as quickly as possible and try to transmit information about the possible causes of this disaster. The satellite's information remains undecipherable. We have been speculating about an X-factor ever since the first expedition got lost. It appears you have just encountered it.
+
+There is nothing we can really do to guide you but don't forget that you're following in the footsteps of a previous expedition. If what happened to you is what happened to them, chances are they may have left some clues along the way back to their own spaceship which landed in roughly the same area as yours. Use those clues.
+
+You may also want to consider planting flags. They indicate the direction of the wind so you can use them to orient yourself.
+
+This is all we can say for now...
+Good Luck...
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mhtropi3.txt b/help/F/mhtropi3.txt
new file mode 100644
index 00000000..02ae2348
--- /dev/null
+++ b/help/F/mhtropi3.txt
@@ -0,0 +1,16 @@
+\b;From Mission Control
+Terminate all hostile life-form.
+Perform the necessary \l;research program\u object\research; in order to develop an offensive weapon system.
+
+The satellite has detected an energy source, on a spot marked by the previous expedition with a blue flag (blue cross on the mini-map).
+
+Do not forget to take a look at the satellite report \button 186; before you venture any further in a mission; we suspect that you have not always done this.
+
+We have improved the recharge program. Please refer to the page \button 53;.
+
+A note of warning: bots cannot be submerged. If in doubt, test the water yourself if you plan to radio-control a non-winged bot across - water shouldn't be deeper than knee-level.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhtropi4.txt b/help/F/mhtropi4.txt
new file mode 100644
index 00000000..657e0da1
--- /dev/null
+++ b/help/F/mhtropi4.txt
@@ -0,0 +1,13 @@
+\b;From Mission Control
+This is another training course set up by your predecessors and intended this time to test and train the firing capacity of \l;winged bots\u object\botfj;. Use it to familiarize yourself with the two simultaneous actions of shooting while flying.
+
+Fly quickly through all targets and shoot all 10 explosive devices scattered along the way. Try to complete the drill without touching down. Watch your reactor though: if it overheats, just settle the bot and let it cool off.
+
+Use one hand on the keyboard to pilot the bot, and the other hand on the mouse to aim and to shoot (left button).
+
+It may be useful to come back to these drills once in a while if you wish to improve your reflexes further.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhtropi5.txt b/help/F/mhtropi5.txt
new file mode 100644
index 00000000..d8f30ee6
--- /dev/null
+++ b/help/F/mhtropi5.txt
@@ -0,0 +1,9 @@
+\b;From Mission Control
+Locate and retrieve another \l;black box\u object\bbox; from the previous expedition.
+
+The observation satellite seems to have spotted it underwater. Water is harmless to you as long as you wear your helmet but keep in mind that you can't carry objects underwater. A \l;subber\u object\botsub; may come in handy.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhvolca1.txt b/help/F/mhvolca1.txt
new file mode 100644
index 00000000..0344a8ab
--- /dev/null
+++ b/help/F/mhvolca1.txt
@@ -0,0 +1,13 @@
+\b;From Mission Control
+You need to retrieve an \l;explosive device\u object\tnt; that has been spotted in a deep valley next to a lake of boiling lava.
+
+Because of the high temperatures, reactors no longer function, i.e. flying is impossible. It is a long way there and you should equip your bots with \l;nuclear power cells\u object\atomic;. Nuclear power cells are manufactured from \l;uranium ore\u object\uranore;.
+
+A more efficient program for the gathering of raw materials is attached to this message.
+
+A note of warning: the explosive device is extremely volatile. Use extreme caution.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhvolca2.txt b/help/F/mhvolca2.txt
new file mode 100644
index 00000000..41dccc38
--- /dev/null
+++ b/help/F/mhvolca2.txt
@@ -0,0 +1,17 @@
+\b;From Mission Control
+The previous expedition provided us with a piece of information about some \l;organic matter\u object\bullet;, which seems to be produced by the \l;ants\u object\ant;, and which opened startling new possibilities. It apparently allows the creation of a new type of mutant bot with enhanced performance through the use of insect parts.
+
+Your mission is to experiment with the first practical application of this "green gold". Build a \l;legged grabber bot\u object\botgs;, load it on the spaceship and take off.
+
+\b;Procedure
+Take a sample of organic matter from a nest of giant ants. The analysis of it will be performed by an \l;autolab\u object\labo;, which will also perform the necessary research to allow a practical application.
+
+In order to improve your defense capacity, we have transmitted a program to your \l;grabber bots\u object\botgr; that takes care of recharging the power cell of a \l;defense tower\u object\tower; (see \button 53; ).
+
+\b;Note
+The temperature has dropped significantly, it should therefore be possible to fly.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhvolca3.txt b/help/F/mhvolca3.txt
new file mode 100644
index 00000000..ba33482c
--- /dev/null
+++ b/help/F/mhvolca3.txt
@@ -0,0 +1,7 @@
+\b;From Mission Control
+This planet is obviously unsuited to a long-lasting colonization. Retrieve the \l;black box\u object\bbox; from the previous expedition then take off.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhvolca4.txt b/help/F/mhvolca4.txt
new file mode 100644
index 00000000..2a3876a0
--- /dev/null
+++ b/help/F/mhvolca4.txt
@@ -0,0 +1,9 @@
+\b;An urgent notification from Mission Control
+As you were about to take off, we received from the satellite the following piece of information: a bot of a type yet unknown has been spotted on Volcano. Try to bring it back onto your spaceship for further study.
+
+Our engineers on Earth have very recently come up with a formula that should allow reactors to function properly, at least for a short while, despite the high temperatures. The data have been transmitted to you.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhvolca5.txt b/help/F/mhvolca5.txt
new file mode 100644
index 00000000..a83bb143
--- /dev/null
+++ b/help/F/mhvolca5.txt
@@ -0,0 +1,11 @@
+\b;From Mission Control
+Congratulations on a fine job as usual.
+
+This new weapon appears to be yet another practical application of what we've come to refer to as "green gold", the \l;organic matter\u object\bullet; produced by the insects. We've named this bot the \l;orga shooter\u object\botoj; or bot equipped with an orgaball cannon.
+
+It will most certainly come in handy as you make your way back to your \l;spaceship\u object\base;.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/mhvolca6.txt b/help/F/mhvolca6.txt
new file mode 100644
index 00000000..35225cc4
--- /dev/null
+++ b/help/F/mhvolca6.txt
@@ -0,0 +1,7 @@
+\b;From Mission Control
+You need to repel a last minute ant attack before taking off.
+
+\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
+
+\t;See also
+\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/F/micent1.txt b/help/F/micent1.txt
new file mode 100644
index 00000000..57f72f1d
--- /dev/null
+++ b/help/F/micent1.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Centaury.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 23.4C
+\tab;Atmosphere: oxygen, nitrogen, ammonia
+\tab;Wind: 1.2 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: some
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\tab;Detected: reusable derelicts
+\n;
diff --git a/help/F/micent2.txt b/help/F/micent2.txt
new file mode 100644
index 00000000..46c3e658
--- /dev/null
+++ b/help/F/micent2.txt
@@ -0,0 +1,15 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Centaury.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 25.4C
+\tab;Atmosphere: oxygen, nitrogen, ammonia
+\tab;Wind: 1.2 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+\n;
diff --git a/help/F/micent3.txt b/help/F/micent3.txt
new file mode 100644
index 00000000..cff00288
--- /dev/null
+++ b/help/F/micent3.txt
@@ -0,0 +1,22 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Centaury.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 25.4C
+\tab;Atmosphere: oxygen, nitrogen, ammonia
+\tab;Wind: 0.7 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: some
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\tab;Detected: spiders
+\tab; - Danger: not immediate
+\tab;Detected: reusable derelicts
+\n;
diff --git a/help/F/micent4.txt b/help/F/micent4.txt
new file mode 100644
index 00000000..d76f7316
--- /dev/null
+++ b/help/F/micent4.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Centaury.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 21.3C
+\tab;Atmosphere: oxygen, nitrogen, ammonia
+\tab;Wind: 1.9 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\tab;Detected: derelicts of no particular use
+\n;
diff --git a/help/F/micent5.txt b/help/F/micent5.txt
new file mode 100644
index 00000000..c979dbb9
--- /dev/null
+++ b/help/F/micent5.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Centaury.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 21.3C
+\tab;Atmosphere: oxygen, nitrogen, ammonia
+\tab;Wind: 1.9 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: immediate
+\n;
diff --git a/help/F/micrys1.txt b/help/F/micrys1.txt
new file mode 100644
index 00000000..9458bf1d
--- /dev/null
+++ b/help/F/micrys1.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Crystalium.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 5.4C
+\tab;Atmosphere: nitrogen
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: data not available
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: unidentified organisms
+\tab; - Danger: ?
+\n;
diff --git a/help/F/micrys2.txt b/help/F/micrys2.txt
new file mode 100644
index 00000000..2a4c1d8a
--- /dev/null
+++ b/help/F/micrys2.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Crystalium.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 3.2C
+\tab;Atmosphere: nitrogen
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: isolated (close to the spaceship)
+\tab;Titanium ore: scattered
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: worms
+\tab; - Danger: no
+\n;
diff --git a/help/F/micrys3.txt b/help/F/micrys3.txt
new file mode 100644
index 00000000..6e76e8a8
--- /dev/null
+++ b/help/F/micrys3.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Crystalium.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 4.3C
+\tab;Atmosphere: nitrogen
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\tab;Detected: unknown organisms
+\tab; - Danger: ?
+\n;
diff --git a/help/F/micrys4.txt b/help/F/micrys4.txt
new file mode 100644
index 00000000..2873cb70
--- /dev/null
+++ b/help/F/micrys4.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Crystalium.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 1.2C
+\tab;Atmosphere: nitrogen
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: electromagnetic smog
+\tab;Detected: reusable derelicts
+\n;
diff --git a/help/F/milune1.txt b/help/F/milune1.txt
new file mode 100644
index 00000000..775c0506
--- /dev/null
+++ b/help/F/milune1.txt
@@ -0,0 +1,18 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of the Moon.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: -53.1C
+\tab;Atmosphere: none
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Terrain in places too uneven for wheeled bots.
+\n;
diff --git a/help/F/milune2.txt b/help/F/milune2.txt
new file mode 100644
index 00000000..dd7ea770
--- /dev/null
+++ b/help/F/milune2.txt
@@ -0,0 +1,15 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of the Moon.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: -51.0C
+\tab;Atmosphere: none
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+\n;
diff --git a/help/F/milune3.txt b/help/F/milune3.txt
new file mode 100644
index 00000000..d50b3109
--- /dev/null
+++ b/help/F/milune3.txt
@@ -0,0 +1,15 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of the Moon.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: -58.9C
+\tab;Atmosphere: none
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+\n;
diff --git a/help/F/milune4.txt b/help/F/milune4.txt
new file mode 100644
index 00000000..a57ce4b3
--- /dev/null
+++ b/help/F/milune4.txt
@@ -0,0 +1,15 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of the Moon.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: -38.2C
+\tab;Atmosphere: none
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: everywhere
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+\n;
diff --git a/help/F/miorph1.txt b/help/F/miorph1.txt
new file mode 100644
index 00000000..6414f2d0
--- /dev/null
+++ b/help/F/miorph1.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Orpheon.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: -72.8C
+\tab;Atmosphere: none
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: some (blue flag)
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\tab;Detected: fierce electromagnetic storms
+\n;
diff --git a/help/F/miorph2.txt b/help/F/miorph2.txt
new file mode 100644
index 00000000..5db18a70
--- /dev/null
+++ b/help/F/miorph2.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Orpheon.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: -64.7C
+\tab;Atmosphere: none
+\tab;Wind: 0.0 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\tab;Detected: fierce electromagnetic storms
+\n;
diff --git a/help/F/misaari1.txt b/help/F/misaari1.txt
new file mode 100644
index 00000000..957227a7
--- /dev/null
+++ b/help/F/misaari1.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Saari.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 41.3C
+\tab;Atmosphere: CO2, oxygen, nitrogen
+\tab;Wind: 2.3 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: some (mountain summit)
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: everywhere
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: reusable derelicts
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\n;
diff --git a/help/F/misaari2.txt b/help/F/misaari2.txt
new file mode 100644
index 00000000..6eddf002
--- /dev/null
+++ b/help/F/misaari2.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Saari.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 38.4C
+\tab;Atmosphere: CO2, oxygen, nitrogen
+\tab;Wind: 1.4 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: everywhere
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants approaching
+\tab; - Danger: yes, immediate
+\n;
diff --git a/help/F/misaari3.txt b/help/F/misaari3.txt
new file mode 100644
index 00000000..8822ca92
--- /dev/null
+++ b/help/F/misaari3.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Saari.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 44.3C
+\tab;Atmosphere: CO2, oxygen, nitrogen
+\tab;Wind: 2.3 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: reusable derelicts
+\tab;Detected: giant ants
+\tab; - Danger: ?
+\n;
diff --git a/help/F/miterra1.txt b/help/F/miterra1.txt
new file mode 100644
index 00000000..683cffe2
--- /dev/null
+++ b/help/F/miterra1.txt
@@ -0,0 +1,22 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Terranova.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 24.8C
+\tab;Atmosphere: oxygen
+\tab;Wind: 0.7 mps
+\tab;Titanium ore: underwater
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: at some places
+\tab;Titanium ore: none
+\tab;Uranium ore: some
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: immediate
+\tab;Detected: giant wasps
+\tab; - Danger: not immediate
+\tab;Detected: reusable derelicts
+\n;
diff --git a/help/F/miterra2.txt b/help/F/miterra2.txt
new file mode 100644
index 00000000..ae7e7705
--- /dev/null
+++ b/help/F/miterra2.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Terranova.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 24.3C
+\tab;Atmosphere: oxygen
+\tab;Wind: 0.8 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: immediate
+\n;
diff --git a/help/F/miterra3.txt b/help/F/miterra3.txt
new file mode 100644
index 00000000..73697df5
--- /dev/null
+++ b/help/F/miterra3.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Terranova.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 26.1C
+\tab;Atmosphere: oxygen
+\tab;Wind: 0.4 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: some
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: immediate
+\tab;Detected: giant wasps
+\tab; - Danger: immediate
+\n;
diff --git a/help/F/miterra4.txt b/help/F/miterra4.txt
new file mode 100644
index 00000000..779d59c0
--- /dev/null
+++ b/help/F/miterra4.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Terranova.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 23.7C
+\tab;Atmosphere: oxygen
+\tab;Wind: 0.5 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: some
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: in some places (spaceship)
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: immediate
+\tab;Detected: giant egglayer
+\tab; - Danger: ?
+\n;
diff --git a/help/F/mitropi1.txt b/help/F/mitropi1.txt
new file mode 100644
index 00000000..abb2258b
--- /dev/null
+++ b/help/F/mitropi1.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Tropica.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 32.4C
+\tab;Atmosphere: helium, oxygen
+\tab;Wind: 1.2 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: explosive
+\tab; - Type: unknown
+\tab;Detected: unidentified organisms
+\tab; - Danger: ?
+\n;
diff --git a/help/F/mitropi3.txt b/help/F/mitropi3.txt
new file mode 100644
index 00000000..eed21844
--- /dev/null
+++ b/help/F/mitropi3.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Tropica.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 29.6C
+\tab;Atmosphere: helium, oxygen
+\tab;Wind: 1.5 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: isolated (blue flag)
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\tab;Detected: reusable derelicts
+\n;
diff --git a/help/F/mitropi4.txt b/help/F/mitropi4.txt
new file mode 100644
index 00000000..8717928b
--- /dev/null
+++ b/help/F/mitropi4.txt
@@ -0,0 +1,15 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Tropica.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 32.2C
+\tab;Atmosphere: helium, oxygen
+\tab;Wind: 0.7 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+\n;
diff --git a/help/F/mitropi5.txt b/help/F/mitropi5.txt
new file mode 100644
index 00000000..0f9cce87
--- /dev/null
+++ b/help/F/mitropi5.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Tropica.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 29.4C
+\tab;Atmosphere: helium, oxygen
+\tab;Wind: 0.3 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: titanium ore
+\tab; - Requires: converter
+\tab;Detected: scattered derelicts
+\tab;Detected: black box (underwater)
+\n;
diff --git a/help/F/mivolca1.txt b/help/F/mivolca1.txt
new file mode 100644
index 00000000..8c071e9b
--- /dev/null
+++ b/help/F/mivolca1.txt
@@ -0,0 +1,20 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Volcano.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 84.6C
+\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wind: 2.2 mps
+\tab;Titanium ore: everywhere
+\tab;Uranium ore: some
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: everywhere
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: reusable derelicts
+\tab;Detected: unknown organisms
+\tab; - Danger: ?
+\n;
diff --git a/help/F/mivolca2.txt b/help/F/mivolca2.txt
new file mode 100644
index 00000000..eae66bbb
--- /dev/null
+++ b/help/F/mivolca2.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Volcano.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 53.1C
+\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wind: 0.3 mps
+\tab;Titanium ore: some
+\tab;Uranium ore: little
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: everywhere
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: yes, not immediate
+\tab;Detected: unknown flying organisms
+\tab; - Danger: yes, immediate
+\n;
diff --git a/help/F/mivolca3.txt b/help/F/mivolca3.txt
new file mode 100644
index 00000000..0d314f33
--- /dev/null
+++ b/help/F/mivolca3.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Volcano.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 83.5C
+\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wind: 3.4 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: everywhere
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\n;
diff --git a/help/F/mivolca4.txt b/help/F/mivolca4.txt
new file mode 100644
index 00000000..46046659
--- /dev/null
+++ b/help/F/mivolca4.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Volcano.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 96.7C
+\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wind: 2.8 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: bot
+\tab; - Type: unknown
+\tab;Detected: giant ants
+\tab; - Danger: not immediate
+\n;
diff --git a/help/F/mivolca5.txt b/help/F/mivolca5.txt
new file mode 100644
index 00000000..1a8aceeb
--- /dev/null
+++ b/help/F/mivolca5.txt
@@ -0,0 +1,21 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Volcano.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 96.6C
+\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wind: 2.7 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: immediate
+\tab;Detected: giant spiders
+\tab; - Danger: not immediate
+\n;
diff --git a/help/F/mivolca6.txt b/help/F/mivolca6.txt
new file mode 100644
index 00000000..19e3556b
--- /dev/null
+++ b/help/F/mivolca6.txt
@@ -0,0 +1,19 @@
+\b;Satellite Report
+Currently in a geo-stationary orbit of Volcano.
+\c;
+\s;-> SURFACE\c;
+\tab;Temperature: 96.6C
+\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wind: 2.7 mps
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> SUBSOIL\c;
+\tab;Energy source: none
+\tab;Titanium ore: none
+\tab;Uranium ore: none
+
+\s;-> ADDITIONAL INFORMATION\c;
+\tab;Detected: giant ants
+\tab; - Danger: immediate
+\n;
diff --git a/help/F/mlcent1.txt b/help/F/mlcent1.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/F/mlcent1.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/F/mlcent2.txt b/help/F/mlcent2.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/F/mlcent2.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/F/mlcent3.txt b/help/F/mlcent3.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/F/mlcent3.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/F/mlcent4.txt b/help/F/mlcent4.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/F/mlcent4.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/F/mlcent5.txt b/help/F/mlcent5.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/F/mlcent5.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/F/mlcrys1.txt b/help/F/mlcrys1.txt
new file mode 100644
index 00000000..99fa7fde
--- /dev/null
+++ b/help/F/mlcrys1.txt
@@ -0,0 +1,29 @@
+\b;Programs dispatched by Houston
+Below is one of the programs that has been developed by our engineers.
+It instructs a \l;grabber\u object\botgr; to retrieve the nearest chunk of \l;titanium ore\u object\titanore; and place it on the \l;converter\u object\convert;.
+
+In order to execute this program, select the program \c;CollectTitanium1\n; 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;.
+\c;
+\s;extern void object::CollectTitanium1()
+\s;{
+\s; // 1) Variable definition.
+\s; \l;object\u cbot\type; item; // info. about objects
+\s;
+\s; // 2) Go to the titanium ore and grab it.
+\s; item = \l;radar\u cbot\radar;(\l;TitaniumOre\u cbot\category;);// look for titanium ore
+\s; \l;goto\u cbot\goto;(item.position); // go to the position
+\s; \l;grab\u cbot\grab;(); // grab the titanium
+\s;
+\s; // 3) Go to the converter and drop it.
+\s; item = \l;radar\u cbot\radar;(\l;Converter\u cbot\category;); // look for converter
+\s; \l;goto\u cbot\goto;(item.position); // go to the position
+\s; \l;drop\u cbot\drop;(); // drop the titanium
+\s; \l;move\u cbot\move;(-2.5); // step back 2.5 m
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/F/mlcrys2.txt b/help/F/mlcrys2.txt
new file mode 100644
index 00000000..5e1a7ec3
--- /dev/null
+++ b/help/F/mlcrys2.txt
@@ -0,0 +1,38 @@
+\b;Programs dispatched by Houston
+Below is one of the programs that has been developed by our engineers.
+An upgrade on the previous program: the \l;grabber\u object\botgr;, on its way back from the converter, makes a stop, if necessary, at the \l;power station\u object\station; to recharge its power cell.
+
+This program also works on \l;winged grabbers\u object\botgj;, if the \l;derrick\u object\derrick; is on another island than the \l;converter\u object\convert;.
+\c;
+\s;extern void object::CollectTitanium2()
+\s;{
+\s; // 1) Variable definition.
+\s; \l;object\u cbot\type; item; // info. about objects
+\s;
+\s; // 2) Go to the titanium ore and grab it.
+\s; item = \l;radar\u cbot\radar;(\l;TitaniumOre\u cbot\category;);// look for titanium ore
+\s; \l;goto\u cbot\goto;(item.position); // go to the position
+\s; \l;grab\u cbot\grab;(); // grab the titanium
+\s;
+\s; // 3) Go to the converter and drop it.
+\s; item = \l;radar\u cbot\radar;(\l;Converter\u cbot\category;); // look for converter
+\s; \l;goto\u cbot\goto;(item.position); // go to the position
+\s; \l;drop\u cbot\drop;(); // drop the titanium
+\s; \l;move\u cbot\move;(-2.5); // step back 2.5 m
+\s;
+\s; // 4) If power cell half empty, recharges.
+\s; if ( energyCell.energyLevel < 0.5 )
+\s; { // if so:
+\s; item = \l;radar\u cbot\radar;(\l;PowerStation\u cbot\category;); // look for station
+\s; \l;goto\u cbot\goto;(item.position); // go there
+\s; \l;wait\u cbot\wait;(5); // wait
+\s; }
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/F/mlcrys3.txt b/help/F/mlcrys3.txt
new file mode 100644
index 00000000..1357500d
--- /dev/null
+++ b/help/F/mlcrys3.txt
@@ -0,0 +1,11 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/F/mlcrys4.txt b/help/F/mlcrys4.txt
new file mode 100644
index 00000000..1357500d
--- /dev/null
+++ b/help/F/mlcrys4.txt
@@ -0,0 +1,11 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/F/mllune1.txt b/help/F/mllune1.txt
new file mode 100644
index 00000000..1850e907
--- /dev/null
+++ b/help/F/mllune1.txt
@@ -0,0 +1,17 @@
+\b;Programs dispatched by Houston
+Following is a program that has been developed by our engineers. It allows you to switch \l;power cells\u object\power;. A charged cell needs to be placed on the ground in front of the bot.
+
+In order to execute this program, select the program \c;SwitchCell1\n; 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;.
+\c;
+\s;extern void object::SwitchCell1()
+\s;{
+\s; \l;grab\u cbot\grab;(InFront); // take the new cell in front
+\s; \l;drop\u cbot\drop;(Behind); // and drop it behind
+\s;
+\s; \l;grab\u cbot\grab;(EnergyCell); // take the cell from the bot
+\s; \l;drop\u cbot\drop;(InFront); // and drop it in front
+\s;
+\s; \l;grab\u cbot\grab;(Behind); // take the new cell
+\s; \l;drop\u cbot\drop;(EnergyCell); // and drop it on the bot
+\s;}
+\n;
diff --git a/help/F/mllune2.txt b/help/F/mllune2.txt
new file mode 100644
index 00000000..15fe0f0f
--- /dev/null
+++ b/help/F/mllune2.txt
@@ -0,0 +1,7 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/F/mllune3.txt b/help/F/mllune3.txt
new file mode 100644
index 00000000..5e7e6787
--- /dev/null
+++ b/help/F/mllune3.txt
@@ -0,0 +1,7 @@
+\b;Program(s) dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/F/mllune4.txt b/help/F/mllune4.txt
new file mode 100644
index 00000000..fbc672cd
--- /dev/null
+++ b/help/F/mllune4.txt
@@ -0,0 +1,23 @@
+\b;Programs dispatched by Houston
+Below is a program that has been developed by our engineers. It allows you to recharge the \l;power cell\u object\power; of a bot: it goes to the closest \l;power station\u object\station;, waits 5 seconds, and comes back to the initial position.
+
+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 \c;//\n; are not part of the program, but are comments that help you to understand the program.
+\c;
+\s;extern void object::Recharge1()
+\s;{
+\s; \l;point\u cbot\type; start; // variable for initial pos.
+\s; \l;object\u cbot\type; item; // info. about power station
+\s;
+\s; start = position; // store initial position
+\s;
+\s; item = \l;radar\u cbot\radar;(\l;PowerStation\u cbot\category;); // look for station
+\s; \l;goto\u cbot\goto;(item.position); // go to the power station
+\s; \l;wait\u cbot\wait;(5); // wait 5 seconds
+\s;
+\s; \l;goto\u cbot\goto;(start); // go back to initial pos.
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/F/mlnull.txt b/help/F/mlnull.txt
new file mode 100644
index 00000000..9fe96daa
--- /dev/null
+++ b/help/F/mlnull.txt
@@ -0,0 +1,3 @@
+\b;Program(s) dispatched by Houston
+No program was transmitted.
+If you feel like developing one that can be of use to the completion of this mission, be our guest but you are on your own.
diff --git a/help/F/mlorph1.txt b/help/F/mlorph1.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/F/mlorph1.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/F/mlorph2.txt b/help/F/mlorph2.txt
new file mode 100644
index 00000000..f856d805
--- /dev/null
+++ b/help/F/mlorph2.txt
@@ -0,0 +1,14 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/F/mlsaari1.txt b/help/F/mlsaari1.txt
new file mode 100644
index 00000000..1357500d
--- /dev/null
+++ b/help/F/mlsaari1.txt
@@ -0,0 +1,11 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/F/mlsaari2.txt b/help/F/mlsaari2.txt
new file mode 100644
index 00000000..805dca34
--- /dev/null
+++ b/help/F/mlsaari2.txt
@@ -0,0 +1,31 @@
+\b;Programs dispatched by Houston
+Execute the program \c;KillAnt1\n; immediately on your \l;wheeled shooter\u object\botfr;, it will protect your west flank. Meantime you can elaborate your defense strategy.
+\c;
+\s;extern void object::KillAnt1()
+\s;{
+\s; \l;object\u cbot\type; item; // info. about object
+\s;
+\s; \l;goto\u cbot\goto;(-30, 0); // go west
+\s; \l;aim\u cbot\aim;(0); // aim straight
+\s;
+\s; \l;while\u cbot\while; ( true ) // repeat forever:
+\s; {
+\s; item = \l;radar\u cbot\radar;(\l;AlienAnt\u cbot\category;, 0, 360, 0, 40);
+\s; \l;if\u cbot\if; ( item != null ) // ant detected ?
+\s; {
+\s; \l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));
+\s; \l;fire\u cbot\fire;(0.5); // shoot 0.5 s
+\s; }
+\s; \l;wait\u cbot\wait;(1); // wait 1 second
+\s; }
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/F/mlsaari3.txt b/help/F/mlsaari3.txt
new file mode 100644
index 00000000..13f3cec8
--- /dev/null
+++ b/help/F/mlsaari3.txt
@@ -0,0 +1,12 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/F/mlterra1.txt b/help/F/mlterra1.txt
new file mode 100644
index 00000000..5ac691d0
--- /dev/null
+++ b/help/F/mlterra1.txt
@@ -0,0 +1,30 @@
+\b;Programs dispatched by Houston
+According to the data transmitted by the satellite, our engineers have developed two programs. The first one guides the \l;shielder bot\u object\botshld; through the narrow valley north close to the place where the key has been located. You can follow it without fearing any attack:
+\c;
+\s;extern void object::Outward()
+\s;{
+\s; \l;shield\u cbot\shield;(1,15); // activate the shield
+\s; \l;goto\u cbot\goto;(6,160); // go close to the key
+\s; \l;shield\u cbot\shield;(0,15); // deactivate the shield
+\s;}
+\n;
+The second program guides the \l;shielder bot\u object\botshld; back to the \l;spaceship\u object\base;:
+\c;
+\s;extern void object::Return()
+\s;{
+\s; \l;shield\u cbot\shield;(1,15); // activate the shield
+\s; \l;goto\u cbot\goto;(8,60); // go to the spaceship
+\s; \l;shield\u cbot\shield;(0,15); // deactivate the shield
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/F/mlterra2.txt b/help/F/mlterra2.txt
new file mode 100644
index 00000000..f856d805
--- /dev/null
+++ b/help/F/mlterra2.txt
@@ -0,0 +1,14 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/F/mlterra3.txt b/help/F/mlterra3.txt
new file mode 100644
index 00000000..f856d805
--- /dev/null
+++ b/help/F/mlterra3.txt
@@ -0,0 +1,14 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/F/mlterra4.txt b/help/F/mlterra4.txt
new file mode 100644
index 00000000..73e1d1ab
--- /dev/null
+++ b/help/F/mlterra4.txt
@@ -0,0 +1,50 @@
+\b;Programs dispatched by Houston
+Below is a program that has been developed by our engineers.
+
+It instructs the \l;shielder\u object\botshld; to follow and protect the \l;phazer\u object\botphaz;.
+\c;
+\s;extern void object::FollowPhazer()
+\s;{
+\s; \l;object\u cbot\type; item; // info. about phazer
+\s; \l;point\u cbot\type; dest; // position where to go
+\s; \l;float\u cbot\type; dist; // distance to phazer
+\s;
+\s; item = \l;radar\u cbot\radar;(\l;PhazerShooter\u cbot\category;);
+\s; \l;if\u cbot\if; ( item == null )
+\s; {
+\s; \l;message\u cbot\message;("No phazer found");
+\s; \l;return\u cbot\return;; // stop the program
+\s; }
+\s; \l;shield\u cbot\shield;(1, 25); // activate the shield
+\s;
+\s; \l;while\u cbot\while; ( true ) // repeat forever
+\s; {
+\s; item = \l;radar\u cbot\radar;(PhazerShooter);// look for phazer
+\s; \l;if\u cbot\if; ( item == null ) break;
+\s;
+\s; dist = \l;distance\u cbot\dist;(item.position, position);
+\s; \l;if\u cbot\if; ( dist < 5 )
+\s; { // if closer than 5 m:
+\s; \l;wait\u cbot\wait;(1); // wait
+\s; }
+\s; \l;else\u cbot\if; // otherwise:
+\s; { // Calculate a position 5 m before the phazer
+\s; dest.x = (item.position.x-position.x)*((dist-5)/dist)+position.x;
+\s; dest.y = (item.position.y-position.y)*((dist-5)/dist)+position.y;
+\s; dest.z = (item.position.z-position.z)*((dist-5)/dist)+position.z;
+\s; \l;goto\u cbot\goto;(dest, 0, 1, 1); // and go there
+\s; }
+\s; }
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/F/mltropi1.txt b/help/F/mltropi1.txt
new file mode 100644
index 00000000..6d775e52
--- /dev/null
+++ b/help/F/mltropi1.txt
@@ -0,0 +1,8 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/F/mltropi3.txt b/help/F/mltropi3.txt
new file mode 100644
index 00000000..40d4b187
--- /dev/null
+++ b/help/F/mltropi3.txt
@@ -0,0 +1,27 @@
+\b;Programs dispatched by Houston
+We have improved the recharge program. When it arrives at the \l;power station\u object\station;, the bot does not wait exactly 5 seconds, but only until the \l;power cell\u object\power; is fully charged. After the bot is back at the initial position, it displays a message on the screen.
+\c;
+\s;extern void object::Recharge2()
+\s;{
+\s; \l;point\u cbot\type; start; // variable for initial pos.
+\s; \l;object\u cbot\type; item; // info. about power station
+\s;
+\s; start = position; // store initial position
+\s;
+\s; item = \l;radar\u cbot\radar;(\l;PowerStation\u cbot\category;); // look for station
+\s; \l;goto\u cbot\goto;(item.position); // go to the power station
+\s;
+\s; \l;while\u cbot\while; ( \l;energyCell.energyLevel\u cbot\object; < 1 )
+\s; {
+\s; \l;wait\u cbot\wait;(1); // wait until recharged
+\s; }
+\s;
+\s; \l;goto\u cbot\goto;(start); // go back to initial pos.
+\s; \l;message\u cbot\message;("Recharge completed");
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;SwitchCell1\u mllune1;\n;
+o \c;\l;Recharge1\u mllune4;\n;
diff --git a/help/F/mltropi4.txt b/help/F/mltropi4.txt
new file mode 100644
index 00000000..3b138af2
--- /dev/null
+++ b/help/F/mltropi4.txt
@@ -0,0 +1,9 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/F/mltropi5.txt b/help/F/mltropi5.txt
new file mode 100644
index 00000000..3b138af2
--- /dev/null
+++ b/help/F/mltropi5.txt
@@ -0,0 +1,9 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/F/mlvolca1.txt b/help/F/mlvolca1.txt
new file mode 100644
index 00000000..f1e12cea
--- /dev/null
+++ b/help/F/mlvolca1.txt
@@ -0,0 +1,61 @@
+\b;Programs dispatched by Houston
+As you will need lots of titanium for this mission, we have made the program \c;CollectTitanium\n; 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 \l;power station\u object\station; if necessary.
+\c;
+\s;extern void object::CollectTitanium3()
+\s;{
+\s; // 1) Variable definition.
+\s; \l;object\u cbot\type; item; // info. about objects
+\s;
+\s; \l;while\u cbot\while; (true) // repeat forever
+\s; {
+\s;
+\s; // 2) Go to the titanium ore and grab it.
+\s; item = \l;radar\u cbot\radar;(\l;TitaniumOre\u cbot\category;);// look for titanium
+\s; \l;goto\u cbot\goto;(item.position); // go to the position
+\s; \l;grab\u cbot\grab;(); // grab the titanium
+\s;
+\s; // 3) Go to the converter and drop it.
+\s; item = \l;radar\u cbot\radar;(\l;Converter\u cbot\category;); // look for converter
+\s; \l;goto\u cbot\goto;(item.position); // go to the position
+\s; \l;drop\u cbot\drop;(); // drop the titanium
+\s; \l;move\u cbot\move;(-2.5); // step back 2.5 m
+\s;
+\s; // 4) Wait until titanium converted and grab it
+\s; \l;do\u cbot\do;
+\s; {
+\s; \l;wait\u cbot\wait;(1); // wait for cube
+\s; item = \l;radar\u cbot\radar;(\l;Titanium\u cbot\category;, 0, 45, 0, 5);
+\s; }
+\s; \l;while\u cbot\while; ( item == null );
+\s; \l;goto\u cbot\goto;(item.position);
+\s; \l;grab\u cbot\grab;(); // grab it
+\s;
+\s; // 5) Drop on a free space
+\s; \l;goto\u cbot\goto;(\l;space\u cbot\space;(position)); // go to free space
+\s; \l;drop\u cbot\drop;(); // drop titanium
+\s;
+\s; // 6) If power cell half empty, recharges.
+\s; \l;if\u cbot\if; ( energyCell.energyLevel < 0.5 )
+\s; { // if so:
+\s; item = \l;radar\u cbot\radar;(\l;PowerStation\u cbot\category;);
+\s; \l;if\u cbot\if; ( item != null ) // station found ?
+\s; {
+\s; \l;goto\u cbot\goto;(item.position); // go there
+\s; \l;while\u cbot\while; ( energyCell.energyLevel < 1 )
+\s; { // until recharged:
+\s; \l;wait\u cbot\wait;(1); // wait
+\s; }
+\s; }
+\s; }
+\s; }
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/F/mlvolca2.txt b/help/F/mlvolca2.txt
new file mode 100644
index 00000000..ad0537da
--- /dev/null
+++ b/help/F/mlvolca2.txt
@@ -0,0 +1,53 @@
+\b;Programs dispatched by Houston
+We have developed a program that takes care of recharging the power cell of a \l;defense tower\u object\tower;:
+
+1) Go to a \l;defense tower\u object\tower;.
+2) Wait until the \l;power cell\u object\power; is 80% empty.
+3) Grab the \l;power cell\u object\power; and recharge it on a \l;power station\u object\station;.
+4) Put it back on the \l;defense tower\u object\tower;.
+
+Build the \l;power station\u object\station; 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.
+\c;
+\s;extern void object::ServiceTower1()
+\s;{
+\s; \l;object\u cbot\object; tower; // info. about tower
+\s; \l;object\u cbot\object; station; // info. about station
+\s;
+\s; // 1) go to the defense tower
+\s; tower = \l;radar\u cbot\radar;(DefenseTower); // look for tower
+\s; \l;goto\u cbot\goto;(tower.position); // go there
+\s;
+\s; \l;while\u cbot\while; ( true ) // repeat forever
+\s; {
+\s; // 2) wait until power cell is empty
+\s; \l;while\u cbot\while; ( tower.energyCell.energyLevel > 0.2 )
+\s; {
+\s; \l;wait\u cbot\wait;(2);
+\s; }
+\s; \l;grab\u cbot\grab;(); // grab the power cell
+\s;
+\s; // 3) go to the power station to recharge
+\s; station = \l;radar\u cbot\radar;(PowerStation);
+\s; \l;goto\u cbot\goto;(station.position); // go there
+\s; \l;while\u cbot\while; ( load.energyLevel < 1 )
+\s; {
+\s; \l;wait\u cbot\wait;(1); // wait until recharged
+\s; }
+\s;
+\s; // 4) go back to defense tower
+\s; \l;goto\u cbot\goto;(tower.position); // go to tower
+\s; \l;drop\u cbot\drop;(); // drop the power cell
+\s; }
+\s;}
+\n;
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/F/mlvolca3.txt b/help/F/mlvolca3.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/F/mlvolca3.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/F/mlvolca4.txt b/help/F/mlvolca4.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/F/mlvolca4.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/F/mlvolca5.txt b/help/F/mlvolca5.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/F/mlvolca5.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/F/mlvolca6.txt b/help/F/mlvolca6.txt
new file mode 100644
index 00000000..01b6c330
--- /dev/null
+++ b/help/F/mlvolca6.txt
@@ -0,0 +1,15 @@
+\b;Programs dispatched by Houston
+We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
+
+\b;Archives
+Index of the programs dispatched in former missions:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/F/mscent1.txt b/help/F/mscent1.txt
new file mode 100644
index 00000000..befd97f5
--- /dev/null
+++ b/help/F/mscent1.txt
@@ -0,0 +1,20 @@
+\b;Walkthrough
+You'll find some useful items in a small valley northeast.
+o A \l;recycler\u object\botrecy; that will allow you to make your first \l;titanium cube\u object\titan;.
+o A \l;legged grabber\u object\botgs; that is very good at climbing steep slopes.
+o A nearly charged \l;nuclear power cell\u object\atomic;.
+
+1) Power the \l;legged grabber\u object\botgs; with the \l;nuclear power cell\u object\atomic;, and use it to carry a \l;titanium cube\u object\titan; to the \l;spaceship\u object\base;. Choose the direct way over the mountains.
+
+2) Use the titanium to build a \l;converter\u object\convert;. Execute the program \c;CollectTitanium3\n; on the \l;legged grabber\u object\botgs; and you will have plenty of titanium.
+
+3) Stop the program, and use the grabber to collect some \l;uranium ore\u object\uranore; in a second small valley to the east. Again, do not take the way of the valley which is crawling with ants, but take the direct way over the mountains.
+
+4) Build a \l;winged shooter\u object\botfj; and power it with a \l;nuclear power cell\u object\atomic;. If you take the pass south-east, you will arrive immediately at the ant nest. Kill all the ants, and bring back a ball of \l;organic matter\u object\bullet; to the \l;spaceship\u object\base;.
+
+5) Build an \l;auto-lab\u object\labo;, drop the \l;organic matter\u object\bullet; on the platform and click the \button 110; button in order to develop the blueprints for the orgaShooter cannon.
+
+6) Build a \l;legged orga shooter\u object\botos;, bring it aboard and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mscent2.txt b/help/F/mscent2.txt
new file mode 100644
index 00000000..417c8f0b
--- /dev/null
+++ b/help/F/mscent2.txt
@@ -0,0 +1,5 @@
+\b;Walkthrough
+Drive the \l;legged orga shooter\u object\botos; to each of the pads in front of the targets, and hit all targets that you see with only one burst, moving the mouse during the burst. With 4 bursts, you must be able to hit all the targets.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mscent3.txt b/help/F/mscent3.txt
new file mode 100644
index 00000000..d14266fa
--- /dev/null
+++ b/help/F/mscent3.txt
@@ -0,0 +1,11 @@
+\b;Walkthrough
+In order to kill all ants and spiders in this large and mountainous region, you will need a \l;winged orga shooter\u object\botfj; powered with \l;nuclear power cells\u object\atomic;. In a small valley to the southeast you will find everything you need: \l;titanium cubes\u object\titanium;, \l;power cells\u object\power; and even a \l;winged grabber\u object\botgj; in working condition.
+
+1) Build a \l;radar\u object\radar; and a \l;winged shooter\u object\botfj; and power it. Kill the ant that is watching over the \l;uranium ore\u object\uranore; further north.
+
+2) Use the abandoned \l;nuclear plant\u object\nuclear; on the hill above and the \l;winged grabber\u object\botgj; to produce several \l;nuclear power cells\u object\atomic;, and use one to power the \l;winged shooter\u object\botfj;.
+
+3) Wipe out all insects from the region. There is one isolated ant in the northwest hidden in a hole: an approach from the west thorough the deep valley will make it easier to hit.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mscent4.txt b/help/F/mscent4.txt
new file mode 100644
index 00000000..ceb46949
--- /dev/null
+++ b/help/F/mscent4.txt
@@ -0,0 +1,12 @@
+\b;Walkthrough
+1) Search the area for \l;titanium\u object\titan;.
+2) Build a \l;converter\u object\convert;.
+3) Build a \l;research center\u object\research;.
+4) Run the \button 66;.
+5) Manufacture a \l;thumper\u object\bottump;.
+6) Position the thumper close to the derelict spaceship and "thump" the ground.
+7) Quickly retrieve the \l;black box\u object\bbox; and bring it back aboard your \l;spaceship\u object\base;.
+8) Bring the thumper along and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mscent5.txt b/help/F/mscent5.txt
new file mode 100644
index 00000000..a631c9d5
--- /dev/null
+++ b/help/F/mscent5.txt
@@ -0,0 +1,8 @@
+\b;Walkthrough
+1) Thump the deck of the \l;spaceship\u object\base;. You don't need to move the \l;thumper\u object\bottump; anywhere.
+2) Locate the \l;orga shooter\u object\botoj; approximately 70 meters to the east.
+3) Terminate the \l;ants\u object\ant; while they are still on their backs.
+4) Take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mscrys1.txt b/help/F/mscrys1.txt
new file mode 100644
index 00000000..e7e5c03e
--- /dev/null
+++ b/help/F/mscrys1.txt
@@ -0,0 +1,12 @@
+\b;Walkthrough
+1) Build a \l;bot factory\u object\factory;.
+2) Produce a \l;winged grabber\u object\botgj;.
+3) Carry a \l;titanium cube\u object\titan; to the highest point.
+4) Build a \l;radar\u object\radar; on the spot.
+5) Build a \l;research center\u object\research; next to the spaceship.
+6) Initiate the \button 68;.
+7) Build the \l;defense tower\u object\tower; next to the radar.
+8) When all the worms are destroyed, you can go back to your ship and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mscrys2.txt b/help/F/mscrys2.txt
new file mode 100644
index 00000000..d64057d1
--- /dev/null
+++ b/help/F/mscrys2.txt
@@ -0,0 +1,17 @@
+\b;Walkthrough
+1) Build a \l;bot factory\u object\factory;.
+2) Produce a \l;winged sniffer\u object\botsj;.
+3) Sniff the ground near the large crystals until you get a \l;red cross\u object\stonspot;.
+4) Build a \l;derrick\u object\derrick; near the red cross.
+5) Build a \l;converter\u object\convert;.
+
+The pairing of a derrick and a converter allows for an unlimited supply of \l;titanium\u object\titan;. In order to leave this task to a bot, execute the program \c;CollectTitanium2\n;.
+
+6) Sniff the area at the foot of the spaceship. A \l;green cross\u object\enerspot; means you can build a \l;power station\u object\station; on the spot.
+7) Build a \l;radar\u object\radar;.
+8) Produce a \l;winged shooter\u object\botfj;.
+9) Eliminate all worms.
+10) Go back to your ship and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mscrys3.txt b/help/F/mscrys3.txt
new file mode 100644
index 00000000..b015bb5a
--- /dev/null
+++ b/help/F/mscrys3.txt
@@ -0,0 +1,7 @@
+\b;Walkthrough
+If you lose the bot, it will drop the black box somewhere southwest of your spaceship on a region surrounded by crystals.
+
+In case your power runs out before you can bring the black box back, use the second grabber left on the spaceship.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mscrys4.txt b/help/F/mscrys4.txt
new file mode 100644
index 00000000..cf8c5f7c
--- /dev/null
+++ b/help/F/mscrys4.txt
@@ -0,0 +1,7 @@
+\b;Walkthrough
+Somewhere northeast in the valley itself you should come across a fully functional \l;power station\u object\station;. Northwest you will find several \l;power cells\u object\power;.
+
+A few shooters in working condition have been abandoned in and around the same area in the valley; use them to shoot all the ants. With the \l;winged grabber\u object\botgj;, you can then retrieve the \l;black box\u object\bbox; that is located behind the derelict spaceship and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mslune1.txt b/help/F/mslune1.txt
new file mode 100644
index 00000000..b97ffbec
--- /dev/null
+++ b/help/F/mslune1.txt
@@ -0,0 +1,15 @@
+\b;Walkthrough
+In order to build the \l;research center\u object\research;, drop a \l;titanium cube\u object\titan; on a flat surface not too far from the spaceship. \l;You\u object\human; can carry the cube yourself, or use the available \l;grabber\u object\botgr;.
+
+If you used the bot, move it away from the cube in order not to interfere with the construction. To shift the selection from the bot to yourself (remember that only you can build), use \key;\key human;\norm;.
+
+Position yourself close to the \l;titanium cube\u object\titan; and build a \l;research center\u object\research; \button 163;. Drop a \l;power cell\u object\power; on the \l;research center\u object\research;, select the building and click the \button 65; symbol in order to perform the .
+
+Build a \l;bot factory\u object\factory; in the same way, and drop a \l;titanium cube\u object\titan; in the center. Build a \l;winged grabber\u object\botgj; with the \button 139; symbol, and power it with a \l;power cell\u object\power;.
+
+It may be preferable to scout the area yourself in order to save power. You'll find the chunks of titanium ore at the bottom of a few craters located north of the spaceship. A \l;flag\u object\flag; may help you pin down the spot faster on subsequent trips.
+
+Collect 4 chunks of \l;titanium ore\u object\titanore; and bring them back aboard your \l;spaceship\u object\base;. Take the \l;winged grabber\u object\botgj; and the \l;wheeled grabber\u object\botgr; along with you and take off \button 28;.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mslune2.txt b/help/F/mslune2.txt
new file mode 100644
index 00000000..e46a8501
--- /dev/null
+++ b/help/F/mslune2.txt
@@ -0,0 +1,7 @@
+\b;Walkthrough
+If your bot suddenly explodes, this means that you have hit the steel structures too often. Drive more slowly, so your bot will not be damaged even if you bump into an obstacle.
+
+If you can not take off after you have completed the training, this means that you did not pass through all the targets. Go round one more time, and pass through the targets where the cross is left in the center.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mslune3.txt b/help/F/mslune3.txt
new file mode 100644
index 00000000..e46a8501
--- /dev/null
+++ b/help/F/mslune3.txt
@@ -0,0 +1,7 @@
+\b;Walkthrough
+If your bot suddenly explodes, this means that you have hit the steel structures too often. Drive more slowly, so your bot will not be damaged even if you bump into an obstacle.
+
+If you can not take off after you have completed the training, this means that you did not pass through all the targets. Go round one more time, and pass through the targets where the cross is left in the center.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mslune4.txt b/help/F/mslune4.txt
new file mode 100644
index 00000000..7535c4d7
--- /dev/null
+++ b/help/F/mslune4.txt
@@ -0,0 +1,19 @@
+\b;Walkthrough
+1) Build a converter \button 162; with the only titanium cube available.
+
+2) Deposit one chunk of titanium ore at a time at the center of the platform and let the converter do the rest.
+
+3) Build a power station \button 164; with one of the newly converted titanium cubes.
+
+4) If you don't feel like looking for the black box yourself, build a radar \button 168; and the box will appear on your mini map somewhere north of your present location, at the bottom of a crater, next to a few derelict spacecraft and debris from the previous expedition.
+
+5) Place the grabbers at the center of the power station platform to recharge them. The cells should still have a little power left in them, just enough to radio-control the bots onto the platform.
+
+6) Radio-control the winged grabber to the black box and back.
+
+7) Gather both grabbers and the black box onto the spaceship platform and climb on board yourself.
+
+8) Take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/msorph1.txt b/help/F/msorph1.txt
new file mode 100644
index 00000000..28c154db
--- /dev/null
+++ b/help/F/msorph1.txt
@@ -0,0 +1,15 @@
+\b;Walkthrough
+1) Quickly build a \l;power captor\u object\captor; near the blue flag.
+All subsequent buildings should be erected within the \button 41; covered by the power captor.
+2) Carry some empty \l;power cells\u object\power; under the power captor. When lightning strikes, they will be recharged.
+3) Build a \l;derrick\u object\derrick;.
+4) Build a \l;converter\u object\convert;.
+5) Execute the program \c;CollectTitanium3\n; in order to produce \l;titanium\u object\titan;.
+6) Build a \l;bot factory\u object\factory;.
+7) Manufacture a \l;winged orga shooter\u object\botoj;.
+8) Build a \l;radar\u object\radar;.
+9) Locate and terminate all \l;ants\u object\ant;.
+10) Return to your \l;spaceship\u object\base; and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/msorph2.txt b/help/F/msorph2.txt
new file mode 100644
index 00000000..486d4475
--- /dev/null
+++ b/help/F/msorph2.txt
@@ -0,0 +1,9 @@
+\b;Walkthrough
+You will find a \l;radar\u object\radar;, a \l;power captor\u object\captor;, a \l;power cell\u object\power; and a \l;winged orga shooter\u object\botoj; in the valley south of the spaceship. This will allow you to kill the ants close to the spaceship and to locate the \l;black box\u object\bbox; in the north next to the remains of the first expedition spaceship.
+
+Build a succession of \l;power captors\u object\captor; along the natural path offered by the northern mountain peaks. 5 or 6 captors should offer sufficient protection against lightning.
+
+Bring the black box back aboard your \l;spaceship\u object\base; and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mssaari1.txt b/help/F/mssaari1.txt
new file mode 100644
index 00000000..6bfb8087
--- /dev/null
+++ b/help/F/mssaari1.txt
@@ -0,0 +1,22 @@
+\b;Walkthrough
+1) You'll find a \l;titanium cube\u object\titan; left in a smashed up bot factory. Use it to build a \l;power station\u object\station;.
+
+2) The \l;recycler\u object\botrecy; is designed to convert derelicts back into usable titanium cubes.
+
+3) Build both a \l;repair center\u object\repair; and a \l;radar\u object\radar;.
+
+4) Recharge one of the \l;power cells\u object\power; available and power a \l;winged shooter\u object\botfj;.
+
+5) Eliminate all \l;ants\u object\ant;. Note that you should recharge and repair the shooter regularly. Check your levels.
+
+6) Fully charge the \l;grabber\u object\botgr;'s power cell, then radio-control it to the summit...
+ a) Access the first level by ramp on west;
+ b) On first level travel east to find second ramp;
+ c) On second level travel south to find third ramp;
+ d) On third level travel west for access to summit;
+...then, with the chunk, straight back to the spaceship by the most direct route so as to save the remaining power.
+
+7) Climb aboard the ship yourself and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mssaari2.txt b/help/F/mssaari2.txt
new file mode 100644
index 00000000..22371a78
--- /dev/null
+++ b/help/F/mssaari2.txt
@@ -0,0 +1,9 @@
+\b;Walkthrough
+Execute immediately the program \c;KillAnt1\n; on the \l;wheeled shooter\u object\botfr;; it will take care of the first wave of attack coming from west.
+
+Then build two \l;defense towers\u object\tower; one in the north of the \l;spaceship\u object\base;, the other one in the south (you have to do this VERY quickly). While \l;you\u object\human; are building, use the \l;grabber\u object\botgr; to get a \l;power cell\u object\power;.
+
+As soon as the successive waves of attack, made up of about fifteen \l;ants\u object\ant;, are gone, you have time to take care of the ants that did not attack. Build a \l;radar\u object\radar; in order to spot them, and a \l;converter\u object\convert;, a \l;bot factory\u object\factory;, a \l;power station\u object\station; and a \l;winged shooter\u object\botfj; in order to get rid of them...
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mssaari3.txt b/help/F/mssaari3.txt
new file mode 100644
index 00000000..84f2fa66
--- /dev/null
+++ b/help/F/mssaari3.txt
@@ -0,0 +1,9 @@
+\b;Walkthrough
+You should build a \l;radar\u object\radar; first.
+
+The \l;ants\u object\ant; appear to be running away from you. Try to circle around each one of them until they find themselves trapped between you and a \l;mine\u object\mine;. They'll opt for the mine and blow themselves up.
+
+Then bring the \l;black box\u object\bbox; aboard your ship. It is next to the derelict spaceship.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/msterra1.txt b/help/F/msterra1.txt
new file mode 100644
index 00000000..a7487ad7
--- /dev/null
+++ b/help/F/msterra1.txt
@@ -0,0 +1,6 @@
+\b;Walkthrough
+Unfortunately no walkthrough has been provided for this mission.
+You are on your own...
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/msterra2.txt b/help/F/msterra2.txt
new file mode 100644
index 00000000..a7487ad7
--- /dev/null
+++ b/help/F/msterra2.txt
@@ -0,0 +1,6 @@
+\b;Walkthrough
+Unfortunately no walkthrough has been provided for this mission.
+You are on your own...
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/msterra3.txt b/help/F/msterra3.txt
new file mode 100644
index 00000000..a7487ad7
--- /dev/null
+++ b/help/F/msterra3.txt
@@ -0,0 +1,6 @@
+\b;Walkthrough
+Unfortunately no walkthrough has been provided for this mission.
+You are on your own...
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/msterra4.txt b/help/F/msterra4.txt
new file mode 100644
index 00000000..a7487ad7
--- /dev/null
+++ b/help/F/msterra4.txt
@@ -0,0 +1,6 @@
+\b;Walkthrough
+Unfortunately no walkthrough has been provided for this mission.
+You are on your own...
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/msterre1.txt b/help/F/msterre1.txt
new file mode 100644
index 00000000..3e7e0cc2
--- /dev/null
+++ b/help/F/msterre1.txt
@@ -0,0 +1,11 @@
+\b;Walkthrough
+To find the survival kit from your starting point :
+
+1) Follow the road heading south.
+2) Turn east (left) at the first crossroad.
+3) The survival kit is lying between the northern wall of Mission Control and the first tree on the right hand side of the road.
+
+Just position yourself close to it to successfully complete the drill.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/msterre2.txt b/help/F/msterre2.txt
new file mode 100644
index 00000000..a97023d8
--- /dev/null
+++ b/help/F/msterre2.txt
@@ -0,0 +1,11 @@
+\b;Walkthrough
+Walk down the street that runs beside \l;Mission Control\u object\Huston;. You will find a \l;titanium cube\u object\titan; on the left hand side of the road, right after the \l;grabber bot\u object\botgr;.
+
+1) Face the cube. Click on the first button at the bottom left of your screen: \button 163; .
+2) Walk further down the road. The second cube is on the right past the four green \l;power cells\u object\power;.
+3) Repeat 1) but click on the second button: \button 160; .
+
+As soon as both buildings are completed, the mission is at an end.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/msterre3.txt b/help/F/msterre3.txt
new file mode 100644
index 00000000..509ae869
--- /dev/null
+++ b/help/F/msterre3.txt
@@ -0,0 +1,28 @@
+\b;Walkthrough
+Before taking off, you need to bring the following aboard your spaceship:
+
+1) \l;Black box\u object\bbox;.
+2) \l;Wheeled\u object\botgr; and \l;tracked\u object\botgc; grabbers.
+3) \l;Yourself\u object\human;.
+
+Here is a detailed breakdown of the operations:
+1) Power the \l;research center\u object\research; with one of the green \l;power cells\u object\power;.
+2) Activate the \l;research center\u object\research; then click on the \button 64; button.
+3) Place a \l;titanium cube\u object\titan; inside the \l;bot factory\u object\factory;.
+4) Step back out and activate the \l;bot factory\u object\factory;.
+5) Click on the \button 138; button.
+6) Power the \l;tracked grabber\u object\botgc; with a brand new \l;power cell\u object\power;.
+7) Radio-control the \l;tracked grabber\u object\botgc; to the top of the mountain in the south-west.
+8) Bring the \l;black box\u object\bbox; back aboard your \l;spaceship\u object\base;.
+9) Radio-control both the \l;tracked\u object\botgc; and the \l;wheeled\u object\botgr; grabbers onto the platform.
+10) Climb aboard the \l;spaceship\u object\base; yourself.
+11) Take off!
+
+In order to take off, select the \l;spaceship\u object\base;, provided that it is visible, by clicking on it. If it is not visible, you need to click one of the buttons in the upper left corner of your screen. The blue triangle \button 130; allows you to alternate between symbols for bots and symbols for buildings. Click once to shift to the list. A \button 171; symbol will now appear. Click on the button to select it.
+
+Once the spaceship is selected, click on the larger \button 28; button in the lower center of your screen. If the objects mentioned above as well as yourself are indeed standing on deck, takeoff will take place.
+
+No object or bot should hinder the closing of the eight large panel doors.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mstropi1.txt b/help/F/mstropi1.txt
new file mode 100644
index 00000000..ca0330be
--- /dev/null
+++ b/help/F/mstropi1.txt
@@ -0,0 +1,5 @@
+\b;Walkthrough
+Follow the path shown on your mini map. The explosive device lies at the bottom of a small valley populated by giant ants. They will probably attack you and you will probably lose consciousness. There is nothing you can really do about this.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mstropi2.txt b/help/F/mstropi2.txt
new file mode 100644
index 00000000..23bc0024
--- /dev/null
+++ b/help/F/mstropi2.txt
@@ -0,0 +1,21 @@
+\b;Walkthrough
+Here is a breakdown of the steps to follow to get back to the spaceship.
+
+1) Go round the lake, and head towards the green fluorescent globe. This globe is generated by a gravi-plant that will make flight impossible inside the globe.
+
+2) Follow the left flank of the valley, passing a pond on your right, and climb the small slope. On top you will be facing some giant ants: run as fast as you can towards another gravi-plant a little further on your right, your wounds will have time to heal later.
+
+3) Use your reactor to fly past the lake before the gravi-plant on your right.
+
+4) When you leave the gravi-plant, keep on the left-hand side of the lake, and follow the shore until you reach a peninsula adorned with fern-like plants.
+
+5) Do some island-hopping across the larger lake. Aim for the trees in order to avoid falling into the water on the other side of the island. The last island is 50 cm under water but you can still land on it without having your head submerged.
+
+6) The path continues to the left. A giant ant is waiting for you there, but it will not do you much harm.
+
+7) Give your reactor enough time to cool down, then fly across the small lake. Try to land as high on the right as you can, this is the best way not to fall into the second lake.
+
+8) Cross the second lake, get aboard the spaceship, and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mstropi3.txt b/help/F/mstropi3.txt
new file mode 100644
index 00000000..852a973e
--- /dev/null
+++ b/help/F/mstropi3.txt
@@ -0,0 +1,13 @@
+\b;Walkthrough
+1) There is a \l;titanium cube\u object\titan; west of your present location, near the blue flag/blue cross on your mini map. You don't need to move the cube, just build a \l;power station\u object\station; right there on the spot.
+
+2) With the titanium cubes on the spaceship, build a \l;research center\u object\research; and execute the \button 67;.
+
+3) Build a \l;bot factory\u object\factory; and a \l;winged shooter\u object\botfj;. If this bot is destroyed by enemy fire, you will find some additional \l;titanium cubes\u object\titan; in a small foggy valley northwest of the spaceship. You can bring them back with the \l;winged grabber\u object\botgj;\n;.
+
+4) Build a \l;radar station\u object\radar; in order to see the location of the ants on the mini-map, and let the hunt begin. Be careful not to run out of energy and not to overheat the reactor of a bot while over water. If a bot falls into deep water, it explodes.
+
+5) Once you have killed all the ants, get on board and take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mstropi4.txt b/help/F/mstropi4.txt
new file mode 100644
index 00000000..6b73f89d
--- /dev/null
+++ b/help/F/mstropi4.txt
@@ -0,0 +1,7 @@
+\b;Walkthrough
+If your bot suddenly explodes, this means that you have hit the steel structures too often. Drive more slowly, so your bot will not be damaged even if you bump into an obstacle.
+
+If you can not take off after you completed the training, this means that you have not hit all the targets. Go round one more time, and check if any of the explosive devices or crosses in the center of the steel structures are left.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/mstropi5.txt b/help/F/mstropi5.txt
new file mode 100644
index 00000000..06802556
--- /dev/null
+++ b/help/F/mstropi5.txt
@@ -0,0 +1,15 @@
+\b;Walkthrough
+1) Locate the \l;black box\u object\bbox; on your own. You can try to spot it from above, using your jet engine, or dive into the water.
+2) Build a \l;converter\u object\convert; near the chunks of titanium ore. You'll find them in the vicinity of the spaceship to the east.
+3) Produce two \l;cubes\u object\titan;.
+4) Build a \l;bot factory\u object\factory; not too far from the black box.
+5) Manufacture a \l;subber\u object\botsub;.
+6) Bring the black box back on board.
+7) Take off.
+
+The black box is lying at the bottom of a small lake, northeast of the spaceship.
+
+You can build the bot factory right beside the lake, on the south bank.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/msvolca1.txt b/help/F/msvolca1.txt
new file mode 100644
index 00000000..7c606a2e
--- /dev/null
+++ b/help/F/msvolca1.txt
@@ -0,0 +1,15 @@
+\b;Walkthrough
+1) Start by recharging a \l;regular power cell\u object\power; and power the \l;research center\u object\research;. Use it to research the technology for the building of a \l;nuclear plant\u object\nuclear; \button 170;.
+
+2) Produce a \l;wheeled grabber\u object\botgr;.
+
+3) Find some \l;uranium ore\u object\uranore; northwest of your position. The nuclear plant will then transform it into \l;nuclear power cells\u object\atomic; of a longer duration.
+
+4) Power a \l;wheeled shooter\u object\botfr; with one of your new nuclear cells. Dispatch it to kill all intruding \l;spiders\u object\spider; along the way.
+
+5) A \l;radar\u object\radar; is optional but could turn out useful to mark the position of the spiders on your mini map.
+
+6) A wheeled grabber should be part of the expedition. It will both clear the way cluttered with \l;titanium ore\u object\titanore; and bring the \l;explosive device\u object\tnt; back.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/msvolca2.txt b/help/F/msvolca2.txt
new file mode 100644
index 00000000..319cd4db
--- /dev/null
+++ b/help/F/msvolca2.txt
@@ -0,0 +1,19 @@
+\b;Walkthrough
+1) Quickly build a \l;defense tower\u object\tower; north of your spaceship. After you \l;powered\u object\power; it, execute the program \c;ServiceTower1\n; on one of the \l;grabbers\u object\botgr; which will recharge the power cell when it is empty. Place another power cell 2 m north of the tower as a first target for the attacking wasps.
+
+2) Build a \l;power station\u object\station; close to the defense tower.
+
+3) Build a \l;converter\u object\convert; south of the spaceship and execute the program \c;CollectTitanium3\n; on the second \l;grabber\u object\botgr; in order to produce some \l;titanium\u object\titan;.
+
+4) Build a \l;bot factory\u object\factory; and a \l;winged shooter\u object\botfj; to eliminate the \l;ants\u object\ant;.
+
+5) Use a \l;winged grabber\u object\botgj; to bring back some \l;organic matter\u object\bullet; from the island in the middle of the lava lake.
+
+6) Build an \l;autolab\u object\labo;, drop the \l;organic matter\u object\bullet; on the platform and click the button \button 109; in order to develop the blueprints for legged bots.
+
+7) As soon as the organic matter has been analyzed, produce a \l;legged grabber\u object\botgs; and bring it aboard the spaceship.
+
+8) Take off.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/msvolca3.txt b/help/F/msvolca3.txt
new file mode 100644
index 00000000..bcd857b8
--- /dev/null
+++ b/help/F/msvolca3.txt
@@ -0,0 +1,11 @@
+\b;Walkthrough
+1) Power a \l;legged shooter\u object\botfs;. There is even a \l;nuclear cell\u object\atomic; left behind the \l;bot factory\u object\factory;.
+
+2) Climb the northern cliff and kill a few \l;ants\u object\ant;. The best access is from the east.
+
+3) Keep going until all ants are out of the way.
+
+4) Climb the northern cliff with a \l;legged grabber\u object\botgs; and retrieve the \l;black box\u object\bbox; that you will find in the derelict bot factory.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/msvolca4.txt b/help/F/msvolca4.txt
new file mode 100644
index 00000000..4000a249
--- /dev/null
+++ b/help/F/msvolca4.txt
@@ -0,0 +1,13 @@
+\b;Walkthrough
+A gap in the northwest mountain leads the way to a lake of boiling lava.
+
+Just hop from one rocky island to the next. Keep checking your reactor, let it cool off completely before taking off again. The mini map will help you to figure out where the closest island is.
+
+In case of an ant attack, don't worry too much. Just take the time for your reactor to cool off, without lingering longer than necessary, and your built-in shield should do its duty. However we advise you to save the game from time to time (key Esc, and "Save"), so you will not have to start from the beginning in case of a landing in the lava lake.
+
+The bot is at the westernmost point on your map though you'll have to take a roundabout route to reach it. A \l;nuclear power cell\u object\atomic; lies nearby.
+
+You don't have to radio-control the bot back to the spaceship by the same way you came because its reactor has a greater range than yours. One or two stops may still be needed and watch out for those ants.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/msvolca5.txt b/help/F/msvolca5.txt
new file mode 100644
index 00000000..938b80b0
--- /dev/null
+++ b/help/F/msvolca5.txt
@@ -0,0 +1,11 @@
+\b;Walkthrough
+Everything is blowing up around you. You need to leave the old basecamp as quickly as possible. Just retreat the same way you came.
+
+\l;Ants\u object\ant; are fairly easy to avoid. If you're badly hit, find a quiet spot and wait until your shield has regenerated.
+
+\l;Spiders\u object\spider; are a bit tougher but also more stupid. As soon as they see you, they burst their abdomen, dying in the process. If one fragment hits you, you'll die too. One risky but efficient method to rid yourself of a spider consists in moving dangerously close and, when the spider's abdomen starts inflating, swiftly fly backwards to safety.
+
+As soon as you have reached a quiet island, you can use the \l;winged orga shooter\u object\botoj; to clear your way of hostile insects. Be careful not to lose it, otherwise the whole mission would be in vain.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/msvolca6.txt b/help/F/msvolca6.txt
new file mode 100644
index 00000000..b5b7fcb1
--- /dev/null
+++ b/help/F/msvolca6.txt
@@ -0,0 +1,9 @@
+\b;Walkthrough
+It is safer for \l;you\u object\human; to stay on the \l;spaceship\u object\base;. You may get hit a few times but not fatally.
+
+Put your new \l;winged orga shooter\u object\botoj; to good use and don't waste any time. First shoot the ants on your right, then turn clockwise around the spaceship, flying at low altitude.
+
+If you can not do it this way, place the \l;winged orga shooter\u object\botoj; on a safe place north of the spaceship, then save yourself. You can then take your time to shoot the ants one after another; they can do no harm to the spaceship and the black box.
+
+\t;See also
+\l;Controls\u command;
diff --git a/help/F/navig.txt b/help/F/navig.txt
new file mode 100644
index 00000000..63622750
--- /dev/null
+++ b/help/F/navig.txt
@@ -0,0 +1,22 @@
+\b;Navigation
+The three buttons on the upper left-hand corner of the screen allow you to navigate in the different texts of the help file:
+
+\button 30; Home
+Get back to the home page, i.e. the first page that was displayed, for example when you hit the \key;\key help;\norm; or \key;\key prog;\norm; key.
+
+\button 55; Previous
+Get back to the previous page, i.e. the page that was displayed before you clicked on a link.
+
+\button 48; Next
+Get again to the next page, after you used the "Home" or "Previous" button.
+
+\t;Remark
+When a button is gray, this means that it can not be used at this precise moment. For example, when you are in the home page, the "Home" button is gray, because it does not make sense to use it.
+
+This remark is valid for all buttons in COLOBOT.
+
+\t;Text scrolling
+If your mouse is equipped with a wheel, you can use it to scroll the text up and down. Otherwise, use the arrow keys and the scroll bar on the right-hand side of the screen.
+
+\t;Font size
+The cursor on the upper side of the screen allows you to change the font size of the text.
diff --git a/help/F/object/ant.txt b/help/F/object/ant.txt
new file mode 100644
index 00000000..87b82f40
--- /dev/null
+++ b/help/F/object/ant.txt
@@ -0,0 +1,11 @@
+\b;Ant
+\image ant 8 8;
+Ants shoot tiny corrosive balls that eventually gnaw into the protective shielding of bots and buildings, causing them to explode.
+
+\l;You\u object\human; can resist their attack much longer than most buildings and bots, and your protective shield will be restored as your wounds heal. However, if you stay too long in their range or if there are too many of them, your life is in great danger.
+
+\t;Object \l;Category\u cbot\category;
+\c;AlienAnt\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/atomic.txt b/help/F/object/atomic.txt
new file mode 100644
index 00000000..367dff0e
--- /dev/null
+++ b/help/F/object/atomic.txt
@@ -0,0 +1,15 @@
+\b;Nuclear Power Cell
+\image atomic 4 4;
+A nuclear power cell supplies the bots and some buildings with energy.
+Its capacity is 100 times that of a \l;regular power cell\u object\power;.
+
+Nuclear power cells cannot be recharged or recycled. A \l;nuclear plant\u object\nuclear; and some \l;uranium ore\u object\uranore; is needed to produce a new and fully charged nuclear power cell.
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Object \l;Category\u cbot\category;
+\c;NuclearCell\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/barrier.txt b/help/F/object/barrier.txt
new file mode 100644
index 00000000..14646cb0
--- /dev/null
+++ b/help/F/object/barrier.txt
@@ -0,0 +1,8 @@
+\b;Barrier
+The barrier is nothing more than an obstacle used in the exercises.
+
+\t;Object \l;Category\u cbot\category;
+\c;Barrier\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/base.txt b/help/F/object/base.txt
new file mode 100644
index 00000000..84577068
--- /dev/null
+++ b/help/F/object/base.txt
@@ -0,0 +1,11 @@
+\b;\button 171; Spaceship
+\image base 8 8;
+\l;Your\u object\human; means of transportation from one planet to the next, the only way to travel safely across the cosmos and accomplish your missions.
+
+In addition to yourself, the spaceship can carry bots and raw materials. Whenever a mission is completed, you must select the spaceship, then click on the command \button 28;.
+
+\t;Object \l;Category\u cbot\category;
+\c;SpaceShip\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/bbox.txt b/help/F/object/bbox.txt
new file mode 100644
index 00000000..4b4a8557
--- /dev/null
+++ b/help/F/object/bbox.txt
@@ -0,0 +1,14 @@
+\b;Black Box
+\image bbox 4 4;
+A black box is actually orange so as to be easier to identify and locate. Each \l;spaceship\u object\base; is equipped with a black box that records and stores information about the flight.
+
+A black box can also be used to leave important information. On every planet the first expedition has left a black box containing the coordinates of the planet it was heading towards next.
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Object \l;Category\u cbot\category;
+\c;BlackBox\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/botfc.txt b/help/F/object/botfc.txt
new file mode 100644
index 00000000..b95751e3
--- /dev/null
+++ b/help/F/object/botfc.txt
@@ -0,0 +1,20 @@
+\b;\button 144; Tracked Shooter
+\image botfc 8 8;
+Tracked bot equipped with a fireball cannon.
+
+The fireball cannon is an efficient weapon against most kinds of \l;enemies\u object\mother;. Use it sparingly though for it requires large amounts of energy. A \l;regular power cell\u object\power; will only allow you to shoot 4 fireball bursts.
+
+Tip : it is possible to move the mouse while shooting, so as to sweep a larger area.
+
+Tracked bots can ascend steep inclinations but they are quite slow and use a lot of energy. On flat ground for short distances, a \l;wheeled shooter\u object\botfr; is a better option. When it is possible to build \l;winged bots\u object\botfj;, these represent the best solution for long distances.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the fireball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;TrackedShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/botfj.txt b/help/F/object/botfj.txt
new file mode 100644
index 00000000..b852517d
--- /dev/null
+++ b/help/F/object/botfj.txt
@@ -0,0 +1,22 @@
+\b;\button 145; Winged Shooter
+\image botfj 8 8;
+Jet propelled flying bot equipped with a fireball cannon.
+
+The fireball cannon is an efficient weapon against most kinds of \l;enemies\u object\mother;. Use it sparingly though for it requires large amounts of energy. A \l;regular power cell\u object\power; will only allow you to shoot 4 fireball bursts.
+
+Tip : it is possible to move the mouse while shooting, so as to sweep a larger area.
+
+The display at the bottom of your screen indicates the temperature of the reactor. Keep an eye on it. If the reactor overheats, the engine will stop and the bot will crash.
+
+Winged bots can fly across natural obstacles such as mountains or lakes but their energy supply is used up quickly. They're slow on the ground. To cover a short distance that will not call for flying, it is recommended to use a \l;wheeled shooter\u object\botfr; instead.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;jet\u cbot\jet;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the fireball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WingedShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/botfr.txt b/help/F/object/botfr.txt
new file mode 100644
index 00000000..43cea003
--- /dev/null
+++ b/help/F/object/botfr.txt
@@ -0,0 +1,20 @@
+\b;\button 143; Wheeled Shooter
+\image botfr 8 8;
+Wheeled bot equipped with a fireball cannon.
+
+The fireball cannon is an efficient weapon against most kinds of \l;enemies\u object\mother;. Use it sparingly though for it requires large amounts of energy. A \l;regular power cell\u object\power; will only allow you to shoot 4 fireball bursts.
+
+Tip : it is possible to move the mouse while shooting, so as to sweep a larger area.
+
+Wheels constitute a standard, fast and energy-saving mode of propulsion, which is perfectly adapted for a relatively flat terrain. Whenever the terrain gets sloped, it is advised to use a \l;winged shooter\u object\botfj; instead, or, if this is impossible, a \l;tracked shooter\u object\botfc;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the fireball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WheeledShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/botfs.txt b/help/F/object/botfs.txt
new file mode 100644
index 00000000..5a5c2728
--- /dev/null
+++ b/help/F/object/botfs.txt
@@ -0,0 +1,20 @@
+\b;\button 151; Legged Shooter
+\image botfs 8 8;
+Ant-legged creeping bot equipped with a fireball cannon.
+
+The fireball cannon is an efficient weapon against most kinds of \l;enemies\u object\mother;. Use it sparingly though for it requires large amounts of energy. A \l;regular power cell\u object\power; will only allow you to shoot 4 fireball bursts.
+
+Tip : it is possible to move the mouse while shooting, so as to sweep a larger area.
+
+A moving legged shooter uses up half as much energy as a \l;wheeled shooter\u object\botfr;. A legged bot is also perfectly adapted to climb the steepest slopes.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the fireball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;LeggedShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/botgc.txt b/help/F/object/botgc.txt
new file mode 100644
index 00000000..8abb41c7
--- /dev/null
+++ b/help/F/object/botgc.txt
@@ -0,0 +1,33 @@
+\b;\button 138; Tracked Grabber
+\image botgc 8 8;
+Tracked bot equipped with an operating arm.
+
+\button 32; Grabs an object or lays it down again, at a position that is determined by one of the following options :
+\button 33; The object is lying in front of the bot, on the ground or on the back of a second bot.
+\button 35; The object is the bot's own power cell.
+\button 34; The object is lying behind the bot, on the ground.
+
+The following objects can be transported :
+o \l;Titanium ore\u object\titanore;.
+o \l;Uranium ore\u object\uranore;.
+o \l;Cube of titanium\u object\titan;.
+o \l;Regular power cell\u object\power;.
+o \l;Nuclear power cell\u object\atomic;.
+o \l;Black box\u object\bbox;.
+o \l;Keys A, B, C, and D\u object\key;.
+o \l;Organic matter\u object\bullet;.
+
+Tracked bots can ascend steep inclinations but they are quite slow and use much energy. On flat ground for short distances, a \l;wheeled grabber\u object\botgr; is a better option. When it is possible to build \l;winged bots\u object\botgj;, these represent the best solution for long distances.
+
+A grabber won't function underwater. What you'll need instead is a \l;subber\u object\botsub;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the operating arm, use \c;\l;grab\u cbot\grab;\n; and \c;\l;drop\u cbot\drop;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;TrackedGrabber\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/botgj.txt b/help/F/object/botgj.txt
new file mode 100644
index 00000000..f237bfaf
--- /dev/null
+++ b/help/F/object/botgj.txt
@@ -0,0 +1,35 @@
+\b;\button 139; Winged Grabber
+\image botgj 8 8;
+Jet propelled flying bot equipped with an operating arm.
+
+\button 32; Grabs an object or lays it down again, at a position that is determined by one of the following options :
+\button 33; The object is lying in front of the bot, on the ground or on the back of a second bot.
+\button 35; The object is the bot's own power cell.
+\button 34; The object is lying behind the bot, on the ground.
+
+The following objects can be transported :
+o \l;Titanium ore\u object\titanore;.
+o \l;Uranium ore\u object\uranore;.
+o \l;Cube of titanium\u object\titan;.
+o \l;Regular power cell\u object\power;.
+o \l;Nuclear power cell\u object\atomic;.
+o \l;Black box\u object\bbox;.
+o \l;Keys A, B, C, and D\u object\key;.
+o \l;Organic matter\u object\bullet;.
+
+The display at the bottom of your screen indicates the temperature of the reactor. Keep an eye on it. If the reactor overheats, the engine will stop and the bot will crash.
+
+Winged bots can fly across natural obstacles such as mountains or lakes but their energy supply is used up quickly. They're slow on the ground. To cover a short distance that will not call for flying, it is recommended to use a \l;wheeled grabber\u object\botgr; instead.
+
+A grabber won't function underwater. What you'll need instead is a \l;subber\u object\botsub;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the operating arm, use \c;\l;grab\u cbot\grab;\n; and \c;\l;drop\u cbot\drop;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WingedGrabber\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/botgr.txt b/help/F/object/botgr.txt
new file mode 100644
index 00000000..8dcc5991
--- /dev/null
+++ b/help/F/object/botgr.txt
@@ -0,0 +1,33 @@
+\b;\button 137; Wheeled Grabber
+\image botgr 8 8;
+Wheeled bot equipped with an operating arm.
+
+\button 32; Grabs an object or lays it down again, at a position that is determined by one of the following options :
+\button 33; The object is lying in front of the bot, on the ground or on the back of a second bot.
+\button 35; The object is the bot's own power cell.
+\button 34; The object is lying behind the bot, on the ground.
+
+The following objects can be transported :
+o \l;Titanium ore\u object\titanore;.
+o \l;Uranium ore\u object\uranore;.
+o \l;Converted titanium\u object\titan;.
+o \l;Regular power cell\u object\power;.
+o \l;Nuclear power cell\u object\atomic;.
+o \l;Black box\u object\bbox;.
+o \l;Keys A, B, C, and D\u object\key;.
+o \l;Organic matter\u object\bullet;.
+
+Wheels constitute a standard, fast and energy-saving mode of propulsion, which is perfectly adapted for a relatively flat terrain. Whenever the terrain gets sloped, it is advised to use a \l;winged shooter\u object\botfj; instead, or, if this is impossible, a \l;tracked shooter\u object\botfc;.
+
+A grabber won't function underwater. What you'll need instead is a \l;subber\u object\botsub;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the operating arm, use \c;\l;grab\u cbot\grab;\n; and \c;\l;drop\u cbot\drop;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WheeledGrabber\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/botgs.txt b/help/F/object/botgs.txt
new file mode 100644
index 00000000..b839c9fb
--- /dev/null
+++ b/help/F/object/botgs.txt
@@ -0,0 +1,34 @@
+\b;\button 150; Legged Grabber
+\image botgs 8 8;
+Ant-legged creeping bot equipped with an operating arm.
+
+\button 32; Grabs an object or lays it down again, at a position that is determined by one of the following options :
+\button 33; The object is lying in front of the bot, on the ground or on the back of a second bot.
+\button 35; The object is the bot's own power cell.
+\button 34; The object is lying behind the bot, on the ground.
+
+The following objects can be transported :
+o \l;Titanium ore\u object\titanore;.
+o \l;Uranium ore\u object\uranore;.
+o \l;Converted titanium\u object\titan;.
+o \l;Regular power cell\u object\power;.
+o \l;Nuclear power cell\u object\atomic;.
+o \l;Black box\u object\bbox;.
+o \l;Keys A, B, C, and D\u object\key;.
+o \l;Organic matter\u object\bullet;.
+
+A moving legged grabber uses up half as much energy as a \l;wheeled grabber\u object\botgr;. A legged bot is also perfectly adapted to climb the steepest slopes.
+
+A grabber won't function underwater. What you'll need instead is a \l;subber\u object\botsub;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the operating arm, use \c;\l;grab\u cbot\grab;\n; and \c;\l;drop\u cbot\drop;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;LeggedGrabber\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
+
diff --git a/help/F/object/botoc.txt b/help/F/object/botoc.txt
new file mode 100644
index 00000000..43fecf54
--- /dev/null
+++ b/help/F/object/botoc.txt
@@ -0,0 +1,18 @@
+\b;\button 154; Tracked Orga Shooter
+\image botoc 8 8;
+Tracked bot equipped with an orgaball cannon.
+
+The orgaball cannon is more effective than the \l;fireball cannon\u object\botfc;. It shoots small spheres of corrosive \l;organic matter\u object\bullet;. A \l;regular power cell\u object\power; will allow you to shoot 11 orgaball bursts.
+
+Tracked bots can ascend steep inclinations but they are quite slow and use a lot of energy. On flat ground for short distances, a \l;wheeled orga shooter\u object\botor; is a better option. When it is possible to build \l;winged bots\u object\botoj;, these represent the best solution for long distances.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the orgaball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;TrackedOrgaShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/botoj.txt b/help/F/object/botoj.txt
new file mode 100644
index 00000000..70f7b99d
--- /dev/null
+++ b/help/F/object/botoj.txt
@@ -0,0 +1,20 @@
+\b;\button 155; Winged Orga Shooter
+\image botoj 8 8;
+Jet propelled flying bot equipped with an orgaball cannon.
+
+The orgaball cannon is more effective than the \l;fireball cannon\u object\botfj;. It shoots small spheres of corrosive \l;organic matter\u object\bullet;. A \l;regular power cell\u object\power; will allow you to shoot 11 orgaball bursts.
+
+The display at the bottom of your screen indicates the temperature of the reactor. Keep an eye on it. If the reactor overheats, the engine will stop and the bot will crash.
+
+Winged bots can fly across natural obstacles such as mountains or lakes but their energy supply is used up quickly. They're slow on the ground. To cover a short distance that will not call for flying, it is recommended to use a \l;wheeled orga shooter\u object\botor; instead.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;jet\u cbot\jet;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the orgaball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WingedOrgaShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/botor.txt b/help/F/object/botor.txt
new file mode 100644
index 00000000..8da2ce7c
--- /dev/null
+++ b/help/F/object/botor.txt
@@ -0,0 +1,19 @@
+\b;\button 153; Wheeled Orga Shooter
+\image botor 8 8;
+Wheeled bot equipped with an orgaball cannon.
+
+The orgaball cannon is more effective than the \l;fireball cannon\u object\botfr;. It shoots small spheres of corrosive \l;organic matter\u object\bullet;. A \l;regular power cell\u object\power; will allow you to shoot 11 orgaball bursts.
+
+Wheels constitute a standard, fast and energy-saving mode of propulsion, which is perfectly adapted for a relatively flat terrain. Whenever the terrain gets sloped, it is advised to instead use a \l;winged orga shooter\u object\botoj;, or, if this is impossible, a \l;tracked orga shooter\u object\botoc;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the orgaball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WheeledOrgaShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
+
diff --git a/help/F/object/botos.txt b/help/F/object/botos.txt
new file mode 100644
index 00000000..a1ff6d09
--- /dev/null
+++ b/help/F/object/botos.txt
@@ -0,0 +1,18 @@
+\b;\button 156; Legged Orga Shooter
+\image botos 8 8;
+Ant-legged creeping bot equipped with an orgaball cannon.
+
+The orgaball cannon is more effective than the \l;fireball cannon\u object\botfs;. It shoots small spheres of corrosive \l;organic matter\u object\bullet;. A \l;regular power cell\u object\power; will allow you to shoot 11 orgaball bursts.
+
+A moving legged orga shooter uses up half as much energy as a \l;wheeled orga shooter\u object\botor;. A legged bot is also perfectly adapted to climb the steepest slopes.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the orgaball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;LeggedOrgaShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/botphaz.txt b/help/F/object/botphaz.txt
new file mode 100644
index 00000000..232463e1
--- /dev/null
+++ b/help/F/object/botphaz.txt
@@ -0,0 +1,14 @@
+\b;\button 147; Phazer Shooter
+\image botphaz 8 8;
+Tracked bot equipped with a very powerful phazer cannon, efficient against most kinds of enemies. When you aim upward, it can shoot up to 60 meters. It is the only weapon that can kill the \l;Alien Queen\u object\mother;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the phazer cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;PhazerShooter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/botrecy.txt b/help/F/object/botrecy.txt
new file mode 100644
index 00000000..68d06f26
--- /dev/null
+++ b/help/F/object/botrecy.txt
@@ -0,0 +1,14 @@
+\b;\button 148; Recycler
+\image botrecy 8 8;
+Tracked bot designed to convert a \l;derelict bot\u object\wreck; back into a reusable \l;titanium cube\u object\titan;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the recycling of a derelict bot, use \c;\l;recycle\u cbot\recycle;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;RecyclerBot\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/botsc.txt b/help/F/object/botsc.txt
new file mode 100644
index 00000000..5d6424ea
--- /dev/null
+++ b/help/F/object/botsc.txt
@@ -0,0 +1,20 @@
+\b;\button 141; Tracked Sniffer
+\image botsc 8 8;
+Tracked bot equipped to prospect the geological structure of the subsoil. Whenever it locates something of use, the sniffer lays down the following marks:
+
+- a \l;red cross\u object\stonspot; -> \l;titanium ore\u object\titanore;.
+- a \l;yellow circle\u object\uranspot; -> \l;uranium ore\u object\uranore;.
+- a \l;green cross\u object\enerspot; -> energy deposit, useful for a \l;power station\u object\station; or a \l;power plant\u object\energy;.
+
+Tracked bots can ascend steep inclinations but they are quite slow and use a lot of energy. On flat ground for short distances, a \l;wheeled sniffer\u object\botsr; is a better option. When it is possible to build \l;winged bots\u object\botsj;, these represent the best solution for long distances.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the sniffing arm, use \c;\l;sniff\u cbot\sniff;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;TrackedSniffer\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/botshld.txt b/help/F/object/botshld.txt
new file mode 100644
index 00000000..d1bcdaa8
--- /dev/null
+++ b/help/F/object/botshld.txt
@@ -0,0 +1,18 @@
+\b;\button 157; Shielder
+\image botshld 8 8;
+Tracked bot designed to protect and defend against all \l;enemy\u object\mother; attacks within a perimeter of 10 to 25 meters. The individual shields of bots and buildings are re-energized through the shielder's defensive actions. This bot is the only way to get through narrow passages adorned with poisonous green mushrooms.
+
+A \l;regular power cell\u object\power; allows for a 20-second activity span with a radius of 25 meters, much too short in most cases. A \l;nuclear power cell\u object\atomic; is of course more suited to this bot.
+
+The energy consumption is proportional to the radius of the protective sphere. With a radius of 10 meters, the bot can work 2.5 times longer than with the maximum radius of 25 meters.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the deployment of the shield, use \c;\l;shield\u cbot\shield;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;Shielder\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/botsj.txt b/help/F/object/botsj.txt
new file mode 100644
index 00000000..9085244f
--- /dev/null
+++ b/help/F/object/botsj.txt
@@ -0,0 +1,22 @@
+\b;\button 142; Winged Sniffer
+\image botsj 8 8;
+Jet propelled flying bot equipped to prospect the geological structure of the subsoil. Whenever it locates something of use, the sniffer lays down the following marks:
+
+- a \l;red cross\u object\stonspot; -> \l;titanium ore\u object\titanore;.
+- a \l;yellow circle\u object\uranspot; -> \l;uranium ore\u object\uranore;.
+- a \l;green cross\u object\enerspot; -> energy deposit, useful for a \l;power station\u object\station; or a \l;power plant\u object\energy;.
+
+The display at the bottom of your screen indicates the temperature of the reactor. Keep an eye on it. If the reactor overheats, the engine stops and the bot crashes.
+
+Winged bots can fly across natural obstacles such as mountains or lakes but their energy supply uses up quickly. They're slow on the ground. To cover a short distance that will not call for flying, it is recommended to use a \l;wheeled sniffer\u object\botsr; instead.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;jet\u cbot\jet;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the sniffing arm, use \c;\l;sniff\u cbot\sniff;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WingedSniffer\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/botsr.txt b/help/F/object/botsr.txt
new file mode 100644
index 00000000..9e5609c8
--- /dev/null
+++ b/help/F/object/botsr.txt
@@ -0,0 +1,20 @@
+\b;\button 140; Wheeled Sniffer
+\image botsr 8 8;
+Wheeled bot equipped to prospect the geological structure of the subsoil. Whenever it locates something of use, the sniffer lays down the following marks:
+
+- a \l;red cross\u object\stonspot; -> \l;titanium ore\u object\titanore;.
+- a \l;yellow circle\u object\uranspot; -> \l;uranium ore\u object\uranore;.
+- a \l;green cross\u object\enerspot; -> energy deposit, useful for a \l;power station\u object\station; or a \l;power plant\u object\energy;.
+
+Wheels constitute a standard, fast and energy-saving mode of propulsion, which is perfectly adapted for a relatively flat terrain. Whenever the terrain gets sloped, it is advised to use a \l;winged sniffer\u object\botsj; instead, or, if this is impossible, a \l;tracked sniffer\u object\botsc;.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the sniffing arm, use \c;\l;sniff\u cbot\sniff;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;WheeledSniffer\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/botss.txt b/help/F/object/botss.txt
new file mode 100644
index 00000000..b2bb5b53
--- /dev/null
+++ b/help/F/object/botss.txt
@@ -0,0 +1,20 @@
+\b;\button 152; Legged Sniffer
+\image botss 8 8;
+Ant-legged creeping bot equipped to prospect the geological structure of the subsoil. Whenever it locates something of use, the sniffer lays down the following marks:
+
+- a \l;red cross\u object\stonspot; -> \l;titanium ore\u object\titanore;.
+- a \l;yellow circle\u object\uranspot; -> \l;uranium ore\u object\uranore;.
+- a \l;green cross\u object\enerspot; -> energy deposit, useful for a \l;power station\u object\station; or a \l;power plant\u object\energy;.
+
+A moving legged shooter uses up half as much energy as a \l;wheeled sniffer\u object\botsr;. A legged bot is also perfectly adapted to climb the steepest slopes.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the sniffing arm, use \c;\l;sniff\u cbot\sniff;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;LeggedSniffer\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/botsub.txt b/help/F/object/botsub.txt
new file mode 100644
index 00000000..4b9f8959
--- /dev/null
+++ b/help/F/object/botsub.txt
@@ -0,0 +1,16 @@
+\b;\button 149; Subber
+\image botsub 8 8;
+Amphibious tracked bot equipped with an operating claw. The subber is the only bot capable of moving and running operations underwater.
+
+It is best to check the \l;power cell\u object\power; readings prior to immersion since replacing or recharging it underwater is impossible. The subber can only pick up objects from the ground, as opposed to, for example, a battery from the back of another bot.
+
+\t;Programming
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the operating claw, use \c;\l;grab\u cbot\grab;\n; and \c;\l;drop\u cbot\drop;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;Subber\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/bottarg.txt b/help/F/object/bottarg.txt
new file mode 100644
index 00000000..4807d784
--- /dev/null
+++ b/help/F/object/bottarg.txt
@@ -0,0 +1,11 @@
+\b;\button 173; Target Bot
+\image bottarg 8 8;
+Wheeled bot intended solely for target practice. It is autonomous and its trajectory is dependant upon the nature of the exercise.
+
+Note that target bots, loaded as they are with \l;TNT\u object\tnt;, are extremely sensitive to shocks.
+
+\t;Object \l;Category\u cbot\category;
+\c;TargetBot\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/bottr.txt b/help/F/object/bottr.txt
new file mode 100644
index 00000000..65f185c6
--- /dev/null
+++ b/help/F/object/bottr.txt
@@ -0,0 +1,12 @@
+\b;\button 158; Practice Bot
+\image bottr 8 8;
+Wheeled bot intended solely for training and practice. Its only purpose is to help you get accustomed to the programming of the bots' various ground movements.
+
+\t;Instructions
+To program the bot's movements, use the following commands: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;PracticeBot\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/bottump.txt b/help/F/object/bottump.txt
new file mode 100644
index 00000000..8398f770
--- /dev/null
+++ b/help/F/object/bottump.txt
@@ -0,0 +1,18 @@
+\b;\button 146; Thumper
+\image bottump 8 8;
+Tracked bot designed to hit the ground with enormous force. The purpose of the thumping is to turn \l;ants\u object\ant; and \l;spiders\u object\spider; belly up within a radius of 100 meters. An insect on its back is not dead but will struggle to get right side up again. After approximately 60 seconds of effort, it will usually succeed.
+
+To visualize the zone of impact, hit the button \button 41;. Little red dots outline the circular zone for 20 seconds.
+
+The bot uses up a large amount of power. A thump will drain 2/5ths of a \l;regular power cell\u object\power;.
+
+\t;Instructions
+To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+To program the thumping, use \c;\l;thump\u cbot\thump;\n;.
+
+\t;Object \l;Category\u cbot\category;
+\c;Thumper\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/bullet.txt b/help/F/object/bullet.txt
new file mode 100644
index 00000000..5df1efe5
--- /dev/null
+++ b/help/F/object/bullet.txt
@@ -0,0 +1,12 @@
+\b;Organic Matter
+\image bullet 4 4;
+The organic matter is the insects' secretion. \l;Wasps\u object\wasp; often use balls of organic matter to bombard you. You should perhaps try to get hold of some since it could allow you, given the necessary \l;analysis\u object\labo;, to discover new and strange technologies that will improve the efficiency of your bots.
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Object \l;Category\u cbot\category;
+\c;OrgaMatter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/captor.txt b/help/F/object/captor.txt
new file mode 100644
index 00000000..d13df6f7
--- /dev/null
+++ b/help/F/object/captor.txt
@@ -0,0 +1,25 @@
+\b;\button 174; Power Captor
+\image captor 8 8;
+The power captor acts as both a lightning conductor and a power converter.
+It offers protection within a radius of 50 meters against the perilous lightning bolts of magnetic storms. Additionally, when the captor is hit by lightning, all bots and \l;power cells\u object\power; placed underneath, with the exception of the \l;nuclear power cells\u object\atomic;, are recharged.
+
+To visualize the zone shielded by a power captor, select it then hit the button \button 41;. Red dots outline the circular zone for 20 seconds.
+
+In the vastness of space, few planets suffer from magnetic storms. Among the ones you'll be visiting, only Orpheon is subject to this phenomenon.
+
+Note that your \l;spaceship\u object\base; can also act as a lightning conductor. However it will not recharge power cells.
+
+\t;Requirements for building
+Any flat surface of at least 10 meters wide.
+
+\t;Power source
+Lightning bolts.
+
+\t;Duration of operation
+1 second.
+
+\t;Object \l;Category\u cbot\category;
+\c;PowerCaptor\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/convert.txt b/help/F/object/convert.txt
new file mode 100644
index 00000000..49836688
--- /dev/null
+++ b/help/F/object/convert.txt
@@ -0,0 +1,24 @@
+\b;\button 162; Converter
+\image convert 8 8;
+This building was designed to convert chunks of \l;titanium ore\u object\titanore; into usable \l;titanium cubes\u object\titan;. All \l;you\u object\human; need to do is place a chunk at the center of the platform and step back. The converter takes care of the rest.
+
+\t;Requirements for building
+Any flat surface of at least 6 meters wide.
+
+\t;Input
+Titanium ore.
+
+\t;Output
+Titanium.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+15 seconds.
+
+\t;Object \l;Category\u cbot\category;
+\c;Converter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/derrick.txt b/help/F/object/derrick.txt
new file mode 100644
index 00000000..4eea1369
--- /dev/null
+++ b/help/F/object/derrick.txt
@@ -0,0 +1,29 @@
+\b;\button 161; Derrick
+\image derrick 8 8;
+The derrick is intended for the extraction of raw materials.
+
+In order to determine the best site on which to erect a derrick, a \l;sniffer\u object\botsr; should be used to prospect the subsoil. The marks it lays down provide information about the specifics of what the derrick will be able to extract:
+
+- a \l;red cross\u object\stonspot; -> \l;titanium ore\u object\titanore;.
+- a \l;yellow circle\u object\uranspot; -> \l;uranium ore\u object\uranore;.
+
+\t;Requirements for building
+Any flat and geologically adequate surface of at least 2.5 meters wide.
+
+\t;Input
+Titanium or uranium ore in the subsoil.
+
+\t;Output
+Chunks of titanium or uranium ore.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+10 seconds for titanium and 30 for uranium.
+
+\t;Object \l;Category\u cbot\category;
+\c;Derrick\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/egg.txt b/help/F/object/egg.txt
new file mode 100644
index 00000000..d3e11e20
--- /dev/null
+++ b/help/F/object/egg.txt
@@ -0,0 +1,8 @@
+\b;Alien Egg
+The alien eggs are laid by the \l;Alien Queen\u object\mother;. After a short time, they will hatch and an \l;ant\u object\ant;, a \l;wasp\u object\wasp;, a \l;spider\u object\spider; or a \l;worm\u object\worm; will come out.
+
+\t;Object \l;Category\u cbot\category;
+\c;AlienEgg\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/energy.txt b/help/F/object/energy.txt
new file mode 100644
index 00000000..45a695bf
--- /dev/null
+++ b/help/F/object/energy.txt
@@ -0,0 +1,28 @@
+\b;\button 167; Power Plant
+\image energy 8 8;
+The power plant is a \l;power cell\u object\power; factory. It transforms a \l;titanium cube\u object\titan; into a regular power cell fully charged and ready for use.
+
+A power plant requires some energy in the subsoil. If the satellite report says that energy is available only at some places, you will need a \l;sniffer bot\u object\botsr; to prospect the subsoil. The marks it lays down provide information about the specifics of its findings: a \l;green cross\u object\enerspot; means that there is an energy deposit at this location beneath the surface, which is indispensable for the construction of a power plant or a \l;power station\u object\station;.
+
+If the large power cell at the base of the plant remains red after the construction is completed, this means that the site is not geologically adequate.
+
+\t;Requirements for building
+Any flat and geologically adequate surface of at least 4 meters wide.
+
+\t;Input
+Titanium.
+
+\t;Output
+Regular power cell.
+
+\t;Power source
+Subsoil energy.
+
+\t;Duration of operation
+12 seconds.
+
+\t;Object \l;Category\u cbot\category;
+\c;PowerPlant\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/enerspot.txt b/help/F/object/enerspot.txt
new file mode 100644
index 00000000..44bf6235
--- /dev/null
+++ b/help/F/object/enerspot.txt
@@ -0,0 +1,17 @@
+\b;Underground Energy Deposit
+\image enerspot 4 4;
+Whenever a \l;sniffer\u object\botsr; uncovers a source of energy in the subsoil, it lays down a green cross. The following buildings can be erected nearby :
+
+o \l;Power station\u object\station;
+o \l;Power plant\u object\energy;
+
+In order to prospect the subsoil you need a \l;sniffer bot\u object\botsr;, which can also discover \l;titanium ore\u object\titanore; deposits (indicated by a \l;red cross\u object\stonspot;) or \l;uranium ore\u object\uranore; deposits (indicated by a \l;yellow circle\u object\uranspot;).
+
+\t;Transport
+Impossible.
+
+\t;Object \l;Category\u cbot\category;
+\c;EnergySite\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/exchange.txt b/help/F/object/exchange.txt
new file mode 100644
index 00000000..2cb763a7
--- /dev/null
+++ b/help/F/object/exchange.txt
@@ -0,0 +1,31 @@
+\b;\button 172; Information Exchange Post
+\image info 8 8;
+This building stores digital information. A post can contain up to 10 pieces of information, each one referenced by a name.
+For example, a post can contain 3 informations¦:\c;
+\tab;"Position.x" 23.45
+\tab;"Position.y" -102.70
+\tab;"Quantity" 3.00
+\n;
+To put new information, you must execute the command \c;\l;send\u cbot\send;\n;.
+To read information from a post, you must execute the command \c;\l;receive\u cbot\receive;\n;.
+
+\t;Requirements for building
+Any flat surface of at least 2.5 meters wide.
+
+\t;Input
+None.
+
+\t;Output
+Digital information.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+1 second.
+
+\t;Object \l;Category\u cbot\category;
+\c;ExchangePost\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/factory.txt b/help/F/object/factory.txt
new file mode 100644
index 00000000..cc86ca11
--- /dev/null
+++ b/help/F/object/factory.txt
@@ -0,0 +1,33 @@
+\b;\button 160; Bot Factory
+\image factory 8 8;
+This building is intended for the manufacturing of bots using \l;titanium\u object\titan;.
+
+1) Place the titanium cube inside the factory.
+2) Step back out.
+3) Select the factory.
+4) Click on the button showing the diagram of the bot you want the factory to assemble (e.g. \button 137; for a \l;wheeled grabber\u object\botgr;).
+
+The finished bot does not include an onboard \l;power cell\u object\power;. You'll need to supply it with one for it to be able to leave the factory.
+
+The list of feasible bots will depend upon the research your \l;research center\u object\research; has completed at this time.
+
+\t;Requirements for building
+Any flat surface of at least 7.5 meters wide.
+
+\t;Input
+Titanium.
+
+\t;Output
+Completed bot.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+15 seconds.
+
+\t;Object \l;Category\u cbot\category;
+\c;BotFactory\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/flag.txt b/help/F/object/flag.txt
new file mode 100644
index 00000000..4740d2ff
--- /dev/null
+++ b/help/F/object/flag.txt
@@ -0,0 +1,22 @@
+\b;Colored Flag
+\image flag 4 4;
+The colored flags are helpful to mark strategic locations or positions that \l;you\u object\human; will need to find again. Flags appear on the mini-map in the shape of a cross of the same color as the flag.
+
+Use the buttons \button 118; and \button 119; to plant and remove flags, the colors of which you can choose with the buttons above.
+
+When your mini-map is out of order, the fact that flags follow the direction of the wind can help you to find your way and not to walk around in circles.
+
+When programming, you can use flags to give a bot a reference to a certain position: the instruction \c;\l;radar\u cbot\radar;\n; allows bots to know the exact position of a flag of a given color.
+
+\t;Transport
+Impossible.
+
+\t;Object \l;Category\u cbot\category;
+\c;BlueFlag\n;
+\c;RedFlag\n;
+\c;GreenFlag\n;
+\c;YellowFlag\n;
+\c;VioletFlag\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/goal.txt b/help/F/object/goal.txt
new file mode 100644
index 00000000..d59fa12f
--- /dev/null
+++ b/help/F/object/goal.txt
@@ -0,0 +1,8 @@
+\b;Finishing Pad
+The finishing pad is an objective to be reached in some exercises.
+
+\t;Object \l;Category\u cbot\category;
+\c;GoalArea\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/human.txt b/help/F/object/human.txt
new file mode 100644
index 00000000..399384af
--- /dev/null
+++ b/help/F/object/human.txt
@@ -0,0 +1,19 @@
+\b;\button 136; Astronaut
+\image human 8 8;
+The astronaut is you within the game.
+
+If you die, the mission immediately fails.
+
+You can construct buildings with the help of the neutron gun holstered to your survival kit. The survival kit allows you, in most missions, to fly, thanks to the reactor placed underneath, or to swim with no time limit. You can carry most objects but the weight will slow down your movements considerably. Flying, swimming and walking underwater are also made impossible if you are carrying an object. The use of a \l;grabber\u object\botgr; or a \l;subber\u object\botsub; is advised for tasks such as these.
+
+You cannot carry \l;uranium ore\u object\uranore; because of the risks attached to radioactivity.
+
+A special button \button 111; allows you to ensure that the ground around you is flat. This is important since building is only possible on a flat surface. A flat surface is designated green while a sloping one is red.
+
+A button \button 118; allows you to mark a location with \l;flags\u object\flag; of various colors. This can help you not to get lost, to find important positions again, or to indicate a position to a bot. 5 flags of 5 different colors are at your disposal. You can remove a flag by using the next button \button 119; and store it for further use.
+
+\t;Object \l;Category\u cbot\category;
+\c;Me\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/huston.txt b/help/F/object/huston.txt
new file mode 100644
index 00000000..8bcaa64e
--- /dev/null
+++ b/help/F/object/huston.txt
@@ -0,0 +1,11 @@
+\b;\button 176; Mission Control
+\image huston 8 8;
+Earth control center for all \l;your\u object\human; space missions. Though still named after the well-known mission control of the old days, "Houston" is actually located in the middle of the Nevada Desert, the new center for space exploration activities.
+
+The Mission Control Center watches over you day and night, and a whole team of scientists and engineers are working hard trying to find a solution to all the problems that you encounter.
+
+\t;Object \l;Category\u cbot\category;
+\c;Houston\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/key.txt b/help/F/object/key.txt
new file mode 100644
index 00000000..e21d292f
--- /dev/null
+++ b/help/F/object/key.txt
@@ -0,0 +1,17 @@
+\b;Keys A, B, C and D
+\image key 4 4;
+The keys give \l;you\u object\human; access to the \l;vault\u object\safe;. You'll need 4 of them.
+
+o Key A, blue and triangle-shaped
+o Key B, red and pentagon-shaped
+o Key C, green and shaped like a 6-pointed star
+o Key D, yellow and circular
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Objects \l;Category\u cbot\category;
+\c;KeyA\n;, \c;KeyB\n;, \c;KeyC\n; and \c;KeyD\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/labo.txt b/help/F/object/labo.txt
new file mode 100644
index 00000000..d6a03462
--- /dev/null
+++ b/help/F/object/labo.txt
@@ -0,0 +1,24 @@
+\b;\button 166; Autolab
+\image labo 8 8;
+The lab is intended for the analysis of \l;organic matter\u object\bullet;. It will help \l;you\u object\human; become familiar with the insects' very own technology and perhaps even use it to your advantage. Place a chunk of \l;organic matter\u object\bullet; on the platform, select the lab, and click the button corresponding to the desired research program.
+
+\t;Requirements for building
+Any flat surface of at least 6 meters wide.
+
+\t;Input
+Organic matter.
+
+\t;Output
+New and improved technologies.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+20 seconds.
+
+\t;Object \l;Category\u cbot\category;
+\c;AutoLab\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/lrv.txt b/help/F/object/lrv.txt
new file mode 100644
index 00000000..e4271afc
--- /dev/null
+++ b/help/F/object/lrv.txt
@@ -0,0 +1,9 @@
+\b;Apollo Lunar Roving Vehicle
+
+
+
+\c;< no archive picture available >\n;
+
+
+
+The Lunar Jeep (LRV) was brought to the moon on July 30th 1971 by the astronauts David Scott and Jim Irwin from Apollo mission 15. Its batteries are still partly charged, which allows you to remote control it. But this old-fashioned technology will be of no use to you.
diff --git a/help/F/object/mine.txt b/help/F/object/mine.txt
new file mode 100644
index 00000000..6da1b95c
--- /dev/null
+++ b/help/F/object/mine.txt
@@ -0,0 +1,14 @@
+\b;Mine
+\image mine 8 8;
+Mines were a defensive weapons system used by the first expedition. Because of the dangers this system causes for the mission itself, they are no longer used in your expedition. In some exercises mines are used to learn how to avoid obstacles. There is no way to remove them or to create new ones.
+
+With a \l;practice bot\u object\bottr;, don't get any closer than 2 meters to the position given by the instruction \l;radar\u cbot\radar;.
+
+\t;Transport
+Impossible.
+
+\t;Object \l;Category\u cbot\category;
+\c;Mine\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/mother.txt b/help/F/object/mother.txt
new file mode 100644
index 00000000..bb26c86a
--- /dev/null
+++ b/help/F/object/mother.txt
@@ -0,0 +1,15 @@
+\b;Alien Queen
+\image mother 8 8;
+This huge insect is the mother of them all. It lays \l;eggs\u object\egg; and from these eggs will hatch all the various kinds of insects \l;you\u object\human;'re likely to encounter. All of them are extremely hazardous to yourself and your mission. The queen's protective shell is particularly resistant to attack.
+
+It gives birth to the following insects :
+o \l;ants\u object\ant;
+o \l;spiders\u object\spider;
+o \l;wasps\u object\wasp;
+o \l;worms\u object\worm;
+
+\t;Object \l;Category\u cbot\category;
+\c;AlienQueen\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/nest.txt b/help/F/object/nest.txt
new file mode 100644
index 00000000..c14e16f2
--- /dev/null
+++ b/help/F/object/nest.txt
@@ -0,0 +1,8 @@
+\b;Nest
+The alien nest is an odd structure out of which \l;organic matter\u object\bullet; erupts on a regular basis. \l;Wasps\u object\wasp; visit nests regularly to collect ammunition that they will use to bombard your bots, buildings and yourself.
+
+\t;Object \l;Category\u cbot\category;
+\c;AlienNest\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/nuclear.txt b/help/F/object/nuclear.txt
new file mode 100644
index 00000000..6d06b3f3
--- /dev/null
+++ b/help/F/object/nuclear.txt
@@ -0,0 +1,24 @@
+\b;\button 170; Nuclear Plant
+\image nuclear 8 8;
+The nuclear plant is a \l;nuclear power cell\u object\atomic; factory. It transforms a chunk of \l;uranium ore\u object\uranore; into a \l;nuclear power cell\u object\atomic; fully charged and ready for use.
+
+\t;Requirements for building
+Any flat surface of at least 10 meters wide.
+
+\t;Input
+Uranium ore.
+
+\t;Output
+Nuclear power cell.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+30 seconds.
+
+\t;Object \l;Category\u cbot\category;
+\c;NuclearPlant\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/power.txt b/help/F/object/power.txt
new file mode 100644
index 00000000..03e2bc2b
--- /dev/null
+++ b/help/F/object/power.txt
@@ -0,0 +1,16 @@
+\b;Regular Power Cell
+\image power 4 4;
+A power cell supplies the bots and a few buildings with energy.
+
+An entirely red power cell is empty. The green section indicates the remaining capacity. A power cell can be recharged using a \l;power station\u object\station;. A \l;power plant\u object\energy; is needed to produce a new and fully charged power cell.
+
+The capacity of a regular power cell is 100 times smaller than that of a \l;nuclear power cell\u object\atomic; produced by a \l;nuclear plant\u object\nuclear; using \l;uranium ore\u object\uranore;.
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Object \l;Category\u cbot\category;
+\c;PowerCell\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/radar.txt b/help/F/object/radar.txt
new file mode 100644
index 00000000..453f2ea9
--- /dev/null
+++ b/help/F/object/radar.txt
@@ -0,0 +1,26 @@
+\b;\button 168; Radar
+\image radar 8 8;
+The radar indicates the direction of the nearest \l;enemy\u object\mother;. Moreover, the information given by the radar allows the mini-map at the bottom right corner of your screen to show the position of all bots, buildings and enemies as small squares and triangles of different colors.
+
+Radar stations also act as relays for communication with the Earth from distant planets.
+
+\t;Requirements for building
+Any flat surface of at least 2.5 meters wide.
+
+\t;Input
+None.
+
+\t;Output
+Information for the mini-map.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+Constant.
+
+\t;Object \l;Category\u cbot\category;
+\c;RadarStation\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/repair.txt b/help/F/object/repair.txt
new file mode 100644
index 00000000..4adac267
--- /dev/null
+++ b/help/F/object/repair.txt
@@ -0,0 +1,24 @@
+\b;\button 169; Repair Center
+\image repair 8 8;
+The repair center regenerates the shield on damaged bots. A bot's shield will absorb a certain amount of \l;enemy\u object\mother; hits. If there is no shield left, this means that the bot itself, when hit next, will be destroyed.
+
+\t;Requirements for building
+Any flat surface of at least 6 meters wide.
+
+\t;Input
+Damaged bot.
+
+\t;Output
+Repaired bot with regenerated shield.
+
+\t;Power source
+None.
+
+\t;Duration of operation
+A few seconds depending on the repair job to be done.
+
+\t;Object \l;Category\u cbot\category;
+\c;RepairCenter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/research.txt b/help/F/object/research.txt
new file mode 100644
index 00000000..47e66333
--- /dev/null
+++ b/help/F/object/research.txt
@@ -0,0 +1,27 @@
+\b;\button 163; Research Center
+\image research 8 8;
+The research center is an enormous computer. Its most useful feature is its ability to come up with new technologies as well as improvements on existing ones regarding buildings and bots in particular.
+
+The 65'536 processors it contains use up a large amount of energy.
+Each research program necessitates a brand new and fully charged \l;power cell\u object\power;
+
+\t;Requirements for building
+Any flat surface of at least 5 meters wide.
+
+\t;Input
+Request for research.
+
+\t;Output
+New and improved technologies.
+
+\t;Power source
+Regular or nuclear power cell.
+
+\t;Duration of operation
+Between 9 seconds and 1 minute depending on the research.
+
+\t;Object \l;Category\u cbot\category;
+\c;ResearchCenter\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/safe.txt b/help/F/object/safe.txt
new file mode 100644
index 00000000..79bc849e
--- /dev/null
+++ b/help/F/object/safe.txt
@@ -0,0 +1,9 @@
+\b;\button 175; Vault
+\image safe 8 8;
+This dome-shaped building was conceived by the first expedition. Its purpose was to offer protection to a new type of advanced bot. To protect it from insect attacks, the vault was locked by 4 \l;keys\u object\key;. Only after you find the 4 keys and place each one of them on their corresponding slots will you be given access to the bot.
+
+\t;Object \l;Category\u cbot\category;
+\c;Vault\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/spider.txt b/help/F/object/spider.txt
new file mode 100644
index 00000000..7e65b27b
--- /dev/null
+++ b/help/F/object/spider.txt
@@ -0,0 +1,9 @@
+\b;Spider
+\image spider 8 8;
+Spiders work like suicide commandoes: whenever a spider gets within a close enough range of its target, it inflates its abdomen and bursts into a multitude of tiny burning fragments. These fragments will set fire to everything they get in contact with. Luckily the spider won't survive.
+
+\t;Object \l;Category\u cbot\category;
+\c;AlienSpider\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/start.txt b/help/F/object/start.txt
new file mode 100644
index 00000000..a4523e12
--- /dev/null
+++ b/help/F/object/start.txt
@@ -0,0 +1,8 @@
+\b;Starting Pad
+The starting pad is a platform used in some exercises.
+
+\t;Object \l;Category\u cbot\category;
+\c;StartArea\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/station.txt b/help/F/object/station.txt
new file mode 100644
index 00000000..17ad780d
--- /dev/null
+++ b/help/F/object/station.txt
@@ -0,0 +1,28 @@
+\b;\button 164; Power Station
+\image station 8 8;
+The power station extracts energy from the underground and recharges \l;regular power cells\u object\power; through induction. To recharge a power cell loaded at the back of a bot, just move the bot to the center of the platform and wait a few seconds. A \l;power cell\u object\power; carried at arm's length can also be recharged. \l;Nuclear power cells\u object\atomic; are non-rechargeable.
+
+A power plant needs some energy in the subsoil. If the satellite report says that energy is available only at some places, you will need a \l;sniffer bot\u object\botsr; to prospect the subsoil. The marks it lays down provide information about the specifics of its findings: a \l;green cross\u object\enerspot; means that there is an energy deposit at this location beneath the surface, which is indispensable to the construction of a power station or a \l;power plant\u object\energy;.
+
+The large power cell at the top of the station remaining red after the construction is completed can only mean that the site is not geologically adequate.
+
+\t;Requirements for building
+Any flat and geologically adequate surface at least 6 meters wide.
+
+\t;Input
+Empty power cell.
+
+\t;Output
+Recharged power cell.
+
+\t;Power source
+Subsoil energy.
+
+\t;Duration of operation
+A few seconds, depending on the capacity to be recharged.
+
+\t;Object \l;Category\u cbot\category;
+\c;PowerStation\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/stonspot.txt b/help/F/object/stonspot.txt
new file mode 100644
index 00000000..2c9f4deb
--- /dev/null
+++ b/help/F/object/stonspot.txt
@@ -0,0 +1,14 @@
+\b;Underground Titanium Deposit
+\image stonspot 4 4;
+A red cross reveals the presence of a stratum of \l;titanium ore\u object\titanore; in the subsoil. It will be possible to extract it using a \l;derrick\u object\derrick;.
+
+A \l;sniffer\u object\botsr; will lay down a red cross each time it uncovers a deposit. \l;Sniffer bots\u object\botsr; can also detect the presence of \l;uranium ore\u object\uranore; as indicated by a \l;yellow circle\u object\uranspot; and of energy as indicated by a \l;green cross\u object\enerspot;.
+
+\t;Transport
+Impossible.
+
+\t;Object \l;Category\u cbot\category;
+\c;TitaniumSite\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/titan.txt b/help/F/object/titan.txt
new file mode 100644
index 00000000..2e0d306d
--- /dev/null
+++ b/help/F/object/titan.txt
@@ -0,0 +1,14 @@
+\b;Titanium
+\image titan 4 4;
+Titanium is indispensable for the construction of buildings, \l;bots\u object\factory; and \l;regular power cells\u object\energy;. There is usually some left on the \l;spaceship\u object\base; when you embark on a new mission.
+
+If more is needed, you'll have to \l;convert\u object\convert; chunks of \l;titanium ore\u object\titanore; into usable titanium cubes.
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Object \l;Category\u cbot\category;
+\c;Titanium\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/titanore.txt b/help/F/object/titanore.txt
new file mode 100644
index 00000000..a42551d3
--- /dev/null
+++ b/help/F/object/titanore.txt
@@ -0,0 +1,14 @@
+\b;Titanium Ore
+\image titanore 4 4;
+\l;Titanium\u object\titan; is indispensable for the construction of buildings, \l;bots\u object\factory; and \l;regular power cells\u object\energy;. The titanium \l;you\u object\human; see in its usable, cube shaped form has been \l;converted\u object\convert; from raw chunks of titanium ore.
+
+Titanium ore can be found either directly on the surface or in the subsoil. In the latter case, it needs to be first located and identified by a \l;sniffer\u object\botsr;, then extracted using a \l;derrick\u object\derrick;. If a sniffer identifies a titanium ore deposit, it lays down a \l;red cross\u object\stonspot;.
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Object \l;Category\u cbot\category;
+\c;TitaniumOre\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/tnt.txt b/help/F/object/tnt.txt
new file mode 100644
index 00000000..264d5acf
--- /dev/null
+++ b/help/F/object/tnt.txt
@@ -0,0 +1,12 @@
+\b; Explosive (TNT)
+\image tnt 4 4;
+A TNT charge is extremely sensitive. You should approach it with caution so as not to hit it or give it any kind of shock. The risk is minimized once the explosive is within a \l;grabber\u object\botgr;'s grasp.
+
+\t;Transport
+All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
+
+\t;Object \l;Category\u cbot\category;
+\c;TNT\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/tower.txt b/help/F/object/tower.txt
new file mode 100644
index 00000000..27443a6d
--- /dev/null
+++ b/help/F/object/tower.txt
@@ -0,0 +1,22 @@
+\b;\button 165; Defense Tower
+\image tower 8 8;
+The tower constitutes the best defense against \l;enemy\u object\mother; attacks, whether they originate on the ground or from the skies.
+
+The tower requires either a \l;regular\u object\power; or a \l;nuclear\u object\atomic; power cell. A regular power cell provides a capacity for 8 shots. A nuclear power cell is of course preferable. The tower starts blinking when it runs out of power.
+
+The range is 40 meters. To visualize it, select the tower then hit the button \button 41;. Red dots outline the circular zone for 20 seconds.
+
+\t;Requirements for building
+Any flat surface of at least 3.5 meters wide.
+
+\t;Power source
+Regular or nuclear power cell.
+
+\t;Duration of operation
+1 second.
+
+\t;Object \l;Category\u cbot\category;
+\c;DefenseTower\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/uranore.txt b/help/F/object/uranore.txt
new file mode 100644
index 00000000..354f2a25
--- /dev/null
+++ b/help/F/object/uranore.txt
@@ -0,0 +1,16 @@
+\b;Uranium Ore
+\image uranore 4 4;
+Uranium ore is essential to the production of \l;nuclear power cells\u object\atomic;.
+
+It is to be found on the surface or in the subsoil. In the latter case, it needs to be first located and identified by a \l;sniffer\u object\botsr;, then extracted using a \l;derrick\u object\derrick;. If a sniffer identifies a deposit of uranium ore, it lays down a \l;yellow circle\u object\uranspot;.
+
+A \l;nuclear plant\u object\nuclear; will then take care of converting the chunk into a new and fully charged \l;nuclear power cell\u object\atomic;.
+
+\t;Transport
+All \l;grabbers\u object\botgr;. Due to its radioactivity, the \l;astronaut\u object\human; can not transport it.
+
+\t;Object \l;Category\u cbot\category;
+\c;UraniumOre\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/uranspot.txt b/help/F/object/uranspot.txt
new file mode 100644
index 00000000..2f90e070
--- /dev/null
+++ b/help/F/object/uranspot.txt
@@ -0,0 +1,15 @@
+\b; Underground Uranium Deposit
+\image uranspot 4 4;
+A yellow circle reveals the presence of a stratum of \l;uranium ore\u object\uranore; in the subsoil. It will be possible to extract it using a \l;derrick\u object\derrick;.
+
+A \l;sniffer\u object\botsr; will lay down a yellow circle each time it uncovers a deposit. \l;Sniffer bots\u object\botsr; can also detect the presence of \l;titanium ore\u object\titanore; as indicated by a \l;red cross\u object\stonspot; and of energy as indicated by a \l;green cross\u object\enerspot;.
+
+
+\t;Transport
+Impossible.
+
+\t;Object \l;Category\u cbot\category;
+\c;UraniumSite\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/wasp.txt b/help/F/object/wasp.txt
new file mode 100644
index 00000000..19c70649
--- /dev/null
+++ b/help/F/object/wasp.txt
@@ -0,0 +1,11 @@
+\b;Wasp
+\image wasp 8 8;
+The wasp is a formidable enemy, very hard to shoot down since its flying is particularly swift. Wasps carry balls of \l;organic matter\u object\bullet; that they will hurl at your bots and buildings and at yourself from above.
+
+The \l;defense tower\u object\tower; is the easiest way to get rid of them.
+
+\t;Object \l;Category\u cbot\category;
+\c;AlienWasp\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/waypoint.txt b/help/F/object/waypoint.txt
new file mode 100644
index 00000000..e3d322c0
--- /dev/null
+++ b/help/F/object/waypoint.txt
@@ -0,0 +1,12 @@
+\b;Checkpoint
+\image waypoint 4 4;
+In the exercises, blue crosses indicate positions that have to be crossed. They disappear as soon as a \l;practice bot\u object\bottr; crosses them.
+
+\t;Transport
+Impossible.
+
+\t;Object \l;Category\u cbot\category;
+\c;WayPoint\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/worm.txt b/help/F/object/worm.txt
new file mode 100644
index 00000000..8644162b
--- /dev/null
+++ b/help/F/object/worm.txt
@@ -0,0 +1,11 @@
+\b;Worm
+\image worm 8 8;
+Worms transmit viruses to programmed bots. The virus alters the programming to such an extent that the bot either functions in a very erratic way or stops functioning altogether.
+
+Worms live in the subsoil but sometimes emerge and crawl on the surface. When they are underground they are undetectable and indestructible.
+
+\t;Object \l;Category\u cbot\category;
+\c;AlienWorm\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/object/wreck.txt b/help/F/object/wreck.txt
new file mode 100644
index 00000000..dd0315e6
--- /dev/null
+++ b/help/F/object/wreck.txt
@@ -0,0 +1,10 @@
+\b;Derelict bot
+A derelict bot is what's left of a bot after it has been disabled by a \l;spider\u object\spider; or by friendly fire.
+
+A \l;recycler\u object\botrecy; can convert a derelict bot back into a reusable \l;titanium cube\u object\titan;.
+
+\t;Object \l;Category\u cbot\category;
+\c;Wreck\n;
+
+\t;See also
+\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/F/tant1.txt b/help/F/tant1.txt
new file mode 100644
index 00000000..950b9bac
--- /dev/null
+++ b/help/F/tant1.txt
@@ -0,0 +1,16 @@
+\b;Objective
+As a defense against several giant ants attacking from the north, rotate the bot when shooting in order to perform barrage fire.
+
+\t;Program
+When you are radio-guiding a bot, you can rotate the cannon during the burst in order to sweep a whole zone. You can also do this when programming the bot, but you have to turn the whole bot with the instruction \c;\l;motor\u cbot\motor;( , )\n;. This instruction asks for two numbers: the speed of the left-hand motor, and the speed of the right-hand motor. These numbers must range between -1 and +1.\c; motor(1,1);\n; moves the bot forward with maximum speed (both motors at full power).\c; motor(-1,-1);\n; moves the bot backward with maximum speed.\c; motor(1,0.9);\n; moves the bot forward with a slight turn to the right: the left-hand motor turns a little faster than the right-hand motor. And \c;motor(1,-1);\n; will turn the bot clockwise on the spot: the left-hand motor moves forward, the right-hand motor moves backward.
+
+After a \l;motor\u cbot\motor; instruction the motors will keep this speed until the next \c;motor\n;, \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n; or \c;\l;goto\u cbot\goto;\n; instruction. For example, if you perform a rotation on the spot with \c;motor(1,-1);\n; and afterward you shoot with \c;fire(1);\n;, the bot will continue to turn during the burst, and will sweep a whole zone.
+
+The ants attack from the north. In order to sweep the whole zone north of the bot, first turn 90 degrees left with \c;turn(90);\n;, then repeat always with \c;\l;while\u cbot\while; (true)\n; the following instructions:
+o rotate clockwise with \c;motor(1,-1);\n;
+o a 2 seconds burst with \c;fire(2);\n;
+o rotate counter-clockwise with \c;motor(-1,1);\n;
+o a 2 seconds burst.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/tant2.txt b/help/F/tant2.txt
new file mode 100644
index 00000000..a775f77f
--- /dev/null
+++ b/help/F/tant2.txt
@@ -0,0 +1,33 @@
+\b;Objective
+As a defense against ants attacking from all sides, adapt the program \c;Spider2\n; in order to fly at a given altitude.
+
+\t;Program
+The program necessary for this task is somewhat similar to the program \c;Spider2\n; that looks for the closest ant, turns towards it and fires:
+\c;
+\s;extern void object::Spider2()
+\s;{
+\s; object item;
+\s;
+\s; while (true)
+\s; {
+\s; item = radar(AlienSpider);
+\s; turn(direction(item.position));
+\s; fire(1);
+\s; }
+\s;}
+\n;
+You can copy-paste it to the editor, and adapt it. Replace \c;radar(AlienSpider);\n; by \c;radar(AlienAnt);\n;, and write before the \c;while\n; loop another loop that activates the jet beneath the \l;winged shooter\u object\botfj; until the bot reaches an altitude of 20 meters.
+
+The instruction \c;\l;jet\u cbot\jet;()\n; controls the jet beneath winged bots. The number in brackets must range between \c;-1\n; and \c;1\n;.\c; jet(1);\n; moves the bot upward with maximum speed.\c; jet(-1);\n; moves the bot downward with maximum speed, and \c;jet(0);\n; stabilizes the altitude. As the bot must reach a precise altitude, move it upward slowly with \c;jet(0.2);\n;, wait until it has reached the desired height, then stabilize the altitude with \c;jet(0);\n;.
+
+In order to "wait until it has reached the desired height", we need a conditional loop: the instructions inside the loop will be repeated only as long as a certain condition is true. The altitude of the bot is given by \c;position.z\n;. We already saw that \c;position\n; gives the position of the bot. And a position is given by the three coordinates x, y and z: the x-axis is the axis west-east, the y-axis is the axis south-north, and the z-axis is the vertical axis. Therefore we must wait while \c;position.z\n; is smaller than 20:
+\c;
+\s; while (position.z < 20)
+\s; {
+\s; wait(0.2);
+\s; }
+\n;
+After waiting 0.2 seconds, the program will check if the altitude is still below 20 meters. If this is the case, it will wait a little more, if not, the program continues after the loop, i.e. after the closing brace \c;}\n;. Do not forget after the loop to stabilize the altitude with \c;jet(0);\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/tant3.txt b/help/F/tant3.txt
new file mode 100644
index 00000000..0798edad
--- /dev/null
+++ b/help/F/tant3.txt
@@ -0,0 +1,40 @@
+\b;Objective
+Adapt the program \c;Tower1\n; in order to avoid wasting energy when shooting at ants that are out of range.
+
+\t;Program
+The program \c;Tower1\n; shoots in the direction of the closest ant, even if it is still out of range:
+\c;
+\s;extern void object::Tour1()
+\s;{
+\s; object item;
+\s;
+\s; jet(0.2);
+\s; while(position.z < 20)
+\s; {
+\s; wait(0.2);
+\s; }
+\s; jet(0);
+\s;
+\s; while(true)
+\s; {
+\s; item = radar(AlienAnt);
+\s; turn(direction(item.position));
+\s; fire(1);
+\s; }
+\s;}
+\n;
+If the bot must perform the same task than before with only a \l;regular power cell\u object\power;, you can insert a loop that waits until the ant is close enough, i.e. until the ant is at less than 40 meters. Only one burst will be needed for every ant then.
+
+You can give the instruction \c;\l;radar\u cbot\radar();\n; more parameters (numbers) indicating where the radar should look for the ants. For example \c;radar(AlienAnt,0,360,0,40);\n; will only look for ants that are closer than 40 meters. The two first numbers tell the radar to search in all directions, the two last numbers tell the radar to detect only ants that are at a distance between 0 and 40 meters. If no ant is found that is closer than 40 meters, the instruction \c;\l;radar\u cbot\radar();\n; returns the value \c;null\n;. We can then write a conditional loop similar to the one written in the last exercise that waits as long as there is no ant closer than 40 meters:
+\c;
+\s; while (radar(AlienAnt, 0, 360, 0, 40) == null)
+\s; {
+\s; wait(0.2);
+\s; }
+\n;
+Notice that two equal signs "==" are needed to perform a comparison of equality.
+
+Just insert these lines before the instruction \c;fire(0);\n;, and the bot will wait before shooting until the ant is closer than 40 meters. Like this a regular power cell is enough to kill all ants.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/tant4.txt b/help/F/tant4.txt
new file mode 100644
index 00000000..7c58831f
--- /dev/null
+++ b/help/F/tant4.txt
@@ -0,0 +1,10 @@
+\b;Objectif
+Program a \l;winged shooter\u object\botfj; to hunt all ants in the region.
+
+\t;Program
+In this swamp, a wheeled or tracked shooter is of little use. And ants, in opposition to spiders, keep moving: you can not just turn towards the closest ant, move forward and shoot.
+
+The easiest way to solve the problem consists in flying at a height of 10 meters, aiming downward with \c;aim(-20);\n;, and approaching the ant with a conditional loop as long as the \l;distance\u cbot\dist; is greater than 20m. In this conditional loop, you must look for the closest ant, turn towards it, set the motors at full speed with \c;motor(1,1);\n;, and wait a little, for example 0.2 seconds. All these instructions must be repeated until the ant is at less than 20 meters. Then just shoot it.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/tant5.txt b/help/F/tant5.txt
new file mode 100644
index 00000000..e822f2fb
--- /dev/null
+++ b/help/F/tant5.txt
@@ -0,0 +1,52 @@
+\b;Objective
+Adapt the flying height of the \l;winged shooter\u object\botfj; to the terrain.
+
+\t;Program
+Here is one more time the program of the previous exercise that hunts ants:
+\c;
+\s;extern void object::JetFighter1()
+\s;{
+\s; object item;
+\s;
+\s; aim(-20);
+\s; jet(0.2);
+\s; while (position.z < 10)
+\s; {
+\s; wait(0.2);
+\s; }
+\s; jet(0);
+\s;
+\s; while (true)
+\s; {
+\s; while (radar(AlienAnt, 0, 360, 0, 20) == null)
+\s; {
+\s; item = radar(AlienAnt);
+\s; turn(direction(item.position));
+\s; motor(1,1);
+\s; wait(0.2);
+\s; }
+\s; fire(1);
+\s; }
+\s;}
+\n;
+The bot always stays at an altitude of 10m above sea level. This is not adapted to the mountainous terrain of the present exercise, the bot has got to adapt to the terrain. The best way to do so is to insert just before the \c;wait(0.2);\n; a test to see if the height above ground is too low or too high, and to react accordingly.
+
+We already saw that \c;position.z\n; gives the altitude above sea level. \c;\l;topo\u cbot\topo;(position)\n; gives the altitude of the ground at the position of the bot. If we want the bot to stay at an altitude between 6 and 9m above ground, we must treat the following cases: if \c;position.z-topo(position)\n; is smaller than 6, the bot must climb with \c;jet(1);\n;. If \c;position.z-topo(position)\n; is greater than 9, the bot must go down with \c;jet(-1);\n;. In order to program these tests, use the instruction \c;\l;if\u cbot\if;\n;, that executes the instructions in braces only once if the condition is true:
+\c;
+\s; jet(0);
+\s; if (position.z-topo(position) < 6)
+\s; {
+\s; jet(1);
+\s; }
+\s;
+\s; if (position.z-topo(position) > 9)
+\s; {
+\s; jet(-1);
+\s; }
+\n;
+Before starting the testing, stabilize the altitude with \c;jet(0);\n;: in case the height above ground lies between 6 and 9m, the bot must neither climb nor go down. If afterwards either \c;jet(1);\n; or \c;jet(-1);\n; is executed, it will cancel the previous \c;jet(0);\n;.
+
+Just insert these lines before the \c;wait(0.2)\n;, and the bot will adapt to the terrain. You can then delete the first lines of the program that set the initial altitude at 10m.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/tcell1.txt b/help/F/tcell1.txt
new file mode 100644
index 00000000..f001d85c
--- /dev/null
+++ b/help/F/tcell1.txt
@@ -0,0 +1,38 @@
+\b;Objective
+Program the \l;grabber bot\u object\botgr; to change the \l;power cell\u object\power; of the \l;winged shooter\u object\botfj;. The winged shooter can then shoot the spiders.
+
+\t;Procedure
+1) Program the \l;grabber bot\u object\botgr;.
+2) Execute the program with the arrow button \button 21;.
+The \l;winged shooter\u object\botfj; is already programmed, it will do its job as soon as it has got a new power cell.
+
+\t;Program
+You will need the following instructions:
+\c;
+\s;grab();\n;
+\n;Takes whatever there is in front of the bot.
+\c;
+\s;drop();\n;
+\n;Drops whatever the bot is carrying in front.
+\c;
+\s;turn();\n;
+\n;We have seen this instruction already in the previous exercise: it performs a rotation of a certain angle, given in degrees.
+
+Let us see the beginning of the program:
+o pick up the empty power cell with \c;grab();\n;
+o turn left 90 degrees (quarter turn) with \c;turn(90)\n;
+o drop the empty cell with \c;drop();\n;
+o etc.
+
+It is up to you now to write the rest of the program!
+
+If you have got a problem, you can always look at the solution: select the \c;Solution\n; program, and click the braces button \button 22;.
+
+\t;Remarks
+Be careful to write the instructions precisely, respecting lower and upper case letters.
+
+Always write one instruction per line, finishing each line with a semicolon.
+
+In case your program does not do exactly what you wanted, you can put the bot back at the starting point with the button \button 59;. You can also start over again from the beginning (hit the key "Esc", the click "Restart"). The program you have written will not be lost.
+
+\key;\key help;\norm; allows you to review these instructions at all times.
diff --git a/help/F/tcell2.txt b/help/F/tcell2.txt
new file mode 100644
index 00000000..6d989599
--- /dev/null
+++ b/help/F/tcell2.txt
@@ -0,0 +1,48 @@
+\b;Objective
+Power the \l;winged shooters\u object\botfj; with \l;power cells\u object\power;, so that they can kill the ants in the ant nest located in a hole north of your position.
+
+\t;Program
+The \l;wheeled grabber\u object\botgr; must go to a \l;power cell\u object\power;, grab it, go to a \l;winged shooter\u object\botfj;, and drop the cell. This task is very similar to the task performed in the previous exercise. Here is this program again:
+\c;
+\s;extern void object::Titanium2()
+\s;{
+\s; object item;
+\s;
+\s; item = radar(TitaniumOre);
+\s; goto(item.position);
+\s; grab();
+\s;
+\s; item = radar(Converter);
+\s; goto(item.position);
+\s; drop();
+\s;}
+\n;
+The best way to solve the present exercise is to copy \button 61; the program above into the clipboard (from \c;object\n; to \c;drop();\n;), and paste \button 62; it into the program editor. Then you just have to make the necessary changes in order to adapt it to the new task.
+
+Instead of looking for titanium ore (\c;TitaniumOre\n;), look for a power cell (\c;PowerCell\n;). Instead of going to a converter (\c;Converter\n;), go to a winged shooter (\c;WingedShooter\n;). As soon as the winged shooter has got a new power cell, it will get down to work.
+
+If you want to know more about the "names" of the different objects in the programming language, please refer to the \l;text about categories\u cbot\category;.
+
+\t;Further improvement: loops
+Once the program explained above works properly, you can improve it in order to repeat the task over and over again. Like this you will not have to execute the program several times in order to power several bots.
+
+All programs written until now execute all instructions only once, one after another, from the beginning to the end of the program. You can also tell the bot to repeat some instructions: just write \c;while (true)\n;, an open brace, the instructions to be repeated, and a closing brace. Repeating some instructions several times in this way is called a loop. Here is an example of a program that repeats over and over the instructions that look for a power cell, grab it, and drop it on a winged shooter:
+\c;
+\s; while (true)
+\s; {
+\s; item = radar(PowerCell);
+\s; goto(item.position);
+\s; grab();
+\s;
+\s; item = radar(WingedShooter);
+\s; goto(item.position);
+\s; drop();
+\s; }
+\n;
+Of course the variable declaration \c;object item;\n; must not be inside the loop, but just before: declare a variable only once.
+
+\t;Remark
+A bot can execute a program perfectly well on his own. Meantime you can for example select the astronaut and take a look at what is happening at the nest, the show is worth it. But be careful not to get shot by your own bots...
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/tchasse.txt b/help/F/tchasse.txt
new file mode 100644
index 00000000..eb807f5a
--- /dev/null
+++ b/help/F/tchasse.txt
@@ -0,0 +1,18 @@
+\b;Exercise
+You must find a way to destroy the four moving \l;target bots\u object\bottarg; without wasting one shot. Notice that after every move, the targets will stay motionless during one second.
+
+\b;General principle
+1) Detect a target with the instruction \c;\l;radar\u cbot\radar;(TargetBot);\n;.
+2) Turn towards the target with \c;\l;turn\u cbot\turn;(direction());\n;.
+3) After the rotation, check if the target did not move.
+4) If it did not, wait 0.2 seconds with \c;\l;wait\u cbot\wait;(0.2);\n;.
+5) Re-check if the target did not move.
+6) If it did not, shoot with \c;\l;fire\u cbot\fire;(2);\n; and wait 2 seconds for the target to be hit by the bullets and destroyed.
+
+There are of course other ways to achieve the goal.
+
+\b;Remark
+In order to increase the efficiency of your shots, aim a little downward with \c;\l;aim\u cbot\aim;(-3);\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/tdragst.txt b/help/F/tdragst.txt
new file mode 100644
index 00000000..38b62d30
--- /dev/null
+++ b/help/F/tdragst.txt
@@ -0,0 +1,64 @@
+\b;Exercise
+Reach the finishing pad (25m in front of you) as fast as possible, using the instruction \c;motor( , )\n;. You will have to slow down progressively at the end of the move, otherwise the bot will get blown up on the \l;mines\u object\mine;.
+
+You could very well write no more than \c;\l;move\u cbot\move;(25);\n;, this would work perfectly well. However, the aim of this exercise is to learn how to use the instruction \c;\l;motor\u cbot\motor;\n;.
+
+This instruction asks for two values:
+1) The speed of the left-hand motor.
+2) The speed of the right-hand motor.
+
+\s;\c; motor( left, right );
+\n;
+The values must range between -1 and 1:
+-1 = full throttle backward
+ 0 = stop
+ 1 = full throttle forward
+
+For example, \c;motor(0.5, 0.5);\n; will move the motor forward with half-speed, until new instructions are given to the motors.
+
+With the instruction \c;motor(0.5, 0.6);\n;, the bot will move forward with half-speed, turning at the same time slightly to the left: the right-hand motor moves a little faster (\c;0.6\n;) than the left-hand motor (\c;0.5\n;).
+
+\b;General principle
+In order to move forward for exactly 25 meters and not more, you must move full speed during the first 23 meters, then reduce the speed of the motors progressively during the last two meters.
+The \l;variable\u cbot\var; \l;position\u cbot\object; gives you at any moment the current position of the bot, and the instruction \c;\l;distance\u cbot\dist;( , );\n; returns the distance between two points. The best way to know where you are consists in saving the current position before the start into a \l;variable\u cbot\var;, for example a variable called \c;start\n;. Then you can calculate the distance between the starting position and your current position with \c;distance(position, start)\n;.
+
+\b;The program
+1) declare the variables
+\s;\c; point start;
+\s; float len;
+\n;
+2) save the starting position
+\s;\c; start = position;
+\n;
+3) start full throttle :
+\s;\c; motor(1, 1);
+\n;
+4) Perform an infinite \c;\l;while\u cbot\while;\n; loop:
+\s;\c; while ( true )
+\s; {
+\s; len = distance(position, start);
+\s; if ( len > 25-2 )
+\s; {
+\s; motor( less than before ! );
+\s; }
+\s; }
+\n;
+As long as the distance between the start and the current position is smaller than 23m, the instruction in braces after the \c;\l;if\u cbot\if;\n; instruction will not be executed, so the motors keep their maximum speed as they were told by the \c;\l;motor\u cbot\motor;(1,1);\n; instruction.
+
+In order to slow down progressively, the speed of the motors must be proportional to the remaining distance:
+o \c;2.0\n; meters left -> speed = \c;1.00\n; (maximum)
+o \c;1.5\n; meters left -> speed = \c;0.75\n;
+o \c;1.0\n; meter left -> speed = \c;0.50\n;
+o \c;0.5\n; meter left -> speed = \c;0.25\n;
+o \c;0.0\n; meter left -> speed = \c;0.00\n; (stop)
+
+\image tdragst1 12 6;
+You can use the following \l;expression\u cbot\expr; \c;(25-len)/2\n; in order to calculate the value for the speed instruction that must be given to the motors.
+
+It is now up to you to put everything together and to test the program.
+
+\b;Remark
+You can use values greater than 1 for the instruction \c;\l;motor\u cbot\motor;();\n;, but the bot will not move any faster.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/texch1.txt b/help/F/texch1.txt
new file mode 100644
index 00000000..914ba70f
--- /dev/null
+++ b/help/F/texch1.txt
@@ -0,0 +1,31 @@
+\b;Exercise
+Several \l;information exchange posts\u object\exchange; stand in the middle of a \l;mine\u object\mine; field. When the bot is close enough to an exchange post, it can read the information that it contains. Every exchange post contains the angle of the rotation that must be performed in order to reach the next exchange post, without touching a \l;mine\u object\mine;.
+The exchange posts are distant 20m from each other.
+
+\b;General principe
+Repeat 5 times :
+ o Move 20m forward.
+ o Read the direction of the next \l;information exchange post\u object\exchange;.
+ o Execute the necessary rotation.
+
+\image tinfo1 8 8;
+In order to repeat the steps above, use a \c;\l;for\u cbot\for;\n; loop, as we saw it before.
+\s;\c; for ( int i=0 ; i<5 ; i=i+1 )
+\n;
+Move forward with the instruction \c;move(20);\n;.
+
+Use the instruction \c;\l;receive\u cbot\receive;("Direction");\n; in order to read the information contained in the \l;exchange post\u object\exchange;. This is of course possible only when the bot is close enough to the exchange post.
+You will need a \l;variable\u cbot\var; to contain the value retrieved from the exchange post. Let us call it \c;dir\n;; you must declare it with the following line:
+\s;\c; float dir;
+\n;
+Then retrieve the rotation angle from the exchange post, and put it into the variable:
+\s;\c; dir = receive(...);
+\n;
+Then you can execute the rotation:
+\s;\c; turn(dir);
+\n;
+\b;Remark
+You can click on an \l;information exchange post\u object\exchange; in order to read what information it contains. In this exercise, every exchange post contains only one value called \c;"Direction"\n;, but it can contain up to 10 different values, as you will see in some of the following exercises.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/texch2.txt b/help/F/texch2.txt
new file mode 100644
index 00000000..842770cf
--- /dev/null
+++ b/help/F/texch2.txt
@@ -0,0 +1,36 @@
+\b;Exercise
+In this exercise, the \l;information exchange posts\u object\exchange; along the way contain the direction of the next post and the distance. And you do not know how many exchange posts you must get in touch with before arriving at your goal.
+
+\b;General principle
+ Repeat forever:
+ o Retrieve the direction from the \l;exchange post\u object\exchange;.
+ o Retrieve the distance from the \l;exchange post\u object\exchange;.
+ o If no information could be retrieved, stop the program.
+ o Execute the rotation.
+ o Move forward to the next post.
+
+In order to repeat always, use a \c;\l;while\u cbot\while; (true)\n; loop. The instructions between the braces \c;{ }\n; will be repeated over and over, or until a \c;\l;break\u cbot\break;\n; instruction is executed.
+\s;\c; while ( true )
+\n;
+This time you need 2 \l;variables\u cbot\var;, one for the rotation angle, one for the distance, for example \c;dir\n; and \c;len\n; :
+\s;\c; float dir, len;
+\n;
+Then you can retrieve the information:
+\s;\c; dir = receive("Direction");
+\s;\c; len = receive("Length");
+\n;
+A variable of the \l;type\u cbot\type; \c;\l;float\u cbot\float;\n; can take a special value called \c;\l;nan\u cbot\nan;\n;. This value means that the variable contains no number (Not A Number).
+When there is no \l;exchange post\u object\exchange; nearby, either because the bot has reached the goal, or because it took the wrong way, the two variables \c;dir\n; and \c;len\n; contain this value. You can test this with the instruction \c;\l;if\u cbot\if;\n;, and stop the program if necessary with the instruction \c;\l;break\u cbot\break;\n;:
+\s;\c; if ( dir == nan ) break;
+\n;
+If the information retrieval from the \l;exchange post\u object\exchange; has been performed successfully, execute the rotation:
+\s;\c; turn(dir);
+\n;
+And move forward:
+\s;\c; move(len);
+\n;
+\b;Remark
+You can click on an \l;information exchange post\u object\exchange; in order to read what information it contains. In this exercise, every exchange post contains two values called \c;"Direction"\n; and \c;"Length"\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/tfollow1.txt b/help/F/tfollow1.txt
new file mode 100644
index 00000000..25f6fb93
--- /dev/null
+++ b/help/F/tfollow1.txt
@@ -0,0 +1,62 @@
+\b;Exercise
+You must follow the \l;target bot\u object\bottr; with the explosive device, but without touching it, otherwise it will blow up. Every time the target bot stops, you must be close to it (less than 10m). After you managed to stay close to the target bot at 10 successive stops, it will lead you to the finishing pad, and the exercise is over. At every stop, the target bot checks that you are there. If you are not there, you must start over again.
+
+\b;General principle
+Repeat forever :
+o Look for the target bot.
+o Calculate the distance to the bot.
+o if the distance to the target bot is less than 5m, move backward.
+o Otherwise, calculate the direction of the target bot, and move towards it.
+
+As many times before, use \c;\l;while\u cbot\while; (true)\n; in order to perform the infinite loop:
+\s;\c;while (true)
+\s;{
+\s; \n;instructions to be repeated ...\c;
+\s;}
+\n;
+Look for the target bot with the instruction \c;\l;radar\u cbot\radar;\n;:
+\s;\c; target = radar(TargetBot);
+\n;
+You do not have to test if the radar found a target bot: there must be one.
+
+Use the instruction \c;\l;distance\u cbot\dist;( , )\n; to calculate the distance between two points. The first point will be the position of your own bot, given by \c;position\n;. The second point is the position of the target bot, given by \c;target.position\n;.
+\s;\c;len = distance(position, target.position);
+\n;
+If the distance to the target bot is smaller than 5m, move backward with a speed inversely proportional to the distance: the closer you are to the bot, the faster you must move backward.
+ Distance = 5.0 meters -> speed = 0.0
+ Distance = 2.5 meters -> speed = -0.5
+ Distance = 0.0 meters -> speed = -1.0
+You can use the \l;expression\u cbot\expr; \c;distance/5-1\n; in order to achieve this, together with the \c;\l;if\u cbot\if;\n; to test if the target is closer than 5m:
+\s;\c;if ( len < 5 ) // too close ?
+\s;{
+\s; motor(len/5-1, len/5-1); // moves backward
+\s;}
+\n;
+If the distance to the target is greater than 5m, move towards the target. First calculate the angle necessary to face the target with the instruction \c;\l;direction\u cbot\direct;\n;. You can then adjust the speed of the right-hand and left-hand motor in order to follow the target:
+\s;\c;else
+\s;{
+\s; dir = direction(target.position);
+\s; if ( dir >= 0 ) // target on the left side?
+\s; {
+\s; motor(1-dir/90, 1);
+\s; }
+\s; else // target on the right side?
+\s; {
+\s; \n;it is up to you to fill in\c;
+\s; }
+\s;}
+\n;
+When the target is on your left, \c;dir\n; takes a positive value, ranging between 0 and 180. The \l;expression\u cbot\expr; \c;1-dir/90\n; returns a speed ranging between 1 and -1, according to the direction:
+ direction = 0 -> speed = 1.0
+ direction = 45 -> speed = 0.5
+ direction = 90 -> speed = 0.0
+ direction = 135 -> speed = -0.5
+ direction = 180 -> speed = -1.0
+
+\image radar2 14 10;
+When the target is on the right side, \c;dir\n; is negative, ranging between 0 and -180.
+
+The only task left for you now is to declare the \l;variables\u cbot\var; that you use in the program. \c;target\n; is of type \c;object\n;, whereas \c;dir\n; and \c;len\n; are of type \c;float\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/tfor.txt b/help/F/tfor.txt
new file mode 100644
index 00000000..07285d69
--- /dev/null
+++ b/help/F/tfor.txt
@@ -0,0 +1,57 @@
+\b;Exercise
+Destroy the six \l;targets\u object\bottarg; with a program using a loop. The bot must move 5m forward to get from one target to the next.
+
+\b;General principle
+The program must execute the following scheme:
+Repeat 6 times :
+ o move 5m forward
+ o turn 90 degrees left
+ o shoot
+ o turn 90 degrees right
+
+\image tfor1 14 5;
+\b;Instruction \c;for ( )\n;
+The instruction \c;\l;for\u cbot\for;\n; asks for 3 expressions:
+1) Initialize the counting variable.
+2) The end \l;condition\u cbot\cond;.
+3) The counting \l;expression\u cbot\expr;.
+
+Here is the loop once it is integrated into the program frame:
+\s;\c;extern void object::Massacre( )
+\s;{
+\s; for ( int i=0 ; i<6 ; i=i+1 )
+\s; {
+\s; \n;instructions repeated 6 times ...\c;
+\s; }
+\s;}
+\n;
+ATTENTION: The line \c;for ( )\n; must not be followed by a \l;semicolon\u cbot\term; !
+
+\b;Explanation of the instruction \c;for ( )\n;
+1) \c;int i=0\n;
+ The \l;variable\u cbot\var; i is set to zero before the beginning of the loop.
+
+2) \c;i<6\n;
+ The loop will be executed as long as i is smaller than 6.
+
+3) \c;i=i+1\n;
+ At the end of every loop, add 1 to the variable i.
+
+\b;Blocks
+Use braces \c;{ }\n; in order to create a \l;block\u cbot\bloc;. All the instructions that must be executed in the \c;for\n; loop are held together by a block. The whole program itself is made up of a block:
+\c;
+\s;extern void object::massacre( )
+\s;{
+\s; \n;fill in here ...\c;
+\s;}
+\n;
+Never change these characters. Just add the instructions of the program between the braces.
+You can fit several blocks one into the other. For example the \c;for\n; block is fitted into the block of the whole program. In order to improve readability, the editor lines up the braces belonging to the different blocks.
+
+\b;Remember
+The instruction used to move forward is \c;\l;move\u cbot\move;();\n;.
+The instruction used to turn the bot is \c;\l;turn\u cbot\turn;();\n;. A positive angle turns left.
+The instruction used to fire the cannon is \c;\l;fire\u cbot\fire;(1);\n;. A one-second burst allows to destroy all six \l;targets\u object\bottarg;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/tlaby1.txt b/help/F/tlaby1.txt
new file mode 100644
index 00000000..c5deb7c6
--- /dev/null
+++ b/help/F/tlaby1.txt
@@ -0,0 +1,62 @@
+\b;Exercise
+Program the bot so that it will find its way without hitting the walls of the labyrinth. We suppose that you do not know the configuration of the labyrinth, but there are no bifurcations, and no dead-ends. The labyrinth is made of squares measuring 5m each.
+
+\b;The instruction \c;radar\n;
+The instruction \c;\l;radar\u cbot\radar;(Barrier, 0, 45, 0, 5);\n; will find any \l;barrier\u object\barrier; in front of the radar that is closer than 5m. Let us take a closer look at the five parameters used:
+
+\s;\c;Barrier\n;
+\l;Category\u cbot\category; of the object that the radar must look for, i.e. a barrier.
+
+\s;\c;0\n;
+Direction of the radar. \c;0\n; means that the radar must search straight forward.
+
+\s;\c;45\n;
+Opening angle in degrees. With an opening angle of 45 degrees, barriers situated between 22.5 degrees to the left and 22.5 degrees to the right will be detected.
+
+\s;\c;0\n;
+Minimum detection distance. \c;0\n; means that even object that are very close to the bot will be detected.
+
+\s;\c;5\n;
+Maximum detection range. Any barrier situated beyond \c;5\n; meters will not be detected.
+
+To take another example, \c;\l;radar\u cbot\radar;(Barrier, 90, 45, 0, 5);\n; will direct the radar 90 degrees to the left, in order to test if the way to the left is free.
+
+\image tlaby1 10 10;
+\b;General principle
+The program must only take care of one square portion of the labyrinth. You will have to execute it several times in order to arrive at the finishing pad.
+o If there is nothing in front, move forward.
+o If there is nothing on the left side, quarter turn left, move forward.
+o If there is nothing on the right side, quarter turn right, move forward.
+
+1) First of all declare three \l;variables\u cbot\var; of type \c;\l;object\u cbot\object;\n;, that we call \c;front\n;, \c;left\n; and \c;right\n;. Variables of this type can contain the description of any object, for example of a barrier found by the radar.
+\s;\c; object front, left, right;\n;
+
+2) Look for barriers in all three directions, and put the result of the \c;radar\n; instruction into the three variables defined at point 1). If the radar finds nothing, the variable will contain the value \c;\l;null\u cbot\null;\n;.
+\s;\c; front = radar(Barrier, 0, 45, 0, 5);
+\s; left = radar(Barrier, 90, 45, 0, 5);
+\s; right = radar(Barrier, -90, 45, 0, 5);
+\n;
+3) Test if the way is free in front of the bot with the instruction \c;\l;if\u cbot\if;\n;. If the test is true, the instructions in braces \c;{ }\n; will be executed, otherwise the execution will resume after the closing brace \c;}\n;.
+The instruction \c;return\n; leaves the program: the job is done.
+\s;\c;if ( front == null )
+\s;{
+\s; move(5);
+\s; return;
+\s;}
+\n;
+4) Test if it is possible to turn left; if so, turn left with the instruction \c;\l;turn\u cbot\turn;\n; and move 5m forward.
+\s;\c;if ( left == null )
+\s;{
+\s; turn(90);
+\s; move(5);
+\s; return;
+\s;}
+\n;
+5) Test if it is possible to turn right.
+ ...
+
+\b;Attention
+The instruction \c;if ( )\n; must never be followed by a \l;semicolon\u cbot\term;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/tlaby2.txt b/help/F/tlaby2.txt
new file mode 100644
index 00000000..b09ec7f2
--- /dev/null
+++ b/help/F/tlaby2.txt
@@ -0,0 +1,55 @@
+\b;Exercise
+This exercise is very similar to the previous one. This time the bot should find its way alone from the start to the goal; you will have to execute the program only once.
+
+\b;Remark
+The labyrinth is not exactly the same, but this should be of no importance, as the program adapts to what it "sees".
+
+\image tlaby1 10 10;
+\b;General principle
+Use an infinite \c;\l;while\u cbot\while;\n; loop in order to execute the previous program several times:
+\s;\c;while ( true )
+\s;{
+\s; \n;If there is nothing in front, move forward\c;
+\s; \n;If there is nothing on your left hand, turn left\c;
+\s; \n;If there is nothing on your right hand, turn right\c;
+\s;}
+\n;
+Inside this \c;while\n; loop, replace the \c;return\n; instructions by \c;\l;continue\u cbot\continue;\n; instructions. \c;return\n; would quit the program, which is not what we want here. \c;continue\n; will just resume the execution at the beginning of the \c;\l;while\u cbot\while;\n; loop:
+\s;\c;if ( front == null )
+\s;{
+\s; move(5);
+\s; continue;
+\s;}
+\n;
+\b;Remember
+Here is again the program of the previous exercise :
+\c;
+\s;object front, left, right;
+\s;
+\s;front = radar(Barrier, 0, 45, 0, 5);
+\s;left = radar(Barrier, 90, 45, 0, 5);
+\s;right = radar(Barrier, -90, 45, 0, 5);
+\s;
+\s;if ( front == null )
+\s;{
+\s; move(5);
+\s; return;
+\s;}
+\s;if ( left == null )
+\s;{
+\s; turn(90);
+\s; move(5);
+\s; return;
+\s;}
+\s;if ( right == null )
+\s;{
+\s; turn(-90);
+\s; move(5);
+\s; return;
+\s;}
+\n;
+\b;Help
+If you need some help, just click on the hyperlinks of the instructions \c;\l;radar\u cbot\radar;\n;, \c;\l;if\u cbot\if;\n;, \c;\l;move\u cbot\move;\n; or \c;\l;turn\u cbot\turn;\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/tmove1.txt b/help/F/tmove1.txt
new file mode 100644
index 00000000..24604c1f
--- /dev/null
+++ b/help/F/tmove1.txt
@@ -0,0 +1,33 @@
+\b;Exercise
+Program the robot in such a way that it arrives on the finishing pad, after having passed by the three blue crosses.
+
+\b;Procedure
+1) Take the power cell and put it on the rear of the bot.
+2) Walk around on reconnaissance to understand what the bot must do.
+3) Program the bot. To do so, you must select it, and then click on the braces button \button 22;; you will get into the program editor.
+4) Once you finished writing the program, click "OK", and execute the program with the arrow key \button 21;.
+
+\b;Program
+The pads are at a distance of 20 meters from each other.
+The instruction \c;move(20);\n; moves 20 meters forward.
+The instruction \c;turn(90);\n; turns left with an angle of 90 degrees.
+The instruction \c;turn(-90);\n; turns right with an angle of 90 degrees.
+
+The frame of the program consists in:
+\c;
+\s; extern void object::MoveBot( )
+\s; {
+\s; \n;\\write the necessary instructions here ...\c;
+\s; }
+\n;
+For now, you must not change the frame of the program. Just insert the instructions you need to move the bot around between the braces \c;{ }\n;.
+
+\b;Attention
+Be very careful about upper case and lower case letters!
+Every instruction must be terminated with a semicolon.
+
+\b;Helpful trick
+When you write the program, you can watch the scene by clicking on the button \button 51;, and by moving the mouse to the edges of the window to turn the camera.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/tmove2.txt b/help/F/tmove2.txt
new file mode 100644
index 00000000..14e873f5
--- /dev/null
+++ b/help/F/tmove2.txt
@@ -0,0 +1,66 @@
+\b;Exercise
+This exercise is very similar to the previous one. The bot must move exactly in the same way, but when writing the program, you must use a new concept that is extremely important in programming: \l;variables\u cbot\var;.
+We saw that all the pads are at a distance form each other of 20 meters. And all the rotations performed consist in 90 degree angles. Instead of rewriting the same values over and over again in the program, we can store them in a variable:
+
+Instead of:
+\c;\s; move(20);
+\s; turn(90);
+\s; move(20);
+\s; turn(-90);
+\s; ...
+\n;
+We write :
+\c;\s; dist = 20;
+\s; dir = 90;
+\s; move(dist);
+\s; turn(dir);
+\s; move(dist);
+\s; turn(-dir);
+\s; ...
+\n;
+\b;Variables
+A \l;variable\u cbot\var; is composed of three elements:
+1) The name
+2) The type of the content
+3) The content
+
+\t;The name
+Use the name to refer to a variable. For example, instead of writing \c;move(20);\n;, write \c;move(dist);\n;: "dist" is the name of the variable. You can choose almost any name for a variable, for example \c;dist\n;, \c;dir\n;, \c;p2\n;, \c;a\n;, \c;x\n;, \c;nothing_2_grab\n;, etc.
+
+\t;The type
+The type of a variable determines what kind of information the variable can contain. According to the type, a variable can contain a whole number, a real number, a character string, the coordinates of a point, etc. Here is a list with the most common variable types:
+ o \c;\l;int\u cbot\int;\n; for a whole number (12, -500, etc.)
+ o \c;\l;float\u cbot\float;\n; for a real number (3.14, 0.2, -99.98, etc.)
+ o \c;\l;string\u cbot\string;\n; for a character string ("Hello!", "Nothing to grab", etc.)
+ o \c;\l;point\u cbot\point;\n; for the x,y,z-coordinates of a point in space
+ o \c;\l;object\u cbot\object;\n; for the information about an object (bot, building, etc.)
+
+\t;The content
+The content of a variable can be a number, a string, coordinates, etc., according to the type of the variable. The content of a variable can change many times during the execution of a program.
+
+Before you can use a variable, you have to declare it. For example, before you can use the two variables \c;dist\n; and \c;dir\n;, you must declare them with the following lines:
+\c;
+\s; float dist;
+\s; float dir;
+\n;
+Now you can use the two variables. To put the value 20 into \c;dist\n; and 90 into \c;dir\n;, write:
+\c;
+\s; dist = 20;
+\s; dir = 90;
+\n;
+Now you can move and turn the bot with the instructions \c;\l;move\u cbot\move;\n; and \c;\l;turn\n;\u cbot\turn;:
+\c;
+\s; move(dist);
+\s; turn(dir);
+\n;
+You can also use a whole \l;mathematical expression\u cbot\expr; instead of just the variable:
+\c;
+\s; move(dist+100);
+\s; turn(-dir);
+\n;
+The latter instruction will be needed to turn the bot right.
+
+Now, rewrite the program of the previous exercise, but use a variable for the distance and another variable for the angle of the rotation.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/tproc1.txt b/help/F/tproc1.txt
new file mode 100644
index 00000000..484d7897
--- /dev/null
+++ b/help/F/tproc1.txt
@@ -0,0 +1,59 @@
+\b;Exercise
+The \l;bot\u object\bottr; must pass over all the \l;blue crosses\u object\waypoint; on the ground. The way that must be covered is made of two squares. The first one measures 15 meters, the second 25 meters.
+
+\image tproc1a 8 8;
+\b;General principle
+In order to solve this problem, the most efficient solution consists in creating a \l;function\u cbot\function; that instructs the bot to move on a square shape of a certain size. The main program becomes then very simple:\c;
+\s;extern void object::Function1( )
+\s;{
+\s; Square(15);
+\s; Square(25);
+\s;}
+\n;
+You still have to define the function called \c;Square\n;. In order to do this, you will have to write some instructions outside the \l;block\u cbot\bloc; that until now was the frame of each one of your programs. At the very end of the program, after the last closing brace, we will define the function \c;Square\n;. The program will take the following shape:
+\c;
+\s;extern void object::Function1( )
+\s;{
+\s; \n;main function ...\c;
+\s;}
+\s;
+\s;void object::Square(float length)
+\s;{
+\s; \n;new function ...\c;
+\s;}
+\n;
+Let us look in detail at the different elements of the declaration of the function \c;Square\n;:
+
+\c;\l;void\u cbot\void;\n;
+This means that this function will return no value.
+
+\c;\l;object\u cbot\object;::\n;
+When you write this in front of the function name, you can have access in the function to all the characteristics of the bot, such as \c;position\n;, \c;orientation\n;, etc. In this exercise, this element is not compulsory, as we will not need the characteristics of the bot in the function.
+
+\c;Square ( )\n;
+This is the name of the function. You can call it Square, or any other name.
+
+\c;\l;float\u cbot\float; length\n;
+Here you define the parameters that the function will get when it is called. The first time the function is actually called with \c;Square(15)\n;, the variable \c;length\n; will contain the value \c;15\n;. The second time, \c;length\n; will contain \c;25\n;.
+
+Here is in detail what will happen when the program is executed:
+- First the main function \c;Function\n; will be executed.
+- At the line \c;Square(15)\n;, the program will follow the red arrow and enter the function \c;Square\n; a first time, \c;length\n; containing \c;15\n;.
+- At the end of the function \c;Square\n;, the program follows the orange arrow and comes back to the main function.
+- At the line \c;Square(25)\n;, the program will follow the blue arrow and enter the function \c;Square\n; a second time.
+- At the end of the function \c;Square\n;, the program follows the light blue arrow and comes back to the main function.
+
+\image tproc1b 17 12;
+In the function \c;Square\n;, use the instructions \c;\l;move\u cbot\move;\n; and \c;\l;turn\u cbot\turn;\n;. In order to make it shorter, you can use a \c;\l;for\u cbot\for;\n; loop, that will repeat the instructions \c;\l;move\u cbot\move;\n; and \c;\l;turn\u cbot\turn;\n; 4 times; however, this is not compulsory.
+\c;
+\s;void object::Square(float length)
+\s;{
+\s; for ( int i=0 ; i<4 ; i=i+1 )
+\s; {
+\s; move(length);
+\s; turn(90);
+\s; }
+\s;}
+\n;
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/tproc2.txt b/help/F/tproc2.txt
new file mode 100644
index 00000000..6be8e7b2
--- /dev/null
+++ b/help/F/tproc2.txt
@@ -0,0 +1,34 @@
+\b;Exercise
+Follow the way in form of a spiral. The bot must move 2 times 25m forward and turn, then move 2 times 20m forward and turn, and so on.
+\image tproc2 8 8;
+\b;Function
+You will have noticed that the way is made of "L"-shaped parts that are fit one into another. The first one (dark blue) measures two times 25 meters. The second one (light blue) measures 5 meters less. Let us start with writing the \l;function\u cbot\function; that will move the bot on a "L"-shaped part whose length will be given as a parameter:
+\c;
+\s;void object::Part(float length)
+\s;{
+\s; for ( int i=0 ; i<2 ; i=i+1 )
+\s; {
+\s; move(length);
+\s; turn(90);
+\s; }
+\s;}
+\n;
+Now you just need to write the main function, that will call the function \c;Part\n;. At the beginning the variable \c;rest\n; will be set to 25m. The \c;while\n; loop will then repeat the instructions inside the block as long as \c;rest\n; is greater than zero. Inside the loop, first call the function \c;Part\n; (see above), then subtract 5m to the length of the L.
+\c;
+\s;extern void object::Function2( )
+\s;{
+\s; float rest = 25;
+\s; while ( rest > 0 )
+\s; {
+\s; Part(rest);
+\s; rest = rest-5;
+\s; }
+\s;}
+\n;
+The function \c;Part\n; will be called a last time with the value \c;5\n;. Then the expression \c;rest-5\n; will set the value of the variable \c;rest\n; to zero, and the \c;while\n; loop will stop.
+
+\b;Remark
+You will have noticed that in the previous exercise, the main function was at the beginning of the program, whereas in this exercise, it is at the end of the program, after the function \c;Part\n;. The rank order of the functions in the program does not matter, you can write a program either way.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/tradar1.txt b/help/F/tradar1.txt
new file mode 100644
index 00000000..d55a31c6
--- /dev/null
+++ b/help/F/tradar1.txt
@@ -0,0 +1,57 @@
+\b;Exercise
+Let the bot find all the \l;blue crosses\u object\waypoint; on the ground. As soon as the bot passed over one of the crosses, it will disappear. Here is the general principle that you will apply:
+
+Repeat forever:
+ o Look for a cross
+ o If there is none, stop the program.
+ o Calculate the direction of the cross.
+ o Set the speed of the motors in such a way that they will find their way to the cross.
+
+\b;The program
+Use a \c;\l;while\u cbot\while;\n; loop in order to repeat several instructions over and over:
+\s;\c;while ( true )
+\s;{
+\s; \n;instructions...\c;
+\s;}
+\n;
+The instruction \c;\l;radar\u cbot\radar;\n; will detect the blue crosses and put their description into a variable, for example \c;spot\n;. In this case, \c;\l;radar\u cbot\radar;()\n; needs only one parameter, i.e. the category of the object that it must look for:
+\s;\c;spot = radar(WayPoint);
+\n;
+Once all the crosses have been found, \c;radar\n; will return the value \c;\l;null\u cbot\null;\n;. You will have to test this case and react accordingly with the instruction \c;\l;if\u cbot\if;\n;:
+\s;\c;if ( spot == null ) // no more ?
+\s;{
+\s; motor(0, 0); // stops the motors
+\s; break; // stops the loop
+\s;}
+\n;The instruction \c;\l;break\u cbot\break;\n; will stop the infinite loop \c;while (true)\n;.
+
+Use the instruction \c;\l;direction\u cbot\direct;()\n; to calculate the angle of the rotation that the bot must perform in order to turn towards the blue cross. The coordinates of the object are given by \c;spot.position\n;. The following line will put the angle of the necessary rotation into the \l;variable\u cbot\var; \c;dir\n;:
+\s;\c;dir = direction(spot.position);
+\n;
+The value of the angle is positive if the blue cross is on your left hand, and negative if it is on your right hand. If the cross to be reached is on your left hand, you must set the right-hand motor to full speed, and set the left-hand motor to a lower speed, according to the angle:
+
+ direction = \c; 0\n; -> speed = \c; 1.0\n;
+ direction = \c; 45\n; -> speed = \c; 0.5\n;
+ direction = \c; 90\n; -> speed = \c; 0.0\n;
+ direction = \c;135\n; -> speed = \c;-0.5\n;
+ direction = \c;180\n; -> speed = \c;-1.0\n;
+
+The graphic below shows the speed of the left-hand and right-hand motor as set by the instruction \c;\l;motor\u cbot\motor;\n;, according to the angle:
+
+\image radar2 14 10;
+If the cross is straight ahead, the angle is 0 degrees. The motors will get the speeds 1 and 1, which means full speed ahead. If the cross is behind, the right motor will be set to speed -1: it will turn around. You can use the \l;expression\u cbot\expr; \c;1+dir/90\n; in order to calculate the necessary speed of the motors:
+\s;\c;if ( dir < 0 ) // on the right side?
+\s;{
+\s; motor(1, 1+dir/90); // turns more or less
+\s;}
+\n;
+Use the same principle if the angle has got a positive value, ranging between 0 and 180 degrees. It is up to you to work out the exact instructions to be performed:
+\s;\c;else // on the left side?
+\s;{
+\s; \n;up to you to fill in here...\c;
+\s;}
+\n;
+At the beginning of the program, you must still declare all the variables. \c;spot\n; is of type \c;\l;object\u cbot\object;\n;, whereas \c;dir\n; is of type \c;\l;float\u cbot\float;\n;.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/tradar2.txt b/help/F/tradar2.txt
new file mode 100644
index 00000000..8ad15fce
--- /dev/null
+++ b/help/F/tradar2.txt
@@ -0,0 +1,8 @@
+\b;Exercise
+In this exercise, a "crazy bot" places many \l;blue crosses\u object\waypoint; on the ground. In order to find them, you can reuse the program written in the previous exercise. This can show you the flexibility of such a program: it adapts to whatever environment it encounters.
+
+\t;Remark
+Do not wait too long, because the crazy bot gets down to work immediately. Fortunately, as long as you are in the program editor, the game will pause.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/tremote1.txt b/help/F/tremote1.txt
new file mode 100644
index 00000000..70c55aa0
--- /dev/null
+++ b/help/F/tremote1.txt
@@ -0,0 +1,39 @@
+\b;Exercise
+Remote control a robot using an \l;information exchange post\u object\exchange;, so it will transport \l;uranium ore\u object\uranore;.
+The main actors of this exercise are¦:
+
+1) A \l;sniffer\u object\botsr; (can't carry anything).
+2) An \l;information exchange post\u object\exchange; that receives information from a sender and then transmits it to a receiver.
+3) A \l;grabber\u object\botgr; which waits for orders from the exchange post. You have no way control this robot directly.
+
+\image tremot1a 16 8;
+An information exchange post stores "name/value" couples. To control the "slave" robot we use just one couple¦:
+
+ name="order", valuer=order number
+
+The slace robot understands following orders¦:
+\c;
+ 1 -> grab(); // take an object
+ 2 -> drop(); // drop an object
+ 3 -> move(10); // move 10 meters forward
+ 4 -> move(-10); // move 10 meters backwards
+\n;
+To instruct the slave to move forward 10 meters all you have to do is¦:
+\c;\s; \l;send\u cbot\send;("order", 3, 100); // order 3 -> "move(10)"
+\n;
+After the send instruction we wait for 5 seconds to be sure the move is done.
+\c;\s; \l;wait\u cbot\wait;(5);
+\n;
+Remark: There is a better way for waiting the order has been executed, but we'll see this later in exercise "Remote Control #2".
+
+To finish the exercise you must¦:
+
+1) Take the uranium ore
+2) Move forward by 10 meters
+3) Drop the uranium ore
+4) Move backwards by 10 meters
+
+It's up to you to write the program.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/tremote2.txt b/help/F/tremote2.txt
new file mode 100644
index 00000000..58083be3
--- /dev/null
+++ b/help/F/tremote2.txt
@@ -0,0 +1,50 @@
+\b;Exercise
+Remote control a robot using an \l;information exchange post\u object\exchange;, so it will pass over the 6 blue waypoints.
+The main actors of this exercise are¦:
+
+1) A \l;wheeled grabber\u object\botgr; robot without an energy cell. This is the master you have to program.
+2) An \l;information exchange post\u object\exchange; that receives information from the master and then transmits it to the slave.
+3) A \l;practice bot\u object\bottr; which waits for orders from the exchange post. This robot has already been programmed.
+
+\image tremot2a 16 8;
+An information exchange post stores "name/value" couples. To control the "slave" robot we use two couples¦:
+
+1) name="order", value=order number
+2) nom="param", valuer=parameter for the operation
+
+Order #1 means "move" and order #2 means "turn". The parameter is the distance to move or the turning angle. For example to make the slave move 20 meters write¦:
+\c;\s; \l;send\u cbot\send;("order", 1, 100); // order "move"
+\s; \l;send\u cbot\send;("param", 20, 100); // distance 20 meters
+\n;
+These two instruction send following 2 pieces of information to the exchange post¦:
+\c; order=1
+ param=20
+\n;
+The slave robot waits for an order and executes it. Once the order has been executed by the slave, it removes the order from the exchange post. Once an order has been sent, the master must wait for the slave finishing the order before sending the next order. This is done by testing if the order is still inside the exchange post. Just write¦:
+\c;\s; while ( \l;testinfo\u cbot\testinfo;("order", 100) ) // wait for end of work
+\s; {
+\s; wait(1);
+\s; }
+\n;
+As we must give more than one order its most convenient to write a \l;function\u cbot\function; \c;SendToPost\n;, that sends the order and wait for its completion¦:
+\c;\s;void object::SendToPost(float order, float param)
+\s;{
+\s; send("param", param, 100); // send the parameter
+\s; send("order", order, 100); // send the order
+\s;
+\s; while ( testinfo("order", 100) ) // wait for end of work
+\s; {
+\s; wait(1);
+\s; }
+\s;}
+\n;
+To move forward by 20 meters, you must write in the main program¦:
+\c;\s; SendToPost(1, 20); // move(20);
+\n;
+This is the route the robot must travel through¦:
+
+\image tremot2b 8 8;
+It's up to you to finish the programming.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/tremote3.txt b/help/F/tremote3.txt
new file mode 100644
index 00000000..b8875f05
--- /dev/null
+++ b/help/F/tremote3.txt
@@ -0,0 +1,103 @@
+\b;Exercice
+Remote control a slave robot without using an \l;information exchange post\u object\exchange;. The robot should pass over the 6 blue crosses. You must use a \l;string\u cbot\string; to pass the orders to the slave bot. This string contains the order the slave shoud execute, for exemple \c;"move(20)"\n;. You can see that this is the same syntax as used in the CBOT language but we could have chosen any other syntax for exemple something like \c;"advance=20"\n;. The string will be a \c;\l;static\u cbot\static;\n; class member that will be used to communicate from the master to the slave.
+
+The two main actors of this exercise are:
+1) The \l;wheeled grabber\u object\botgr; without an energy pack and therefore immobile. This is the master you should program so it will transmit orders to the slave.
+2) The slave \l;practice bot\u object\bottr; which is already programmed and just waits for orders from the master.
+
+\b;The slave
+First of all we must understand how the program of the slave works. The \l;class\u cbot\class; \c;exchange\n; contains the mechanism for exchaning the orders. We declare a \c;\l;static\u cbot\static;\n; class member \c;m_order\n; which will contain the order to be executed. The word \c;static\n; insures that the member \c;m_order\n; is shared between all instances of the \l;class\u cbot\class; exchange.
+
+\c;\s;\l;public\u cbot\public; \l;class\u cbot\class; exchange
+\s;{
+\s; \l;static\u cbot\static; \l;private\u cbot\private; \l;string\u cbot\string; m_order = "";
+
+\n;The \c;put\n; method will be used by the master robot for transmitting an order. As long as the string \c;m_order\n; is not empty, the slave has not finished the order and the \c;put\n; method will return \c;false\n; and will do nothing.
+
+\c;\s; \l;synchronized\u cbot\synchro; \l;bool\u cbot\bool; put(string order)
+\s; {
+\s; if ( m_order == "" )
+\s; {
+\s; m_order = order;
+\s; return true;
+\s; }
+\s; else
+\s; {
+\s; return false;
+\s; }
+\s; }
+\n;
+Another method \c;get\n; will be used by the slave to retrieve the orders. This method returns the string contained in \c;m_order\n; and empties it, so a new order can be accepted:
+
+\c;\s; \l;synchronized\u cbot\synchro; string get()
+\s; {
+\s; string ret = m_order;
+\s; m_order = "";
+\s; return ret;
+\s; }
+\s;}
+\n;
+The main program of the slave contains an instance of the class \c;exchange\n; called \c;list\n;.
+
+\c;\s;\l;extern\u cbot\extern; void object::Slave3( )
+\s;{
+\s; exchange list();
+\s; string todo;
+\n;
+The outer \c;while\n; loop lasts for ever. The inner \c;while\n; loop waits for an order by using the \c;get\n; method of the \c;exchange\n; class. As soon as \c;get\n; returns a non empty string, the while loop stops.
+
+\c;\s; \l;while\u cbot\while; ( true )
+\s; {
+\s; \l;while\u cbot\while; ( true )
+\s; {
+\s; todo = list.get();
+\s; if ( todo != "" ) break;
+\s; wait(1);
+\s; }
+\n;
+Now we have received the order in the \c;todo\n; variable. All we have to do is execute it:
+
+\c;\s; if ( \l;strfind\u cbot\strfind;(todo, "move") == 0 )
+\s; {
+\s; move(\l;strval\u cbot\strval;(\l;strmid\u cbot\strmid;(todo,5)));
+\s; }
+\s; if ( strfind(todo, "turn") == 0 )
+\s; {
+\s; turn(strval(strmid(todo,5)));
+\s; }
+\s; }
+\s;}
+\n;
+\b;The master
+In the master we write an function called \c;SendOrder\n; which will send an order to the slave:
+
+\c;\s;void object::SendOrder(string order)
+\s;{
+\s; exchange list();
+\s;
+\s; while ( list.put(order) == false )
+\s; {
+\s; wait(1);
+\s; }
+\s;}
+\n;
+The \c;while\n; loop waits until a pending order has been terminated, that is the slaved has exited from the \c;get\n; method.
+Now the main program of the master is very simple:
+
+\c;\s;extern void object::Remote3( )
+\s;{
+\s; SendOrder("move(20)");
+\s; SendOrder("turn(90)");
+\s; SendOrder("move(20)");
+\s; SendOrder("turn(90)");
+\s; SendOrder("move(10)");
+\s; SendOrder("turn(90)");
+\s; SendOrder("move(10)");
+\s; SendOrder("turn(-90)");
+\s; SendOrder("move(10)");
+\s;}
+\n;
+\key;\key help;\norm; show these instruction at any time.
+
+\t;See also
+\l;Controls\u command; and \l;programming\u cbot;.
diff --git a/help/F/tremote4.txt b/help/F/tremote4.txt
new file mode 100644
index 00000000..876a00f3
--- /dev/null
+++ b/help/F/tremote4.txt
@@ -0,0 +1,129 @@
+\b;Exercise
+Remote control a slave robot without using an \l;information exchange post\u object\exchange;. The robot should pass over the 6 blue crosses. You must use a \c;\l;static\u cbot\static;\n; variable to pass the orders to the slave bot.
+
+The two main actors of this exercise are:
+1) The \l;wheeled grabber\u object\botgr; without an energy pack and therefore immobile. This is the master you should program so it will transmit orders to the slave.
+2) The slave \l;practice bot\u object\bottr; which is already programmed and just waits for orders from the master.
+
+\b;The slave
+First of all we must understand how the program of the slave works. The \l;class\u cbot\class; \c;order\n; contains two members: \c;m_type\n; is the order to execute (move or turn) and \c;m_param\n; is the distance to move or the rotation angle¦:
+
+\c;\s;\l;public\u cbot\public; \l;class\u cbot\class; order
+\s;{
+\s; \l;int\u cbot\int; m_type = \l;nan\u cbot\nan;;
+\s; \l;float\u cbot\float; m_param;
+\s;}
+\n;
+A second \l;class\u cbot\class; \c;exchange\n; contains the mechanism for exchanging the orders. We declare a \c;\l;static\u cbot\static;\n; class member \c;m_order\n; which will contain the order to be executed. The word \c;static\n; insures that the member \c;m_order\n; is shared between all instances of the \l;class\u cbot\class; exchange.
+
+\c;\s;\l;public\u cbot\public; \l;class\u cbot\class; exchange
+\s;{
+\s; \l;static\u cbot\static; \l;private\u cbot\private; order m_order = new order;
+\n;
+\n;The \c;put\n; method will be used by the master robot for transmitting an order. As long as \c;m_order\n; is different from \c;\l;nan\u cbot\nan;\n;, the slave has not finished the order and the \c;put\n; method will return \c;false\n; and will do nothing¦:
+
+\c;\s; \l;synchronized\u cbot\synchro; \l;bool\u cbot\bool; put(order a)
+\s; {
+\s; if ( m_order.m_type == nan )
+\s; {
+\s; m_order = a;
+\s; return true;
+\s; }
+\s; else
+\s; {
+\s; return false;
+\s; }
+\s; }
+\n;
+Another method \c;get\n; will be used by the slave to retrieve the orders. This method returns the order to be executed:
+
+\c;\s; \l;synchronized\u cbot\synchro; order get()
+\s; {
+\s; return m_order;
+\s; }
+\n;
+A third method \c;delete\n; will be used by the slave to indicate that the order has been executed:
+
+\c;\s; \l;synchronized\u cbot\synchro; void delete()
+\s; {
+\s; m_order.m_type = nan;
+\s; }
+\s;}
+\n;
+The main program of the slave contains an instance of the class \c;exchange\n; called \c;list\n;. We put () after the word \c;list\n; in order to create an instance of the class \c;exchange\n;.
+
+\c;\s;\l;extern\u cbot\extern; void object::Slave3( )
+\s;{
+\s; exchange list();
+\s; order todo;
+\n;
+The outer \c;while\n; loop lasts for ever. The inner \c;while\n; loop waits for an order by using the \c;get\n; method of the \c;exchange\n; class. As soon as \c;get\n; returns a value different from \c;nan\n;, the while loop stops.
+
+\c;\s; \l;while\u cbot\while; ( true )
+\s; {
+\s; \l;while\u cbot\while; ( true )
+\s; {
+\s; todo = list.get();
+\s; if ( todo.m_type != nan ) break;
+\s; wait(1);
+\s; }
+\n;
+Now we have received the order in the \c;todo\n; variable. All we have to do is execute it:
+
+\c;\s; if ( todo.m_type == 1 )
+\s; {
+\s; move(todo.m_param);
+\s; }
+\s; else if ( todo.m_type == 2 )
+\s; {
+\s; turn(todo.m_param);
+\s; }
+\s; else
+\s; {
+\s; message("Unknown order");
+\s; }
+\n;
+As soon as the execution of the order is finished, we must call the \c;delete\n; method so the master knows that another order can be sent¦:
+
+\c;\s; list.delete();
+\s; }
+\s;}
+\n;
+\b;The master
+In the master we write an function called \c;SendOrder\n; which will send an order to the slave:
+
+\c;\s;void object::SendOrder(float order, float param)
+\s;{
+\s; exchange list();
+\s; order todo();
+\s;
+\s; todo.m_type = order;
+\s; todo.m_param = param;
+\s;
+\s; while ( list.put(todo) == false )
+\s; {
+\s; wait(1);
+\s; }
+\s;}
+\n;
+The \c;while\n; loop waits until a pending order has been terminated, that is the slaved has exited from the \c;get\n; method and the \c;delete\n; method has been called.
+Now the main program of the master is very simple:
+
+\c;\s;extern void object::Remote4( )
+\s;{
+\s; SendOrder(1, 20); // move(20);
+\s; SendOrder(2, 90); // turn(90);
+\s; SendOrder(1, 20); // move(20);
+\s; SendOrder(2, 90); // turn(90);
+\s; SendOrder(1, 10); // move(10);
+\s; SendOrder(2, 90); // turn(90);
+\s; SendOrder(1, 10); // move(10);
+\s; SendOrder(2,-90); // turn(-90);
+\s; SendOrder(1, 10); // move(10);
+\s;}
+\n;
+\key;\key help;\norm; show these instruction at any time.
+
+
+\t;See also
+\l;Controls\u command; and \l;programming\u cbot;.
diff --git a/help/F/tremote5.txt b/help/F/tremote5.txt
new file mode 100644
index 00000000..f2313946
--- /dev/null
+++ b/help/F/tremote5.txt
@@ -0,0 +1,113 @@
+\b;Exercise
+Remote control a slave robot without using an \l;information exchange post\u object\exchange;. The robot should pass over the 6 blue crosses.
+
+The two main actors of this exercise are:
+1) The \l;wheeled grabber\u object\botgr; without an energy pack and therefore immobile. This is the master you should program so it will transmit orders to the slave.
+2) The slave \l;practice bot\u object\bottr; which is already programmed and just waits for orders from the master.
+
+The orders shall be stored, so the master will be able to transmit several orders without waiting for each order being processed. We use an \l;array\u cbot\array; for this purpose.
+
+\b;The slave
+First of all we must understand how the program of the slave works. The \l;class\u cbot\class; \c;order\n; contains two members: \c;m_type\n; is the order to execute (move or turn) and \c;m_param\n; is the distance to move or the rotation angle¦:
+
+\c;\s;\l;public\u cbot\public; \l;class\u cbot\class; order
+\s;{
+\s; \l;int\u cbot\int; m_type;
+\s; \l;float\u cbot\float; m_param;
+\s;}
+\n;
+A second \l;class\u cbot\class; \c;exchange\n; contains the mechanism for exchanging the orders. We declare a \c;\l;static\u cbot\static;\n; class member \c;m_fifo\n; which will contain the list of orders to be executed. The word \c;static\n; insures that the member \c;m_fifo\n; is shared between all instances of the \l;class\u cbot\class; exchange.
+
+\c;\s;{
+\s; \l;static\u cbot\static; \l;private\u cbot\private; order m_fifo[] = null;
+\n;
+The \c;put\n; method will be used by the master robot for transmitting an order. The order will simply be added at the end of the \c;m_fifo\n; array:
+
+\c;\s; \l;synchronized\u cbot\synchro; void put(order a)
+\s; {
+\s; m_fifo[sizeof(m_fifo)] = a;
+\s; }
+\n;
+Another method \c;get\n; will be used by the slave to retrieve the orders. This method returns the order to be executed. If the list is empty, \c;null\n; will be returned and the robot must wait for more orders. Otherwise the first order in the list must be returned and the remaining orders must be "scrolled up". As an array can not be "shortened" we use a temporary array \c;copy\n;¦:
+
+\c;\s; \l;synchronized\u cbot\synchro; order get()
+\s; {
+\s; if ( sizeof(m_fifo) == 0 ) return null;
+\s;
+\s; order a = m_fifo[0];
+\s; order copy[] = null;
+\s; for ( int i=1 ; i 9)
+\s; {
+\s; \l;jet\u cbot\jet;(-1);
+\s; }
+\s; \l;wait\u cbot\wait;(0.2);
+\s; }
+\s; \l;fire\u cbot\fire;(1);
+\s; }
+\s;}
+\n;
+In order to adapt the program to shooting wasps, you need to make a few changes. Replace all \c;radar(AlienAnt)\n; with \c;radar(AlienWasp)\n;. The cannon must aim straight forward and not downward, replace \c;aim(-20);\n; with \c;aim(0);\n;. And the bot must fly at the same height as the wasp. For this, you must compare the altitude of the bot given by \c;position.z\n; with the altitude of the wasp given by \c;item.position.z\n;: if \c;position.z > item.position.z\n;, go down slowly with \c;jet(-0.3);\n;. If \c;position.z < item.position.z-1\n;, climb slowly with \c;jet(0.3);\n;. A winged shooter is higher than a wasp, therefore it is better if the altitude of the bot is a little lower than the altitude of the wasp. In this case, we admit that the altitude of the bot ranges between the altitude of the wasp and the altitude of the wasp minus 1.
+
+\t;Further improvement
+Wasps move very fast. In order to increase your chances to get them, better to repeat just before the \c;fire(1);\n; a \c;radar\n; and a \c;turn\n; in order to perform a last readjustment of the direction before the shot.
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/twasp2.txt b/help/F/twasp2.txt
new file mode 100644
index 00000000..fcec44ab
--- /dev/null
+++ b/help/F/twasp2.txt
@@ -0,0 +1,84 @@
+\b;Objective
+Bring down the flying wasps in a more efficient way than with the previous program.
+
+\b;Program
+Here is again the program of the previous exercise that shoots down all the wasps after many, many unsuccessful attempts:
+\c;
+\s;extern void object::Wasp1()
+\s;{
+\s; \l;object\u cbot\type; item;
+\s;
+\s; \l;aim\u cbot\aim;(0);
+\s;
+\s; \l;while\u cbot\while; (true)
+\s; {
+\s; \l;while\u cbot\while; (\l;radar\u cbot\radar;(AlienWasp, 0, 360, 0, 20) == null)
+\s; {
+\s; item = \l;radar\u cbot\radar;(AlienWasp);
+\s; \l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));
+\s; \l;motor\u cbot\motor;(1,1);
+\s;
+\s; \l;jet\u cbot\jet;(0);
+\s; \l;if\u cbot\if; (position.z > item.position.z)
+\s; {
+\s; \l;jet\u cbot\jet;(-0.3);
+\s; }
+\s;
+\s; \l;if\u cbot\if; (position.z < item.position.z - 1)
+\s; {
+\s; \l;jet\u cbot\jet;(0.3);
+\s; }
+\s;
+\s; \l;wait\u cbot\wait;(0.2);
+\s; }
+\s; item = \l;radar\u cbot\radar;(AlienWasp);
+\s; \l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));
+\s; \l;fire\u cbot\fire;(1);
+\s; }
+\s;}
+\n;
+The many failures are due to the fact that the wasp is already gone before the bullets can reach it. The only way to improve the program consists in setting the power of the two motors and of the jet in such a way that the bot follows the movement of the target during the burst.
+
+Just before the shot, the program adjusts a last time the direction with \c;turn(direction(item.position));\n;. In order to follow the wasp during the burst, you have to "remember" the angle of this last rotation: if the angle was positive (rotation to the left), the bot must continue to turn left during the burst; if the angle was negative, the bot must continue to turn right.
+
+In order to "remember" the angle of the last rotation, we need a variable that can contain just one number. If we choose to call it \c;angle\n;, we must define the variable with the following line at the beginning of the program:
+\c;
+\s; \l;float\u cbot\type; angle;
+\n;
+The variable type \l;float\u cbot\type; is the variable type that can contain any number, i.e. whole numbers or real numbers. Please refer to the \l;text about variable types\u cbot\type; if you want to know more about the different types of variables and what they can contain.
+
+Just before the instruction \c;fire(1);\n;, instead of writing \c;\l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));\n;, we will put the rotation angle into the variable \c;angle\n;:
+\c;
+\s; angle = direction(item.position);
+\n;
+Then we perform the rotation, and we set the power of the motors so that the bot continues the movement:
+\c;
+\s; turn(angle);
+\s; if (angle < 0)
+\s; {
+\s; motor(1,0.5);
+\s; }
+\s; else
+\s; {
+\s; motor(0.5,1);
+\s; }
+\n;
+The instruction \c;else\n; determines what instructions the program should execute if the condition stated in the \c;if\n; instruction is false.
+
+Then we must set the power of the jet so that the bot follows the wasp also in the vertical direction:
+\c;
+\s; jet(0);
+\s; if(position.z > item.position.z)
+\s; {
+\s; jet(-0.3);
+\s; }
+\s;
+\s; if(position.z < item.position.z - 1)
+\s; {
+\s; jet(0.3);
+\s; }
+\n;
+As you will see, this program is much more efficient than the previous one!
+
+\t;See also
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/F/win.txt b/help/F/win.txt
new file mode 100644
index 00000000..88e55a42
--- /dev/null
+++ b/help/F/win.txt
@@ -0,0 +1,3 @@
+
+Houston congratulates you in the name of mankind for the success of your missin.
+The Great Migration to Terra Nova will start very soon.
diff --git a/help/P/COMMAND.TXT b/help/P/COMMAND.TXT
new file mode 100644
index 00000000..a2d7071a
--- /dev/null
+++ b/help/P/COMMAND.TXT
@@ -0,0 +1,45 @@
+\b;Sterowanie
+Polecana jest gra z jedną ręką na klawiszach strzałek a drugą na myszy.
+
+\t;Roboty
+\key;\key left;\norm; = skręt w lewo
+\key;\key right;\norm; = skręt w prawo
+\key;\key up;\norm; = ruch do przodu
+\key;\key down;\norm; = ruch do tyłu
+Klawisze te nie są dostępne dla \l;robota treningowego\u object\bottr;.
+
+\key;\key gup;\norm; = start i wznoszenie siÄ™ \button 28;
+\key;\key gdown;\norm; = opuszczanie siÄ™ i lÄ…dowanie \button 29;
+Te klawisze są oczywiście dostępne tylko dla \l;astronauty\u object\human; oraz \l;robotów latających\u object\botgj; w niektórych misjach.
+
+mysz do przodu = celowanie wyżej
+mysz do tyłu = celowanie niżej
+mysz w prawo = celowanie w prawo
+mysz w lewo = celowanie w lewo
+Klawisze te dostępne są tylko dla \l;dział\u object\botfr;, \l;dział organicznych\u object\botor; i \l;działa fazowego\u object\botphaz;.
+
+\key;\key action;\norm; = główne działanie zaznaczonego obiektu (człowieka lub robota)
+Klawisz ten pozwala np. na operowanie ramieniem \l;transportera\u object\botgr; lub strzelanie z \l;działa\u object\botfr; \button 42;.
+
+\t;Zaznaczanie
+\key;\key next;\norm; = zaznacza następny obiekt
+\key;\key human;\norm; = zaznacza astronautÄ™
+\key;\key desel;\norm; = poprzednie zaznaczenie \button 10;
+
+\t;Kamera
+\key;\key camera;\norm; = przełącza pomiędzy kamerą pokładową i podążającą za robotem \button 13;
+\key;\key near;\norm; = powiększenie
+\key;\key away;\norm; = pomniejszenie
+\key;\key visit;\norm; = zatrzymuje grę i wyświetla miejsce pochodzenia ostatniej wiadomości. Kolejne naciśnięcie pokazuje pochodzenie poprzedniej wiadomości.
+
+\t;Pomoc
+\key;\key help;\norm; = rozkazy dot. misji
+\key;\key prog;\norm; = podręcznik programowania
+
+\t;Gra
+\key;\key speed10;\norm; = normalna prędkość x1
+\key;\key speed15;\norm; = średnia prędkość x1,5
+\key;\key speed20;\norm; = duża prędkość x2
+\key;\key quit;\norm; = wyjście z misji \button 11;
+
+Wszystkie powyższe ustawienia klawiszy sterowania mogą być zmienione w menu opcje/sterowanie.
diff --git a/help/P/Cbot.txt b/help/P/Cbot.txt
new file mode 100644
index 00000000..bccf8cc6
--- /dev/null
+++ b/help/P/Cbot.txt
@@ -0,0 +1,91 @@
+\b;Programowanie - język CBOT
+Język CBOT jest zbliżony strukturą i składnią do takich języków programowania jak C++ i Java. Został on przystosowany do specyficznych zadań gry COLOBOT, przy uwzględnieniu aspektu pedagogicznego.
+Składa się on z instrukcji (zobacz poniżej), \l;bloków\u cbot\bloc;, \l;funkcji\u cbot\function;, \l;klas\u cbot\class;, \l;zmiennych\u cbot\var;, \l;tablic\u cbot\array;, \l;wyrażeń\u cbot\expr; i \l;warunków\u cbot\cond;.
+
+o \c;\token;Instrukcje\norm;\n;
+W edytorze programu, instrukcje języka CBOT są zawsze wyświetlane na pomarańczowym tle. Jeśli jest inaczej, oznacza to literówkę w nazwie instrukcji. Nazwy instrukcji są zawsze pisane małymi literami.
+
+o \c;\type;Typy\norm;\n;
+\l;Typ\u cbot\type; zmiennej wyświetlany jest na zielonym tle.
+
+o \c;\const;Stałe\norm;\n;
+Stałe, podobnie jak \l;kategorie\u cbot\category;, wyświetlane są na czerwonym tle.
+
+\t;Instrukcje w języku CBOT:
+\c;\l;extern\u cbot\extern; \n;Oznacza główną funkcję
+\c;\l;if\u cbot\if; \n;Struktura wyboru
+\c;\l;else\u cbot\if; \n;Struktura wyboru alternatywy
+\c;\l;for\u cbot\for; \n;Struktura pętli
+\c;\l;while\u cbot\while; \n;Struktura kontroli
+\c;\l;do\u cbot\do; \n;Struktura kontroli
+\c;\l;break\u cbot\break; \n;Wychodzi z pętli
+\c;\l;continue\u cbot\continue; \n;Kontynuuje pętlę
+\c;\l;return\u cbot\return; \n;Wychodzi z funkcji
+\c;\l;sizeof\u cbot\sizeof; \n;Rozmiar tablicy
+
+\t;Instrukcje specyficzne dla robotów:
+\c;\l;radar\u cbot\radar; \n;Wykrywa obiekty
+\c;\l;direction\u cbot\direct; \n;Oblicza kÄ…t obrotu
+\c;\l;distance\u cbot\dist; \n;Oblicza odległość
+\c;\l;distance2d\u cbot\dist2d; \n;Oblicza odległość
+\c;\l;wait\u cbot\wait; \n;Czeka
+\c;\l;move\u cbot\move; \n;Przesuwa naprzód lub wstecz
+\c;\l;turn\u cbot\turn; \n;Obraca
+\c;\l;goto\u cbot\goto; \n;Przemieszcza siÄ™ do zadanej pozycji
+\c;\l;motor\u cbot\motor; \n;Bezpośrednia kontrola nad silnikiem
+\c;\l;jet\u cbot\jet; \n;Bezpośrednia kontrola nad odrzutem
+\c;\l;message\u cbot\message; \n;Wyświetla komunikat
+\c;\l;retobject\u cbot\retobj; \n;Zwraca obiekt z funkcji
+\c;\l;errmode\u cbot\errmode; \n;Sposób traktowania błędów
+\c;\l;abstime\u cbot\abstime; \n;Zwraca czas absolutny
+
+\t;Instrukcje zwiÄ…zane z topologiÄ… terenu:
+\c;\l;space\u cbot\space; \n;Znajduje wolne miejsce
+\c;\l;topo\u cbot\topo; \n;Zwraca wysokość punktu
+\c;\l;flatground\u cbot\flatgrnd; \n;Zwraca promień płaskiego obszaru
+
+\t;Instrukcje specyficzne dla niektórych robotów:
+\c;\l;grab\u cbot\grab; \n;Podnosi przedmiot
+\c;\l;drop\u cbot\drop; \n;Upuszcza przedmiot
+\c;\l;sniff\u cbot\sniff; \n;Nasłuchuje podglebie
+\c;\l;thump\u cbot\thump; \n;Przewraca obce organizmy
+\c;\l;recycle\u cbot\recycle; \n;Odzyskuje tytan z pozostałości robota
+\c;\l;shield\u cbot\shield; \n;Rozszerza lub wyłącza osłonę
+\c;\l;fire\u cbot\fire; \n;Strzela z działa
+\c;\l;aim\u cbot\aim; \n;Ustawia kÄ…t lufy w pionie
+
+\t;Instrukcje specyficzne dla stacji przekaźnikowych:
+\c;\l;receive\u cbot\receive; \n;Odbiera informacjÄ™
+\c;\l;send\u cbot\send; \n;Wysyła nową informację
+\c;\l;testinfo\u cbot\testinfo; \n;Sprawdza czy istnieje informacja
+\c;\l;deleteinfo\u cbot\delinfo; \n;Usuwa istniejÄ…cÄ… informacjÄ™
+
+\t;Instrukcje specyficzne dla klas:
+\c;\l;class\u cbot\class; \n;Deklaracja klasy
+\c;\l;public\u cbot\public; \n;Deklaracja funkcji publicznej
+\c;\l;private\u cbot\private; \n;Deklaracja prywatnego elementu klasy
+\c;\l;static\u cbot\static; \n;Deklaracja statycznego elementu klasy
+\c;\l;synchronized\u cbot\synchro; \n;Zapobiega jednoczesnemu wykonywaniu
+\c;\l;new\u cbot\new; \n;Tworzy nowÄ… instancjÄ™
+\c;\l;this\u cbot\this; \n;Odwołanie do bieżącej instancji
+
+\t;Instrukcje specyficzne dla łańcuchów:
+\c;\l;strlen\u cbot\strlen; \n;Podaje długość łańcucha
+\c;\l;strleft\u cbot\strleft; \n;Wyodrębnia lewą część
+\c;\l;strright\u cbot\strright; \n;Wyodrębnia prawą część
+\c;\l;strmid\u cbot\strmid; \n;Wyodrębnia środkową część
+\c;\l;strfind\u cbot\strfind; \n;Znajduje podłańcuch.
+\c;\l;strval\u cbot\strval; \n;Zamienia łańcuch na liczbę
+\c;\l;strupper\u cbot\strupper; \n;Zamienia litery na wielkie
+\c;\l;strlower\u cbot\strlower; \n;Zamienia litery na małe
+
+\t;Instrukcje specyficzne dla plików:
+\c;\l;open\u cbot\open; \n;Otwiera plik
+\c;\l;close\u cbot\close; \n;Zamyka plik
+\c;\l;writeln\u cbot\writeln; \n;Zapisuje wiersz do pliku
+\c;\l;readln\u cbot\readln; \n;Wczytuje wiersz z pliku
+\c;\l;eof\u cbot\eof; \n;Sprawdza czy jest już koniec pliku
+\c;\l;deletefile\u cbot\deletef; \n;Usuwa plik
+
+\t;Zobacz również
+\l;Typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/Tant1.TXT b/help/P/Tant1.TXT
new file mode 100644
index 00000000..481d21d0
--- /dev/null
+++ b/help/P/Tant1.TXT
@@ -0,0 +1,16 @@
+\b;Zadanie
+Aby obronić się przed ogromnymi mrówkami atakującymi z północy, obracaj robota podczas strzelania, w celu uzyskania ognia zaporowego.
+
+\t;Program
+Podczas bezpośredniej kontroli robota, można obracać jego działkiem podczas strzelania w celu ostrzelania większej strefy. Można to zrobić również poprzez programowanie, ale wtedy trzeba obracać całego robota instrukcją \c;\l;motor\u cbot\motor;( , )\n;. Instrukcja ta potrzebuje dwóch liczb: prędkości lewego silnika i prędkości prawego silnika. Liczby te powinny zawierać się w przedziale od -1 do +1.\c; motor(1,1);\n; porusza robota naprzód z maksymalną prędkością (pełna moc obu silników).\c; motor(-1,-1);\n; porusza robota do tyłu z maksymalną prędkością.\c; motor(1,0.9);\n; porusza robota do przodu z niewielkim obrotem w prawo: lewy silnik kręci się nieco szybciej niż prawy. A \c;motor(1,-1);\n; obraca robota w miejscu zgodnie ze ruchem wskazówek zegara: lewy silnik porusza się do przodu, prawy do tyłu.
+
+Po wykonaniu instrukcji \l;motor\u cbot\motor; silniki utrzymują nadaną im prędkość aż do następnej instrukcji \c;motor\n;, \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n; lub \c;\l;goto\u cbot\goto;\n;. Na przykład jeśli wykonasz obrót w miejscu instrukcją \c;motor(1,-1);\n;, a następnie strzał instrukcją \c;fire(1);\n;, robot będzie kontynuował obrót i ostrzela całą strefę.
+
+Mrówki atakują z północy. Aby ostrzelać całą strefę na północ od robota, najpierw obróć go o 90 stopni w lewo instrukcją \c;turn(90);\n;, a następnie powtarzaj, używając pętli \c;\l;while\u cbot\while; (true)\n; następujące instrukcje:
+o obrót w prawo: \c;motor(1,-1);\n;
+o 2 sekundowa seria: \c;fire(2);\n;
+o obrót w lewo: \c;motor(-1,1);\n;
+o 2 sekundowa seria.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/Tant2.TXT b/help/P/Tant2.TXT
new file mode 100644
index 00000000..a3c587da
--- /dev/null
+++ b/help/P/Tant2.TXT
@@ -0,0 +1,33 @@
+\b;Zadanie
+Przystosuj program \c;Spider2\n; do lotu na zadanej wysokości, w celu obrony przed atakującymi z każdej strony mrówkami.
+
+\t;Program
+Program niezbędny do wykonania tego zadania jest podobny do programu \c;Spider2\n;, który szuka najbliższego pająka, obraca się w jego kierunku i strzela:
+\c;
+\s;extern void object::Spider2()
+\s;{
+\s; object item;
+\s;
+\s; while (true)
+\s; {
+\s; item = radar(AlienSpider);
+\s; turn(direction(item.position));
+\s; fire(1);
+\s; }
+\s;}
+\n;
+Możesz go skopiować i wkleić do edytora oraz przystosować do nowego zadania. Zamień \c;radar(AlienSpider);\n; na \c;radar(AlienAnt);\n;, i napisz przed pętlą \c;while\n; inną pętlę uruchamiającą napęd odrzutowy \l;działa latającego\u object\botfj; do chwili osiągnięcia przez robota wysokości 20 metrów.
+
+Instrukcja \c;\l;jet\u cbot\jet;()\n; kontroluje napęd odrzutowy robota latającego. Liczba w nawiasach musi się zawierać w przedziale od \c;-1\n; do \c;1\n;.\c; jet(1);\n; unosi robota do góry z maksymalną prędkością. \c; jet(-1);\n; opuszcza robota w dół z maksymalną prędkością, a \c;jet(0);\n; powoduje, że robot utrzymuje uzyskaną wysokość. Ponieważ robot musi osiągnąć dokładną wysokość, wzlatuj nim powoli używając instrukcji \c;jet(0.2);\n;, poczekaj aż osiągnie pożądaną wysokość i ustabilizuj wysokość instrukcją \c;jet(0);\n;.
+
+Aby "czekać aż do osiągnięcia żądanej wysokości", konieczne jest użycie pętli warunkowej: instrukcje wewnątrz niej będą powtarzane tak długo, jak podany warunek jest prawdziwy. Wysokość robota jest podawana przez \c;position.z\n;. Jak już widzieliśmy, instrukcja \c;position\n; podaje pozycję robota. Jest ona określona przez trzy współrzędne x, y oraz z: oś x jest osią zachód-wschód, oś y jest osią południe-północ, a oś z jest osią pionową. Wobec tego należy poczekać tak długo jak \c;position.z\n; będzie mniejsze niż 20:
+\c;
+\s; while (position.z < 20)
+\s; {
+\s; wait(0.2);
+\s; }
+\n;
+Po odczekaniu 0,2 sekundy, program sprawdzi czy wysokość jest wciąż mniejsza od 20 metrów. Jeśli tak, poczeka jeszcze chwilę, a jeśli nie, program będzie kontynuowany po pętli, tzn. po klamrze zamykającej \c;}\n;. Nie zapomnij po pętli ustabilizować wysokości instrukcją \c;jet(0);\n;.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/Tant3.TXT b/help/P/Tant3.TXT
new file mode 100644
index 00000000..c3096e57
--- /dev/null
+++ b/help/P/Tant3.TXT
@@ -0,0 +1,40 @@
+\b;Zadanie
+Aby zapobiec marnowaniu energii przystosuj program \c;Tower1\n; tak, aby nie strzelał do mrówek będących poza zasięgiem.
+
+\t;Program
+Program \c;Tower1\n; strzela w kierunku najbliższej mrówki, nawet jeśli wciąż jest ona poza zasięgiem:
+\c;
+\s;extern void object::Tower1()
+\s;{
+\s; object item;
+\s;
+\s; jet(0.2);
+\s; while(position.z < 20)
+\s; {
+\s; wait(0.2);
+\s; }
+\s; jet(0);
+\s;
+\s; while(true)
+\s; {
+\s; item = radar(AlienAnt);
+\s; turn(direction(item.position));
+\s; fire(1);
+\s; }
+\s;}
+\n;
+Jeśli robot musi wykonać to samo zadanie co poprzednio z dostępnym jedynie \l;zwykłym ogniwem elektrycznym\u object\power;, wstaw pętlę oczekującą na wystarczające zbliżenie się mrówki (czyli mniej niż 40 metrów). Wtedy dla każdej mrówki wystarczy jedna seria strzałów.
+
+Instrukcji \c;\l;radar\u cbot\radar();\n; można podać więcej parametrów (liczb) oznaczających gdzie radar powinien szukać mrówek. Na przykład \c;radar(AlienAnt,0,360,0,40);\n; będzie szukał tylko mrówek będących bliżej niż 40 metrów. Dwie pierwsze liczby określają, że radar powinien szukać we wszystkich kierunkach, dwie ostatnie określają, że radar powinien wykrywać tylko mrówki w odległości od 0 do 40 metrów. Jeśli nie zostanie znaleziona mrówka będąca bliżej niż 40 metrów, instrukcja \c;\l;radar\u cbot\radar();\n; zwróci wartość \c;null\n;. Wobec czego można więc napisać pętlę warunkową podobną do napisanej w poprzednim ćwiczeniu, która czeka na pojawienie się mrówki bliżej niż 40 metrów:
+\c;
+\s; while (radar(AlienAnt, 0, 360, 0, 40) == null)
+\s; {
+\s; wait(0.2);
+\s; }
+\n;
+Zauważ, że podwójny znak równości "==" jest konieczny do wykonania sprawdzenia równości stron.
+
+Aby robot czekał ze strzałem, aż mrówka będzie bliżej niż 40 metrów, wystarczy wstawić te dwie linie przed instrukcją \c;fire(0);\n;,. Wtedy nawet zwykłe ogniwo elektryczne wystarczy do zabicia wszystkich mrówek.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/Tant4.TXT b/help/P/Tant4.TXT
new file mode 100644
index 00000000..64d8f7e8
--- /dev/null
+++ b/help/P/Tant4.TXT
@@ -0,0 +1,10 @@
+\b;Zadanie
+Zaprogramuj \l;działo latające\u object\botfj; do zabicia wszystkich mrówek w okolicy.
+
+\t;Program
+Na tych bagnach działa na kołach lub gąsienicach będą niezbyt przydatne. A mrówki, w odróżnieniu od pająków, poruszają się: nie wystarczy obrócić się w kierunku najbliższej mrówki, podejść i strzelić.
+
+Najprostszy sposób rozwiązania tego problemu polega na lataniu na wysokości 10 metrów, celowaniu w dół: \c;aim(-20);\n; i zbliżaniu się do mrówki używając pętli warunkowej, o ile \l;odległość\u cbot\dist; jest większa niż 20 m. W pętli warunkowej musisz znaleźć najbliższą mrówkę, obrócić się w jej kierunku, ustawić silniki na pełną moc instrukcją \c;motor(1,1);\n; i chwilę poczekać, na przykład 0,2 sekundy. Te wszystkie instrukcje muszą być powtarzane aż do zbliżenia się na odległość mniejszą niż 20 metrów od mrówki. Wtedy wystarczy tylko ją zastrzelić.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/Tant5.TXT b/help/P/Tant5.TXT
new file mode 100644
index 00000000..3d3fce56
--- /dev/null
+++ b/help/P/Tant5.TXT
@@ -0,0 +1,52 @@
+\b;Zadanie
+Przystosuj wysokość lotu \l;działa latającego\u object\botfj; do terenu.
+
+\t;Program
+Oto jeszcze raz program polujący na mrówki z poprzedniego ćwiczenia:
+\c;
+\s;extern void object::JetFighter1()
+\s;{
+\s; object item;
+\s;
+\s; aim(-20);
+\s; jet(0.2);
+\s; while (position.z < 10)
+\s; {
+\s; wait(0.2);
+\s; }
+\s; jet(0);
+\s;
+\s; while (true)
+\s; {
+\s; while (radar(AlienAnt, 0, 360, 0, 20) == null)
+\s; {
+\s; item = radar(AlienAnt);
+\s; turn(direction(item.position));
+\s; motor(1,1);
+\s; wait(0.2);
+\s; }
+\s; fire(1);
+\s; }
+\s;}
+\n;
+Robot zawsze utrzymuje wysokość 10 m nad poziomem morza. Nie jest on przystosowany do górzystego terenu w tym ćwiczeniu. Najlepszym sposobem przystosowania programu jest wstawienie przed instrukcją \c;wait(0.2);\n; testu sprawdzającego czy wysokość nad poziomem ziemi jest za mała lub za duża i odpowiednie reagowanie.
+
+Wiesz już że instrukcja \c;position.z\n; podaje wysokość nad poziomem morza. Instrukcja \c;\l;topo\u cbot\topo;(position)\n; podaje wysokość nad poziomem ziemi w pozycji robota. Jeśli chcesz, aby robot utrzymywał wysokość pomiędzy 6 i 9 m nad ziemią, należy rozpatrzyć następujące przypadki: jeśli \c;position.z-topo(position)\n; jest mniejsze od 6, robot musi się wznieść: \c;jet(1);\n;. Jeśli \c;position.z-topo(position)\n; jest większe od 9, robot musi zmniejszyć wysokość: \c;jet(-1);\n;. Aby zaprogramować te testy, użyj instrukcji \c;\l;if\u cbot\if;\n;, która wykonuje instrukcje w klamrach jedynie wtedy gdy warunek jest prawdziwy:
+\c;
+\s; jet(0);
+\s; if (position.z-topo(position) < 6)
+\s; {
+\s; jet(1);
+\s; }
+\s;
+\s; if (position.z-topo(position) > 9)
+\s; {
+\s; jet(-1);
+\s; }
+\n;
+Przed rozpoczęciem testowania, ustabilizuj wysokość instrukcją \c;jet(0);\n;: w przypadku wysokości nad poziomem ziemi pomiędzy 6 i 9 m, robot nie musi zmieniać wysokości lotu. Jeśli później zostanie wykonana instrukcja \c;jet(1);\n; lub \c;jet(-1);\n; anuluje ona poprzednią instrukcję \c;jet(0);\n;.
+
+Wystarczy wstawić te linie przed instrukcją \c;wait(0.2)\n;, a robot przystosuje się do terenu. Możesz już usunąć pierwszą linię programu ustawiającą wysokość początkową na 10 m.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/Tcell1.TXT b/help/P/Tcell1.TXT
new file mode 100644
index 00000000..20b2e907
--- /dev/null
+++ b/help/P/Tcell1.TXT
@@ -0,0 +1,38 @@
+\b;Zadanie
+Zaprogramuj \l;transporter\u object\botgr; do zmiany \l;ogniwa elektrycznego\u object\power; \l;działa latającego\u object\botfj;. Wtedy będzie ono mogło strzelać do pająków.
+
+\t;Procedura
+1) Zaprogramuj \l;transporter\u object\botgr;.
+2) Uruchom program klawiszem strzałki \button 21;.
+\l;Działo latające\u object\botfj; jest już zaprogramowane, wystarczy je zasilić nowym ogniwem elektrycznym, aby wykonało swoją robotę.
+
+\t;Program
+Potrzebne Ci będą następujące instrukcje:
+\c;
+\s;grab();\n;
+\n;Podnosi przedmiot znajdujÄ…cy siÄ™ przed robotem.
+\c;
+\s;drop();\n;
+\n;Wypuszcza przedmiot niesiony przez robota.
+\c;
+\s;turn();\n;
+\n;Instrukcja ta już się pojawiła w poprzednim ćwiczeniu: obraca ona robota o podany w stopniach kąt.
+
+Zobaczmy poczÄ…tek programu:
+o podnieÅ› puste ogniwo elektryczne: \c;grab();\n;
+o obróć się w lewo o 90 stopni (ćwierć obrotu): \c;turn(90)\n;
+o upuść puste ogniwo: \c;drop();\n;
+o itd.
+
+Do Ciebie należy napisanie reszty programu!
+
+Jeśli masz problem, zawsze możesz zerknąć na rozwiązanie: zaznacz program \c;Rozwiązanie\n; i kliknij przycisk z klamrami \button 22;.
+
+\t;Uwagi
+Zachowaj ostrożność i pisz instrukcje dokładnie, uwzględniając małe i wielkie litery.
+
+W każdymi wierszu powinna być jedna instrukcja, a wiersz zakończony średnikiem.
+
+Jeśli Twój program nie robi tego czego oczekujesz, możesz wrócić do pozycji wyjściowej, naciskając przycisk \button 59;. Można również zacząć wszystko od początku (naciśnij klawisz "Esc", a następnie kliknij "Uruchom ponownie"). Napisany program nie zostanie usunięty.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala przejrzeć te instrukcje w dowolnej chwili.
diff --git a/help/P/Tcell2.TXT b/help/P/Tcell2.TXT
new file mode 100644
index 00000000..df9bf691
--- /dev/null
+++ b/help/P/Tcell2.TXT
@@ -0,0 +1,48 @@
+\b;Zadanie
+Zasil \l;działa latające\u object\botfj; \l;ogniwami elektrycznymi\u object\power;, aby mogły zabić mrówki znajdujące się w gnieździe mrówek w jamie na północ od Ciebie.
+
+\t;Program
+\l;Transporter na kołach\u object\botgr; musi podejść do \l;ogniwa elektrycznego\u object\power;, podnieść je, podejść do \l;działa latającego\u object\botfj; i umieścić w nim ogniwo. To zadanie jest bardzo podobne do zadania z poprzedniego ćwiczenia. Oto jeszcze raz ten program:
+\c;
+\s;extern void object::Titanium2()
+\s;{
+\s; object item;
+\s;
+\s; item = radar(TitaniumOre);
+\s; goto(item.position);
+\s; grab();
+\s;
+\s; item = radar(Converter);
+\s; goto(item.position);
+\s; drop();
+\s;}
+\n;
+Najlepszym sposobem rozwiązania obecnego ćwiczenia jest skopiowanie \button 61; powyższego programu do schowka (od \c;object\n; do \c;drop();\n;), i wklejenie \button 62; do edytora programu. Następnie wystarczy dokonać niezbędnych poprawek, aby przystosować go do nowego zadania.
+
+Zamiast szukać rudy tytanu (\c;TitaniumOre\n;), poszukaj ogniwa elektrycznego (\c;PowerCell\n;). Zamiast iść do huty (\c;Converter\n;), idź do działa latającego (\c;WingedShooter\n;). Działo latające zacznie pracę, jak tylko otrzyma nowe ogniwo elektryczne.
+
+Jeśli chcesz wiedzieć więcej o "nazwach" różnych obiektów języka programowania, zobacz pomoc dotyczącą \l;kategorii\u cbot\category;.
+
+\t;Dalsze usprawnienia: pętle
+Gdy opisany powyżej program będzie już działał idealnie, możesz go usprawnić, aby wykonywał zadanie w nieskończoność. W ten sposób nie będzie konieczne wielokrotne uruchamianie tego programu do zasilenia wielu robotów.
+
+Napisane dotychczas programy uruchamiają wszystkie instrukcje tylko raz, jedną po drugiej, od początku do końca programu. Można kazać robotowi powtarzać niektóre instrukcje: wystarczy napisać \c;while (true)\n;, klamrę otwierającą, instrukcje, które mają być powtarzane oraz klamrę zamykającą. Powtarzanie kilku instrukcji w ten sposób zwane jest pętlą. Oto przykład programu umożliwiającego powtarzanie w nieskończoność instrukcji szukających ogniwa elektrycznego, podnoszenia go i umieszczania w dziale latającym:
+\c;
+\s; while (true)
+\s; {
+\s; item = radar(PowerCell);
+\s; goto(item.position);
+\s; grab();
+\s;
+\s; item = radar(WingedShooter);
+\s; goto(item.position);
+\s; drop();
+\s; }
+\n;
+Oczywiście deklaracja zmiennej \c;object item;\n; powinna pojawić się przed pętlą, a nie wewnątrz niej: zmienną wystarczy zadeklarować raz.
+
+\t;Uwaga
+Robot może z powodzeniem wykonywać program samodzielnie. W międzyczasie możesz na przykład zaznaczyć astronautę i obejrzeć co się dzieje w gnieździe - warto. Uważaj jednak, aby nie postrzelił Cię własny robot...
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/Tspid1.TXT b/help/P/Tspid1.TXT
new file mode 100644
index 00000000..7acd442f
--- /dev/null
+++ b/help/P/Tspid1.TXT
@@ -0,0 +1,66 @@
+\b;Zadanie
+Napisz krótki program zabijający trzy pająki.
+
+\t;Procedura
+1) Aby zaprogramować robota, zaznacz go.
+2) Liczby od 1 do 4 odpowiadające programom zawartym w robocie są widoczne w lewej dolnej części ekranu. Zaznacz pierwszą linię.
+3) Kliknij przycisk z klamrami \button 22; a dostaniesz się do edytora, w którym możesz pisać program.
+4) Podczas pisania programu, klawisz key \key;\key help;\norm; wyświetli czytany właśnie przez Ciebie tekst. Po skończeniu pisania programu, kliknij przycisk "OK".
+5) Aby wykonać program, kliknij przycisk strzałki \button 21;.
+
+\t;Program
+Musisz dokładnie, krok po kroku wyjaśnić robotowi co powinien zrobić, aby zabić trzy pająki. Robot rozumie tylko precyzyjne instrukcje, które wykona jedną po drugiej.
+
+Po kliknięciu przycisku z klamrami \button 22; w celu pisania programu, będzie już tam jego część:
+\c;
+\s;extern void object::Spider1( )
+\s;{
+\s;
+\s; \n;tutaj napisz Twój program...\c;
+\s;
+\s;}
+\n;
+Nie zmieniaj tego, co zostało już napisane w edytorze, gdy go otworzysz. Dopisz tylko niezbędne instrukcje w miejscu kursora.
+
+Potrzebne Ci będą następujące instrukcje:
+\c;
+\s;aim(0);\n;
+\n;Ustawia działko w poziomie.
+\c;
+\s;turn();\n;
+\n;Wykonuje obrót o zadany kąt, podany w nawiasach w stopniach. Na przykład \c;turn(90);\n; obróci robota o 90 stopni czyli ćwierć obrotu w lewo. \c;turn(-90);\n; obróci o 90 stopni w prawo (również ćwierć obrotu). Wartości dodatnie obracają w prawo, ujemne w lewo. \c;turn(180);\n; spowoduje obrót w przeciwnym kierunku.
+\c;
+\s;fire(1);
+\n;Strzela z działka. Liczba w nawiasach określa czas trwania serii. W większości przypadków wystarcza 1 sekundowa seria.
+
+Zobaczmy poczÄ…tek programu:
+o ustaw działo poziomo: \c;aim(0);\n;
+o zastrzel pajÄ…ka przed robotem: \c;fire(1);\n;
+o obróć o 90 stopni w lewo: \c;turn(90)\n;
+o strzelaj: \c;fire(1);\n;
+o itd.
+
+Oto program wykonujÄ…cy to wszystko:
+\c;
+\s;extern void object::Spider1( )
+\s;{
+\s;
+\s; aim(0);
+\s; fire(1);
+\s; turn(90);
+\s; fire(1);
+\s;
+\s;}
+\n;
+Teraz do Ciebie należy napisanie reszty programu!
+
+Jeśli masz problem, zawsze możesz obejrzeć rozwiązanie: zaznacz program\c;Rozwiązanie\n; w lewej dolnej części ekranu i kliknij przycisk z klamrami \button 22;. Możesz nawet uruchomić program rozwiązanie, klikając przycisk strzałki \button 21;.
+
+\t;Uwagi
+Uważaj, żeby dokładnie pisać instrukcje, zwracając uwagę na małe i wielkie litery.
+
+Pisz zawsze jedną instrukcję w wierszy, kończąc każdy wiersz średnikiem.
+
+Jeśli program nie działa dokładnie w pożądany sposób, zawsze możesz umieścić robota w punkcie startowym, klikając przycisk \button 59;. Możesz również rozpocząć zadanie od samego początku (klikając przycisk "Esc", a następnie "Uruchom ponownie"). Napisany program nie będzie stracony.
+
+Klawisz \key;\key help;\norm; pozwala wyświetlić te instrukcje w dowolnej chwili.
diff --git a/help/P/Tspid2.TXT b/help/P/Tspid2.TXT
new file mode 100644
index 00000000..aa7e14c9
--- /dev/null
+++ b/help/P/Tspid2.TXT
@@ -0,0 +1,16 @@
+\b;Zadanie
+Zabij kilka pająków, których położenie nie jest znane. Do ich znalezienia użyj radaru robota.
+
+\t;Program
+Znajdź najbliższego pająka instrukcją \c;\l;radar\u cbot\radar;(AlienSpider);\n;, tak jak w poprzednich ćwiczeniach z rudą tytanu i ogniwami elektrycznymi. Nie podchodź jednak do pająka, gdyż robot ulegnie zniszczeniu, zanim tam dojdzie. Obróć się tylko w jego kierunku. Instrukcja \c;\l;direction\u cbot\direct;(item.position)\n; obliczy kąt obrotu, jaki powinien wykonać robot, aby wycelować w pająka. Aby wycelować w pająka należy napisać::
+\c;
+\s; \l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));
+\n;
+Zauważ dwa nawiasy zamykające na końcu wiersza, przed średnikiem. Są dwa nawiasy otwierające, więc muszą się też pojawić dwa nawiasy zamykające.
+
+Następnie strzel, wykonując instrukcję \c;\l;fire\u cbot\fire;(1);\n;.
+
+Również tutaj możesz użyć pętli \c;\l;while\u cbot\while; (true)\n; aby nie musieć ponownie wykonywać programu dla każdego pająka, tak jak w poprzednim ćwiczeniu.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/Tspid3.TXT b/help/P/Tspid3.TXT
new file mode 100644
index 00000000..132aa0b6
--- /dev/null
+++ b/help/P/Tspid3.TXT
@@ -0,0 +1,14 @@
+\b;Zadanie
+Zbliż się do pająków będących poza zasięgiem.
+
+\t;Program
+Ten program będzie podobny do poprzedniego, ale przed strzałem użyj instrukcji \c;\l;move\u cbot\move;();\n; aby zbliżyć się do celu na odpowiednią odległość.
+
+Pytanie tylko, ile metrów powinien przejechać robot. Instrukcja \c;\l;distance\u cbot\dist;( , )\n; oblicza odległość pomiędzy dwoma punktami. W tym przypadku, konieczne jest poznanie odległości pomiędzy robotem i celem. Pozycja celu podawana jest przez \c;item.position\n;, pozycja robota przez \c;position\n;. Odległość pomiędzy celem i robotem jest podana przez\c;\l;distance\u cbot\dist;(position, item.position)\n;. Zasięg działka strzelającego kulami ognia to 40 metrów. Aby się zbliżyć wystarczająco, robot musi iść naprzód \c;\l;distance\u cbot\dist;(position, item.position)-40\n; metrów. Robi to następujący wiersz:
+\c;
+\s; \l;move\u cbot\move;(\l;distance\u cbot\dist;(position, item.position)-40);
+\n;
+Wystarczy wstawić tę linię do poprzedniego programu przed instrukcją \c;fire(1);\n;, a robot zacznie się poruszać.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/Ttit1.TXT b/help/P/Ttit1.TXT
new file mode 100644
index 00000000..3e2f4a92
--- /dev/null
+++ b/help/P/Ttit1.TXT
@@ -0,0 +1,14 @@
+\b;Zadanie
+Napisz program, który przenosi porcję \l;rudy tytanu\u object\titanore; do \l;huty\u object\convert; w celu wytworzenia \l;kostki tytanu\u object\titan;.
+
+\t;Program
+Potrzebne Ci będą nowe instrukcje:
+\c;
+\s;move();\n;
+Porusza robotem do przodu lub do tyłu. Odległość podawana jest w nawiasach, w metrach: \c;move(10);\n; przesuwa robota o 10m do przodu, \c;move(-1);\n; cofa robota o 1m.
+
+Instrukcje \c;\l;turn\u cbot\turn;()\n;, \c;\l;grab\u cbot\grab;()\n; i \c;\l;drop\u cbot\drop;()\n; zostały już wyjaśnione w poprzednich ćwiczeniach. Jeśli masz jeszcze jakieś pytania na ich temat, kliknij podkreśloną na niebiesko nazwę instrukcji a pojawi się jej opis.
+
+\l;Ruda tytanu\u object\titanore; jest 20m przed robotem, \l;huta\u object\convert; jest 10m za robotem. Po zaniesieniu rudy tytanu do huty nie zapomnij cofnąć robota (na przykład \c;move(-2.5);\n;), aby umożliwić hucie rozpoczęcie pracy.
+
+Klawisz \key;\key help;\norm; pozwala wyświetlić te instrukcje w dowolnej chwili.
diff --git a/help/P/Ttit2.TXT b/help/P/Ttit2.TXT
new file mode 100644
index 00000000..df05b11c
--- /dev/null
+++ b/help/P/Ttit2.TXT
@@ -0,0 +1,51 @@
+\b;Zadanie
+Zabierz porcję \l;rudy tytanu\u object\titanore;, której dokładne położenie nie jest znane. Użyj radaru robota, aby ją znaleźć. Dostarcz rudę tytanu do \l;huty\u object\convert;.
+
+\t;Program
+Można zauważyć, że programy napisane w poprzednich ćwiczeniach były zupełnie "ślepe": jeśli ruda tytanu, ogniwo elektryczne lub pająki byłyby w innym miejscu, robot by ich nie znalazł.
+
+Radar to "oczy" robota. Za pomocą radaru można wykrywać obiekty dookoła niego. Na przykład instrukcja \c;\l;radar\u cbot\radar;(TitaniumOre);\n; poda informacje o najbliższej porcji \l;rudy tytanu\u object\titanore;. Jednakże trzeba gdzieś "przechować" informację zwróconą przez instrukcję \c;\l;radar\u cbot\radar;(TitaniumOre);\n;. Do tego zadania potrzebna będzie \l;zmienna\u cbot\var;.
+
+\l;Zmienna\u cbot\var; jest jak małe podpisane pudełko, w którym można umieścić informacje, odczytać je, zmienić, itd. Przed użyciem zmiennej trzeba ją zadeklarować. Najpierw należy określić jej \l;typ\u cbot\type;, w tym przypadku \c;object\n;. Zmienna tego typu może zawierać wszystkie informacje opisujące obiekt, taki jak porcja rudy tytanu, pająk, mrówka, robot, ogniwo elektryczne itd. Potem trzeba napisać nazwę, którą chcesz nadać zmiennej, na przykład \c;item\n;. Otrzymamy poniższy wiersz:
+\c;
+\s;\l;object\u cbot\type; item;
+\n;
+Następnie należy przypisać zmiennej wartość zwróconą przez instrukcję \c;\l;radar\u cbot\radar;(TitaniumOre)\n;:
+\c;
+\s;item = \l;radar\u cbot\radar;(TitaniumOre);
+\n;
+Zmienna \c;item\n; zawiera wiele różnych rodzajów informacji: zawiera pozycję, orientację, pochylenie, itd. Aby otrzymać pozycję kawałka rudy tytanu, napisz \c;item.position\n;. Następnie użyj instrukcji \c;goto();\n;, aby wysłać robota na tę pozycję. Oto wiersz wykonujący opisane czynności:
+\c;
+\s;\l;goto\u cbot\goto;(item.position);
+\n;
+Jeśli "przetłumaczymy" to na język polski, będzie to oznaczać: idź na pozycję obiektu opisanego przez zmienną \c;item\n;.
+
+Następnie można podnieść przedmiot znajdujący się przed robotem, używając instrukcji \c;\l;grab\u cbot\grab;();\n;.
+
+Po złożeniu tego wszystkiego razem, otrzymamy następujący program:
+\c;
+\s;extern void object::Titanium2( )
+\s;{
+\s;
+\s; \l;object\u cbot\type; item;
+\s; item = \l;radar\u cbot\radar;(TitaniumOre);
+\s; \l;goto\u cbot\goto;(item.position);
+\s; grab();
+\s;
+\s;}
+\n;
+Później musisz znaleźć \l;hutę\u cbot\convert; i umieścić informacje o niej w zmiennej \c;item\n;:
+\c;
+\s;item = \l;radar\u cbot\radar;(Converter);
+\n;
+Podejdź do huty, używając tej samej instrukcji \c;\l;goto\u cbot\goto;(item.position);\n; co powyżej, zostaw tytan i cofnij się. Huta wykona resztę roboty.
+
+Jeśli chcesz wiedzieć więcej o "nazwach" różnych obiektów w języku programowania, przeczytaj \l;tekst o kategoriach\u cbot\category;.
+
+\t;Uwagi
+\l;Zmienne\u cbot\var; muszą zostać zadeklarowane tylko raz, na początku programu! Później można używać ich wielokrotnie.
+
+Aby uniknąć przepisywania opisanych powyżej instrukcji, możesz zaznaczyć je myszą oraz skopiować i wkleić \button 61; do Twojego programu.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/Twasp1.TXT b/help/P/Twasp1.TXT
new file mode 100644
index 00000000..65a25c59
--- /dev/null
+++ b/help/P/Twasp1.TXT
@@ -0,0 +1,43 @@
+\b;Zadanie
+Zestrzel wszystkie latajÄ…ce osy.
+
+\t;Program
+Oto program z poprzedniego ćwiczenia, który zabija wszystkie mrówki, przystosowując się do rzeźby terenu:
+\c;
+\s;extern void object::JetFighter2()
+\s;{
+\s; \l;object\u cbot\type; item;
+\s;
+\s; \l;aim\u cbot\aim;(-20);
+\s;
+\s; \l;while\u cbot\while; (true)
+\s; {
+\s; \l;while\u cbot\while; (\l;radar\u cbot\radar;(AlienAnt, 0, 360, 0, 20) == null)
+\s; {
+\s; item = \l;radar\u cbot\radar;(AlienAnt);
+\s; \l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));
+\s; \l;motor\u cbot\motor;(1,1);
+\s;
+\s; \l;jet\u cbot\jet;(0);
+\s; \l;if\u cbot\if; (position.z-topo(position) < 6)
+\s; {
+\s; \l;jet\u cbot\jet;(1);
+\s; }
+\s;
+\s; \l;if\u cbot\if; (position.z-topo(position) > 9)
+\s; {
+\s; \l;jet\u cbot\jet;(-1);
+\s; }
+\s; \l;wait\u cbot\wait;(0.2);
+\s; }
+\s; \l;fire\u cbot\fire;(1);
+\s; }
+\s;}
+\n;
+Aby przystosować ten program do zestrzeliwania os, konieczne będzie wprowadzenie kilku poprawek. Zamień wszystkie wystąpienia \c;radar(AlienAnt)\n; na \c;radar(AlienWasp)\n;. Działko musi celować prosto naprzód, a nie w dół, zamień więc również \c;aim(-20);\n; na \c;aim(0);\n;. Robot powinien lecieć na tej samej wysokości co osa. Musi więc porównywać wysokość robota podaną przez \c;position.z\n; z wysokością osy podaną przez \c;item.position.z\n;: jeśli \c;position.z > item.position.z\n;, powoli zmniejsz wysokość \c;jet(-0.3);\n;. Jeśli \c;position.z < item.position.z-1\n;, powoli zwiększ wysokość \c;jet(0.3);\n;. Działo latające jest nieco wyższe od osy, dlatego lepiej jeśli wysokość robota będzie trochę mniejsza od wysokości osy. W tym przypadku sugerujemy, aby wysokość robota była pomiędzy wysokością osy a wysokością osy minus 1.
+
+\t;Dalsze usprawnienia
+Osy poruszają się bardzo szybko. Aby zwiększyć szanse ich trafienia, przed samym strzałem (\c;fire(1);\n;) można powtórzyć instrukcje \c;radar\n; i \c;turn\n; w celu ostatniej korekty kierunku.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/Twasp2.TXT b/help/P/Twasp2.TXT
new file mode 100644
index 00000000..43a4e4ee
--- /dev/null
+++ b/help/P/Twasp2.TXT
@@ -0,0 +1,84 @@
+\b;Zadanie
+Zestrzel wszystkie osy nieco efektywniej niż w poprzednim programie.
+
+\b;Program
+Oto program z poprzedniego ćwiczenia, który zabija wszystkie osy, jednak po bardzo wielu nieudanych próbach:
+\c;
+\s;extern void object::Wasp1()
+\s;{
+\s; \l;object\u cbot\type; item;
+\s;
+\s; \l;aim\u cbot\aim;(0);
+\s;
+\s; \l;while\u cbot\while; (true)
+\s; {
+\s; \l;while\u cbot\while; (\l;radar\u cbot\radar;(AlienWasp, 0, 360, 0, 20) == null)
+\s; {
+\s; item = \l;radar\u cbot\radar;(AlienWasp);
+\s; \l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));
+\s; \l;motor\u cbot\motor;(1,1);
+\s;
+\s; \l;jet\u cbot\jet;(0);
+\s; \l;if\u cbot\if; (position.z > item.position.z)
+\s; {
+\s; \l;jet\u cbot\jet;(-0.3);
+\s; }
+\s;
+\s; \l;if\u cbot\if; (position.z < item.position.z - 1)
+\s; {
+\s; \l;jet\u cbot\jet;(0.3);
+\s; }
+\s;
+\s; \l;wait\u cbot\wait;(0.2);
+\s; }
+\s; item = \l;radar\u cbot\radar;(AlienWasp);
+\s; \l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));
+\s; \l;fire\u cbot\fire;(1);
+\s; }
+\s;}
+\n;
+Wiele niecelnych strzałów jest spowodowanych faktem, że osa odleciała, zanim doleciał do niej pocisk. Jedynym sposobem usprawnienia programu jest ustawienie mocy obu silników oraz silnika odrzutowego w ten sposób, aby robot podążał tą samą trasą co cel podczas strzału.
+
+Bezpośrednio przed strzałem program po raz ostatni reguluje kierunek instrukcją \c;turn(direction(item.position));\n;. Aby podążać za osą w trakcie strzelania, należy "zapamiętać" kąt ostatniego obrotu: jeśli był on dodatni(obrót w lewo), robot powinien się obracać w lewo podczas strzelania; jeśli był ujemny, robot powinien obracać się w prawo.
+
+Do "zapamiętania" kąta ostatniego obrotu potrzebna będzie zmienna, zawierająca tylko jedną liczbę. Jeśli nazwiesz ją \c;angle\n;, należy zdefiniować zmienną za pomocą następującego wiersza na początku programu:
+\c;
+\s; \l;float\u cbot\type; angle;
+\n;
+Zmienna typu \l;float\u cbot\type; jest zmienną typu, który może przechowywać każdą liczbę, całkowitą bądź rzeczywistą. Zobacz \l;tekst o typach zmiennych\u cbot\type; jeśli chcesz wiedzieć więcej o różnych typach zmiennych oraz co one zawierają.
+
+Bezpośrednio przed instrukcją \c;fire(1);\n;, zamiast pisać \c;\l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));\n;, umieść kąt obrotu w zmiennej \c;angle\n;:
+\c;
+\s; angle = direction(item.position);
+\n;
+Następnie wykonaj obrót i ustaw moc silników tak, aby robot kontynuował poruszanie się:
+\c;
+\s; turn(angle);
+\s; if (angle < 0)
+\s; {
+\s; motor(1,0.5);
+\s; }
+\s; else
+\s; {
+\s; motor(0.5,1);
+\s; }
+\n;
+Instrukcja \c;else\n; określa jakie instrukcje powinien wykonać program jeśli warunek podany instrukcji \c;if\n; jest fałszywy.
+
+Następnie trzeba ustawić moc silników odrzutowych, aby robot utrzymywał również tą samą wysokość co osa:
+\c;
+\s; jet(0);
+\s; if(position.z > item.position.z)
+\s; {
+\s; jet(-0.3);
+\s; }
+\s;
+\s; if(position.z < item.position.z - 1)
+\s; {
+\s; jet(0.3);
+\s; }
+\n;
+Każdy zauważy, że ten program jest o wiele skuteczniejszy od poprzedniego!
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/authors.txt b/help/P/authors.txt
new file mode 100644
index 00000000..461e144d
--- /dev/null
+++ b/help/P/authors.txt
@@ -0,0 +1,7 @@
+Zespół projektowy: Zespół wewnętrznych beta testerów:
+
+- Daniel Roux - Adrien Roux - Michael Jubin
+- Denis Dumoulin - Didier Raboud - Daniel Sauthier
+- Otto Kolbl - Nicolas Beuchat - Nicolas Stubi
+- Michael Walz - Joel Roux - Patrick Thevoz
+- Didier Gertsch
diff --git a/help/P/cbot/AIM.TXT b/help/P/cbot/AIM.TXT
new file mode 100644
index 00000000..0466afaf
--- /dev/null
+++ b/help/P/cbot/AIM.TXT
@@ -0,0 +1,21 @@
+\b;Instrukcja \c;aim\n;
+Składnia:
+\s;\c;aim ( kÄ…t );\n;
+
+Instrukcja ta umożliwia zmianę położenia lufy w pionie. Następujące roboty mogą strzelać:
+o \l;Działo\u object\botfr;
+o \l;Działo organiczne\u object\botor;
+o \l;Działo fazowe\u object\botphaz;
+
+Podczas kontroli robota za pomocą programu, jedynym sposobem obrócenia lufy w lewo lub w prawo jest obrócenie całego robota przy użyciu instrukcji \c;\l;turn\u cbot\turn;\n;.
+
+\t;kÄ…t: \c;\l;float\u cbot\float;\n;
+Kąt w stopniach w odniesieniu do robota. Wartość dodatnia ustawia lufę w górę. Dla dział i dział organicznych ograniczeniem jest przedział od \c;-20\n; do \c;+20\n; stopni. Dla działa fazowego kąt ten musi należeć do przedziału od \c;-20\n; do \c;45\n; stopni.
+
+\t;Zwracana wartość: \c;\l;int\u cbot\int;\n;
+Zero jeśli wszystko jest w porządku, wartość różna od zera, jeśli obrót nie może być wykonany:
+\c;== 0 \n;Lufa została wycelowana w żądanym kierunku
+\c;!= 0 \n;obrót niemożliwy
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/BOOL.TXT b/help/P/cbot/BOOL.TXT
new file mode 100644
index 00000000..e2c59115
--- /dev/null
+++ b/help/P/cbot/BOOL.TXT
@@ -0,0 +1,5 @@
+\b;Typ \c;bool\n;
+Zmiennej tego typu można przypisać wartość logiczną, czyli wartość która ma dwa stany: true (prawda) lub false (fałsz).
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/BREAK.TXT b/help/P/cbot/BREAK.TXT
new file mode 100644
index 00000000..75c7c92c
--- /dev/null
+++ b/help/P/cbot/BREAK.TXT
@@ -0,0 +1,25 @@
+\b;Instrukcja \c;break\n;
+Składnia:
+\s;\c;while ( warunek )
+\s;{
+\s; break;
+\s;}
+\n;
+Instrukcja break kończy wykonywanie pętli \c;\l;while\u cbot\while;\n; lub \c;\l;for\u cbot\for;\n;.
+
+Oto przykład:
+\s;\c;int i = 0;
+\s;while ( true )
+\s;{
+\s; \n;Instrukcje ...\c;
+\s; i = i+1;
+\s; if ( i >= 10 )
+\s; {
+\s; break;
+\s; }
+\s; \n;więcej instrukcji ...\c;
+\s;}
+\n;
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/COND.TXT b/help/P/cbot/COND.TXT
new file mode 100644
index 00000000..e1dc0931
--- /dev/null
+++ b/help/P/cbot/COND.TXT
@@ -0,0 +1,29 @@
+\b;Warunki
+Warunek, to \l;wyrażenie\u cbot\expr; dające w wyniku wartość \l;logiczną\u cbot\bool;, którą może być \c;\l;true\u cbot\true;\n; (prawda) lub \c;\l;false\u cbot\false;\n; (fałsz). Używając warunku można wybrać czy instrukcje w pętli \c;\l;while\u cbot\while;\n; powinny być wykonane jeszcze raz lub czy instrukcje w bloku \c;\l;if\u cbot\if;\n; powinny być wykonywane.
+Oto kilka operatorów, których można używać do porównywania dwóch wartości:
+
+\c;a == b \n;\c;a\n; równe \c;b\n;
+\c;a != b \n;\c;a\n; różne od \c;b\n;
+\c;a < b \n;\c;a\n; mniejsze od \c;b\n;
+\c;a <= b \n;\c;a\n; mniejsze od lub równe \c;b\n;
+\c;a > b \n;\c;a\n; większe od \c;b\n;
+\c;a >= b \n;\c;a\n; większe od lub równe \c;b\n;
+
+Na przykład:
+
+\c;12 == 12 \n;daje w wyniku true
+\c;45 != 47 \n;daje w wyniku true
+\c;99 == 98 \n;daje w wyniku false
+\c;12 < -1 \n;daje w wyniku false
+\c;12 >= 10 \n;daje w wyniku true
+\c;12 >= 12 \n;daje w wyniku true
+
+\t;Uwaga
+Nie należy mylić operatora porównania \c;==\n; z operatorem przypisania wartości \l;zmiennej\u cbot\var; \c;=\n;.
+
+\c;a == b\n; jest wyrażeniem porównującym \c;a\n; z \c;b\n;.
+\c;a = b\n; jest wyrażeniem kopiującym wartość \c;b\n; do \c;a\n;.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
+
diff --git a/help/P/cbot/CONTINUE.TXT b/help/P/cbot/CONTINUE.TXT
new file mode 100644
index 00000000..777b98f8
--- /dev/null
+++ b/help/P/cbot/CONTINUE.TXT
@@ -0,0 +1,25 @@
+\b;Instrukcja \c;continue\n;
+Składnia:
+\s;\c;while ( warunek )
+\s;{
+\s; continue;
+\s;}
+\n;
+Przy użyciu tej instrukcji, można przeskoczyć resztę instrukcji w \c;\l;bloku\u cbot\bloc;\n; pętli \c;\l;while\u cbot\while;\n; lub \c;\l;for\u cbot\for;\n;: Działanie zostanie wznowione na początku bloku przy następnym powtórzeniu pętli.
+
+Oto przykład:
+\s;\c;int i = 0;
+\s;while ( i < 5 )
+\s;{
+\s; i = i+1;
+\s; if ( i == 3 )
+\s; {
+\s; continue;
+\s; }
+\s; \n;Instrukcje ...\c;
+\s;}
+\n;
+Instrukcje będą wykonane tylko dla wartości \c;i\n; 1, 2, 4 i 5.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/DIRECT.TXT b/help/P/cbot/DIRECT.TXT
new file mode 100644
index 00000000..c777b66c
--- /dev/null
+++ b/help/P/cbot/DIRECT.TXT
@@ -0,0 +1,15 @@
+\b;Instrukcja \c;direction\n;
+Składnia:
+\s;\c;direction ( pozycja );\n;
+
+Oblicza kąt obrotu, niezbędny do skierowania robota w kierunku zadanej pozycji.
+
+\t;pozycja: \c;\l;point\u cbot\point;\n;
+Pozycja, w kierunku której ma być skierowany robot.
+
+\t;Typ wyniku: \c;\l;float\u cbot\float;\n;
+Kąt obrotu, który powinien być wykonany. -90 oznacza obrót o 90 stopni w prawo.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
+
diff --git a/help/P/cbot/DIST.TXT b/help/P/cbot/DIST.TXT
new file mode 100644
index 00000000..509e1b7c
--- /dev/null
+++ b/help/P/cbot/DIST.TXT
@@ -0,0 +1,30 @@
+\b;Instrukcja \c;distance\n;
+Za pomocą instrukcji \c;distance( , )\n; można obliczyć odległość między dwoma punktami.
+
+\b;Podstawowe użycie
+Napisanie samej instrukcji \c;position\n; daje w wyniku pozycję robota wykonującego program. Napisanie nazwy zmiennej, a następnie bezpośrednio po niej \c;.position\n;, daje w wyniku pozycję obiektu opisywanego przez zmienną.
+
+Oto program polecający robotowi podejść do przodu, o odległość równą odległości pomiędzy robotem i najbliższą mrówką:
+\c;
+\s; item = \l;radar\u cbot\radar;(AlienAnt);
+\s; \l;move\u cbot\move;(distance(position, item.position));
+\n;
+Byłoby to oczywiste samobójstwo. Lepiej zatrzymać robota 40 metrów wcześniej, w odległości odpowiedniej do strzału:
+\c;
+\s; item = radar(AlienAnt);
+\s; move(distance(position, item.position) - 40);
+\n;
+\b;Dla specjalistów
+Składnia:
+\s;\c;distance ( pozycja1, pozycja2 );\n;
+
+Oblicza odległość między dwoma punktami.
+
+\t;pozycja1, pozycja2: \c;\l;point\u cbot\point;\n;
+Współrzędne dwóch punktów.
+
+\t;Typ wyniku: \c;\l;float\u cbot\float;\n;
+Odległość między dwoma punktami.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/DO.TXT b/help/P/cbot/DO.TXT
new file mode 100644
index 00000000..42790816
--- /dev/null
+++ b/help/P/cbot/DO.TXT
@@ -0,0 +1,28 @@
+\b;Instrukcja \c;do - while\n;
+Składnia:
+\s;\c;do
+\s;{
+\s; \n;Instrukcje ...\c;
+\s;}
+\s;while ( warunek );
+\n;
+Instrukcja ta umożliwia kilkukrotne wykonanie instrukcji w \l;bloku\u cbot\bloc;. Instrukcje wykonywane są conajmniej jeden raz, gdyż warunek sprawdzany jest dopiero na końcu pętli.
+Należy uważać, aby nie pomylić instrukcji \c;do { } while ( );\n; z instrukcją \c;\l;while\u cbot\while; ( ) { }\n;; ta druga sprawdza warunek przed wykonaniem instrukcji w bloku.
+
+\t;\c;warunek\n;
+Instrukcje w bloku wykonywane są tak długo, jak długo \l;warunek\u cbot\cond; jest prawdziwy.
+
+Oto przykład:
+\s;\c;do
+\s;{
+\s; p = radar(TitaniumOre);
+\s;}
+\s;while ( p == null );
+\n;
+\t;Uwaga
+Zawsze należy umieszczać \l;średnik\u cbot\term; na końcu wiersza z instrukcją \c;while ( )\n;.
+
+Instrukcje \c;\l;break\u cbot\break;\n; i \c;\l;continue\u cbot\continue;\n; mogą być przydatne wewnątrz bloku instrukcji \c;do { }\n;.
+
+\t;Zobacz również
+\l;Instrukcje\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/DROP.TXT b/help/P/cbot/DROP.TXT
new file mode 100644
index 00000000..6ed489f3
--- /dev/null
+++ b/help/P/cbot/DROP.TXT
@@ -0,0 +1,29 @@
+\b;Instrukcja \c;drop\n;
+Instrukcja \c;drop();\n; poleca robotowi upuścić niesiony przedmiot na ziemię, platformę budynku lub miejsce na ogniwo elektryczne robota.
+
+\b;Podstawowe użycie
+Instrukcja \c;drop();\n; napisana w takiej postaci upuszcza przedmiot przed robotem. Oto krótki program podnoszący przedmiot bezpośrednio przed robotem i upuszczający go 5 metrów dalej:
+\c;
+\s; \l;grab\u cbot\grab;();
+\s; \l;move\u cbot\move;(5);
+\s; drop();
+\n;
+\b;Dla specjalistów
+Składnia:
+\s;\c;drop ( oper );\n;
+
+Instrukcja ta odwołuje się do ramienia \l;robota transportera\u object\botgr;, w celu upuszczenia niesionego przedmiotu.
+
+\t;oper: \c;\l;int\u cbot\int;\n; (domyślna wartość \c;InFront\n;)
+Oper oznacza gdzie robot powinien zostawić przedmiot. Jeśli nie jest to określone, przedmiot zostawiany jest przed robotem.
+\c;InFront \n; przed (domyślnie).
+\c;Behind \n; za
+\c;EnergyCell\n; w miejscu na bateriÄ™ samego robota.
+
+\t;Typ wyniku: \c;\l;int\u cbot\int;\n;
+Zwykle wystąpienie błędu powoduje zatrzymanie programu. Można wyłączyć zatrzymywanie się programu w przypadku wystąpienia błędu, używając instrukcji \c;\l;errmode\u cbot\errmode;(0)\n;. Wtedy w przypadku wystąpienia błędu instrukcja \c;drop();\n; zwraca w wyniku wartość różną od zera.
+\c;== 0 \n;przedmiot został upuszczony
+\c;!= 0 \n;błąd, nie upuszczono żadnego przedmiotu
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/EXPR.TXT b/help/P/cbot/EXPR.TXT
new file mode 100644
index 00000000..a9abce98
--- /dev/null
+++ b/help/P/cbot/EXPR.TXT
@@ -0,0 +1,88 @@
+\b;Wyrażenia
+Wyrażenia mogą zawierać następujące operatory:
+
+\c;+\n; dodawanie
+\c;-\n; odejmowanie
+\c;*\n; mnożenie
+\c;/\n; dzielenie
+\c;%\n; reszta z dzielenia (tylko dla typu całkowitego \c;\l;int\u cbot\int;\n;)
+
+Dodatkowo operator \c;+\n; nie tylko dodaje liczby ale również złącza \l;łańcuchy\u cbot\string;.
+\c;
+\s; int i = 12+3; // daje w wyniku 15
+\s; string s = "a"+"bc"; // daje w wyniku "abc"
+\s; int i = 2-5; // daje w wyniku -3
+\s; float f = 3.01*10; // daje w wyniku 30.1
+\s; int i = 5/3; // daje w wyniku 1
+\s; float f = 5/3; // daje w wyniku 1.67
+\s; float f = 5/0; // powoduje wystąpienie błędu
+\s; int i = 13%5; // daje w wyniku 3
+\s; int i = -8%3; // daje w wyniku -2
+\n;
+Wyrażenie może zawierać stałe lub \l;zmienne\u cbot\var;. Na przykład:
+
+\s;\c; 12+odległość\n;
+
+Mnożenie i dzielenie wykonywane jest przed dodawaniem i odejmowaniem. Aby zapewnić właściwą kolejność wykonywania działań, należy użyć nawiasów:
+\c;
+\s; 12*a+b/c \n;jest równoważne\c; (12*a)+(b/c)
+\s; 2.5*(odległość+zasięg)
+\n;
+W celu poprawienia czytelności, można dodać dowolną liczbę spacji:
+\c;
+\s; 12*a + b/c
+\s; 2.5 * (odległość+zasięg)
+\n;
+Oto lista funkcji matematycznych:
+
+\c;sin(angle) \n;sinus
+\c;cos(angle) \n;cosinus
+\c;tan(angle) \n;tangens
+\c;asin(value) \n;arcus sinus
+\c;acos(value) \n;arcus cosinus
+\c;atan(value) \n;arcus tangens
+\c;sqrt(value) \n;pierwiastek kwadratowy
+\c;pow(x, y) \n;x do potęgi y
+\c;rand() \n;losowa wartość pomiędzy 0 i 1
+
+KÄ…ty podawane sÄ… w stopniach.
+
+\t;Złożone operatory przypisania (dla specjalistów)
+Poza operatorem przypisania wartości zmiennej \c;=\n; jest kilka złożonych operatorów przypisania.
+
+Złożone operatory przypisania to operator przypisania \c;=\n; z innym operatorem binarnym, takim jak \c;+\n; lub \c;-\n;. Złożone operatory przypisania wykonują działanie określona przez dodatkowy operator a wynik przypisują lewej stronie działania. Na przykład poniższe wyrażenie:
+
+\c;\s;wyrażenie1 += wyrażenie2
+
+jest równoważne
+
+\c;\s;wyrażenie1 = wyrażenie1 + wyrażenie2
+
+\c;+=\n; dodawanie
+\c;-=\n; odejmowanie
+\c;*=\n; mnożenie
+\c;/=\n; dzielenie
+\c;%=\n; reszta z dzielenia (tylko dla typu całkowitego \c;\l;int\u cbot\int;\n;)
+
+\t;Przedrostkowe i przyrostkowe operatory zwiększania i zmniejszania (dla specjalistów)
+Operatory \c;++\n; i \c;--\n; umożliwiają wygodny i zwarty zapis zwiększania (++) lub zmiejszania (--) zmiennych.
+
+Na przykład aby zwiększyć zmienną \c;a\n; można napisać
+\c;\s; a++ ;
+\n;zamiast
+\c;\s; a = a + 1 ;
+\n;
+Wartością wyrażenia \c;a++\n; jest wartość zmiennej \c;a\n; przed jej zwiększeniem. Użycie operatora przedrostkowego \c;++a\n; powoduje, że wartością wyrażenia jest wartość zmiennej \c;a\n; po jej zwiększeniu. To samo dotyczy operatora zmniejszania \c;--\n;.
+
+Przykłady:
+\c;\s; a = 2 ;
+\s; b = a++ ;
+\s; // teraz b jest równe 2, a jest równe 3
+
+\c;\s; a = 2 ;
+\s; b = ++a ;
+\s; // a teraz b jest równe 3 i a jest równe 3
+\n;
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/FALSE.TXT b/help/P/cbot/FALSE.TXT
new file mode 100644
index 00000000..2776003a
--- /dev/null
+++ b/help/P/cbot/FALSE.TXT
@@ -0,0 +1,6 @@
+\b;Typ \c;false\n;
+Wartość ta oznacza, że warunek nie jest prawdziwy; jest to jedna z dwóch wartości \l;zmiennej\u cbot\var; typu \l;boolean\u cbot\bool;.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
+
diff --git a/help/P/cbot/FIRE.TXT b/help/P/cbot/FIRE.TXT
new file mode 100644
index 00000000..412f3d9e
--- /dev/null
+++ b/help/P/cbot/FIRE.TXT
@@ -0,0 +1,31 @@
+\b;Instrukcja \c;fire\n;
+Instrukcja \c;fire();\n; powoduje wystrzał z broni pokładowej robota.
+
+\b;Podstawowe użycie
+Przeważnie instrukcja ta używana jest do jednosekundowych serii strzałów:
+\c;
+\s; fire(1);
+\n;
+\b;Dla specjalistów
+Składnia:
+\s;\c;fire ( czas );\n;
+
+Strzela serią trwającą określony czas. Im dłuższa seria, tym więcej energii jest zużywane. Instrukcja ta może być używana przez następujące typy robotów:
+o \l;Działo\u object\botfr;
+o \l;Działo organiczne\u object\botor;
+o \l;Działo fazowe\u object\botphaz;
+
+Podczas kontrolowania działanie robota przy użyciu programu, jedynym sposobem obrócenia lufy w prawo lub w lewo, jest obrócenie całego robota instrukcją \c;\l;turn\u cbot\turn;\n;.
+
+Do celowania w górę lub w dół, należy używać instrukcji \c;\l;aim\u cbot\aim;\n;.
+
+\t;czas: \c;\l;float\u cbot\float;\n;
+Czas trwania serii. Zwykle jest to 1 sekunda. Krótsze serie pozwalają zaoszczędzić czas i energię.
+
+\t;Typ wyniku: \c;\l;int\u cbot\int;\n;
+Zero w przypadku powodzenia lub inna wartość jeśli wystąpił błąd.
+\c;== 0 \n;udało się wystrzelić
+\c;!= 0 \n;błąd, strzał nie mógł byc wykonany
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/FLOAT.TXT b/help/P/cbot/FLOAT.TXT
new file mode 100644
index 00000000..26259f38
--- /dev/null
+++ b/help/P/cbot/FLOAT.TXT
@@ -0,0 +1,25 @@
+\b;Typ \c;float\n;
+Typ ten jest używany dla większości zmiennych zawierających liczby. Zmienne tego typu mogą zawierać liczby dodatnie i ujemne, zarówno całkowite jak i rzeczywiste, na przykład:
+\c;
+\s; 12.9
+\s; 1.125
+\s; 0.002
+\s; -4.1
+\n;
+Jeśli potrzebne są tylko liczby całkowite (takie jak 12 lub -5000), lepszym wyborem jest użycie typu \c;\l;int\u cbot\int;\n;.
+
+\t;Uwaga
+Nie można wstawiać spacji ani przecinków wewnątrz liczby. Do rozdzielania części całkowitej i części ułamkowej należy używać kropki.
+\c;
+\s; dobrze źle
+\s; 12.56 12 . 56
+\s; -54.34 -54,34
+\s;12895.69 12,895.69
+\n;
+\t;Dla specjalistów
+Liczby zmiennoprzecinkowe reprezentowane są w grze Colobot za pomocą 32 bitów.
+Największa reprezentowalna wartość to 3.4E+38.
+Najmniejsza reprezentowalna wartość to 3.4E-38.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/FOR.TXT b/help/P/cbot/FOR.TXT
new file mode 100644
index 00000000..c673bba4
--- /dev/null
+++ b/help/P/cbot/FOR.TXT
@@ -0,0 +1,40 @@
+\b;Instrukcja \c;for\n;
+Składnia:
+\s;\c;for ( przed ; warunek ; koniec )
+\s;{
+\s; \n;Instrukcje...\c;
+\s;}
+\n;
+Instrukcja ta pozwala na powtórzenie określoną ilość razy instrukcji zawartych w \l;bloku\u cbot\bloc;.
+
+\t;\c;przed\n;
+Instrukcja wykonywana przed pierwszym przejściem pętli.
+
+\t;\c;warunek\n;
+\l;Warunek\u cbot\cond; określa, czy powinno być wykonane następne przejście pętli. Jest on sprawdzany przed każdym jej przejściem.
+
+\t;\c;koniec\n;
+Instrukcja wykonywana po każdym przejściu pętli.
+
+Przykład: liczenie od 1 do 4
+\c;\s;\c;for ( i = 0 ; i <= 4 ; i++ )
+\s;{
+\s; message(i) ;
+\s;}
+\n;
+Następujący przykład, równoważny pętli \c;for\n;, używa instrukcji \c;\l;while\u cbot\while;\n;:
+\s;\c;przed;
+\s;while ( warunek )
+\s;{
+\s; \n;Instrukcje...\c;
+\s; koniec;
+\s;}
+\n;
+\t;Uwaga
+Na końcu instrukcji \c;for ( )\n; nie należy umieszczać \l;średnika\u cbot\term;.
+
+Instrukcje \c;\l;break\u cbot\break;\n; i \c;\l;continue\u cbot\continue;\n; mogą być przydatne wewnątrz bloku instrukcji \c;for \n;.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
+
diff --git a/help/P/cbot/GOTO.TXT b/help/P/cbot/GOTO.TXT
new file mode 100644
index 00000000..302f9916
--- /dev/null
+++ b/help/P/cbot/GOTO.TXT
@@ -0,0 +1,35 @@
+\b;Instrukcja \c;goto\n;
+Instrukcja \c;goto();\n; rozkazuje robotowi udać się do podanej pozycji.
+
+\b;Podstawowe użycie
+Najczęstsze użycie polega na wysłaniu robota do obiektu zlokalizowanego przy użyciu instrukcji \c;\l;radar\u cbot\radar;();\n;. Jeśli jego dane zastały zapisane w zmiennej, należy po nazwie zmiennej napisać \c;.position\n; aby otrzymać pozycję obiektu. Oto przykładowy program znajdujący \l;kostkę tytanu\u object\titan; idący na jej pozycję i podnoszący ją:
+\c;
+\s; element = \l;radar\u cbot\radar;(Titanium);
+\s; goto(element.position);
+\s; \l;grab\u cbot\grab;();
+\n;
+\b;Dla specjalistów
+Składnia:
+\s;\c;goto ( pozycja, wysokość, cel, zderzenie );\n;
+
+Rozkazuje robotowi udać się w podane miejsce unikając wszelkich przeszkód, jeśli to możliwe.
+
+\t;pozycja: \c;\l;point\u cbot\point;\n;
+Współrzędne pozycji docelowej.
+
+\t;wysokość: \c;\l;float\u cbot\float;\n;
+Wysokość lotu \l;robota latającego\u object\botgj;. Parametr ten jest użyteczny tylko w przypadku \l;robota latającego\u object\botgj;. Z wysokości początkowej, robot wznosi się do góry, do czasu osiągnięcia określonej wysokości. Po zbliżeniu się do miejsca docelowego, zmniejsza wysokość, aby opaść na ziemię w zadanej pozycji. Jeśli nie określono wysokości, domyślną wartością jest 10 metrów. Przy bardzo krótkich trasach, nawet robot latający może poruszać się po ziemi. Parametr ten jest ignorowany dla wszystkich robotów poza robotem latającym.
+
+\t;cel: \c;\l;int\u cbot\int;\n; (domyślna wartość: \c;0\n;)
+Określa sposób w jaki robot powinien osiągnąć swoj cel:
+\c;0\n; zatrzymuje się dokładnie w pozycji docelowej
+\c;1\n; zbliża się do pozycji docelowej bez zatrzymywania się.
+Jeśli nie określono wartości, domyślnie przyjmowane jest \c;1\n; (dokładnie).
+
+\t;Typ wyniku: \c;\l;int\u cbot\int;\n;
+Zwykle wystąpienie błędu powoduje zatrzymanie programu. Można wyłączyć zatrzymywanie się programu w przypadku wystąpienia błędu, używając instrukcji \c;\l;errmode\u cbot\errmode;(0)\n;. Wtedy w przypadku wystąpienia błędu instrukcja \c;goto()\n; zwraca w wyniku wartość różną od zera.
+\c;== 0 \n;Pozycja docelowa została osiągnięta
+\c;!= 0 \n;Osiągnięcie pozycji docelowej jest niemożliwe
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/GRAB.TXT b/help/P/cbot/GRAB.TXT
new file mode 100644
index 00000000..a4762c7e
--- /dev/null
+++ b/help/P/cbot/GRAB.TXT
@@ -0,0 +1,29 @@
+\b;Instrukcja \c;grab\n;
+Instrukcja \c;grab();\n; rozkazuje robotowi podnieść za pomocą ramienia chwytającego przedmiot znajdujący się na ziemi, platformie budynku lub miejscu na ogniwo robota.
+
+\b;Podstawowe użycie
+Instrukcja \c;grab();\n; napisana w ten sposób, podniesie przedmiot znajdujący się przed robotem. Oto krótki program podnoszący przedmiot przed robotem i upuszczający go 5 metrów dalej:
+\c;
+\s; grab();
+\s; \l;move\u cbot\move;(5);
+\s; \l;drop\u cbot\drop;();
+\n;
+\b;Dla specjalistów
+Składnia:
+\s;\c;grab ( oper );\n;
+
+Instrukcja ta odwołuje się do ramienia \l;robota transportera\u object\botgr;, powodując chwycenie najbliższego obiektu.
+
+\t;oper: \c;\l;int\u cbot\int;\n; (domyślna wartość \c;InFront\n;)
+Parametr oper określa gdzie robot powinien szukać przedmiotu do podniesienia. Jeśli nie jest to określone, podnoszony jest obiekt znajdujący się przed robotem:
+\c;InFront \n; przed (domyślnie).
+\c;Behind \n; za.
+\c;EnergyCell\n; wyjmuje własne ogniwo elektryczne.
+
+\t;Typ wyniku: \c;\l;int\u cbot\int;\n;
+Zwykle wystąpienie błędu powoduje zatrzymanie programu. Można wyłączyć zatrzymywanie się programu w przypadku wystąpienia błędu, używając instrukcji \c;\l;errmode\u cbot\errmode;(0)\n;. Wtedy w przypadku wystąpienia błędu instrukcja \c;grab();\n; zwraca w wyniku wartość różną od zera.
+\c;== 0 \n;obiekt został chwycony
+\c;!= 0 \n;błąd, obiekt nie został chwycony
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/IF.TXT b/help/P/cbot/IF.TXT
new file mode 100644
index 00000000..24fcec9e
--- /dev/null
+++ b/help/P/cbot/IF.TXT
@@ -0,0 +1,40 @@
+\b;Instrukcje \c;if\n; i \c;else\n;
+Używając instrukcji \c;if() {}\n; można uzależnić wykonanie zbioru instrukcji od spełnienia określonego warunku. Warunek należy zapisać w nawiasach \c;()\n;, a instrukcje w nawiasach klamrowych \c;{}\n;.
+
+\b;Podstawowe użycie
+Oto konkretny przykład: Robot będzie strzelał dopiero wtedy, gdy cel będzie bliżej niż 40 metrów:
+\c;
+\s; item = \l;radar\u cbot\radar;(AlienAnt);
+\s; if (\l;distance\u cbot\dist;(position, item.position) < 40)
+\s; {
+\s; fire(1);
+\s; }
+\n;
+Można też sprawdzić czy obiekt istnieje w ogóle. Jeśli instrukcja \c;\l;radar\u cbot\radar;();\n; nie znajdzie żądanego obiektu, zwraca wartość \c;null\n;. Można więc sprawdzić czy obiekt istnieje, warunkiem \c;(item != null)\n; lub czy nie istnieje \c;(item == null)\n;. Dwa znaki równości \c;==\n; sprawdzają równość, znak równości poprzedzony wykrzyknikiem \c;!=\n; sprawdza nierówność. Oto program testowy, który będzie ładował \l;ogniwa elektryczne\u object\power; tylko wtedy, gdy znajdzie \l;stację energetyczną\u object\station;:
+\c;
+\s; item = \l;radar\u cbot\radar;(PowerStation);
+\s; if (item != null)
+\s; {
+\s; \l;goto\u cbot\goto;(item.position);
+\s; \l;wait\u cbot\wait;(5);
+\s; }
+\n;
+\b;Dla specjalistów
+Składnia:
+\s;\c;if ( warunek )
+\s;{
+\s; \n;Instrukcje A ...\c;
+\s;}
+\s;else
+\s;{
+\s; \n;Instrukcje B ...\c;
+\s;}
+\n;
+Przy użyciu tej struktury warunkowej można wykonać \l;blok\u cbot\bloc; A lub \l;blok\u cbot\bloc; B w zależności od \l;warunku\u cbot\cond;. Jeśli warunek jest prawdziwy, wykonywany jest blok A. Jeśli warunek jest fałszywy, wykonywany jest blok B.
+Część \c;else { }\n; nie jest obowiązkowa.
+
+\t;Uwaga
+Na końcu linii \c;if ( )\n; nie należy stawiać \l;średnika\u cbot\term;.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/INT.TXT b/help/P/cbot/INT.TXT
new file mode 100644
index 00000000..53bdebbd
--- /dev/null
+++ b/help/P/cbot/INT.TXT
@@ -0,0 +1,20 @@
+\b;Typ \c;int\n;
+Jest to typ zmiennych zawierających tylko liczby całkowite, dodatnie albo ujemne. Na przykład:
+\c;
+\s; 12
+\s; 1000
+\s; -4
+\n;
+Do reprezentacji liczb rzeczywistych, takich jak 12,05 lub -0,005 należy używać typu \c;\l;float\u cbot\float;\n;.
+
+\t;Uwaga
+Nie należy używać spacji ani przecinków w zapisie liczby.
+
+\t;Dla specjalistów
+Reprezentacja liczb typu \c;int\n; zajmuje 32 bity.
+Największa reprezentowalna liczba to (2^31)-1, czyli 2 147 483 647.
+Najmniejsza reprezentowalna liczba to -(2^31), czyli -2 147 483 648.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
+
diff --git a/help/P/cbot/JET.TXT b/help/P/cbot/JET.TXT
new file mode 100644
index 00000000..6d718666
--- /dev/null
+++ b/help/P/cbot/JET.TXT
@@ -0,0 +1,16 @@
+\b;Instrukcja \c;jet\n;
+Składnia:
+\s;\c;jet ( moc );\n;
+
+Umożliwia bezpośrednią kontrolę nad silnikiem odrzutowym \l;robota latającego\u object\botgj;. Silnik odrzutowy umożliwia robotom latanie. Instrukcja ta może służyć do wznoszenia się, zwiększania i zmniejszania wysokości lotu oraz lądowania.
+
+\t;moc: \c;\l;float\u cbot\float;\n;
+Moc silnika odrzutowego, może zawierać się w zakresie od \c;-1\n; do \c;+1\n;. \c;jet(1);\n; to sposób na najszybsze wznoszenie się robota, \c;jet(-1);\n; zmniejsza wysokość tak szybko, jak to możliwe, \c;jet(0);\n; utrzymuje stałą wysokość. W celu uzyskania wolniejszych zmian wysokości, należy użyć wartości pośrednich, na przykład \c;jet(0.3);\n;.
+
+
+\t;Typ wyniku: \c;\l;void\u cbot\void;\n;
+Brak.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
+
diff --git a/help/P/cbot/MESSAGE.TXT b/help/P/cbot/MESSAGE.TXT
new file mode 100644
index 00000000..2d5239b1
--- /dev/null
+++ b/help/P/cbot/MESSAGE.TXT
@@ -0,0 +1,25 @@
+\b;Instrukcja \c;message\n;
+Składnia:
+\s;\c;message ( tekst, typ );\n;
+
+Wyświetla wiadomość na górze ekranu. Wiadomość znika automatycznie po kilku sekundach.
+
+\t;tekst: \c;\l;string\u cbot\string;\n;
+Tekst do wyświetlenia. Możliwe jest złączanie tekstów i/lub wartości przy użyciu operatora \c;+\n;:
+\c;message("Nie znaleziono");\n;
+\c;message(kÄ…t);\n;
+\c;message(n + " obiektów");\n;
+\c;message("Odległość = " + dist + " metrów");\n;
+
+\t;typ: \c;\l;int\u cbot\int;\n; (domyślna wartość: \c;DisplayMessage\n;)
+Typ wiadomości, określający kolor tła.
+o \c;DisplayMessage\n; Standardowa wiadomość na żółtym tle.
+o \c;DisplayInfo \n; Informacja na zielonym tle.
+o \c;DisplayWarning\n; Ostrzeżenie na niebieskim tle.
+o \c;DisplayError \n; BÅ‚Ä…d na czerwonym tle.
+
+\t;Typ wyniku: \c;\l;void\u cbot\void;\n;
+Brak.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/MOVE.TXT b/help/P/cbot/MOVE.TXT
new file mode 100644
index 00000000..338663e9
--- /dev/null
+++ b/help/P/cbot/MOVE.TXT
@@ -0,0 +1,22 @@
+\b;Instrukcja \c;move\n;
+Instrukcja \c;move();\n; rozkazuje robotowi poruszać się do przodu lub do tyłu przy zachowaniu niezmiennej orientacji. W nawiasie należy podać odległość (w metrach) o jaką powinien przemieścić się robot.
+
+\b;Podstawowe użycie
+Aby robot przemieścił się do przodu o 30 metrów, należy napisać \c;move(30);\n;. Aby robot cofnął się po umieszczeniu \l;rudy tytanu\u object\titanore; w \l;hucie\u object\convert;, należy napisać \c;move(-2.5);\n;.
+
+\b;Dla specjalistów
+Składnia:
+\s;\c;move ( odległość );\n;
+
+Porusza robotem do przodu lub do tyłu o zadaną odległość, zachowując bieżącą orientację robota.
+
+\t;odległość: \c;\l;float\u cbot\float;\n;
+Odległość w metrach. Wartość ujemna powoduje ruch do tyłu.
+
+\t;Typ wyniku: \c;\l;int\u cbot\int;\n;
+Zwykle wystąpienie błędu powoduje zatrzymanie programu. Można wyłączyć zatrzymywanie się programu w przypadku wystąpienia błędu, używając instrukcji \c;\l;errmode\u cbot\errmode;(0)\n;. Wtedy w przypadku wystąpienia błędu instrukcja \c;move();\n; zwraca w wyniku wartość różną od zera.
+\c;== 0 \n;instrukcja move została wykonana
+\c;!= 0 \n;błąd, instrukcja nie została poprawnie wykonana
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/NAN.TXT b/help/P/cbot/NAN.TXT
new file mode 100644
index 00000000..cd2c39a5
--- /dev/null
+++ b/help/P/cbot/NAN.TXT
@@ -0,0 +1,16 @@
+\b;Typ \c;nan\n;
+Specjalna wartość oznaczająca, że \l;zmienna\u cbot\var; typu \c;\l;int\u cbot\int;\n; lub \c;\l;float\u cbot\float;\n; nie zawiera liczby ale "nic".
+Na przykład jeśli instrukcja \c;\l;receive\u cbot\receive;\n; nie może uzyskać żądanej informacji, zwraca w wyniku wartość \c;nan\n;:
+\c;
+\s; wartość = receive("Length");
+\s; if ( wartość == nan ) // nie znaleziono?
+\s; {
+\s;
+\s; }
+\n;
+\t;SÅ‚ownik
+\c;nan\n; = Not A Number (nie liczba)
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
+
diff --git a/help/P/cbot/NULL.TXT b/help/P/cbot/NULL.TXT
new file mode 100644
index 00000000..6f6a4bb7
--- /dev/null
+++ b/help/P/cbot/NULL.TXT
@@ -0,0 +1,7 @@
+\b;Typ \c;null\n;
+Specjalna wartość oznaczająca, że zmienna, która ją zawiera nie wskazuje na żadną instancję.
+
+\t;Zobacz również
+\l;Wskaźniki\u cbot\pointer;
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
+
diff --git a/help/P/cbot/OBJECT.TXT b/help/P/cbot/OBJECT.TXT
new file mode 100644
index 00000000..d7ce05e3
--- /dev/null
+++ b/help/P/cbot/OBJECT.TXT
@@ -0,0 +1,70 @@
+\b;Typ \c;object\n;
+Typ używany dla zmiennych zawierających charakterystyki obiektów, takich jak roboty, budynki, surowce, wrogowie, itp.
+
+\c;\l;int\u cbot\int; object.category \n;\l;Kategoria\u cbot\category; obiektu
+\c;\l;point\u cbot\point; object.position \n;Pozycja obiektu (x,y,z)
+\c;\l;float\u cbot\float; object.orientation \n;Orientacja obiektu (0..360)
+\c;\l;float\u cbot\float; object.pitch \n;Pochylenie obiektu przód/tył
+\c;\l;float\u cbot\float; object.roll \n;Pochylenie obiektu prawo/lewo
+\c;\l;float\u cbot\float; object.energyLevel \n;Poziom energii (0..1)
+\c;\l;float\u cbot\float; object.shieldLevel \n;Poziom osłony (0..1)
+\c;\l;float\u cbot\float; object.temperature \n;Temperatura silnika odrzutowego (0..1)
+\c;\l;float\u cbot\float; object.altitude \n;Wysokość nad poziomem ziemi
+\c;\l;float\u cbot\float; object.lifeTime \n;Czas życia obiektu
+\c;object object.energyCell \n;Ogniwo elektryczne robota
+\c;object object.load \n;Przedmiot niesiony przez robota
+
+\s;\c;category\n;
+\n;\l;Kategoria\u cbot\category; obiektu określa czym jest obiekt, tzn. określa np. rodzaj robota, budynku lub wroga, itp.
+
+\s;\c;position\n;
+Położenie obiektu na planecie, w metrach. Współrzędne \c;x\n; i \c;y\n; odnoszą się do położenia na mapie, współrzędna \c;z\n; odpowiada wysokości nad (lub odpowiednio pod) poziomem morza.
+
+\s;\c;orientation\n;
+Orientacja obiektu, w stopniach. Określa kierunek, w którym obrócony jest obiekt. Wartość \c;0\n; odpowiada orientacji na wschód, zgodnie z dodatnią osią \c;x\n;. Orientacja liczona jest przeciwnie do ruchu wskazówek zegara.
+
+\s;\c;pitch\n;
+Pochylenie robota w przód/tył. Wartość \c;0\n; oznacza, że robot stoi na płaskim terenie. Wartość dodatnia oznacza, że robot "patrzy" w górę, wartość ujemna, że w dół.
+
+\s;\c;roll\n;
+Pochylenie robota w lewo/prawo. Wartość dodatnia oznacza, że robot jest przechylony na lewą stronę, wartość ujemna, że na prawą.
+
+\s;\c;energyLevel\n;
+Poziom energii, pomiędzy 0 i 1. Dla w pełni naładowanego \l;zwykłego ogniwa elektrycznego\u object\power; zwracana jest wartość \c;1\n;. \l;Atomowe ogniwo elektryczne\u object\atomic; nigdy nie zwraca wartości większej niż 1, jedynie działa dłużej. Uwaga: Poziom energii robota zawsze jest równy zero, gdyż energia nie jest zawarta w robocie ale w ogniwie elektrycznym. Aby poznać poziom energii ogniwa elektrycznego robota, należy napisać \c;energyCell.energyLevel\n;.
+
+\s;\c;shieldLevel\n;
+Poziom osłony robota albo budynku. Wartość \c;1\n; oznacza w pełni sprawną osłonę. Za każdym uderzeniem pocisku lub zderzeniem z innym obiektem, zmniejsza się poziom osłony. Gdy osiągnie on \c;0\n;, następny pocisk bądź zderzenie spowoduje zniszczenie robota albo budynku.
+Roboty mogą zregenerować osłony w \l;warsztacie\u object\repair;. Powłoka budynku regenerowana jest gdy znajdzie się w zasięgu sfery ochronnej robota \l;osłaniacza\u object\botshld;.
+
+\s;\c;temperature\n;
+Temperatura silnika odrzutowego \l;robotów latających\u object\botgj;. \c;0\n; odpowiada zimnemu silnikowi. W miarę używania, wzrasta jego temperatura. Gdy osiągnie wartość \c;1\n;, silnik przegrzewa się i przestaje działać do czasu ostygnięcia.
+
+\s;\c;altitude\n;
+Współrzędna \c;z\n; oznacza wysokość nad poziomem morza, podczas gdy \c;altitude\n; oznacza wysokość nad poziomem ziemi. Wartość ta ma znaczenie jedynie dla \l;robotów latających\u object\botgj; i \l;os\u object\wasp;. Dla pozostałych obiektów jest zerowa.
+
+\s;\c;lifeTime\n;
+Wiek obiektów, w sekundach, od czasu ich powstania.
+
+\s;\c;energyCell\n;
+Jest to specjalna informacja, gdyż zwraca informacje o innym obiekcie, w tym przypadku ogniwie elektrycznym. Oznacza to, że energyCell zawiera wszystkie charakterystyki normalnego obiektu, na przykład \c;category\n; (PowerCell lub NuclearCell), \c;position\n; (pozycję ogniwa), itp.
+Aby poznać poziom energii robota, zamiast \c;energyLevel\n;, należy sprawdzić \c;energyCell.energyLevel\n;.
+Jeśli robot nie zawiera ogniwa elektrycznego, \c;energyCell\n; jest równe \c;null\n;.
+
+\s;\c;load\n;
+Ta informacja również zwraca opis całego obiektu, a mianowicie opis obiektu trzymanego przez \l;transporter\u object\botgr;. Jeśli nie niesie on niczego, \c;load\n; jest równe \c;null\n;.
+
+\b;Przykłady
+Typ \c;object\n; zwraca specjalną wartość \c;\l;null\u cbot\null;\n; gdy obiekt nie istnieje. Na przykład:
+\c;
+\s; object a;
+\s; a = radar(BotGrabberRoller);
+\s; if ( a == null ) // obiekt nie istnieje?
+\s; {
+\s; }
+\s; if ( a.position.z > 50 ) // czy jest na górze?
+\s; {
+\s; }
+\n;
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
+
diff --git a/help/P/cbot/Point.txt b/help/P/cbot/Point.txt
new file mode 100644
index 00000000..c00eb041
--- /dev/null
+++ b/help/P/cbot/Point.txt
@@ -0,0 +1,36 @@
+\b;Typ \c;point\n;
+Zmienne tego typu zawierają współrzędne punktu w przestrzeni. Składa się on z trzech wartości reprezentujących współrzędne \c;x\n;, \c;y\n; oraz \ c;z\n;.
+\c;x\n; i \c;y\n; odpowiadają miejscu na powierzchni ziemi. Dodatnia oś \c;x\n; wskazuje wschód, dodatnia oś \c;y\n; wskazuje północ.
+Wartość \c;z\n; odpowiada wysokości nad poziomem morza.
+
+Aby zadeklarować zmienną typu point, można napisać:
+\c;
+\s; point a (10, 20, 30);
+\n;
+Można również pojedynczo ustawić wartości współrzędnych:
+\c;
+\s; point b;
+\s; b.x = 10;
+\s; b.y = 20;
+\s; b.z = 30;
+\n;
+W przykładach tych, następujący \l;warunek\u cbot\cond; jest prawdziwy:
+\c;
+\s; if ( a == b )
+\s; {
+\s; }
+\n;
+Następująca deklaracja:
+\c;
+\s; point c (4, 7);
+\n;
+Jest równoważna poniższej:
+\c;
+\s; point c;
+\s; c.x = 4;
+\s; c.y = 7;
+\s; c.z = 0;
+\n;
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/RADAR.TXT b/help/P/cbot/RADAR.TXT
new file mode 100644
index 00000000..3321a5e2
--- /dev/null
+++ b/help/P/cbot/RADAR.TXT
@@ -0,0 +1,60 @@
+\b;Instrukcja \c;radar\n;
+Przy użyciu instrukcji \c;radar()\n;, można znajdować różne obiekty, takie jak \l;wrogów\u object\mother;, roboty, budynki lub surowce.
+
+\b;Podstawowe użycie
+W nawiasach należy napisać \l;nazwę poszukiwanego obiektu\u cbot\category;. Wynik należy umieścić w zmiennej \l;typu\u cbot\type; \c;object\n;. Oto przykład znajdujący najbliższą mrówkę:
+\c;
+\s;// Na poczÄ…tku programu:
+\s;object item; // deklaracja zmiennej
+\s;
+\s;// Znajdź najbliższą mrówkę
+\s;item = radar(AlienAnt);
+\n;
+\b;Dla specjalistów
+Składnia:
+\s;\c;radar ( category, angle, focus, min, max, way );\n;
+
+Wykrywa obiekty w zależnie od różnych parametrów.
+
+\image radar1 8 8;
+Patrząc z góry, czerwona strefa odpowiada strefie, w której będą wykrywane obiekty.
+
+\t;category: \c;\l;int\u cbot\int;\n;
+\l;Kategoria\u cbot\category; poszukiwanego obiektu. Na przykład szukając mrówki, należy napisać \c;radar (AlienAnt)\n;.
+
+\t;angle: \c;\l;float\u cbot\float;\n; (domyślna wartość: \c;0\n;)
+Kierunek, w którym "patrzy" radar, w stopniach:
+\c; 0\n; -> na wprost
+\c;-90\n; -> ćwierć obrotu w prawo
+\c; 90\n; -> ćwierć obrotu w lewo
+
+\t;focus: \c;\l;float\u cbot\float;\n; (domyślna wartość: \c;360\n;)
+KÄ…t widzenia radaru, w stopniach.
+
+\t;min: \c;\l;float\u cbot\float;\n; (domyślna wartość: \c;0\n;)
+Minimalna odległość wykrywania, w metrach. Obiekty znajdujące się bliżej nie będą wykryte.
+
+\t;max: \c;\l;float\u cbot\float;\n; (domyślna wartość: \c;1000\n;)
+Maksymalna odległość wykrywania, w metrach. Obiekty znajdujące się dalej nie będą wykryte.
+
+\t;way: \c;\l;float\u cbot\float;\n; (domyślna wartość: \c;1\n;)
+Określa sposób wykrywania obiektu. Przy wartości \c;1\n;, znajduje najbliższy obiekt w podanej strefie. Przy wartości\c;-1\n;, znajduje najdalszy obiekt w strefie.
+
+\t;Typ wyniku: \c;\l;object\u cbot\object;\n;
+Zwraca pierwszy znaleziony obiekt odpowiadający podanej kategorii w podanej strefie. Jeśli nie znaleziono obiektu, zwracana jest wartość \c;\l;null\u cbot\null;\n;.
+
+\t;Uwaga
+Nie jest konieczne podawanie wszystkich parametrów. Oto dwa przykłady równoważnych instrukcji:
+\c;
+\s; radar(Titanium, 0, 360, 0, 1000);
+\s; radar(Titanium); // równoważne
+
+\s; radar(Titanium, 0, 90, 0, 1000);
+\s; radar(Titanium, 0, 90); // równoważne
+\n;
+Jeśli pominięto jeden lub więcej parametrów, przyjmowane są wymienione powyżej wartości domyślne; tylko pierwszy parametr jest obowiązkowy.
+Zwykle określony jest tylko pierwszy parametr, np. \c;radar (AlienAnt)\n; wykrywa najbliższą mrówkę, niezależnie od jej położenia.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
+
diff --git a/help/P/cbot/RECYCLE.TXT b/help/P/cbot/RECYCLE.TXT
new file mode 100644
index 00000000..3a9d8fc1
--- /dev/null
+++ b/help/P/cbot/RECYCLE.TXT
@@ -0,0 +1,14 @@
+\b;Instrukcja \c;recycle\n;
+Składnia:
+\s;\c;recycle ( );\n;
+
+Odzyskuje surowce z pozostałości robota znajdującego się bezpośrednio przed robotem \l;recyklerem\u object\botrecy; i tworzy \l;kostkę tytanu\u object\titan;.
+
+\t;Typ wyniku: \c;\l;int\u cbot\int;\n;
+Zero jeśli wszystko w porządku, lub wartość inna od zera w przypadku wystąpienia błędu.
+\c;== 0 \n;odzyskano surowce z pozostałości robota
+\c;!= 0 \n;błąd, pozostałość robota nie mogła zostać przetworzona
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
+
diff --git a/help/P/cbot/RETOBJ.TXT b/help/P/cbot/RETOBJ.TXT
new file mode 100644
index 00000000..eafa5b20
--- /dev/null
+++ b/help/P/cbot/RETOBJ.TXT
@@ -0,0 +1,15 @@
+\b;Instrukcja \c;retobject\n;
+Składnia:
+\s;\c;retobject ( numer );\n;
+
+Zwraca obiekt odpowiadajÄ…cy podanemu numerowi.
+
+\t;numer: \c;\l;int\u cbot\int;\n;
+Numer obiektu, pomiędzy 0 i n, gdzie "n" to liczba wszystkich obiektów na planecie.
+
+\t;Typ wyniku: \c;\l;object\u cbot\object;\n;
+Obiekt odpowiadający numerowi. Wartość \c;\l;null\u cbot\null;\n; oznacza, że nie ma obiektu odpowiadającego podanemu numerowi, gdyż nie ma aż tylu obiektów na tej planecie.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
+
diff --git a/help/P/cbot/RETURN.TXT b/help/P/cbot/RETURN.TXT
new file mode 100644
index 00000000..d9a7030c
--- /dev/null
+++ b/help/P/cbot/RETURN.TXT
@@ -0,0 +1,31 @@
+\b;Instrukcja \c;return\n;
+Powrót z funkcji. Składnia:
+\c;
+\s;void funkcja ( )
+\s;{
+\s; return;
+\s;}
+\n;
+\b;Dla specjalistów
+Jeśli \l;funkcja\u cbot\function; ma określony typ wyniku, po instrukcji \c;return\n; musi wystąpić wartość, która ma być zwrócona przez funkcję:
+\c;
+\s;float Pi ( )
+\s;{
+\s; return 3.1415;
+\s;}
+
+\s;float Åšrednia (float a, float b)
+\s;{
+\s; return (a+b)/2;
+\s;}
+
+\s;string Znak (float a)
+\s;{
+\s; if ( a > 0 ) return "dodatnia";
+\s; if ( a < 0 ) return "ujemna";
+\s; return "zero";
+\s;}
+\n;
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
+
diff --git a/help/P/cbot/Receive.txt b/help/P/cbot/Receive.txt
new file mode 100644
index 00000000..7ccc1c83
--- /dev/null
+++ b/help/P/cbot/Receive.txt
@@ -0,0 +1,18 @@
+\b;Instrukcja \c;receive\n;
+Składnia:
+\s;\c;receive ( nazwa, moc );\n;
+
+Pobiera informację z najbliższej \l;stacji przekaźnikowej informacji\u object\exchange;.
+
+\t;nazwa: \c;string\n;
+Nazwa informacji żądanej od stacji przekaźnikowej. Jest ona łańcuchem i powinna być zapisana w cudzysłowach "¦".
+
+\t;moc: \c;float\n;
+Moc odbiornika, która odpowiada maksymalnej odległości pomiędzy odbiorcą i stacją przekaźnikową. Jeśli odległość jest większa, nie zostanie pobrana żadna informacja. Domyślną wartością jest 10 metrów.
+
+\t;Typ wyniku: \c;\l;float\u cbot\float;\n;
+Wartość pobranej informacji. Jeśli wystarczająco blisko nie ma żadnej stacji przekaźnikowej, lub jeśli informacja o podanej nazwie nie istnieje, zwracana jest wartość \c;nan\n;.
+
+\t;Zobacz również
+\c;\l;send\u cbot\send;\n;, \c;\l;testinfo\u cbot\testinfo;\n; i \c;\l;deleteinfo\u cbot\delinfo;\n;.
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/SEARCH.TXT b/help/P/cbot/SEARCH.TXT
new file mode 100644
index 00000000..7be578aa
--- /dev/null
+++ b/help/P/cbot/SEARCH.TXT
@@ -0,0 +1,18 @@
+\b;Instrukcja \c;search\n;
+Składnia:
+\s;\c;search ( kategoria, pozycja );\n;
+
+Znajduje obiekt o określonej kategorii, będący najbliżej podanej pozycji.
+
+\t;kategoria: \c;\l;int\u cbot\int;\n;
+\l;Kategoria\u cbot\category; poszukiwanego obiektu.
+
+\t;pozycja: \c;\l;point\u cbot\point;\n;
+Funkcja \c;search\n; zwraca obiekt o podanej kategorii znajdujący się najbliżej określonej tutaj pozycji.
+
+\t;Typ wyniku: \c;\l;object\u cbot\object;\n;
+Charakterystyka znalezionego obiektu. Wartość \c;\l;null\u cbot\null;\n; oznacza, że nie znaleziono obiektu o podanej kategorii.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
+
diff --git a/help/P/cbot/SHIELD.TXT b/help/P/cbot/SHIELD.TXT
new file mode 100644
index 00000000..972a6f96
--- /dev/null
+++ b/help/P/cbot/SHIELD.TXT
@@ -0,0 +1,19 @@
+\b;Instrukcja \c;shield\n;
+Składnia:
+\s;\c;shield ( oper );\n;
+
+Aktywuje lub dezaktywuje osłonę robota \l;osłaniacza\u object\botshld;. Oczywiście można poruszać robotem przy aktywnej osłonie. Zabezpiecza ona wszystkie obiekty znajdujące się wewnątrz strefy przed atakami wroga. Promień sfery może się zawierać pomiędzy 10 a 25 metrami.
+
+\t;oper: \c;\l;float\u cbot\float;\n;
+\c;1\n; aktywuje osłonę.
+\c;0\n; dezaktywuje osłonę
+Zwykłe, w pełni naładowane \l;ogniwo elektryczne\u object\power; wystarcza na 20 sekund aktywności osłony. Gdy ogniwo się wyczerpie, osłona jest wyłączana.
+
+\t;promień: \c;\l;float\u cbot\float;\n;
+Promień sfery ochronnej, pomiędzy 10 a 25 metrów.
+
+\t;Typ wyniku: \c;\l;void\u cbot\void;\n;
+Brak.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/SNIFF.TXT b/help/P/cbot/SNIFF.TXT
new file mode 100644
index 00000000..847f09f7
--- /dev/null
+++ b/help/P/cbot/SNIFF.TXT
@@ -0,0 +1,17 @@
+\b;Instrukcja \c;sniff\n;
+Składnia:
+\s;\c;sniff ( );\n;
+
+Analizuje grunt przed robotem \l;szperaczem\u object\botsr;. W zależności od wykrytego surowca, pojawia się następujący znacznik:
+
+\c;Złoże tytanu\n; -> \l;Czerwony plus\u object\stonspot;
+\c;Złoże uranu \n; -> \l;Żółte kółko\u object\uranspot;
+\c;Źródło energii \n; -> \l;Zielony plus\u object\enerspot;
+
+\t;Typ wyniku: \c;\l;int\u cbot\int;\n;
+Zero jeśli wszystko jest w porządku, lub wartość inna od zera w przypadku wystąpienia błędu.
+\c;== 0 \n;analiza wykonana
+\c;!= 0 \n;analiza niemożliwa
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/STRING.TXT b/help/P/cbot/STRING.TXT
new file mode 100644
index 00000000..8fce47e7
--- /dev/null
+++ b/help/P/cbot/STRING.TXT
@@ -0,0 +1,33 @@
+\b;Typ \c;string\n;
+Zmiennej tego typu można używać do przechowywania znaków lub ciągów znaków.
+
+Na przykład:
+\s;\c; "Cześć!"
+\s; "To jest łańcuch"
+\s; "x"
+\s; "" // pusty łańcuch
+\n;
+Dwa łańcuchy można złączać, używając operatora \c;+\n;:
+\s;\c; "Dzień dobry" + " " + "Panu"
+\n;
+Daje w wyniku łańcuch:
+\s;\c; "Dzień dobry Panu"
+\n;
+Aby użyć cudzysłowu (") lub odwróconej kreski ułamkowej (\) w łańcuchu, należy napisać¦:
+\s;\c;"To jest \"bardzo\" ważne"
+\n;czego wynikiem będzie \c; To jest "bardzo" ważne.
+\s;\c;"%user%\\ant.txt"
+\n;czego wynikiem będzie \c;%user%\ant.txt
+\n;
+Następujące instrukcje mogą być używane na łańcuchach¦:
+\c;\l;strlen\u cbot\strlen; \n;Podaje długość łańcucha
+\c;\l;strleft\u cbot\strleft; \n;Wyodrębnia lewą część
+\c;\l;strright\u cbot\strright; \n;Wyodrębnia prawą część
+\c;\l;strmid\u cbot\strmid; \n;Wyodrębnia środkową część
+\c;\l;strfind\u cbot\strfind; \n;Znajduje podłańcuch
+\c;\l;strval\u cbot\strval; \n;Zamienia łańcuch na liczbę
+\c;\l;strupper\u cbot\strupper; \n;Zamienia litery na wielkie
+\c;\l;strlower\u cbot\strlower; \n;Zamienia litery na małe
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/TERM.TXT b/help/P/cbot/TERM.TXT
new file mode 100644
index 00000000..f1ae4c39
--- /dev/null
+++ b/help/P/cbot/TERM.TXT
@@ -0,0 +1,31 @@
+\b;Åšrednik
+Po prostych wyrażeniach zawsze należy używać średnika \c;;\n;. Na przykład:
+\c;
+\s; int licznik = 0;
+\n;
+Nie należy jednak używać średnika na zakończenie \l;bloku\u cbot\bloc;:
+\c;
+\s; {
+\s; float odl;
+\s; odl = distance(p1, p2);
+\s; } \n;// tutaj bez średnika!\c;
+\n;
+Nie należy również stosować średnika bezpośrednio po instrukcjach \c;\l;while\u cbot\while;\n;, \c;\l;if\u cbot\if;\n; lub \c;\l;for\u cbot\for;\n;:
+\c;
+\s; if ( a < b ) \n;// tutaj bez średnika!\c;
+\s; {
+\s; b = 100-a;
+\s; }
+\n;
+Ponieważ instrukcje zawsze kończą się średnikiem a nie znakiem końca linii, można umieścić kilka instrukcji w jednej linii:
+\c;
+\s; int d=20;
+\s; move(d);
+\s; turn(90);
+\n;
+Jest równoważne:
+\c;
+\s; int d=20; move(d); turn(90);
+\n;
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/THUMP.TXT b/help/P/cbot/THUMP.TXT
new file mode 100644
index 00000000..8b4b3980
--- /dev/null
+++ b/help/P/cbot/THUMP.TXT
@@ -0,0 +1,13 @@
+\b;Instrukcja \c;thump\n;
+Składnia:
+\s;\c;thump ( );\n;
+
+Uruchamia system broni robota \l;uderzacza\u object\bottump;, który przewraca mrówki i pająki do góry brzuchem, powodując ich chwilowe unieszkodliwienie.
+
+\t;Typ wyniku: \c;\l;int\u cbot\int;\n;
+Zero w przypadku powodzenia lub inna wartość, jeśli wystąpił błąd.
+\c;== 0 \n;Uderzenie wykonane
+\c;!= 0 \n;Operacja niemożliwa
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/TOPO.TXT b/help/P/cbot/TOPO.TXT
new file mode 100644
index 00000000..6a2a9e1f
--- /dev/null
+++ b/help/P/cbot/TOPO.TXT
@@ -0,0 +1,14 @@
+\b;Instrukcja \c;topo\n;
+Składnia:
+\s;\c;topo ( pozycja );\n;
+
+Podaje wysokość gruntu w podanej pozycji. Wysokość zerowa odpowiada poziomowi morza. Wartość ujemna oznacza, że sprawdzany punkt jest przykryty wodą.
+
+\t;pozycja: \c;\l;point\u cbot\point;\n;
+Współrzędne pozycji, której wysokość ma być sprawdzona.
+
+\t;Typ wyniku: \c;\l;float\u cbot\float;\n;
+Wysokość gruntu w podanej pozycji.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/TRUE.TXT b/help/P/cbot/TRUE.TXT
new file mode 100644
index 00000000..34128b57
--- /dev/null
+++ b/help/P/cbot/TRUE.TXT
@@ -0,0 +1,5 @@
+\b;Typ \c;true\n;
+Wartość ta oznacza, że warunek jest prawdziwy; jest to jedna z dwóch wartości \l;zmiennej\u cbot\var; typu \l;boolean\u cbot\bool;.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/TURN.TXT b/help/P/cbot/TURN.TXT
new file mode 100644
index 00000000..485a239c
--- /dev/null
+++ b/help/P/cbot/TURN.TXT
@@ -0,0 +1,33 @@
+\b;Instrukcja \c;turn\n;
+Instrukcja \c;turn();\n; służy do wykonania przez robota obrotu o określoną liczbę stopni.
+
+\b;Podstawowe użycie
+90 stopni oznacza ćwierć obrotu, 180 stopni to pół obrotu. Kąt dodatni to obrót przeciwny do ruchu wskazówek zegara, kąt ujemny oznacza obrót zgodny z ruchem wskazówek zegara. Oto kilka przykładów użycia instrukcji \c;turn();\n;:
+
+\c;turn(90);\n; ćwierć obrotu w lewo
+\c;turn(-90);\n; ćwierć obrotu w prawo (ujemny kąt)
+\c;turn(180);\n; połowa obrotu
+
+Aby obrócić robota w kierunku obiektu znalezionego przy użyciu instrukcji \c;\l;radar\u cbot\radar;();\n;, należy obliczyć kąt obrotu przy pomocy instrukcji \c;\l;direction\u cbot\direct;()\n;:
+\c;
+\s; item = \l;radar\u cbot\radar;(AlienSpider);
+\s; turn(\l;direction\u cbot\direct;(item.position));
+\n;
+Po tych liniach wystarczy wystrzelić z działa i już mamy jednego wroga mniej.
+
+\b;Dla specjalistów
+Składnia:
+\s;\c;turn ( kÄ…t );\n;
+
+Obraca robota o podany kąt, w prawo lub w lewo, bez poruszania do przodu ani do tyłu.
+
+\t;kÄ…t: \c;\l;float\u cbot\float;\n;
+Kąt obrotu w stopniach. Wartość dodatnia to obrót w lewo, ujemna - w prawo. \c;turn(180)\n; obraca do tyłu.
+
+\t;Typ wyniku: \c;\l;int\u cbot\int;\n;
+Zero w przypadku powodzenia lub inna wartość, jeśli wystąpił błąd.
+\c;== 0 \n;obrót wykonany
+\c;!= 0 \n;obrót niemożliwy
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/TYPE.TXT b/help/P/cbot/TYPE.TXT
new file mode 100644
index 00000000..bd7a48c9
--- /dev/null
+++ b/help/P/cbot/TYPE.TXT
@@ -0,0 +1,33 @@
+\b;Typy zmiennych
+Definiując \l;zmienną\u cbot\var; należy podać dwa elementy:
+
+1) nazwÄ™
+2) typ
+
+Po zdefiniowaniu zmiennej można w niej umieszczać informacje. Jednakże informacja, którą może przechowywać zmienna musi być odpowiedniego typu: zmienna typu \l;float\u cbot\float; nie może zawierać łańcucha itd.
+
+W programie typy zmiennych wyświetlane są na \type;zielonym tle\norm;. Jeśli jest inaczej, prawdopodobnie w nazwie jest literówka. Nazwy typów są zawsze zapisywane małymi literami. Oto lista różnych typów:
+
+\s;\c;\l;int\u cbot\int;\n;
+Dla liczb całkowitych (12, -500, itd.)
+
+\s;\c;\l;float\u cbot\float;\n;
+Dla liczb rzeczywistych (12, 3.14, 0.2, -99.98, itd.)
+
+\s;\c;\l;bool\u cbot\bool;\n;
+Dla zmiennych logicznych, które mogą zawierać wartości \c;true\n; lub \c;false\n;
+
+\s;\c;\l;string\u cbot\string;\n;
+Dla tekstów ("Cześć!", "Nie znaleziono obiektu", itd.)
+
+\s;\c;\l;point\u cbot\point;\n;
+Dla współrzędnych punktu w przestrzeni; zmienna tego typu składa się z trzech części nazwanych x, y oraz z.
+
+\s;\c;\l;object\u cbot\object;\n;
+Zmienna tego typu może zawierać informacje o obiekcie (robocie, budynku, wrogu, itd.)
+
+\s;\c;\l;void\u cbot\void;\n;
+Jest to "typ pusty", używany wtedy, gdy nie chcemy określać typu.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/VAR.TXT b/help/P/cbot/VAR.TXT
new file mode 100644
index 00000000..ebfc5b03
--- /dev/null
+++ b/help/P/cbot/VAR.TXT
@@ -0,0 +1,67 @@
+\b;Zmienne
+Zmienna jest jak pudełko, do którego można wkładać różne informacje. Wartość zmiennej może się zmieniać podczas wykonywania programu.
+
+Na przykład można użyć zmiennej do liczenia jednostek rudy tytanu zebranych i przeniesionych przez transporter do huty. Najpierw należy ustalić odpowiednią nazwę dla zmiennej: nie powinna być ona zbyt długa, ale powinna wyjaśniać do czego używana jest zmienna. Nazwijmy ją \c;liczTyt\n;. Zmienna ta będzie zawierała tylko liczby całkowite, dlatego odpowiednim dla niej typem będzie \c;int\n;. Na początku programu zmienną trzeba zadeklarować. Następnie można w niej umieścić wartość \c;0\n;, zwiększając ją o \c;1\n; za każdym razem, gdy robot podniesie rudę tytanu. Zmienna ta będzie zawierać liczbę porcji rudy tytanu zebranych do tej pory przez robota.
+
+Aby zadeklarować zmienną, należy napisać:
+\c;\s; int liczTyt;\n;
+
+Aby przypisać jej wartość \c;0\n;, należy napisać:
+\c;\s; liczTyt = 0;\n;
+
+Po zebraniu każdej porcji rudy tytanu należy napisać:
+\c;\s; liczTyt = liczTyt + 1\n;
+
+W wyborze nazwy dla zmiennej jest dużo swobody, można ją nazwać dowolnie, np.: \c;odl\n;, \c;kierunek\n;, \c;p2\n;, \c;a\n;, \c;x\n;, \c;nic_do_zestrzelenia\n;, itd.
+Nazwa zmiennej musi zaczynać się od litery, po której może następować dowolna kombinacja liter, cyfr i znaków podkreślenia \c;_\n;. Oczywiście nie można używać słów kluczowych języka CBOT takich jak \c;\l;for\u cbot\for;\n;, \c;\l;while\u cbot\while;\n;, \c;\l;break\u cbot\break;\n;, \c;\l;continue\u cbot\continue;\n;, \c;do\n;, itd.
+Należy być ostrożnym w wyborze nazw przydzielanych zmiennym; pisanie programu może okazać się bardzo trudne jeśli zapomni się nazwy zmiennych lub nie pamięta do czego one służyły. Należy opracować własny system nazywania zmiennych i raczej nie używać nazw podobnych do \c;Bmo45\n;, \c;a\n; czy \c;tgBinX\n;.
+
+W powyższym przykładzie, słowo \c;int\n; określa, że zmienna może zawierać tylko liczby całkowite, odpowiednie do liczenia obiektów. Do mierzenia odległości lepiej jest użyć zmiennej, która może również zawierać liczby rzeczywiste z częścią ułamkową (takie jak 3.45 lub 0.034): w tym przypadku odpowiedniejszy jest typ \c;float\n;.
+
+Zmienna składa się z trzech części:
+1) nazwy
+2) typu informacji przez niÄ… przechowywanych
+3) zawartości, czyli samej informacji
+
+\t;nazwa
+Jest niezbędna do rozróżniania zmiennych pomiędzy sobą.
+
+\t;typ
+\l;Typ\u cbot\type; warunkuje rodzaj informacji, jaką może zawierać zmienna. Zależnie od typu, zmienna może zawierać liczby całkowite, liczby rzeczywiste, łańcuchy, współrzędne punktu, informacje o obiekcie, itd.
+Oto lista najczęściej występujących typów zmiennych:
+ o \c;\l;int\u cbot\int;\n; dla liczb całkowitych (12, -500, itd.)
+ o \c;\l;float\u cbot\float;\n; dla liczb rzeczywistych (3.14, 0.2, -99.98, itd.)
+ o \c;\l;string\u cbot\string;\n; dla łańcuchów znakowych ("Cześć!", "Nie znaleziono obiektu", itd.)
+ o \c;\l;point\u cbot\point;\n; dla współrzędnych x, y, z w przestrzeni
+ o \c;\l;object\u cbot\object;\n; dla informacji o obiekcie (robocie, budynku, itd.)
+
+\t;zawartość
+Zawartością zmiennej jest informacja, której rodzaj jest określony przez typ. Może się ona zmieniać w trakcie działania programu.
+
+Po zadeklarowaniu zmiennej nie zawiera ona żadnej wartości. Zanim będzie można jej użyć, trzeba nadać jej wartość:
+\c;\s; int i, j;
+\s; j = 25; // j przyjmuje wartość 25
+\s; j = i; // tak nie można napisać, gdyż i nie ma jeszcze żadnej wartości.
+\n;
+Możliwe jest zadeklarowanie zmiennej i przypisanie jej wartości w tym samym wierszu:
+\c;\s; int liczTyt = 0;
+\n;
+Przy wykonywaniu przypisania wartości zmiennej przy użyciu znaku równości\c;=\n;, wartość z prawej strony jest kopiowana do wartości po lewej stronie. Rozważmy następujący przykład:
+\c;\s; int i, j;
+\s; i = 5+2; // i przyjmuje wartość 7
+\s; j = i+6; // j przyjmuje wartość i plus 6, czyli 13
+\s; i = j; // i przyjmuje wartość j, czyli 13
+\n;
+Na końcu tego przykładu obie zmienne \c;i\n; i \c;j\n; zawierają wartość \c;13\n;.
+
+Następujące przypisanie jest niepoprawne, gdyż po lewej stronie znaku równości \c;=\n; może występować tylko nazwa zmiennej:
+\c;\s; i+2 = j; // niemożliwe
+\n;
+Do zamiany zawartości dwóch zmiennych konieczne jest użycie trzeciej zmiennej. Oto przykład zamieniający zawartość zmiennych \c;a\n; i \c;b\n;:
+\c;\s; int pom;
+\s; pom = a; // pom przyjmuje wartość a
+\s; a = b; // zawartość b jest kopiowana do a
+\s; b = pom; // zawartość pom jest kopiowana do b
+\n;
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/VOID.TXT b/help/P/cbot/VOID.TXT
new file mode 100644
index 00000000..acf3d0dd
--- /dev/null
+++ b/help/P/cbot/VOID.TXT
@@ -0,0 +1,11 @@
+\b;Typ \c;void\n;
+Tego typu należy użyć do deklaracji funkcji, która nie zwraca żadnego wyniku.
+
+Przykład:
+\c;\s;void MojaFunkcja(int a)
+\s;{
+\s; ...
+\s;}
+\n
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/WAIT.TXT b/help/P/cbot/WAIT.TXT
new file mode 100644
index 00000000..f478b588
--- /dev/null
+++ b/help/P/cbot/WAIT.TXT
@@ -0,0 +1,22 @@
+\b;Instrukcja \c;wait\n;
+Instrukcja \c;wait();\n; każe robotowi czekać przez kilka sekund, zależnie od wartości podanej w nawiasach.
+
+\b;Podstawowe użycie
+Na naładowanie \l;ogniwa elektrycznego\u object\power; w stacji energetycznej należy poczekać 5 sekund używając instrukcji \c;wait(5);\n;.
+
+Na przetopienie \l;rudy tytanu\u object\titanore; w \l;kostkę tytanu\u object\titan; w \l;hucie\u object\convert; należy poczekać 15 sekund używając instrukcji \c;wait(15);\n;.
+
+\b;Dla specjalistów
+Składnia:
+\s;\c;wait ( czas );\n;
+
+Czeka przez chwilÄ™.
+
+\t;czas: \c;\l;float\u cbot\float;\n;
+Określa czas przez jaki robot powinien czekać.
+
+\t;Typ wyniku: \c;\l;void\u cbot\void;\n;
+Brak.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/abstime.txt b/help/P/cbot/abstime.txt
new file mode 100644
index 00000000..8f0b4ee1
--- /dev/null
+++ b/help/P/cbot/abstime.txt
@@ -0,0 +1,11 @@
+\b;Instrukcja \c;abstime\n;
+Składnia¦:
+\s;\c;abstime ( );\n;
+
+Zwraca czas (w sekundach) jaki upłynął od początku misji.
+
+\t;Typ wyniku: \c;\l;float\u cbot\float;\n;
+Czas w sekundach.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/array.txt b/help/P/cbot/array.txt
new file mode 100644
index 00000000..6596a416
--- /dev/null
+++ b/help/P/cbot/array.txt
@@ -0,0 +1,31 @@
+\b;Tablice
+Tablica jest zestawem obiektów tego samego typu lub klasy. W języku CBOT można używać N wymiarowych tablic. Każdy wymiar jest ograniczony do 9999 elementów. Aby zadeklarować tablicę, należy użyć nawiasów kwadratowych \c;[]\n; po nazwie zmiennej lub nazwie typu.
+\c;
+\s;int [ ] a; // tablica typu int
+\s;int a [12]; // tablica typu int ograniczona do 12 elementów
+\s;string s[3]; // tablica 3 elementów typu string
+\s;float xy[][]; // 2 wymiarowa tablica typu float
+\n;
+W rzeczywistości, gdy interpreter języka CBOT napotka deklarację tablicy, tworzy jedynie \l;wskażnik\u cbot\pointer; \c;\l;null\u cbot\null;\n;:
+\c;
+\s;int a[5]; // jest teraz wskaźnikiem null
+\n;
+Z chwilą wstawienia wartości do tablicy, tworzone są elementy i inicjalizowany jest wskaźnik:
+\c;
+\s;a[2] = 213; // tablica a wskazuje na
+\s; // 3 elementy: [0], [1] i [2]
+\n;
+Po tej operacji, zmienna \c;a\n; zawiera wskaźnik do elementów tablicy. Elementy \c;[0]\n; i \c;[1]\n; są tworzone, ale nie inicjalizowane, gdyż tablica nie może zawierać pustych elementów. Instrukcja \c;\l;sizeof\u cbot\sizeof;\n; umożliwia sprawdzenie liczby elementów tablicy.
+
+Gdy określony jest rozmiar maksymalny deklarowanej tablicy, program zatrzyma się w przypadku próby dostępu poza tablicę. Błąd ten nie jest sygnalizowany podczas kompilacji, nawet jeśli jest oczywisty:
+\c;
+\s;{
+\s; int a[5];
+\s; a[7] = 123; // nie ma błędu podczas kompilacji
+\s; // ale pojawia się podczas działania programu
+\s;}
+\n;
+Jeśli tablica przekazywana jest jako parametr \l;funkcji\u cbot\function;, funkcja otrzymuje jedynie \l;wskaźnik\u cbot\pointer; do tablicy. Oznacza to, że w przypadku modyfikacji elementu tablicy wewnątrz funkcji, zostanie w rzeczywistości zmodyfikowany element tablicy przekazanej funkcji jako parametr.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/bloc.txt b/help/P/cbot/bloc.txt
new file mode 100644
index 00000000..11341fbd
--- /dev/null
+++ b/help/P/cbot/bloc.txt
@@ -0,0 +1,49 @@
+\b;Bloki
+Do zgrupowania razem kilku instrukcji można użyć nawiasów klamrowych \c;{ }\n; i utworzyć z nich jeden blok, na przykład:
+\c;
+\s; {
+\s; float t;
+\s; t = a;
+\s; a = b;
+\s; b = t; // zamienia zawartości a i b
+\s; }
+\n;
+Każda instrukcja w bloku zakończona jest \l;średnikiem\u cbot\term; ale sam blok już nie.
+W celu zilustrowania użycia bloków w programie rozważmy następujący przykład z instrukcją \c;\l;if\u cbot\if;\n;:
+\c;
+\s; if ( a < b )
+\s; \n;instrukcja 1\c;;
+\s; \n;instrukcja 2\c;;
+\s; \n;instrukcja 3\c;;
+\n;
+Jeśli \l;warunek\u cbot\cond; jest prawdziwy, wykonywane są instrukcje 1, 2 i 3. Jeśli nie, tylko instrukcja 1 jest pomijana, instrukcje 2 i 3 są wykonywane. Fakt, że instrukcja 2 jest na tym samym poziomie co instrukcja 1 nie ma znaczenia.
+Jeśli instrukcje 1 i 2 mają być wykonywane tylko gdy warunek jest prawdziwy, należy użyć nawiasów klamrowych do złączenie ich w jeden blok:
+\c;
+\s; if ( a < b )
+\s; {
+\s; \n;instrukcja 1\c;;
+\s; \n;instrukcja 2\c;;
+\s; }
+\s; \n;instrukcja 3\c;;
+\n;
+Bloki mogą być niezbędne w przypadku instrukcji \c;\l;if\u cbot\if;\n;, \c;\l;while\u cbot\while;\n; oraz \c;\l;for\u cbot\for;\n;, w celu zgrupowania instrukcji, które mają być wykonywane tylko w przypadku prawdziwości warunku bądź powtarzane wielokrotnie.
+Bloki można umieszczać wewnątrz innych bloków dowolną liczbę razy. Oto przykład dwupoziomowego zagnieżdżenia:
+\c;
+\s; if ( a > b )
+\s; {
+\s; int i = 0;
+\s; while ( i < 18 )
+\s; {
+\s; move(10);
+\s; turn(5);
+\s; i = i+1;
+\s; }
+\s; }
+\n;
+Aby poprawić czytelność programu, najlepiej jest wyrównać klamrę otwierającą\c;{\n; z zamykającą \c;}\n;, chociaż nie jest to obowiązkowe. Następujący przykład zajmuje mniej miejsca i jest równoważny poprzedniemu, nie jest jednak polecane używanie takiego stylu:
+\c;
+\s; if(a>b) { int i=0; while(i<18) {
+\s; move(10);turn(5);i=i+1; }}
+\n;
+\t;Zobacz również
+\l;Instrukcje\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/category.txt b/help/P/cbot/category.txt
new file mode 100644
index 00000000..214e0eba
--- /dev/null
+++ b/help/P/cbot/category.txt
@@ -0,0 +1,108 @@
+\b;\c;Kategorie\n; wartości
+Kategorie to nazwy obiektów języka CBOT. W grze COLOBOT wszystko to obiekty: roboty, budynki, surowce, itd., nawet Ty.
+
+W programie kategorie są wyświetlane na \const;czerwonym tle\norm;. Jeśli kategoria nie jest podświetlona na czerwono, w jej nazwie jest literówka. Wielkie i małe litery powinny być zachowane.
+
+Poniżej wymienione są różne dostępne kategorie:
+
+\t;Budynki:
+
+\button 176; \c;\l;Houston\u object\Huston; \n;Centrum Kontroli Misji
+\button 171; \c;\l;SpaceShip\u object\base; \n;Statek kosmiczny
+\button 160; \c;\l;BotFactory\u object\factory; \n;Fabryka robotów
+\button 163; \c;\l;ResearchCenter\u object\research; \n;Centrum badawcze
+\button 168; \c;\l;RadarStation\u object\radar; \n;Radar
+\button 172; \c;\l;ExchangePost\u object\exchange; \n;Stacja przekaźnikowa informacji
+\button 169; \c;\l;RepairCenter\u object\repair; \n;Warsztat
+\button 165; \c;\l;DefenseTower\u object\tower; \n;Wieża obronna
+\button 166; \c;\l;AutoLab\u object\labo; \n;Analizator materii organicznej
+\button 164; \c;\l;PowerStation\u object\station; \n;Elektrownia
+\button 167; \c;\l;PowerPlant\u object\energy; \n;Fabryka ogniw elektrycznych
+\button 170; \c;\l;NuclearPlant\u object\nuclear; \n;Elektrownia atomowa
+\button 162; \c;\l;Converter\u object\convert; \n;Huta tytanu
+\button 161; \c;\l;Derrick\u object\derrick; \n;Kopalnia
+\button 174; \c;\l;PowerCaptor\u object\captor; \n;Paraboliczny odgromnik
+\button 175; \c;\l;Vault\u object\safe; \n;Skrytka
+ \c;\l;StartArea\u object\start; \n;Podest startowy
+ \c;\l;GoalArea\u object\goal; \n;Podest końcowy
+ \c;\l;AlienNest\u object\nest; \n;Gniazdo Obcych
+
+
+\t;Obiekty przenośne:
+
+ \c;\l;TitaniumOre\u object\titanore; \n;Ruda tytanu
+ \c;\l;UraniumOre\u object\uranore; \n;Ruda uranu
+ \c;\l;Titanium\u object\titan; \n;Kostka przetopionego tytanu
+ \c;\l;PowerCell\u object\power; \n;Zwykłe ogniwo elektryczne
+ \c;\l;NuclearCell\u object\atomic; \n;Atomowe ogniwo elektryczne
+ \c;\l;OrgaMatter\u object\bullet; \n;Materia organiczna
+ \c;\l;BlackBox\u object\bbox; \n;Czarna skrzynka
+ \c;\l;TNT\u object\tnt; \n;Materiały wybuchowe
+ \c;\l;KeyA..D\u object\key; \n;Klucze A, B, C i D
+
+
+\t;Roboty:
+
+\button 158; \c;\l;PracticeBot\u object\bottr; \n;Robot treningowy
+\button 173; \c;\l;TargetBot\u object\bottarg; \n;Robot cel
+
+\button 137; \c;\l;WheeledGrabber\u object\botgr; \n;Transporter na kołach
+\button 138; \c;\l;TrackedGrabber\u object\botgc; \n;Transporter na gÄ…sienicach
+\button 139; \c;\l;WingedGrabber\u object\botgj; \n;Transporter latajÄ…cy
+\button 150; \c;\l;LeggedGrabber\u object\botgs; \n;Transporter na nogach
+
+\button 140; \c;\l;WheeledSniffer\u object\botsr; \n;Szperacz na kołach
+\button 141; \c;\l;TrackedSniffer\u object\botsc; \n;Szperacz na gÄ…sienicach
+\button 142; \c;\l;WingedSniffer\u object\botsj; \n;Szperacz latajÄ…cy
+\button 152; \c;\l;LeggedSniffer\u object\botss; \n;Szperacz na nogach
+
+\button 143; \c;\l;WheeledShooter\u object\botfr; \n;Działo na kołach
+\button 144; \c;\l;TrackedShooter\u object\botfc; \n;Działo na gąsienicach
+\button 145; \c;\l;WingedShooter\u object\botfj; \n;Działo latające
+\button 151; \c;\l;LeggedShooter\u object\botfs; \n;Działo na nogach
+
+\button 153; \c;\l;WheeledOrgaShooter\u object\botor; \n;Działo organiczne na kołach
+\button 154; \c;\l;TrackedOrgaShooter\u object\botoc; \n;Działo organiczne na gąsienicach
+\button 155; \c;\l;WingedOrgaShooter\u object\botoj; \n;Latające działo organiczne
+\button 156; \c;\l;LeggedOrgaShooter\u object\botos; \n;Działo organiczne na nogach
+
+\button 149; \c;\l;Subber\u object\botsub; \n;Robot nurek
+\button 148; \c;\l;Recycler\u object\botrecy; \n;Robot recykler
+\button 157; \c;\l;Shielder\u object\botshld; \n;Robot osłaniacz
+\button 146; \c;\l;Thumper\u object\bottump; \n;Robot uderzacz
+\button 147; \c;\l;PhazerShooter\u object\botphaz; \n;Działo fazowe
+
+
+\t;Wrogowie:
+
+ \c;\l;AlienQueen\u object\mother; \n;Królowa Obcych
+ \c;\l;AlienEgg\u object\egg; \n;Jajo Obcych
+ \c;\l;AlienAnt\u object\ant; \n;Mrówka
+ \c;\l;AlienSpider\u object\spider; \n;PajÄ…k
+ \c;\l;AlienWasp\u object\wasp; \n;Osa
+ \c;\l;AlienWorm\u object\worm; \n;Robal
+
+
+\t;Różne:
+
+\button 136; \c;\l;Me\u object\human; \n;Ty!
+ \c;\l;Mine\u object\mine; \n;Mina
+ \c;\l;Barrier\u object\barrier; \n;Bariera
+ \c;\l;Wreck\u object\wreck; \n;SzczÄ…tki robota
+ \c;\l;Ruin\u object\ruin; \n;SzczÄ…tki budynku
+
+
+\t;Flagi i inne znaczniki:
+
+ \c;\l;BlueFlag\u object\flag; \n;Niebieska flaga
+ \c;\l;RedFlag\u object\flag; \n;Czerwona flaga
+ \c;\l;GreenFlag\u object\flag; \n;Zielona flaga
+ \c;\l;YellowFlag\u object\flag; \n;Żółta flaga
+ \c;\l;VioletFlag\u object\flag; \n;Fioletowa flaga
+ \c;\l;WayPoint\u object\waypoint; \n;Punkt kontrolny
+ \c;\l;EnergySite\u object\enerspot; \n;Podziemne źródło energii
+ \c;\l;TitaniumSite\u object\stonspot; \n;Podziemne złoże tytanu
+ \c;\l;UraniumSite\u object\uranspot; \n;Podziemne złoże uranu
+
+\t;Zobacz również
+\l;Język CBOT\u cbot; i \l;zmienne\u cbot\type;.
diff --git a/help/P/cbot/class.txt b/help/P/cbot/class.txt
new file mode 100644
index 00000000..1d01dd6f
--- /dev/null
+++ b/help/P/cbot/class.txt
@@ -0,0 +1,72 @@
+\b;Instrukcja \c;class\n;
+Pozwala na zadeklarowanie definicji klasy, przy użyciu następującej składni:
+\c;
+\s;public class NazwaKlasy
+\s;{
+\s; deklaracje;
+\s;}
+\n;
+Klasy mogą być tylko typu \l;public\u cbot\public; (publiczne), a więc mogą być używane podczas misji przez wszystkie roboty. Elementy klasy również są publiczne, dostępne spoza klasy. Do klasy mogą należeć pola lub funkcje (zwane również metodami), na przykład następująca klasa \c;MojaKlasa\n; zawiera 4 pola (a, b, x oraz s) i jedną metodę (MojaFunkcja).
+\c;
+\s;public class MojaKlasa
+\s;{
+\s; int a, b;
+\s; float x = 3.33;
+\s; string s = "Cześć";
+\s; float MojaFunkcja( float value )
+\s; {
+\s; return (value*x)-1;
+\s; }
+\s;}
+\n;
+Jak pokazano na tym przykładzie, elementy klasy mogą być inicjalizowane (\c;x=3.33\n;). Można też zdefiniować konstruktor, który jest specjalną metodą o nazwie takiej samej jak nazwa klasy. Metoda ta jest wywoływana automatycznie podczas tworzenia instancji klasy. Możliwe jest również zadeklarowanie więcej niż jednej metody o tej samej nazwie ale o innych parametrach.
+\c;
+\s;public class MojaKlasa
+\s;{
+\s; int a, b;
+\s; void MojaKlasa( )
+\s; {
+\s; a = 2; b = 3;
+\s; }
+\s; void MojaKlasa( int a, int b )
+\s; {
+\s; this.a = a; this.b = b;
+\s; }
+\s;}
+\n;
+W tym przykładzie zadeklarowano dwa konstruktory dla klasy \c;MojaKlasa\n;, jeden bez parametrów, drugi z dwoma parametrami. Jako że nazwy parametrów drugiego konstruktora są takie same jak nazwy dwóch pól klasy \c;a\n; et \c;b\n; konieczne jest użycie \c;\l;this\u cbot\this;.a\n; i \c;\l;this\u cbot\this;.b\n; w celu rozróżnienia parametrów. Inne, prostsze rozwiązanie, to nadanie różnych nazw parametrom.
+\c;
+\s;void Test( )
+\s;{
+\s; MojaKlasa element1(); // konstruktor bez parametrów
+\s; MojaKlasa element2(4, 5); // konstruktor z 2 parametrami
+\s; MojaKlasa element3; // konstruktor nie jest wywoływany,
+\s; // więc item3 == null
+\s;}
+\n;
+Można też zdefinować destruktor. Musi to być funkcja \c;void\n; bez parametrów o takiej samej nazwie jak nazwa klasy, poprzedzona znakiem ~. Destruktor jest wywoływany automatycznie gdy nie ma już żadnych odwołań do instancji klasy.
+\c;
+\s;public class MojaKlasa
+\s;{
+\s; static private int licznik = 0; // licznik instancji
+\s; void MojaKlasa( )
+\s; {
+\s; licznik ++; // jedna instancja więcej
+\s; }
+\s; void ~MojaKlasa( )
+\s; {
+\s; licznik --; // jedna instancja mniej
+\s; }
+\s;}
+\s;void Test()
+\s;{
+\s; MojaKlasa element1( ); // licznik = 1
+\s; MojaKlasa element2( ); // licznik = 2
+\s; element1 = null; // licznik = 1
+\s;} // licznik = 0
+\n;
+W przypadku przekazywania instancji klasy jako parametru \l;funkcji\u cbot\function;, otrzymuje ona tylko \l;wskaźnik\u cbot\pointer; do instancji. Oznacza to, że jeśli zostanie zmodyfikowana instancja wewnątrz funkcji, w rzeczywistości zostanie zmodyfikowana instancja przekazana funkcji.
+
+\t;Zobacz również
+\c;\l;public\u cbot\public;\n;, \c;\l;private\u cbot\private;\n;, \c;\l;static\u cbot\static;\n;, \c;\l;synchronized\u cbot\synchro;\n;, \c;\l;new\u cbot\new;\n;, \c;\l;wskaźnik\u cbot\pointer;\n;, \c;\l;this\u cbot\this;\n;
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/close.txt b/help/P/cbot/close.txt
new file mode 100644
index 00000000..484bd351
--- /dev/null
+++ b/help/P/cbot/close.txt
@@ -0,0 +1,8 @@
+\b;Instrukcja \c;close\n;
+Zamyka plik otwarty wcześniej przy użyciu instrukcji \c;\l;open\u cbot\open;\n;. Jest to metoda klasy \c;\l;file\u cbot\file;\n;, wobec czego nie można napisać \c;close()\n;, lecz jedynie \c;handle.close()\n;¦:
+\c;
+\s; handle.close();
+\n;
+\t;Zobacz również
+\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;readln\u cbot\readln;\n;, \c;\l;writeln\u cbot\writeln;\n; i \c;\l;eof\u cbot\eof;\n;.
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/deletef.txt b/help/P/cbot/deletef.txt
new file mode 100644
index 00000000..c5d64714
--- /dev/null
+++ b/help/P/cbot/deletef.txt
@@ -0,0 +1,10 @@
+\b;Instrukcja \c;deletefile\n;
+Instrukcja deletefile usuwa istniejÄ…cy plik z folderu files/.
+
+Pliki mogą być usuwane tylko w folderze files/ znajdującym się w folderze, w którym została zainstalowana gra Colobot. Nie jest możliwe usuwanie plików znajdujących się w innych folderach.
+
+Składnia¦:
+\s;\c;deletefile ( nazwa_pliku );\n;
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/delinfo.txt b/help/P/cbot/delinfo.txt
new file mode 100644
index 00000000..e236e9d6
--- /dev/null
+++ b/help/P/cbot/delinfo.txt
@@ -0,0 +1,15 @@
+\b;Instrukcja \c;deleteinfo\n;
+Składnia¦:
+\s;\c;deleteinfo ( nazwa, moc );\n;
+
+Usuwa istniejącą informację z najbliższej \l;stacji przekaźnikowej\u object\exchange;.
+
+\t;nazwa: \c;string\n;
+Nazwa informacji do usunięcia. Nazwa jest typu string i musi być napisana w cudzysłowach "¦".
+
+\t;moc: \c;float\n;
+Moc transmitera, odpowiadająca maksymalnej odległości pomiędzy nadawcą i stacją przekaźnikową. Jeśli odległość jest większa, informacja nie zostanie usunięta. Domyślana wartość to 10 metrów.
+
+\t;Zobacz również
+\c;\l;receive\u cbot\receive;\n;, \c;\l;send\u cbot\send;\n; i \c;\l;testinfo\u cbot\testinfo;\n;.
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/dist2d.txt b/help/P/cbot/dist2d.txt
new file mode 100644
index 00000000..d969dca7
--- /dev/null
+++ b/help/P/cbot/dist2d.txt
@@ -0,0 +1,14 @@
+\b;Instrukcja \c;distance2d\n;
+Składnia:
+\s;\c;distance2d ( pozycja1, pozycja2 );\n;
+
+Oblicza odległość pomiędzy dwoma punktami (pomijając współrzędną z).
+
+\t;pozycja1, pozycja2: \c;\l;point\u cbot\point;\n;
+Współrzędne dwóch punktów.
+
+\t;Typ wyniku: \c;\l;float\u cbot\float;\n;
+Odległość między dwoma punktami.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/eof.txt b/help/P/cbot/eof.txt
new file mode 100644
index 00000000..b1a97016
--- /dev/null
+++ b/help/P/cbot/eof.txt
@@ -0,0 +1,15 @@
+\b;Instrukcja \c;eof\n;
+Sprawdza warunek końca otwartego pliku. Jest to metoda klasy \c;\l;file\u cbot\file;\n;; wobec czego zamiast \c;eof()\n; należy napisać \c;handle.eof()\n;¦:
+\c;
+\s; if ( handle.eof() )
+\n;
+Przykład¦:
+\c;
+\s; while ( not handle.eof() )
+\s; {
+\s; s = handle.readln();
+\s; }
+\n;
+\t;Zobacz również
+\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n; i \c;\l;writeln\u cbot\writeln;\n;.
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/errmode.txt b/help/P/cbot/errmode.txt
new file mode 100644
index 00000000..a8654d91
--- /dev/null
+++ b/help/P/cbot/errmode.txt
@@ -0,0 +1,33 @@
+\b;Instrukcja \c;errmode\n;
+Instrukcja \c;errmode();\n; pozwala wybrać, czy program powinien zatrzymywać się w przypadku wystąpienia błędu w wykonywaniu jednej z następujących instrukcji: \c;\l;goto\u cbot\goto;\n;, \c;\l;move\u cbot\move;\n;, \c;\l;grab\u cbot\grab;\n;, \c;\l;drop\u cbot\drop;\n;, itd.
+
+\b;Dla specjalistów
+Składnia¦:
+\s;\c;errmode ( tryb );\n;
+
+Zwykle program zatrzymuje się po wystąpieniu błędu. Po użyciu instrukcji \c;errmode(0);\n; na początku programu, wymienione powyżej instrukcje dają w wyniku wartość różną od zera jeśli instrukcja nie mogła być wykonana.
+
+\t;tryb: \c;\l;float\u cbot\float;\n; (domyślnie \c;1\n;)
+Sposób traktowania błędu.
+\c;0\n; -> kontynuuje działanie programu i daje w wyniku wartość różną od zera
+\c;1\n; -> zatrzymuje program (działanie domyślne)
+
+Przykład 1¦:
+\s;\c;errmode(0);
+\s;while ( goto(pos) != 0 )
+\s;{
+\s; wait(2);
+\s;}
+\n;
+Przykład 2¦:
+\s;\c;errmode(0);
+\s;int err;
+\s;err = goto(pozycja);
+\s;if ( err != 0 )
+\s;{
+\s; \n;instrukcji goto nie udało się wykonać...\c;
+\s; \n;podejmij odpowienie działania...\c;
+\s;}
+\n;
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/extern.txt b/help/P/cbot/extern.txt
new file mode 100644
index 00000000..7c86b557
--- /dev/null
+++ b/help/P/cbot/extern.txt
@@ -0,0 +1,30 @@
+\b;Instrukcja \c;extern\n;
+Instrukcja \c;extern\n; wyróżnia \l;funkcję\u cbot\function;, która jest głównym programem robota. Nazwa funkcji zadeklarowanej jako \c;extern\n; pojawi się na liście programów w lewej dolnej części ekranu.
+\c;
+\s;extern void object::MowDown( )
+\s;{
+\s; while ( true )
+\s; {
+\s; fire(1);
+\s; turn(10);
+\s; }
+\s;}
+\n;
+Jeśli program zawiera inne funkcje, tylko główna funkcja powinna być poprzedzona słowem \c;extern\n;.
+\c;
+\s;extern void object::Square( )
+\s;{
+\s; for ( int i=0 ; i<4 ; i++ )
+\s; {
+\s; Line(10);
+\s; }
+\s;}
+\s;
+\s;void object::Line(float dist)
+\s;{
+\s; move(dist);
+\s; turn(90);
+\s;}
+\n;
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/file.txt b/help/P/cbot/file.txt
new file mode 100644
index 00000000..031fef47
--- /dev/null
+++ b/help/P/cbot/file.txt
@@ -0,0 +1,18 @@
+\b;Typ \c;file\n;
+Jest to typ wykorzystywany przy dostępie do plików znajdujących się w folderze files/.
+\c;
+\s; file handle();
+\n;
+Powyższej składni należ używać do deklarowania zmiennej plikowej. Konieczne jest użycie () do utworzenia instancji klasy \c;file\n;. Bez (), handle będzie wskazywać na \c;\l;null\u cbot\null;\n;.
+
+Pliki mogą być tworzone i otwierane tylko w folderze files/, który znajduje sie w folderze instalacji gry Colobot. Nie jest możliwe tworzenie ani otwieranie plików poza folderem files/.
+
+\b;Dla specjalistów
+\c;file\n; w rzeczywistości nie jest typem prostym ale klasą. \c;open\n;, \c;close\n;, \c;writeln\n; itd. są metodami klasy \c;file\n;. Dlatego zawsze należy pisać \c;handle.method()\n;¦:
+\c;
+\s; handle.open("test.txt", "w");
+\s; handle.close();
+\n;
+\t;Zobacz również
+\c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n;, \c;\l;writeln\u cbot\writeln;\n; i \c;\l;eof\u cbot\eof;\n;.
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/flatgrnd.txt b/help/P/cbot/flatgrnd.txt
new file mode 100644
index 00000000..3154d234
--- /dev/null
+++ b/help/P/cbot/flatgrnd.txt
@@ -0,0 +1,17 @@
+\b;Instrukcja \c;flatground\n;
+Składnia¦:
+\s;\c;flatground ( center, rmax );\n;
+
+Oblicza maksymalny promień płaskiego obszaru, na którym może być zbudowany budynek.
+
+\t;center: \c;\l;point\u cbot\point;\n;
+Åšrodek kolistej strefy.
+
+\t;rmax: \c;\l;float\u cbot\float;\n;
+Maksymalny promień.
+
+\t;Typ wyniku: \c;\l;float\u cbot\float;\n;
+Promień płaskiego obszaru (zawsze pomiędzy 0 i rmax).
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/function.txt b/help/P/cbot/function.txt
new file mode 100644
index 00000000..912f505e
--- /dev/null
+++ b/help/P/cbot/function.txt
@@ -0,0 +1,85 @@
+\b;Funkcje
+Używając funkcji można podzielić program na kilka części, z których każda będzie wykonywała określone zadanie.
+Wyobraźmy sobie następujący program¦:
+\c;
+\s;extern void object::Zdalnie( )
+\s;{
+\s; send("order", 1, 100);
+\s; wait(5);
+\s; send("order", 3, 100);
+\s; wait(5);
+\s; send("order", 2, 100);
+\s; wait(5);
+\s; send("order", 4, 100);
+\s; wait(5);
+\s;}
+\n;
+Instrukcje \c;send\n; i \c;wait\n; wykonywane są wielokrotnie. Byłoby dobrze utworzyć funkcję wykonującą te dwie instrukcje:
+\c;
+\s;void object::WyślijDoStacji( float op )
+\s;{
+\s; send("order", op, 100);
+\s; wait(5);
+\s;}
+\s;extern void object::Zdalnie( )
+\s;{
+\s; WyślijDoStacji(1);
+\s; WyślijDoStacji(3);
+\s; WyślijDoStacji(2);
+\s; WyślijDoStacji(4);
+\s;}
+\n;
+Funkcja może mieć parametry¦:
+\c;
+\s;void Przykład( int a, float x, string s )
+\n;
+Funkcja \c;Przykład\n; dostaje jako parametry liczbę całkowitą \c;a\n;, liczbę zmiennoprzecinkową \c;x\n; oraz łańcuch \c;s\n;. Parametry są "przekazywane przez wartość", czyli są kopią wartości określonych jako zmienne podczas wywołania. Przy przekazaniu zmiennej \c;int\n; funkcji, jej parametr jest kopią wartości przekazanej jako argument, wobec czego funkcja może zmieniać wartość parametru bez zmiany wartości w miejscu, z którego była wywołana funkcja.
+
+Przy przekazaniu instancji \l;klasy\u cbot\class; lub \l;tablicy\u cbot\array; jako parametru, funkcja otrzymuje jedynie \l;wskaźnik\u cbot\pointer; do instancji lub tablicy. Oznacza to, że w przypadku modyfikacji instancji lub tablicy wewnątrz funkcji, w rzeczywistości zostanie zmodyfikowana instancja lub tablica określona podczas wywołania.
+
+Funkcja może również zwrócić wynik przy użyciu instrukcji \c;\l;return\u cbot\return;\n;. Jednakże powinna być wówczas zadeklarowana nie jako void, ale powinna mieć określony typ:
+\c;
+\s;float Åšrednia( float a, float b )
+\s;{
+\s; return (a+b)/2;
+\s;}
+\s;
+\s;extern void object::Test( )
+\s;{
+\s; float wartość;
+\s; wartość = Średnia(2, 6);
+\s; message( wartość ); // wyświetli liczbę 4
+\s;}
+\n;
+I jeszcze kilka przykładów¦:
+\c;
+\s;float Pi( )
+\s;{
+\s; return 3.1415;
+\s;}
+\s;
+\s;string Znak( float a )
+\s;{
+\s; if ( a > 0 ) return "dodatnia";
+\s; if ( a < 0 ) return "ujemna";
+\s; return "zero";
+\s;}
+\n;
+Można zadeklarować kilka funkcji o tej samej nazwie lecz o różnych parametrach¦:
+\c;
+\s;float Pitagoras( float a, float b )
+\s;{
+\s; return sqrt((a*a)+(b*b));
+\s;}
+\s;
+\s;float Pitagoras( float a, float b, float c )
+\s;{
+\s; return sqrt((a*a)+(b*b)+(c*c));
+\s;}
+\n;
+CBOT wywoła jedną z nich, w zależności od przekazanych parametrów.
+
+Można też zadeklarować funkcję \l;publiczną\u cbot\public;, która będzie dostępna dla wszystkich robotów.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/motor.txt b/help/P/cbot/motor.txt
new file mode 100644
index 00000000..ed649017
--- /dev/null
+++ b/help/P/cbot/motor.txt
@@ -0,0 +1,39 @@
+\b;Instrukcja \c;motor\n;
+Instrukcja \c;motor( , );\n; ustawia prędkość lewego i prawego silnika robota.
+
+\b;Podstawowe użycie
+Prędkość nadana robotowi pozostaje niezmienna podczas wykonywania następujących instrukcji. Dzięki temu możliwe jest obracanie robota podczas wykonywania instrukcji \c;\l;fire\u cbot\fire;();\n;. Pozwala to na omiecenie całego obszaru jedną serią. Oto program omiatający całą strefę przed robotem:
+\c;
+\s; \l;turn\u cbot\turn;(45); // obróć o 45 stopnie w lewo
+\s; motor(0.5, -0.5); // powoli obracaj w prawo
+\s; \l;fire\u cbot\fire;(2); // strzelaj
+\s; motor(0,0); // zatrzymaj obracanie
+\n;
+Z lewym silnikiem obracającym się z połową prędkości do przodu i prawym obracającym się z połową prędkości do tyłu, robot będzie się powoli obracał podczas 2 sekundowej serii strzałów.
+
+\b;Dla specjalistów
+Składnia:
+\s;\c;motor ( lewy, prawy );\n;
+
+Ustala prędkości prawego i lewego silnika. Silniki będą poruszały się z tą prędkością do czasu ustalenia nowej prędkości silników lub wykonania jednej z instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n; lub \c;\l;goto\u cbot\goto;\n;.
+
+\t;lewy: \c;\l;float\u cbot\float;\n;
+Prędkość lewego silnika; wartości w zakresie od -1 do 1.
+
+\t;prawy: \c;\l;float\u cbot\float;\n;
+Prędkość prawego silnika; wartości w zakresie od -1 do 1.
+
+Przykłady :
+\c;motor(1, 1);\n; ruch do przodu z maksymalną prędkością.
+\c;motor(-0.5, -0.5);\n; ruch do tyłu z połową prędkości.
+\c;motor(1, -1);\n; obrót w prawo z maksymalną prędkością.
+
+Uwaga:
+\c;motor(2, 2);\n; nie będzie poruszało robotem do przodu szybciej niż \c;motor(1, 1)\n;
+\c;motor(-2, -2);\n; nie będzie poruszało robotem do tyłu szybciej niż \c;motor(-1, -1)\n;
+
+\t;Typ wyniku: \c;\l;void\u cbot\void;\n;
+Brak.
+
+\t;Zobacz również
+\l;Instrukcje\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/new.txt b/help/P/cbot/new.txt
new file mode 100644
index 00000000..d0d57d55
--- /dev/null
+++ b/help/P/cbot/new.txt
@@ -0,0 +1,21 @@
+\b;Instrukcja \c;new\n; (dla specjalistów)
+Operator \c;new\n; tworzy nowÄ… instancjÄ™ \l;klasy\u cbot\class;:
+\c;\s; MojaKlasa element; // jest teraz wskaźnikiem null
+\s; element = new MojaKlasa(); // jest teraz wskaźnikiem
+\s; // do nowej instancji klasy
+\n;
+W przypadku tworzenia nowej instancji podczas deklaracji, można ominąć operator \c;new\n;, dodając () na końcu deklaracji:
+
+Zamiast:
+\c;\s; MojaKlasa element = new MojaKlasa();
+\n;można napisać:
+\c;\s; MojaKlasa element();
+\n;
+Jeśli klasa ma konstruktor z parametrami, można napisać:
+\c;\s; MojaKlasa element = new MojaKlasa(2, 3);
+\n;lub:
+\c;\s; MojaKlasa element(2, 3);
+\n;
+\t;Zobacz również
+\c;\l;klasa\u cbot\class;\n;, \c;\l;wskaźnik\u cbot\pointer;\n;
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/open.txt b/help/P/cbot/open.txt
new file mode 100644
index 00000000..b936737a
--- /dev/null
+++ b/help/P/cbot/open.txt
@@ -0,0 +1,20 @@
+\b;Instrukcja \c;open\n;
+Otwiera plik tekstowy w folderze files/. Jest to metoda klasy \c;\l;file\u cbot\file;\n;, dlatego zawsze należy używać konstrukcji \c;handle.open()\n;¦:
+\c;
+\s; handle.open("test.txt", "w");
+\n;
+Aby otworzyć plik, należy postępować następująco¦:
+\c;
+\s; file handle();
+\s; handle.open("nazwapliku", "w");
+\s; handle.writeln("abc");
+\s; handle.close();
+\n;
+\c;"r"\n; tryb: otwarty do odczytu.
+\c;"w"\n; tryb: otwarty do zapisu.
+
+Pliki mogą być tworzone tylko w folderze files/ znajdującym się w folderze, w którym została zainstalowana gra Colobot. Nie jest możliwe tworzenie ani otwieranie plików znajdujących się w innych folderach.
+
+\t;Zobacz również
+\c;\l;file\u cbot\file;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n;, \c;\l;writeln\u cbot\writeln;\n; i \c;\l;eof\u cbot\eof;\n;.
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/openfile.txt b/help/P/cbot/openfile.txt
new file mode 100644
index 00000000..90fd10bb
--- /dev/null
+++ b/help/P/cbot/openfile.txt
@@ -0,0 +1,11 @@
+\b;Instrukcja \c;openfile\n;
+Instrukcja \c;openfile();\n; otwiera plik tekstowy w folderze files/. Nie jest to metoda klasy \c;\l;file\u cbot\file;\n; ale zwraca ona \l;wskaźnik\u cbot\pointer; do nowej instancji klasy file. Należy określić dwa parametry, nazwę pliku i tryb otwarcia.
+\c;
+\s;file handle = openfile("nazwapliku", "r");
+\n;
+\c;"r"\n; tryb: otwarty do odczytu.
+\c;"w"\n; tryb: otwarty do zapisu.
+
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/pointer.txt b/help/P/cbot/pointer.txt
new file mode 100644
index 00000000..89788d3b
--- /dev/null
+++ b/help/P/cbot/pointer.txt
@@ -0,0 +1,53 @@
+\b;Wskaźniki (dla specjalistów)
+CBOT używa odwołań do \l;klas\u cbot\class; i \l;tablic\u cbot\array;. Każda zmienna w rzeczywistości zawiera odwołanie do instancji. Instancja natomiast zawiera pola klasy. Wiele wskaźników może odwoływać się do tej samej instancji. Wskaźnik \c;\l;null\u cbot\null;\n; nie odwołuje się do niczego. Instancję można porównać do teczki, a wskaźnik do trzymającego. Za każdym razem gdy potrzebujemy nowej teczki, tworzymy nową instancję z trzymającym. Ale teczka może być trzymana przez więcej niż jedną osobę. Osoba nie trzymająca żadnej teczki to wskaźnik na \c;\l;null\u cbot\null;\n;.
+
+Przykład:
+\c;\s;{
+\s; MojaKlasa item1();// utwórz nową instancję
+\s; // wskazywanÄ… przez item1
+\s; MojaKlasa item2; // utwórz wskaźnik null
+\s; item2 = item1; // skopiuj wskaźnik,
+\s; // item2 i item1 wskazujÄ…
+\s; // teraz tÄ™ samÄ… instancjÄ™
+\s; item1.a = 12; // zmodyfikuj instancjÄ™
+\s; // wskazywanÄ… przez item1 (i item2)
+\s; message(item2.a); // wyświetla liczbę 12
+\s;}
+\n;
+W przypadku przekazania instancji \l;klasy\u cbot\class; jako parametru funkcji, funkcja otrzymuje wskaźnik do tej instancji. Oznacza to, że w przypadku modyfikacji instancji wewnątrz funkcji, zostanie zmodyfikowana instancja podana przy wywołaniu funkcji jako parametr.
+
+\c;\s;void Test( MojaKlasa item )
+\s;{
+\s; item.a = 12; // zmodyfikuj oryginalnÄ… instancjÄ™
+\s; item = new MojaKlasa(); // nowa instancja lokalna
+\s; item.a = 33; // zmodyfikuj instancjÄ™ lokalnÄ…
+\s;}
+\n;
+Wywołanie funkcji \c;Test()\n;¦:
+\c;\s;{
+\s; MojaKlasa toto();
+\s; Test(toto);
+\s; message(toto.a); // wyświetla 12
+\s;}
+\n;
+Instancja zawierająca pole \c;a = 33\n; jest wskazywana tylko przez nowoutworzoną instancję \c;item\n; wewnątrz funkcji \c;Test\n;. Na końcu funkcji \c;Test\n; ta instancja wskazywana przez \c;item\n; jest automatycznie usuwana.
+
+Funkcja może zwrócić instancję¦:
+\c;\s;MojaKlasa Test2( )
+\s;{
+\s; MojaKlasa item = new MojaKlasa();
+\s; item.x = 33;
+\s; return item;
+\s;}
+\n;
+W taki sposób należy wywoływać funkcję:
+\c;\s;{
+\s; MojaKlasa toto;
+\s; toto = Test2(); // toto będzie zawierać wskaźnik do
+\s; // instancji utworzonej przez Test2()
+\s; message(toto.a); // wyświetla 33
+\s;}
+\n;
+\t;Zobacz również
+\c;\l;class\u cbot\class;\n;, \c;\l;new\u cbot\new;\n;
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/private.txt b/help/P/cbot/private.txt
new file mode 100644
index 00000000..eea8b897
--- /dev/null
+++ b/help/P/cbot/private.txt
@@ -0,0 +1,19 @@
+\b;Instrukcja \c;private\n; (dla specjalistów)
+Elementy \l;klasy\u cbot\class; mogą być \l;publiczne\u cbot\public; (domyślnie) lub prywatne. Aby zadeklarować element jako prywatny, należy umieścić instrukcję \c;private\n; przed deklaracją jego typu. Elementy prywatne nie są widoczne poza definicją klasy.
+\c;
+\s;public class MojaKlasa
+\s;{
+\s; int b; // publiczna domyślnie
+\s; public int a; // również publiczna
+\s; private point position; // prywatna
+\s;}
+\s;void Test()
+\s;{
+\s; MojaKlasa item;
+\s; item.a = item.b = 12; // ok
+\s; message( item.position ); // powoduje błąd
+\s;}
+\n;
+\t;Zobacz również
+\c;\l;class\u cbot\class;\n;, \c;\l;public\u cbot\public;\n;
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/public.txt b/help/P/cbot/public.txt
new file mode 100644
index 00000000..2fd5b182
--- /dev/null
+++ b/help/P/cbot/public.txt
@@ -0,0 +1,51 @@
+\b;Instrukcja \c;public\n; (dla specjalistów)
+Instrukcja ta ma dwa podstawowe zadania¦:
+
+1) Czyni funkcję dostępną dla innych robotów.
+2) Sprawia, że element klasy jest widoczny poza definicją klasy.
+
+\b;Instrukcja \c;public\n; dla funkcji
+Umieszczenie instrukcji \c;public\n; przed definicją \l;funkcji\u cbot\function; sprawi, że funkcja będzie dostępna dla innych robotów podczas tej misji.
+
+Na przykład pierwszy robot może zawierać¦:
+\c;
+\s;public void object::Segment(float odl, float kÄ…t)
+\s;{
+\s; move(odl);
+\s; turn(kÄ…t);
+\s;}
+\n;
+A inny¦:
+\c;
+\s;extern void object::Kwadrat( )
+\s;{
+\s; for ( int i=0 ; i<4 ; i++ )
+\s; {
+\s; Segment(10, 90);
+\s; fire(1);
+\s; }
+\s;}
+\n;
+Jeśli funkcję zadeklarowano jako \c;public\n;, nie można zadeklarować funkcji o tej samej nazwie i parametrach w innym robocie podczas tej samej misji.
+
+Jeśli robot zawierający funkcję zadeklarowaną jako \c;public\n; zostanie zniszczony, inne roboty używające tej funkcji zatrzymają się sygnalizując wystąpienie błędu.
+
+\b;Instrukcja \c;public\n; dla klas
+Elementy \l;klasy\u cbot\class; mogą być publiczne (domyślnie) lub \l;prywatne\u cbot\private;. Aby zadeklarować element jako prywatny, należy umieścić instrukcję \c;private\n; przed deklaracją jego typu. Elementy prywatne nie są dostępne poza definicją klasy.
+\c;
+\s;public class MojaKlasa
+\s;{
+\s; int b; // publiczna domyślnie
+\s; public int a; // również publiczna
+\s; private point position; // prywatna
+\s;}
+\s;void Test()
+\s;{
+\s; MojaKlasa item;
+\s; item.a = item.b = 12; // ok
+\s; message( item.position ); // powoduje błąd
+\s;}
+\n;
+\t;Zobacz również
+\c;\l;class\u cbot\class;\n;, \c;\l;private\u cbot\private;\n;, \c;\l;funkcje\u cbot\function;\n;
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/readln.txt b/help/P/cbot/readln.txt
new file mode 100644
index 00000000..60cb4c60
--- /dev/null
+++ b/help/P/cbot/readln.txt
@@ -0,0 +1,20 @@
+\b;Instrukcja \c;readln\n;
+Wczytuje jedną linię z otwartego pliku w folderze files/. Jest to metoda klasy \c;\l;file\u cbot\file;\n;, dlatego też zawsze należy używać konstrukcji \c;handle.readln()\n;¦:
+\c;
+\s; s = handle.readln();
+\n;
+Plik musi być otwarty do odczytu (\c;"r"\n;) przy użyciu instrukcji \c;\l;open\u cbot\open;\n;. Metoda \c;readln\n; zwraca cały wiersz ale bez znaków końca linii 0x0D (CR) i 0x0A (LF)
+
+Składnia¦:
+\s;\c;string = handle.readln ( );\n;
+
+Przykład¦:
+\c;
+\s; string s;
+\s; s = handle.readln();
+\s; if ( s == "abc" )
+\s; ...
+\n;
+\t;Zobacz również
+\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;writeln\u cbot\writeln;\n; i \c;\l;eof\u cbot\eof;\n;.
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/send.txt b/help/P/cbot/send.txt
new file mode 100644
index 00000000..e53dc19c
--- /dev/null
+++ b/help/P/cbot/send.txt
@@ -0,0 +1,19 @@
+\b;Instrukcja \c;send\n;
+Składnia¦:
+\s;\c;send ( nazwa, wartość, moc );\n;
+
+Wysyła informację do najbliższej \l;stacji przekaźnikowej\u object\exchange;.
+
+\t;nazwa: \c;string\n;
+Nazwa informacji wysyłanej do stacji przekaźnikowej. Jest to łańcuch, który powinien być zapisany w cudzysłowach "¦".
+Jeśli nie ma informacji o podanej nazwie, tworzony jest nowy wpis, o ile ich liczba nie przekroczy 10. Jeśli istnieje już informacja o podanej nazwie, zastępowana jest ona nową wartością.
+
+\t;wartość: \c;float\n;
+Wartość informacji do wysłania.
+
+\t;moc: \c;float\n;
+Moc transmitera, odpowiadająca maksymalnej odległości gdzie ma być przesłana informacja. Domyślna wartość to 10 metrów.
+
+\t;Zobacz również
+\c;\l;receive\u cbot\receive;\n;, \c;\l;testinfo\u cbot\testinfo;\n; i \c;\l;deleteinfo\u cbot\delinfo;\n;.
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/sizeof.txt b/help/P/cbot/sizeof.txt
new file mode 100644
index 00000000..127ef02b
--- /dev/null
+++ b/help/P/cbot/sizeof.txt
@@ -0,0 +1,22 @@
+\b;Instrukcja \c;sizeof\n;
+Funkcja sizeof pozwala poznać ilość elementów zawartych w \l;tablicy\u cbot\array;.
+Jest to indeks ostatniego elementu plus jeden (liczone są również "puste" elementy).
+\c;
+\s;{
+\s; int a[12];
+\s; a[5] = 345;
+\s; message( sizeof(a) ); // wyświetli liczbę 6
+\s;}
+\n;
+W tym przykładzie po operacji \c;a[5]=345\n; tablica ma 6 elementów. Liczone są również następujące niezainicjalizowane elementy: \c;[0]\n;, \c;[1]\n;, \c;[2]\n;, \c;[3]\n; i \c;[4]\n;.
+
+W przypadku tablicy wielowymiarowej można otrzymać rozmiar podtablicy:
+\c;
+\s;float xy[][]; // tablica dwuwymiarowa
+\s;xy[5][10] = 67;
+\s;message( sizeof(xy) ); // wyświetli liczbę 6
+\s;message( sizeof(xy[5]) ); // wyświetli liczbę 11
+\s;
+\n;
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/space.txt b/help/P/cbot/space.txt
new file mode 100644
index 00000000..b1c13dfd
--- /dev/null
+++ b/help/P/cbot/space.txt
@@ -0,0 +1,23 @@
+\b;Instrukcja \c;space\n;
+Składnia:
+\s;\c;space ( środek, rmin, rmaks, odl );\n;
+
+Określa pozycję najbliższego wolnego miejsca w pobliżu podanej pozycji.
+
+\t;środek: \c;\l;point\u cbot\point;\n; (domyślnie: pozycja robota)
+Preferowana pozycja wolnego miejsca.
+
+\t;rmin: \c;\l;float\u cbot\float;\n; (domyślna wartość: \c;8\n;)
+Minimalna odległość od żądanej pozycji.
+
+\t;rmaks: \c;\l;float\u cbot\float;\n; (domyślna wartość: \c;50\n;)
+Maksymalna odległość od żądanej pozycji.
+
+\t;odl: \c;\l;float\u cbot\float;\n; (domyślna wartość: \c;4\n;)
+Wymagana odległość między dwoma wolnymi miejscami.
+
+\t;Wynik: \c;\l;point\u cbot\point;\n;
+Pozycja wolnego miejsca.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/static.txt b/help/P/cbot/static.txt
new file mode 100644
index 00000000..17372b8d
--- /dev/null
+++ b/help/P/cbot/static.txt
@@ -0,0 +1,22 @@
+\b;Instrukcja \c;static\n; (dla specjalistów)
+Elementy \l;klasy\u cbot\class; zadeklarowane jako \c;static\n; są współdzielone przez wszystkie instancje klasy.
+\c;
+\s;public class MojaKlasa
+\s;{
+\s; static int nb = 1;
+\s; static string [ ] list = null;
+\s;}
+\s;void Test ()
+\s;{
+\s; MojaKlasa item1();
+\s; MojaKlasa item2();
+\s; item1.nb = 3;
+\s; item1.list[item1.nb] = "Cześć";
+\s; message( item2.list[item2.nb] ); // wyświetla komunikat "Cześć"
+\s;}
+\n;
+Elementy \c;static\n; mogą być zadeklarowane jako \c;\l;private\u cbot\private;\n;, co spowoduje, że będą dostępne tylko dla elementów klasy (włączając konstruktory i destruktory).
+
+\t;Zobacz również
+\c;\l;class\u cbot\class;\n;, \c;\l;synchronized\u cbot\synchro;\n;
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/strfind.txt b/help/P/cbot/strfind.txt
new file mode 100644
index 00000000..2998a549
--- /dev/null
+++ b/help/P/cbot/strfind.txt
@@ -0,0 +1,20 @@
+\b;Instrukcja \c;strfind\n;
+Znajduje podciąg w łańcuchu i zwraca pozycję pierwszego znalezionego podciągu lub wartość \l;nan\u cbot\nan; jeśli podciągu nie znaleziono.
+
+Składnia¦:
+\s;\c;strfind ( łańcuch, sub );\n;
+
+\t;łańcuch: \c;\l;string\u cbot\string;\n;
+Przeszukiwany łańcuch.
+
+\t;sub: \c;\l;string\u cbot\string;\n;
+Podciąg, który ma zostać znaleziony.
+
+Przykłady¦:
+\s;\c; int pos = strfind("abcdef", "ab"); // pos równe 0
+\s; int pos = strfind("abcdef", "de"); // pos równe 3
+\s; int pos = strfind("abcdef", "xy"); // pos równe \l;nan\u cbot\nan;
+\n;
+\t;Zobacz również
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/strleft.txt b/help/P/cbot/strleft.txt
new file mode 100644
index 00000000..67657d7c
--- /dev/null
+++ b/help/P/cbot/strleft.txt
@@ -0,0 +1,16 @@
+\b;Instrukcja \c;strleft\n;
+Wyodrębnia początkowe (najbardziej na lewo) znaki z łańcucha.
+
+Składnia¦:
+\s;\c;strleft ( łańcuch, długość );\n;
+
+\t;długość: \c;\l;int\u cbot\int;\n;
+Liczba znaków do wyodrębnienia.
+
+Przykłady¦:
+\s;\c; string s = strleft("abcdef", 2); // s równe "ab"
+\s; string s = strleft("abc", 10); // s równe "abc"
+\n;
+\t;Zobacz również
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/strlen.txt b/help/P/cbot/strlen.txt
new file mode 100644
index 00000000..552a7314
--- /dev/null
+++ b/help/P/cbot/strlen.txt
@@ -0,0 +1,14 @@
+\b;Instrukcja \c;strlen\n;
+Podaje długość łańcucha.
+
+Składnia¦:
+\s;\c;strlen ( łańcuch );\n;
+
+Przykłady¦:
+\s;\c; int len = strlen("abc"); // len równe 3
+\s; int len = strlen(""); // len równe 0
+\s; if ( strlen(s) == 0 ) // czy łańcuch pusty?
+\n;
+\t;Zobacz również
+\c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/strlower.txt b/help/P/cbot/strlower.txt
new file mode 100644
index 00000000..195d0658
--- /dev/null
+++ b/help/P/cbot/strlower.txt
@@ -0,0 +1,12 @@
+\b;Instrukcja \c;strlower\n;
+Zamienia wszystkie znaki łańcucha na małe litery.
+
+Składnia¦:
+\s;\c;strlower ( łańcuch );\n;
+
+Przykłady¦:
+\s;\c; string s = strlower("Abc"); // s jest równe "abc"
+\n;
+\t;Zobacz również
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/strmid.txt b/help/P/cbot/strmid.txt
new file mode 100644
index 00000000..827bab49
--- /dev/null
+++ b/help/P/cbot/strmid.txt
@@ -0,0 +1,20 @@
+\b;Instrukcja \c;strmid\n;
+Wyodrębnia z łańcucha podłańcuch o określonej długości i określonej pozycji początkowej.
+
+Składnia¦:
+\s;\c;strmid ( łańcuch, pozycja, długość );\n;
+
+\t;pozycja: \c;\l;int\u cbot\int;\n;
+Indeks pierwszego znaku, który powinien wystąpić w wyodrębnionym podłańcuchu.
+
+\t;długość: \c;\l;int\u cbot\int;\n;
+Liczba znaków do wyodrębnienia.
+
+Przykłady¦:
+\s;\c; string s = strmid("abcdef", 1, 2); // s równe "bc"
+\s; string s = strmid("abcdef", 4, 5); // s równe "ef"
+\s; string s = strmid("abcdef", 9, 2); // s równe ""
+\n;
+\t;Zobacz również
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/strright.txt b/help/P/cbot/strright.txt
new file mode 100644
index 00000000..a0604b6d
--- /dev/null
+++ b/help/P/cbot/strright.txt
@@ -0,0 +1,16 @@
+\b;Instrukcja \c;strright\n;
+Wyodrębnia końcowe (najbardziej na prawo) znaki z łańcucha.
+
+Składnia¦:
+\s;\c;strright ( łańcuch, długość );\n;
+
+\t;długość: \c;\l;int\u cbot\int;\n;
+Liczba znaków do wyodrębnienia.
+
+Przykłady¦:
+\s;\c; string s = strright("abcdef", 2); // s równe "ef"
+\s; string s = strright("abc", 10); // s równe "abc"
+\n;
+\t;Zobacz również
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/strupper.txt b/help/P/cbot/strupper.txt
new file mode 100644
index 00000000..5c60bc39
--- /dev/null
+++ b/help/P/cbot/strupper.txt
@@ -0,0 +1,12 @@
+\b;Instrukcja \c;strupper\n;
+Zamienia wszystkie znaki łańcucha na wielkie litery.
+
+Składnia¦:
+\s;\c;strupper ( łańcuch );\n;
+
+Przykłady¦:
+\s;\c; string s = strupper("Abc"); // s jest równe "ABC"
+\n;
+\t;Zobacz również
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/strval.txt b/help/P/cbot/strval.txt
new file mode 100644
index 00000000..07dd44ae
--- /dev/null
+++ b/help/P/cbot/strval.txt
@@ -0,0 +1,19 @@
+\b;Instrukcja \c;strval\n;
+Zamienia łańcuch na liczbę. Nie należy mylić łańcucha \c;"45"\n;, zawierającego dwa znaki \c;4\n; i \c;5\n; oraz liczby \c;45\n;.
+
+Przykłady¦:
+\s;\c; string s = "45"+"12"; // s zawiera "4512"
+\s; float n = 45 + 12; // n zawiera 67
+\n;
+Składnia¦:
+\s;\c;strval ( łańcuch );\n;
+\n;
+Przykłady¦:
+\s;\c; float n = strval("1.23"); // n równe 1,23
+\s; float n = strval("12abc45"); // n równe 12
+\s; float n = strval("abc"); // n równe 0
+\s; float n = strval("100")+2; // n równe 102
+\n;
+\t;Zobacz również
+\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/synchro.txt b/help/P/cbot/synchro.txt
new file mode 100644
index 00000000..3f967913
--- /dev/null
+++ b/help/P/cbot/synchro.txt
@@ -0,0 +1,25 @@
+\b;Instrukcja \c;synchronized\n; (dla specjalistów)
+Metoda \l;klasy\u cbot\class; może być zadeklarowana jako \c;synchronized\n;. Dzięki temu można zapewnić, że metoda będzie uruchamiana nie więcej niż przez jednego robota w tym samym czasie.
+
+Następujący przykład pomoże zilustrować problem:
+\c;
+\s;class blokowanie
+\s;{
+\s; static int nb = 33;
+\s; synchronized int inc( )
+\s; {
+\s; int val = nb;
+\s; wait ( 2 ); // czekaj 2 sekundy
+\s; nb = nb + 1;
+\s; return val;
+\s; }
+\s;}
+\n;
+Co się dzieje, gdy dwa roboty wykonają metodę \c;inc\n; w tym samym czasie¦?
+Oba wykonają polecenie \c;val=nb\n; i poczekają 2 sekundy, a więc oba otrzymają \c;val=33\n;. Gdy użyjemy instrukcji \c;synchronized\n; pierwszy robot rozpocznie wykonywanie z \c;val=33\n; poczeka 2 sekundy i wyjdzie z metody. Dopiero po zakończeniu wykonywania metody \c;inc\n; przez pierwszego robota, drugi robot będzie miał możliwość wykonania metody \c;inc\n;, wobec czego otrzyma on zawsze \c;val=34\n;.
+
+Można mieć więcej niż jedną zsynchronizowaną metodę w \l;klasie\u cbot\class; w celu zapobieżenia równoczesnemu wykonywaniu więcej niż jednej metody. Innymi słowy: tak długo, jak długo robot jest wewnątrz zsynchronizowanej metody, żaden inny robot nie może wykonywać żadnej zsynchronizowanej metody tej samej klasy.
+
+\t;Zobacz również
+\c;\l;klasa\u cbot\class;\n;, \c;\l;static\u cbot\static;\n;
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/testinfo.txt b/help/P/cbot/testinfo.txt
new file mode 100644
index 00000000..aa160ddd
--- /dev/null
+++ b/help/P/cbot/testinfo.txt
@@ -0,0 +1,18 @@
+\b;Instrukcja \c;testinfo\n;
+Składnia¦:
+\s;\c;testinfo ( nazwa, moc );\n;
+
+Sprawdza czy istnieje żądana informacja w najbliższej \l;stacji przekaźnikowej\u object\exchange;.
+
+\t;nazwa: \c;string\n;
+Nazwa informacji do sprawdzenia. Jest ona łańcuchem i powinna być zapisana w cudzysłowach "¦".
+
+\t;moc: \c;float\n;
+Moc transmitera, odpowiadająca maksymalnej odległości pomiędzy transmiterem i stacją przekaźnikową. Jeśli odległość jest większa, funkcja zwraca wartość \c;false\n;. Domyślna wartość to 10 metrów.
+
+\t;Typ wyniku: \c;\l;bool\u cbot\bool;\n;
+Daje w wyniku \c;true\n; jesli informacja istnieje, oraz \c;false\n; jeśli informacja nie istnieje lub odbiorca jest za daleko od stacji przekaźnikowej.
+
+\t;Zobacz również
+\c;\l;receive\u cbot\receive;\n;, \c;\l;send\u cbot\send;\n; i \c;\l;deleteinfo\u cbot\delinfo;\n;.
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/this.txt b/help/P/cbot/this.txt
new file mode 100644
index 00000000..754e92ed
--- /dev/null
+++ b/help/P/cbot/this.txt
@@ -0,0 +1,54 @@
+\b;Instrukcja \c;this\n;
+Czasami metoda \l;klasy\u cbot\class; potrzebuje wskaźnika do instancji, w której działa. Na przykład instancja może chcieć przekazać wskaźnik do samej siebie jako parametr dla innej funkcji. Odwołanie wprost poprzez \c;this\n; jest dostępne również dla metod; \c;this\n; jest odwołaniem do bieżącej instancji.
+\c;
+\s;public class MojaKlasa
+\s;{
+\s; int m_int;
+\s; string m_str;
+\s; void MojaFunkcja()
+\s; {
+\s; InnaFunkcja(this);
+\s; m_int = 2;
+\s; }
+\s;}
+\s;
+\s;void InnaFunkcja(MojaKlasa obj)
+\s;{
+\s; message(obj.m_str);
+\s;}
+\s;
+\s;extern void object::Test()
+\s;{
+\s; MojaKlasa item();
+\s; item.m_str = "Cześć";
+\s; item.MojaFunkcja(); // wyświetla "Cześć"
+\s;}
+\n;
+Można również umieścić \c;this\n; przed nazwą pola w metodzie, ale nie jest to konieczne. W powyższym przykładzie metody \c;MojaFunkcja()\n; następujące dwie linie mają identyczne znaczenie:
+\c;
+\s; m_int = 2;
+\s; this.m_int = 2; // identyczne
+\n;
+Również w metodzie klasy \c;\l;object\u cbot\object;\n; można użyć \c;this.\n; przed nazwą pola.
+\c;
+\s;extern void object::Display()
+\s;{
+\s; message(orientation);
+\s; message(this.orientation); // to samo ale
+\s; // bardziej jednoznacznie
+\s;}
+\n;
+Jednakże jeśli nazwa pola jest ukryta poprzez deklarację parametru lub zmiennej, należy użyć \c;this\n;. W następującym przykładzie nazwa parametru \c;value\n; jest taka sama jak nazwa pola \c;value\n; w \l;klasie\u cbot\class; \c;MojaKlasa\n;, wobec tego w celu rozróżnienia pola od parametru, konieczne jest napisanie \c;this.value\n;.
+\c;
+\s;public class MojaKlasa
+\s;{
+\s; int value;
+\s; void Put( int value )
+\s; {
+\s; this.value = value;
+\s; }
+\s;}
+\n;
+\t;Zobacz również
+\c;\l;class\u cbot\class;\n;
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/while.txt b/help/P/cbot/while.txt
new file mode 100644
index 00000000..4d9704d1
--- /dev/null
+++ b/help/P/cbot/while.txt
@@ -0,0 +1,47 @@
+\b;Instrukcja \c;while\n;
+Instrukcja \c;while () {}\n; jest używana do wielokrotnego powtarzania zbioru instrukcji.
+
+\b;Podstawowe użycie
+Najczęstsze użycie instrukcji \c;while\n; polega na nieskończonym powtarzaniu zbioru instrukcji. Aby to osiągnąć, należy napisać \c;while (true) {}\n;, a instrukcje, które mają być powtarzane zapisać w nawiasach klamrowych \c;{}\n;. Oto przykładowy program powtarzający w nieskończoność następujące czynności:
+o znajdź pająka,
+o obróć się w jego stronę,
+o strzelaj.
+\c;
+\s; while (true)
+\s; {
+\s; item = \l;radar\u cbot\radar;(AlienSpider);
+\s; \l;turn\u cbot\turn;(direction(item.position));
+\s; \l;fire\u cbot\fire;(1);
+\s; }
+\n;
+Wystarczy raz uruchomić ten program, a zabije on wszystkie pająki dookoła robota.
+
+\b;Dla specjalistów
+Składnia:
+\s;\c;while ( warunek )
+\s;{
+\s; \n;Instrukcje ...\c;
+\s;}
+\n;
+Instrukcja ta pozwala na wielokrotne powtarzanie instrukcji wewnÄ…trz \l;bloku\u cbot\bloc;.
+
+Nie należy mylić instrukcji \c;while( ) { }\n; z instrukcją \c;\l;do\u cbot\do; { } while( );\n;; ta druga sprawdza warunek dopiero po pierwszym wykonaniu instrukcji w bloku.
+
+\t;\c;warunek\n;
+Instrukcje w bloku są wykonywane tak długo, jak długo prawdziwy jest \l;warunek\u cbot\cond;.
+
+Oto przykład:
+\s;\c;int i = 0;
+\s;while ( i < 10 )
+\s;{
+\s; \n;Instrukcje...\c;
+\s; i = i+1;
+\s;}
+\n;
+\t;Uwaga
+Na końcu instrukcji \c;while ( )\n; nie należy umieszczać \l;średnika\u cbot\term;.
+
+Instrukcje \c;\l;break\u cbot\break;\n; i \c;\l;continue\u cbot\continue;\n; mogą być przydatne wewnątrz bloku instrukcji \c;while ( )\n;.
+
+\t;Zobacz również
+\l;Instrukcje\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/cbot/writeln.txt b/help/P/cbot/writeln.txt
new file mode 100644
index 00000000..c33c0ed7
--- /dev/null
+++ b/help/P/cbot/writeln.txt
@@ -0,0 +1,21 @@
+\b;Instrukcja \c;writeln\n;
+Zapisuje linię tekstu do otwartego pliku w folderze files/. Jest to metoda klasy \c;\l;file\u cbot\file;\n;, dlatego też zawsze należy używać konstrukcji \c;handle.writeln()\n;¦:
+\c;
+\s; handle.writeln("abc");
+\n;
+Plik musi być otwarty do zapisu (\c;"w"\n;) przy użyciu instrukcji \c;\l;open\u cbot\open;\n;. Zapisywany wiersz zostanie automatycznie zakończony znakami końca linii 0x0D (CR) i 0x0A (LF).
+
+Składnia¦:
+\s;\c;handle.writeln ( string );\n;
+
+Przykłady¦:
+\c;
+\s; writeln("Linia tekstu");
+
+\s; string s1 = "abc";
+\s; string s2 = "def";
+\s; writeln(s1 + " " + s2);
+\n;
+\t;Zobacz również
+\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n; i \c;\l;eof\u cbot\eof;\n;.
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/dexch1.txt b/help/P/dexch1.txt
new file mode 100644
index 00000000..34405d59
--- /dev/null
+++ b/help/P/dexch1.txt
@@ -0,0 +1,19 @@
+\b;Ćwiczenie
+Wzdłuż drogi stoi kilka \l;stacji przekaźnikowych informacji\u object\exchange;. Gdy robot jest wystarczająco blisko stacji, może odczytać przechowywane w niej informacje. \l;Stacje przekaźnikowe\u object\exchange; wzdłuż drogi zawierają kierunek i odległość do następnej stacji. Nie jest znana liczba stacji przekaźnikowych, wymaganych do dotarcia do celu.
+
+\b;Ogólny algorytm
+ Zawsze powtarzaj:
+ o Pobierz kierunek ze \l;stacji przekaźnikowej\u object\exchange;.
+ o Pobierz odległość ze \l;stacji przekaźnikowej\u object\exchange;.
+ o Jeśli nie ma żadnych informacji, zatrzymaj program.
+ o Wykonaj obrót.
+ o Idź do następnej stacji.
+
+\b;Przydatne instrukcje
+\c;\l;while\u cbot\while;\n; powtarzanie instrukcji
+\c;\l;receive\u cbot\receive;\n; pobieranie informacji ze stacji
+\c;\l;move\u cbot\move;\n; poruszanie robotem
+\c;\l;turn\u cbot\turn;\n; obracanie robota
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/dfollow1.txt b/help/P/dfollow1.txt
new file mode 100644
index 00000000..68bb94e2
--- /dev/null
+++ b/help/P/dfollow1.txt
@@ -0,0 +1,20 @@
+\b;Ćwiczenie
+Należy podążać za \l;robotem celem\u object\bottr; z urządzeniem wybuchowym; należy być ostrożnym, gdyż zderzenie z nim grozi wybuchem. Podczas każdego zatrzymania robota celu należy być odpowiednio blisko (mniej niż 10 metrów). Gdy uda się być w pobliżu robota 10 razy z rzędu, ćwiczenie zakończy się, wraz z jego dotarciem na platformę końcową. Przy każdym zatrzymaniu robot cel sprawdza, czy śledzący go robot jest odpowiednio blisko. Jeśli nie, liczenie zaczyna się od początku.
+
+\b;Ogólny algorytm
+Powtarzaj w nieskończoność:
+o Znajdź robot cel.
+o Oblicz odległość do robota.
+o Jeśli odległość jest mniejsza niż 5 m, cofnij się.
+o W przeciwnym przypadku oblicz kierunek do robota celu i idź w jego kierunku.
+
+\b;Przydatne instrukcje
+\c;\l;radar\u cbot\radar;\n; znajdowanie robota (kategoria \c;\l;TargetBot\u object\bottarg;\n;)
+\c;\l;radar\u cbot\radar;\n; wykrywanie przeszkód
+\c;\l;distance\u cbot\dist;\n; obliczanie odległości
+\c;\l;direction\u cbot\direct;\n; obliczanie kierunku
+\c;\l;if\u cbot\if;\n; sprawdzanie warunku
+\c;\l;motor\u cbot\motor;\n; ustawianie prędkości silników
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/dfor.txt b/help/P/dfor.txt
new file mode 100644
index 00000000..aa1bf66c
--- /dev/null
+++ b/help/P/dfor.txt
@@ -0,0 +1,11 @@
+\b;Ćwiczenie
+Zniszcz wszystkie cztery \l;cele\u object\bottarg; używając programu z pętlą \c;for\n;. Odległość pomiędzy celami jest równa 10 metrów.
+
+\b;Przydatne instrukcje
+\c;\l;for\u cbot\for;\n; pętla powtarzająca instrukcje
+\c;\l;move\u cbot\move;\n; poruszanie robotem
+\c;\l;turn\u cbot\turn;\n; obracanie robota
+\c;\l;fire\u cbot\fire;\n; strzelanie z działa
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/dhelp1.txt b/help/P/dhelp1.txt
new file mode 100644
index 00000000..12de2b98
--- /dev/null
+++ b/help/P/dhelp1.txt
@@ -0,0 +1,15 @@
+\b;Ćwiczenie
+Obroń się przed wrogimi atakami
+
+\b;Ogólny pomysł
+Broń ma zasięg około 40 m. Kategoria wrogów to \c;AlienAnt\n;. Obróć się w stronę najbliższej mrówki, nawet jeśli jest dalej niż 40 m, ale strzelaj dopiero gdy znajdzie się w zasięgu, aby nie marnować energii.
+
+\b;Przydatne instrukcje
+\c;\l;radar\u cbot\radar;\n; wykrywanie wrogów (kategoria \c;\l;AlienAnt\u object\ant;\n;)
+\c;\l;direction\u cbot\direct;\n; obliczanie kierunku
+\c;\l;distance\u cbot\dist;\n; obliczanie odległości
+\c;\l;fire\u cbot\fire;\n; strzelanie z działa
+\c;\l;wait\u cbot\wait;\n; czekanie
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/dlaby1.txt b/help/P/dlaby1.txt
new file mode 100644
index 00000000..32ef6bf7
--- /dev/null
+++ b/help/P/dlaby1.txt
@@ -0,0 +1,11 @@
+\b;Ćwiczenie
+Zaprogramuj robota tak, aby znajdował wyjście z labiryntu bez uderzania o ściany. Zakładamy, że układ labiryntu nie jest znany, ale nie ma w nim zapętleń ani ślepych korytarzy. Labirynt składa się z kwadratów o boku 5 m każdy.
+
+\b;Przydatne instrukcje
+\c;\l;radar\u cbot\radar;\n; wykrywanie przeszkód
+\c;\l;if\u cbot\if;\n; sprawdzanie warunku
+\c;\l;move\u cbot\move;\n; poruszanie robotem
+\c;\l;turn\u cbot\turn;\n; obracanie robota
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/dmove1.txt b/help/P/dmove1.txt
new file mode 100644
index 00000000..7aa7aaba
--- /dev/null
+++ b/help/P/dmove1.txt
@@ -0,0 +1,10 @@
+\b;Ćwiczenie
+Zaprogramuj robota tak, aby dotarł na platformę końcową po przejściu przez trzy niebieskie plusy.
+Odległości pomiędzy platformami i plusami wynoszą po 20 metrów.
+
+\b;Przydatne instrukcje
+\c;\l;move\u cbot\move;\n; poruszanie robotem
+\c;\l;turn\u cbot\turn;\n; obracanie robota
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/dproc1.txt b/help/P/dproc1.txt
new file mode 100644
index 00000000..a35a43fb
--- /dev/null
+++ b/help/P/dproc1.txt
@@ -0,0 +1,20 @@
+\b;Ćwiczenie
+\l;Robot\u object\bottr; musi przejść przez wszystkie \l;niebieskie plusy\u object\waypoint; znajdujące się na ziemi. Jego droga składa się z dwóch kwadratów. Pierwszy ma 15, a drugi 25 metrów.
+
+\image tproc1a 8 8;
+\b;Ogólny algorytm
+Najbardziej efektywne rozwiązanie tego problemu polega na utworzeniu \l;funkcji\u cbot\function; polecającej robotowi poruszanie się po kwadracie o określonym rozmiarze. Znacznie upraszcza to główny program:\c;
+\c;
+\s; extern void object::Funkcja3( )
+\s; {
+\s; Kwadrat(15);
+\s; Kwadrat(25);
+\s; }
+\n;
+\b;Przydatne instrukcje
+\c;\l;for\u cbot\for;\n; pętla powtarzająca instrukcje
+\c;\l;move\u cbot\move;\n; poruszanie robotem
+\c;\l;turn\u cbot\turn;\n; obracanie robota
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/dproc2.txt b/help/P/dproc2.txt
new file mode 100644
index 00000000..4d6d0f00
--- /dev/null
+++ b/help/P/dproc2.txt
@@ -0,0 +1,14 @@
+\b;Ćwiczenie
+Idź drogą w kształcie spirali. Robot musi iść 2 razy po 25 m naprzód i skręcić, następnie 2 razy po 20 m i skręcić, itd.
+\image tproc2 8 8;
+
+\b;Funkcja
+Należy zauważyć, że droga składa się z pasujących do siebie "L"-kształtnych części. Pierwsza z nich (ciemno niebieska) ma długość dwa razy po 25 metrów. Druga (jasno niebieska) jest 5 metrów krótsza. Zacznijmy od napisania \l;funkcji\u cbot\function; poruszającej robotem po "L"-kształtnej części, której długość będzie podana jako parametr.
+
+\b;Przydatne instrukcje
+\c;\l;for\u cbot\for;\n; pętla powtarzająca instrukcje
+\c;\l;move\u cbot\move;\n; poruszanie robotem
+\c;\l;turn\u cbot\turn;\n; obracanie robota
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/dradar1.txt b/help/P/dradar1.txt
new file mode 100644
index 00000000..e3c69f1c
--- /dev/null
+++ b/help/P/dradar1.txt
@@ -0,0 +1,14 @@
+\b;Ćwiczenie
+W tym ćwiczeniu "szalony robot" zostawia za sobą wiele \l;niebieskich plusów\u object\waypoint;. Należy znaleźć je wszystkie.
+
+\b;Przydatne instrukcje
+\c;\l;radar\u cbot\radar;\n; wykrywanie niebieskich plusów (kategoria \c;\l;WayPoint\u object\waypoint;\n;)
+\c;\l;direction\u cbot\direct;\n; obliczanie kierunku
+\c;\l;if\u cbot\if;\n; sprawdzanie warunku
+\c;\l;motor\u cbot\motor;\n; ustawianie prędkości silników
+
+\t;Uwaga
+Nie należy zwlekać zbyt długo, gdyż szalony robot rozpoczyna swoją pracę natychmiast. Na szczęście gra jest zatrzymywana podczas edytowania kodu programu.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/dremova1.txt b/help/P/dremova1.txt
new file mode 100644
index 00000000..962e5979
--- /dev/null
+++ b/help/P/dremova1.txt
@@ -0,0 +1,35 @@
+\b;Ćwiczenie
+Przetop nieco \l;rudy tytanu\u object\titanore; na \l;kostki tytanu\u object\titan; i dostarcz dwie z nich na platformy o następujących współrzędnych:
+\c;
+ x=10, y=-60
+ x=10, y=-65
+\n;
+\image derrick 8 8;
+\l;Kopalnia\u object\derrick; wydobywa rudę tytanu z podglebia; później wystarczy ją podnieść.
+
+\image convert 8 8;
+\l;Huta\u object\convert; przetapia rudę tytanu na kostki tytanu. Wystarczy zostawić rudę tytanu na platformie, cofnąć się i chwilę poczekać.
+
+\b;Ogólny algorytm
+Powtórz dwa razy:
+o Poczekaj na pojawienie siÄ™ rudy tytanu.
+o Podejdź do rudy tytanu.
+o PodnieÅ› jÄ….
+o Podejdź do huty.
+o Zostaw rudÄ™ tytanu.
+o Cofnij siÄ™ o 2,5 metra.
+o Poczekaj na kostkÄ™ tytanu.
+o PodnieÅ› kostkÄ™ tytanu.
+o Wejdź na platformę.
+o Zostaw kostkÄ™ tytanu.
+
+\b;Przydatne instrukcje
+\c;\l;for\u cbot\for;\n; powtarzanie instrukcji
+\c;\l;do - while\u cbot\do;\n; powtarzanie instrukcji
+\c;\l;radar\u cbot\radar;\n; znajduje różne obiekty
+\c;\l;goto\u cbot\goto;\n; poruszanie robotem
+\c;\l;grab\u cbot\grab;\n; podnosi przedmiot
+\c;\l;drop\u cbot\drop;\n; upuszcza przedmiot
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/dremova2.txt b/help/P/dremova2.txt
new file mode 100644
index 00000000..3c2a31d6
--- /dev/null
+++ b/help/P/dremova2.txt
@@ -0,0 +1,11 @@
+\b;Ćwiczenie
+Dostarcz \l;kostkę tytanu\u object\titan; na platformę końcową. Pozycja tytanu nie jest znana, natomiast współrzędne platformy to x=10, y=-60.
+
+\b;Przydatne instrukcje
+\c;\l;radar\u cbot\radar;\n; znalezienie kostki tytanu (kategoria \c;\l;Titanium\u object\titan;\n;)
+\c;\l;goto\u cbot\goto;\n; poruszanie robotem
+\c;\l;grab\u cbot\grab;\n; podnosi przedmiot
+\c;\l;drop\u cbot\drop;\n; upuszcza przedmiot
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/dtrap1.txt b/help/P/dtrap1.txt
new file mode 100644
index 00000000..078a0566
--- /dev/null
+++ b/help/P/dtrap1.txt
@@ -0,0 +1,26 @@
+\b;Ćwiczenie
+Zaprogramuj \l;robota\u object\bottr; tak, aby znalazł wszystkie \l;niebieskie plusy\u object\waypoint;, nie zbliżając się przy tym zanadto do \l;min\u object\mine;. Plus znika gdy przejdzie przez niego robot. Oto ogólna zasada działania:
+
+ Powtarzaj w nieskończoność:
+ o Poszukaj miny
+ o Jeśli znaleziono minę, oblicz przeciwny kierunek
+ o Poszukaj plusa
+ o Jeśli nie znaleziono, zatrzymaj program
+ o Oblicz kierunek do plusa
+ o Oblicz średnią wartość tych dwóch kierunków
+ o Ustaw prędkości silników tak, aby robot kierował się na uśredniony kierunek
+
+\b;Instrukcja \c;radar\n;
+Do znajdowania min przy pomocy \c;\l;radaru\u cbot\radar;\n;, polecane są następujące parametry:
+\c;\s; radar(Mine, 0, 180, 0, 5);\n;
+Z kątem widzenia 180 stopni nie będą wykrywane miny znajdujące się za robotem. Również miny będące dalej niż 5 metrów będą ignorowane.
+
+Aby znaleźć niebieski plus, wystarczy napisać:
+\c;\s; radar(WayPoint);\n;
+Niebieskie plusy można znaleźć wszędzie.
+
+Do obliczania kierunku służy instrukcja \c;\l;direction\u cbot\direct;\n;.
+Do ustawiania prędkości silników służy instrukcja \c;\l;motor\u cbot\motor;\n;.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/dtrap2.txt b/help/P/dtrap2.txt
new file mode 100644
index 00000000..5051b3fa
--- /dev/null
+++ b/help/P/dtrap2.txt
@@ -0,0 +1,7 @@
+\b;Ćwiczenie
+Zaprogramuj \l;robota\u object\bottr; tak, aby znalazł wszystkie \l;niebieskie plusy\u object\waypoint;, nie zbliżając się przy tym zanadto do \l;min\u object\mine;.
+
+Jeśli robot zbliży się do miny na odległość mniejszą niż 2 metry od jej środka (czyli pozycji zwracanej przez instrukcję radar), mina wybuchnie. Ponadto należy wziąć pod uwagę wymiary samego robota. Dla większego bezpieczeństwa odpowiedniejsza będzie odległość 3 do 3,5 metra.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/fglobal.txt b/help/P/fglobal.txt
new file mode 100644
index 00000000..36577d28
--- /dev/null
+++ b/help/P/fglobal.txt
@@ -0,0 +1,5 @@
+\b;Zadanie
+W tej misji możesz grać bez określonego konkretnego celu. Możesz robić co chcesz, poznawać okolicę, budować bazę i roboty, wykonywać programy badawcze, zabijać ewentualnych wrogów, itp.
+
+\t;Zobacz również
+\l;Sterowanie\u command;.
diff --git a/help/P/licences.txt b/help/P/licences.txt
new file mode 100644
index 00000000..94fb2dd3
--- /dev/null
+++ b/help/P/licences.txt
@@ -0,0 +1,3 @@
+Fotografia mgławicy NGC3606 oświetlająca niebo Orfenii oraz programu instalacyjnego została zrobiona teleskopem kosmicznym Hubble. Została ona użyta za zgodą autorów, którymi są: Wolfgang Brandner (JPL/IPAC), Eva K. Grebel (Washington University), You-Hua Chu (Illinois Urbana-Champaign University) oraz NASA.
+
+Dźwięk grzmotu na Orfenii został użyty za ograniczoną zgodą firmy CREATIVE.
diff --git a/help/P/mhcent1.txt b/help/P/mhcent1.txt
new file mode 100644
index 00000000..fcbfde7a
--- /dev/null
+++ b/help/P/mhcent1.txt
@@ -0,0 +1,11 @@
+\b;Z Centrum Kontroli Misji
+Znajdź nieco \l;materii organicznej\u object\bullet; i po wykonaniu odpowiedniego programu badawczego w \l;laboratorium\u object\labo;, powinno \l;Ci\u object\human; się udać samodzielnie zbudować działo organiczne.
+
+Zbuduj \l;działo organiczne na nogach\u object\botos; i dostarcz je na \l;statek kosmiczny\u object\base;.
+
+Pamiętaj, że na tej planecie jest bardzo mało zasobów energetycznych.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhcent2.txt b/help/P/mhcent2.txt
new file mode 100644
index 00000000..6be9ad80
--- /dev/null
+++ b/help/P/mhcent2.txt
@@ -0,0 +1,7 @@
+\b;Z Centrum Kontroli Misji
+Nadszedł czas na kolejne poprawienie \l;Twoich\u object\human; umiejętności strzeleckich. W tym ćwiczeniu należy zniszczyć wszystkie \l;ładunki wybuchowe\u object\tnt;, ale uwaga: \l;działo organiczne\u object\botoj; ma bardzo mało energii, zaledwie tyle, ile potrzeba na wykonanie tego ćwiczenia.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhcent3.txt b/help/P/mhcent3.txt
new file mode 100644
index 00000000..a5fa3bee
--- /dev/null
+++ b/help/P/mhcent3.txt
@@ -0,0 +1,9 @@
+\b;Z Centrum Kontroli Misji
+Zbuduj \l;radar\u object\radar; na najwyższym wzniesieniu i upewnij się, że nie zostanie on zniszczony po opuszczeniu przez \l;Ciebie\u object\human; planety.
+
+Zniszczenie poprzedniego radaru zbudowanego przez pierwszą ekspedycję było prawdopodobną przyczyną zerwania łączności, co doprowadziło do zupełnej utraty kontaktu.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhcent4.txt b/help/P/mhcent4.txt
new file mode 100644
index 00000000..71ca4318
--- /dev/null
+++ b/help/P/mhcent4.txt
@@ -0,0 +1,19 @@
+\b;Kilka słów o nowych wytycznych
+Bardzo nam przykro, że musimy zwracać Ci na to uwagę, ale wydaje nam się, że nadszedł odpowiedni czas na zapoznanie Cię z naszymi obecnymi troskami. Silna reakcja opinii publicznej oraz Kongresu, dotycząca systematycznego wyniszczania "rdzennych mieszkańców" odwiedzanych przez Ciebie planet spowodowała, że Kongres postanowił okazać swoją wrażliwość na troski większości ludności.
+
+Niniejszym ogłaszamy nowe wytyczne obligujące Cię do ograniczenia ofiar i humanitarnego postępowania. Innymi słowy, rób wszystko co tylko możliwe, aby od teraz oszczędzać napotkane formy życia. Twoja misja nie powinna oczywiście zostać przez to narażona na żadne niebezpieczeństwo.
+
+\b;Z Centrum Kontroli Misji
+Tym razem Twoje zasoby energetyczne są niebezpiecznie ograniczone, podobnie jak Twój arsenał, lecz musisz zlokalizować i odzyskać \l;czarną skrzynkę\u object\bbox; z poprzedniej ekspedycji, aby móc udać się na następną planetę.
+
+Poprzez satelitę obserwacyjnego otrzymaliśmy fragmenty informacji od Twoich poprzedników, dotyczące nowego typu broni, wynalezionej przez nich dokładnie w tym celu.
+
+Ta nowa broń oferuje możliwość okazania współczucia wobec \l;rdzennych gatunków\u object\ant;, gdyż nie jest to broń masowej zagłady. Oferuje ona w zamian, według naszej wiedzy, możliwość ich chwilowego unieszkodliwienia. Jeśli rzeczywiście tak jest, musisz działać szybko, zanim będą miały one szansę ponownie stać się groźne.
+
+\b;Procedura
+Wykonaj \l;program badawczy\u object\research; przeprowadź niezbędne eksperymenty, lecz pamiętaj o dostarczeniu tej nowej broni na pokład. Bardzo nam zależy na zbadaniu tego urządzenia.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhcent5.txt b/help/P/mhcent5.txt
new file mode 100644
index 00000000..a127c6b0
--- /dev/null
+++ b/help/P/mhcent5.txt
@@ -0,0 +1,9 @@
+\b;Z Centrum Kontroli Misji
+Jesteś atakowany i tym razem nie ma miejsca na litość...
+
+Nowy robot, \l;uderzacz\u object\bottump; może być bardzo pomocny. Jednakże chcielibyśmy podkreślić, że nie należy ryzykować startu, dopóki są jeszcze jakiekolwiek żywe mrówki w pobliżu statku kosmicznego.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhcrys1.txt b/help/P/mhcrys1.txt
new file mode 100644
index 00000000..58b2ac3c
--- /dev/null
+++ b/help/P/mhcrys1.txt
@@ -0,0 +1,13 @@
+\b;Z Centrum Kontroli Misji
+Zbuduj \l;radar\u object\radar; na najwyższym punkcie w okolicy. Upewnij się, że działanie radaru nie będzie zagrożone nawet po Twoim opuszczeniu planety. \l;Centrum badawcze\u object\research; powinno pomóc w znalezieniu odpowiedniego rozwiązania.
+
+Możliwe, że wykryte organizmy są w rzeczywistości \l;robalami\u object\worm; wspomnianymi przez pierwszą ekspedycję. Jeśli to prawda, nie należy zbytnio się niepokoić: nie są one groźne dla żywych organizmów, jednak mogą spowodować nieprawidłowe działanie robotów i budynków, zarażając je wirusami.
+
+Radary nie tylko dostarczają dokładne informacje o obiektach i organizmach występujących w regionie, ale również przekazują informacje pomiędzy Ziemią po Twoim odlocie na inne planety. Jest bardzo prawdopodobne, że problemy z łącznością, których się tak obawiamy, były spowodowane problemami ze stacjami radarowymi zbudowanymi przez pierwszą ekspedycję.
+
+Aby pomóc Ci w nudnym zadaniu zbierania niezbędnych surowców, napisaliśmy program, dzięki któremu \l;transporter na kołach\u object\botgr; będzie samodzielnie szukał \l;rudy tytanu\u object\titanore; (zobacz podręcznik programowania \button 53;).
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhcrys2.txt b/help/P/mhcrys2.txt
new file mode 100644
index 00000000..73ef7698
--- /dev/null
+++ b/help/P/mhcrys2.txt
@@ -0,0 +1,11 @@
+\b;Z Centrum Kontroli Misji
+Oczyść teren ze wszystkich wrogich organizmów. Sposób wykonania zadania (\l;wieża obronna\u object\tower; lub \l;działo latające\u object\botfj;) zależy od Ciebie.
+
+Wygląda na to, że radar jest idealnie przystosowany do wykrywania robali. Należy jednak pamiętać, że widoczne są tylko te przebywające na powierzchni.
+
+Przesłaliśmy transmisję do Twojej \l;fabryki robotów\u object\factory;. Dotyczy ona robota zaprojektowanego do wykrywania surowców w podglebiu: źródeł energii i rudy. Dla uproszczenia nazwaliśmy go \l;szperaczem\u object\botsr;. Na podstawie wstępnych analiz przypuszczamy, że występowanie rudy tytanu na Krystalii jest ściśle związane z występowaniem wielkich niebieskich kryształów. Jeśli to prawda, informacja ta pozwoli Ci zaoszczędzić nieco cennego czasu. Oczywiście do wydobycia rudy niezbędna jest \l;kopalnia\u object\derrick;.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhcrys3.txt b/help/P/mhcrys3.txt
new file mode 100644
index 00000000..05a16fad
--- /dev/null
+++ b/help/P/mhcrys3.txt
@@ -0,0 +1,9 @@
+\b;Z Centrum Kontroli Misji
+Właśnie otrzymaliśmy ostrzeżenie z satelity obserwacyjnego: niesforny robot z poprzedniej ekspedycji wykradł czarną skrzynkę z Twojego statku kosmicznego.
+
+Zamierzamy później zbadać ten incydent, lecz teraz najważniejszą sprawą jest jak najszybsze odzyskanie czarnej skrzynki.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhcrys4.txt b/help/P/mhcrys4.txt
new file mode 100644
index 00000000..fdaa7a19
--- /dev/null
+++ b/help/P/mhcrys4.txt
@@ -0,0 +1,11 @@
+\b;Z Centrum Kontroli Misji
+Ta planeta okazała się nieodpowiednim kandydatem do przyszłej kolonizacji. Lepiej opuścić ją na dobre. Znajdź \l;czarną skrzynkę\u object\bbox; z poprzedniej ekspedycji i skieruj się na następną planetę.
+
+Z danych satelity obserwacyjnego wynika, że znajduje się ona na dnie doliny. Jednakże, z uwagi na warstwy przenikliwego smogu elektromagnetycznego, nie można do końca polegać na danych satelitarnych.
+
+Bądź w pogotowiu.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhlune1.txt b/help/P/mhlune1.txt
new file mode 100644
index 00000000..1d89d696
--- /dev/null
+++ b/help/P/mhlune1.txt
@@ -0,0 +1,22 @@
+\b;Z Centrum Kontroli Misji
+Zbierz 4 porcje \l;rudy tytanu\u object\titanore; i dostarcz je na pokład \l;statku kosmicznego\u object\base;. Zbuduj niezbędne do tego celu urządzenia (\l;transportery latające\u object\botgj;).
+
+Zamiast ryzykować coraz bardziej, zawsze sprawdzaj raport satelitarny \button 186;.
+
+Przesłaliśmy do Twojego \l;statku kosmicznego\u object\base; program, który może Ci pomóc w tym zadaniu; zobacz odpowiednią stronę na Twoim komunikatorze SatCom, naciskając przycisk \button 53;.
+
+\b;Procedura
+1) Aby dodać transportery latające do listy robotów, które mogą być produkowane w fabryce, należy wykonać wcześniej odpowiedni \l;program badawczy\u object\research;. Badania umożliwią ponadto uruchomienie reaktora w Twoim zestawie przetrwania.
+
+2) Zbuduj \l;transporter latający\u object\botgj; i zbierz 4 kawałki \l;rudy tytanu\u object\titanore;.
+
+3) Zabierz ze sobą \l;transporter latający\u object\botgj; oraz \l;transporter na kołach\u object\botgr; i odleć.
+
+Uważaj, aby Twojemu transporterowi latającemu nie skończyła się energia daleko od bazy. Jeśli będzie to konieczne, wymień \l;ogniwo elektryczne\u object\power; przed opuszczeniem statku kosmicznego. Możesz zrobić to osobiście lub wykonując załączony program dostarczony z Houston \button 53;.
+
+Aby nie zgubić się w ogromie kraterów na powierzchni Księżyca, skorzystaj z mapki, którą możesz znaleźć w prawej dolnej części ekranu.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mhlune2.txt b/help/P/mhlune2.txt
new file mode 100644
index 00000000..eca89c6c
--- /dev/null
+++ b/help/P/mhlune2.txt
@@ -0,0 +1,17 @@
+\b;Z Centrum Kontroli Misji
+Ta aparatura została ustawiona przez poprzednią ekspedycję do testowania i trenowania możliwości robotów latających.
+
+\b;Zadanie
+Użyj tych ćwiczeń dla zwiększenia swojej przewagi. Twoja zdolność do przetrwania krytycznych sytuacji w przyszłości może zależeć od zręczności, którą pomogą Ci one rozwinąć.
+
+\b;Procedura
+Przeleć przez wszystkie cele jak najszybciej. Postaraj się to zrobić bez przegrzania silnika. Jeśli to za trudne, po prostu wyląduj na chwilę aby ochłodzić silnik.
+
+Do sterowania robotem używaj klawiszy strzałek na klawiaturze, ale jedną rękę trzymaj na myszy. Mysz nie jest potrzebna w tym ćwiczeniu ale będzie istotna w późniejszych misjach.
+
+Może być przydatne powrócenie do tego ćwiczenia za jakiś czas, w celu poprawy refleksu.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhlune3.txt b/help/P/mhlune3.txt
new file mode 100644
index 00000000..0365bfc9
--- /dev/null
+++ b/help/P/mhlune3.txt
@@ -0,0 +1,7 @@
+\b;Z Centrum Kontroli Misji
+Ćwiczenie podobne do poprzedniego, z tą tylko różnicą, że tym razem dostępny jest jedynie widok z kamery pokładowej.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhlune4.txt b/help/P/mhlune4.txt
new file mode 100644
index 00000000..5f6bc673
--- /dev/null
+++ b/help/P/mhlune4.txt
@@ -0,0 +1,20 @@
+\b;Z Centrum Kontroli Misji
+Nie mamy możliwości ustalenia dokąd udała się poprzednia ekspedycja po opuszczeniu powierzchni Księżyca, ani dlaczego wybrała miejsce, w które się udała.
+
+Znajdź \l;czarną skrzynkę\u object\bbox; zostawioną przez poprzednią ekspedycję i dostarcz ją na pokład Twojego statku. Powinna ona zawierać współrzędne następnej planety, do której zmierzała ekspedycja.
+
+\l;Ogniwa elektryczne\u object\power; Twoich robotów są prawie zupełnie puste. Naładowanie ich jest priorytetem. Z danych satelity obserwacyjnego wynika, że podglebie w tej okolicy naładowane jest energią, wobec czego budowa działającej \l;stacji energetycznej\u object\station; możliwa jest na każdej płaskiej powierzchni.
+
+Opracowaliśmy program ładujący \l;ogniwa elektryczne\u object\power; robota. Więcej informacji znajdziesz na stronie z programami w Twoim komunikatorze SatCom \button 53;.
+
+\b;Procedura
+1) Na początek zbuduj \l;hutę\u object\convert;, w której przetopisz posiadane już kawałki rudy tytanu w użyteczne \l;kostki tytanu\u object\titan;.
+
+2) Następnie zbuduj \l;stację energetyczną\u object\station; oraz \l;radar\u object\radar;, który wskaże na mapce lokalizację czarnej skrzynki.
+
+3) Z naładowanym w pełni ogniwem elektrycznym zdobądź czarną skrzynkę. Aby móc odlecieć, musisz dostarczyć ją na pokład \l;statku kosmicznego\u object\base;.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhorph1.txt b/help/P/mhorph1.txt
new file mode 100644
index 00000000..cf571b53
--- /dev/null
+++ b/help/P/mhorph1.txt
@@ -0,0 +1,13 @@
+\b;Z Centrum Kontroli Misji
+Jest już chyba oczywiste, że planeta ta nie będzie rajem dla ludzkości.
+
+Zbuduj radar, który będzie przekazywał przyszłe transmisje.
+
+Ponadto... niestety musimy poinformować Cię, że będziesz musiał unicestwić wszystkie wrogie organizmy.
+
+Pierwsza ekspedycja odkryła pokłady \l;rudy tytanu\u object\titanore; pod powierzchnią Orfenii. Miejsce to zostało oznaczone niebieską \l;flagą\u object\flag;.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhorph2.txt b/help/P/mhorph2.txt
new file mode 100644
index 00000000..81a6f359
--- /dev/null
+++ b/help/P/mhorph2.txt
@@ -0,0 +1,11 @@
+\b;Z Centrum Kontroli Misji
+Odzyskaj czarnÄ… skrzynkÄ™.
+
+Pioruny uderzają jeszcze częściej niż poprzednio. Musisz zabezpieczyć swoje wyposażenie.
+
+Warto zauważyć, że statek kosmiczny również jest naturalnym odgromnikiem, a nasi inżynierowie zapewniają, że Twój skafander kosmiczny nie przyciąga piorunów.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhsaari1.txt b/help/P/mhsaari1.txt
new file mode 100644
index 00000000..f53eb6cf
--- /dev/null
+++ b/help/P/mhsaari1.txt
@@ -0,0 +1,7 @@
+\b;Z Centrum Kontroli Misji
+Satelita obserwacyjny wykrył porcję \l;rudy uranu\u object\uranore; na szczycie głównego wzniesienia. Twoim zadaniem jest dostarczenie jej na statek kosmiczny.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhsaari2.txt b/help/P/mhsaari2.txt
new file mode 100644
index 00000000..ff3cca6b
--- /dev/null
+++ b/help/P/mhsaari2.txt
@@ -0,0 +1,11 @@
+\b;Z Centrum Kontroli Misji
+Wyeliminuj wszystkich wrogów obecnych w okolicy.
+
+Twoja obecna sytuacja skrajnie nas niepokoi. Satelita wykrył bardzo dużą aktywność wroga, zbliżającego się do Twojego statku kosmicznego ze wszystkich kierunków. Musisz prawidłowo ocenić sytuację i wybrać najszybszą i najskuteczniejszą obronę: \l;wieże\u object\tower; lub\l;działa\u object\botfr;.
+
+Aby zwiększyć Twoje szanse przetrwania, opracowaliśmy program, który będzie bronił Twojej zachodniej flanki, jeśli uruchomisz go na \l;dziale na kołach\u object\botfr;; zobacz stronę programu \button 53;.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhsaari3.txt b/help/P/mhsaari3.txt
new file mode 100644
index 00000000..41ca28c7
--- /dev/null
+++ b/help/P/mhsaari3.txt
@@ -0,0 +1,9 @@
+\b;Z Centrum Kontroli Misji
+Twój satelita zlokalizował pozostałości poprzedniej ekspedycji. W pobliżu powinna też być \l;czarna skrzynka\u object\bbox; ze współrzędnymi Twojego następnego celu.
+
+Zlikwiduj kilka pozostałych mrówek. Zauważyliśmy, że Twoje działo neutronowe przestało działać, wobec czego nie będzie możliwa budowa nowych robotów. Jesteśmy jednak przekonani, że znajdziesz odpowiednie rozwiązanie wykorzystując jedynie posiadane przez Ciebie zasoby.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhterra1.txt b/help/P/mhterra1.txt
new file mode 100644
index 00000000..44ef7e53
--- /dev/null
+++ b/help/P/mhterra1.txt
@@ -0,0 +1,15 @@
+\b;Z Centrum Kontroli Misji
+Właśnie dotarła do nas wiadomość, że pierwsza ekspedycja zbudowała zupełnie nowy typ broni, od użycia na Nowej Ziemi. W celu ochrony przed dostępem wroga, została ona bezpiecznie zamknięta w \l;skrytce\u object\safe;. Dostęp do niej można uzyskać przy pomocy czterech \l;kluczy\u object\key;. Są one rozproszone na lub pod powierzchnią planety.
+
+Satelita obserwacyjny zlokalizował jeden z tych kluczy (A) na północ od Twojej obecnej pozycji.
+
+Zgodnie z wytycznymi Kongresu, nasi inżynierowie opracowali kolejny model ściśle "obronnego" robota, nazwanego \l;osłaniaczem\u object\botshld;, który umożliwia odpowiednie zabezpieczenie o określonych parametrach. Dane zostały przesłane do \l;centrum badawczego\u object\research; razem z paroma przydatnymi programami.
+
+Jak zapewne wiesz, ruda uranu w podglebiu jest skutecznym nawozem, przyśpieszającym wzrost rozmaitych grzybów. Ponadto warto zauważyć, że \l;rudę tytanu\u object\titanore; na tej planecie można często znaleźć na dnie jezior.
+
+Po zakończeniu misji, przed odlotem, zabierz na pokład statku kosmicznego robota \l;osłaniacza\u object\botshld; oraz \l;nurka\u object\botsub;.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhterra2.txt b/help/P/mhterra2.txt
new file mode 100644
index 00000000..e544465e
--- /dev/null
+++ b/help/P/mhterra2.txt
@@ -0,0 +1,9 @@
+\b;Z Centrum Kontroli Misji
+Zdobądź drugi \l;klucz\u object\key; (B). Powinien on być w pobliżu Twojej obecnej pozycji.
+
+Po zakończeniu misji, przed odlotem, zabierz na pokład statku kosmicznego robota \l;osłaniacza\u object\botshld; oraz \l;nurka\u object\botsub;.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhterra3.txt b/help/P/mhterra3.txt
new file mode 100644
index 00000000..b9703c02
--- /dev/null
+++ b/help/P/mhterra3.txt
@@ -0,0 +1,9 @@
+\b;Z Centrum Kontroli Misji
+Trzeci \l;klucz\u object\key; (C) zakopany jest na terenie opanowanym przez grzyby. Do jego znalezienia użyj \l;szperacza\u object\botss;, a następnie wydobądź go, używając do tego \l;kopalni\u object\derrick;.
+
+Po zakończeniu misji, przed odlotem, zabierz na pokład statku kosmicznego robota \l;osłaniacza\u object\botshld; oraz \l;nurka\u object\botsub;.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhterra4.txt b/help/P/mhterra4.txt
new file mode 100644
index 00000000..ff6ea177
--- /dev/null
+++ b/help/P/mhterra4.txt
@@ -0,0 +1,13 @@
+\b;Z Centrum Kontroli Misji
+Za pomocą czwartego \l;klucza\u object\key; (D), który możesz znaleźć w pobliżu, uzyskasz ostatecznie dostęp do \l;skrytki\u object\safe;. Ten przełomowy robot, którego znajdziesz wewnątrz został nazwany "\l;działem fazowym\u object\botphaz;".
+
+W załączeniu przesyłamy program umożliwiający współpracę \l;działa fazowego\u object\botphaz; z robotem \l;osłaniaczem\u object\botshld;.
+
+Wkrótce będziesz miał okazję przetestować nową broń. Twoją ostatnią misją jest zlikwidowanie \l;Królowej obcych\u object\mother; składającej jaja, odpowiedzialnej za pojawianie się kolejnych owadów na Nowej Ziemi. Działo fazowe może być jedyną bronią zdolną wykonać to zadanie.
+
+Nie będzie już dalszych przeszkód w ludzkiej kolonizacji tej wspaniałej planety i wkrótce będzie można powiadomić Ziemię o zakończeniu misji.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhterre1.txt b/help/P/mhterre1.txt
new file mode 100644
index 00000000..983c85a9
--- /dev/null
+++ b/help/P/mhterre1.txt
@@ -0,0 +1,27 @@
+\b;Z Centrum Szkoleniowego NASA
+Miło nam poinformować, że zostałeś wybrany do misji eksploracji kosmosu, nazwanej Colobot.
+
+Twój profil psychologiczny został został uznany za korzystny w ponad 98,84%, a Twoje uzdolnienia podczas okresu obszernych badań były niezaprzeczalne. Szczegółowe wyniki są do Twojej dyspozycji w komputerze centralnym pod przypisanym Ci numerem rejestracyjnym.
+
+W sprawie wskazówek dotyczących Twoich nadchodzących misji, zgłoś się do\l; Centrum Kontroli Misji Houston\u object\Huston;.
+
+\b;Z Centrum Kontroli Misji Houston
+Jak wiesz, Ziemię czeka nieuchronna zagłada, spowodowanego rosnącym zanieczyszczeniem atmosfery.
+
+\l;Twoja\u object\human; misja polega na zbadaniu sąsiednich galaktyk z nadzieją znalezienia planety odpowiedniej dla człowieka i mogącej służyć jako przyszłe schronienie dla ludzkości. Podczas misji możesz liczyć tylko na siebie, choć na Twoim statku kosmicznym będzie też kilka robotów.
+
+Osiem miesięcy temu została wysłana ekspedycja mająca ten sam cel, składająca się jedynie z robotów. Napotkała ona wiele przeszkód na swej drodze, zwykle lądując na planetach nieodpowiednich do kolonizacji, a nawet wyraźnie wrogich. Całkiem niedawno łączność została zupełnie zerwana.
+
+Powody niepowodzenia tamtej misji wciąż są nieznane, głównie z powodu powtarzających się problemów z transmisją. Mamy jednak nadzieję, że uda Ci się wykorzystać część zebranych przez nią danych.
+
+\b;Bezpośredni cel
+Pustynia Nevada wre aktywnością. Roboty budują stację kosmiczną, która będzie troszczyć się o zaspokojenie Twoich specyficznych potrzeb.
+
+Aby zapoznać Cię ze skafandrem i wyposażeniem, przygotowaliśmy kilka ćwiczeń treningowych.
+
+W pierwszym ćwiczeniu musisz znaleźć swój zestaw przetrwania, zawierający wszystkie narzędzia niezbędne do stawienia czoła zimnej przestrzeni kosmicznej. Jest on łatwy do zauważenia, gdyż zawiera dwa pojemniki: pomarańczowy i niebieski.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mhterre2.txt b/help/P/mhterre2.txt
new file mode 100644
index 00000000..cc294ea0
--- /dev/null
+++ b/help/P/mhterre2.txt
@@ -0,0 +1,14 @@
+\b;Z Centrum Kontroli Misji
+To \l;Twoje\u object\human; drugie ćwiczenie. Powinieneś zapoznać się z obsługą podstawowego wyposażenia. Może to być bardzo przydatne podczas Twojej przyszłej ekspedycji.
+
+Konstrukcja budynków oraz wytwarzanie robotów wymaga użycia \l;tytanu\u object\titan;. Tytan jest minerałem, który można znaleźć na większości systemów słonecznych we wszechświecie.
+
+\b;Procedura
+1) Zbliż się do pierwszej \l;kostki tytanu\u object\titan;.
+2) Zbuduj \l;centrum badawcze\u object\research; \button 163;. Zwróć uwagę, że jedynie \l;Ty\u object\human; możesz cokolwiek zbudować; roboty nie mogą Cię w tym zastąpić.
+3) Drugą \l;kostkę tytanu\u object\titan; przeznacz na wybudowanie \l;fabryki robotów\u object\factory; \button 160;.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mhterre3.txt b/help/P/mhterre3.txt
new file mode 100644
index 00000000..57bd0efc
--- /dev/null
+++ b/help/P/mhterre3.txt
@@ -0,0 +1,24 @@
+\b;Z Centrum Kontroli Misji
+Twój \l;statek kosmiczny\u object\base; znajduje się już na płycie wyrzutni rakietowej, gotowy do startu.
+
+\l;Twoje\u object\human; ostatnie ćwiczenie przed wyruszeniem w podróż polega na zaopatrzeniu statku kosmicznego w \l;czarną skrzynkę\u object\bbox;. Jedyną drogą do \l;czarnej skrzynki\u object\bbox; jest stroma ścieżka, którą może wspiąć się tylko \l;transporter na gąsienicach\u object\botgc;, którego musisz wcześniej zbudować.
+
+Niestety \l;fabryka robotów\u object\factory;, nie potrafi jeszcze składać robotów tego typu. Musisz zażądać od \l;centrum badawczego\u object\research; planów tego szczególnego napędu.
+
+\b;Procedura
+1) Zasil centrum badawcze przy pomocy jednego z zielonych \l;ogniw elektrycznych\u object\power;.
+2) Kliknij na przycisku \button 64;.
+3) Zostaw \l;kostkę tytanu\u object\titan; pośrodku \l;fabryki robotów\u object\factory; i zbuduj \l;transporter na gąsienicach\u object\botgc;.
+4) Zasil i wyślij \l;transporter na gąsienicach\u object\botgc; na szczyt góry na południowym zachodzie.
+5) Dostarcz czarną skrzynkę na pokład statku kosmicznego.
+6) Nie zapomnij również zabrać \l;transportera na kołach\u object\botgr;. Roboty te mogą okazać się bardzo przydatne w przyszłości.
+7) Wejdź na pokład \l;statku kosmicznego\u object\base;.
+8) Zaznacz \l;statek kosmiczny\u object\base; i odleć \button 28;.
+
+
+Uwaga: Dla zwiększenia efektywności możesz użyć \l;transportera na kołach\u object\botgr;.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mhtropi1.txt b/help/P/mhtropi1.txt
new file mode 100644
index 00000000..35ed82a8
--- /dev/null
+++ b/help/P/mhtropi1.txt
@@ -0,0 +1,10 @@
+\b;Z Centrum Kontroli Misji
+Satelita obserwacyjny wykrył nowy rodzaj materiałów wybuchowych, zaprojektowany przez poprzednią ekspedycję. Musisz go znaleźć i dostarczyć na \l;statek kosmiczny\u object\base;.
+
+\b;Procedura
+Lokalizacja materiałów wybuchowych jest zaznaczona na mapce czerwonym plusem.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mhtropi2.txt b/help/P/mhtropi2.txt
new file mode 100644
index 00000000..50e795ec
--- /dev/null
+++ b/help/P/mhtropi2.txt
@@ -0,0 +1,18 @@
+\b;Z Centrum Kontroli Misji
+Mamy nadzieję, że dotrze do Ciebie nasza wiadomość.
+
+Transmisja z satelity obserwacyjnego przed kilkoma godzinami powiadomiła nas, że wędrujesz sobie niepokojąco beztrosko. Twój komunikator SatCom zaprzestał nadawania. Twoje reaktory zostały prawdopodobnie uszkodzone a hełm zaginął na dnie jeziora. Jeśli tak jest w rzeczywistości, nie próbuj go odzyskać, nie wchodź do wody! Woda na planecie Tropice jest niezwykle toksyczna. Możesz tego nie przeżyć.
+
+Wróć na statek najszybciej jak to możliwe i spróbuj przekazać informację o prawdopodobnej przyczynie tej katastrofy. Informacje z satelity nie są możliwe do odszyfrowania. Rozważaliśmy istnienie nieznanego czynnika już od czasu zaginięcia pierwszej ekspedycji. Wygląda na to, że właśnie się z nim spotkałeś.
+
+Nie możemy pomóc Ci bardziej, ale pamiętaj że podążasz śladami poprzedniej ekspedycji. Jeśli przydarzyło im się to samo co teraz Tobie, są szanse, że zostawili jakieś wskazówki podczas swojego powrotu do statku kosmicznego, który znajdziesz w pobliżu obecnej pozycji Twojego statku. Skorzystaj z tych wskazówek.
+
+Warte rozważenia jest rozstawienie flag. Określają one kierunek wiatru, przez co mogą być pomocne w orientacji w terenie.
+
+To wszystko co możemy teraz powiedzieć...
+Powodzenia...
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mhtropi3.txt b/help/P/mhtropi3.txt
new file mode 100644
index 00000000..eccef971
--- /dev/null
+++ b/help/P/mhtropi3.txt
@@ -0,0 +1,16 @@
+\b;Z Centrum Kontroli Misji
+Wyeliminuj wszystkie wrogie formy życia.
+Przeprowadź niezbędne \l;badania\u object\research; w celu rozwinięcia systemu broni ofensywnej.
+
+Satelita wykrył źródło energii w punkcie oznaczonym przez poprzednią ekspedycję niebieską flagą (niebieski plus na mapce).
+
+Nie zapomnij zajrzeć do raportu z satelity \button 186; zanim przedsięweźmiesz jakiekolwiek decyzje; podejrzewamy, że nie zawsze o tym pamiętasz.
+
+Udoskonaliliśmy program ładujący ogniwa. Zobacz stronę \button 53;.
+
+Ostrzeżenie: roboty nie mogą się zanurzać. W razie wątpliwości sprawdź sam, czy poziom wody nie jest wyższy niż do kolan, jeśli zamierzasz zdalnie kierować nielatające roboty przez wodę.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhtropi4.txt b/help/P/mhtropi4.txt
new file mode 100644
index 00000000..3e16d0dd
--- /dev/null
+++ b/help/P/mhtropi4.txt
@@ -0,0 +1,13 @@
+\b;Z Centrum Kontroli Misji
+Oto kolejny kurs szkoleniowy przygotowany przez Twoich poprzedników i przeznaczony tym razem do sprawdzenia możliwości strzeleckich \l;robotów latających\u object\botfj;. Dzięki niemu oswoisz się ze strzelaniem podczas latania.
+
+Przeleć szybko przez wszystkie cele i zestrzel 10 ładunków wybuchowych rozrzuconych wzdłuż trasy lotu. Spróbuj wykonać to ćwiczenie bez lądowania. Uważaj jednak na reaktor: jeśli się przegrzeje, wystarczy wylądować i poczekać aż ostygnie.
+
+Używaj jednej ręki do kierowanie robotem używając klawiatury, a drugiej do celowania i strzelania (lewym klawiszem) myszą.
+
+Możesz wrócić do tego ćwiczenia za jakiś czas, aby poprawić swój refleks.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhtropi5.txt b/help/P/mhtropi5.txt
new file mode 100644
index 00000000..e4109920
--- /dev/null
+++ b/help/P/mhtropi5.txt
@@ -0,0 +1,9 @@
+\b;Z Centrum Kontroli Misji
+Znajdź i odzyskaj kolejną \l;czarną skrzynkę\u object\bbox; zostawioną przez poprzednią ekspedycję.
+
+Z danych satelity obserwacyjnego wynika, że znajduje się ona pod wodą. Woda jest nieszkodliwa, o ile masz założony hełm, ale pamiętaj, że nie możesz nosić pod wodą żadnych przedmiotów. W tym przypadku pomocny może być robot \l;nurek\u object\botsub;.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhvolca1.txt b/help/P/mhvolca1.txt
new file mode 100644
index 00000000..42034499
--- /dev/null
+++ b/help/P/mhvolca1.txt
@@ -0,0 +1,13 @@
+\b;Z Centrum Kontroli Misji
+Twoim zadaniem jest odzyskanie \l;ładunku wybuchowego\u object\tnt;, znajdującego się w głębokiej dolinie, w pobliżu jeziora wrzącej lawy.
+
+Z powodu wysokiej temperatury, reaktory przestały działać, wobec czego nie jest możliwe latanie. Masz przed sobą długą drogę, dlatego roboty należy tym razem zaopatrzyć w \l;atomowe ogniwa elektryczne\u object\atomic;. Atomowe ogniwa elektryczne wytwarzane są z \l;rudy uranu\u object\uranore;.
+
+Do tej wiadomości został dołączony nieco skuteczniejszy program do zbierania surowców.
+
+Ostrzeżenie: ładunek wybuchowy jest niezwykle czuły. Zachowaj ostrożność.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhvolca2.txt b/help/P/mhvolca2.txt
new file mode 100644
index 00000000..622a559e
--- /dev/null
+++ b/help/P/mhvolca2.txt
@@ -0,0 +1,17 @@
+\b;Z Centrum Kontroli Misji
+Poprzednia ekspedycja dostarczyła pewnych informacji o \l;materii organicznej\u object\bullet; produkowanej prawdopodobnie przez \l;mrówki\u object\ant;. Otwiera ona przed Tobą nowe możliwości. Niewątpliwie pozwala na stworzenie nowego typu hybrydowego robota o zwiększonej wydajności, dzięki zastosowaniu fragmentów owadzich.
+
+Twoja misja polega na eksperymentowaniu z pierwszym praktycznym zastosowaniem "zielonego złota". Zbuduj \l;transporter na nogach\u object\botgs;, dostarcz go na statek kosmiczny i odleć.
+
+\b;Procedura
+Zdobądź próbkę materii organicznej z gniazda olbrzymich mrówek. Jej analiza zostanie wykonana w \l;laboratorium\u object\labo;, które przeprowadzi również odpowiednie badania umożliwiające praktyczne zastosowanie.
+
+W celu poprawienia zdolności obronnych, przesłaliśmy program dla \l;robotów transporterów\u object\botgr;, który zajmie się wymianą i ładowaniem ogniwa elektrycznego \l;wieży obronnej\u object\tower; (zobacz \button 53; ).
+
+\b;Uwaga
+Wobec znacznego spadku temperatury, latanie powinno już być możliwe.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhvolca3.txt b/help/P/mhvolca3.txt
new file mode 100644
index 00000000..8f1bf150
--- /dev/null
+++ b/help/P/mhvolca3.txt
@@ -0,0 +1,7 @@
+\b;Z Centrum Kontroli Misji
+Ta planeta z pewnością nie nadaje się na kolonizację. Znajdź \l;czarną skrzynkę\u object\bbox; zostawioną przez poprzednią ekspedycję i odleć.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhvolca4.txt b/help/P/mhvolca4.txt
new file mode 100644
index 00000000..7e9a188d
--- /dev/null
+++ b/help/P/mhvolca4.txt
@@ -0,0 +1,9 @@
+\b;Pilna wiadomość z Centrum Kontroli Misji
+Podczas Twoich przygotowań do odlotu, otrzymaliśmy z satelity następującą informację: na Wulkanii został wykryty robot nieznanego typu. Spróbuj dostarczyć go na statek kosmiczny do dalszych badań.
+
+Nasi inżynierowie na Ziemi ostatnio znaleźli rozwiązanie, które umożliwi choć krótkie działanie reaktorów pomimo wysokiej temperatury. Dane te zostały przesłane do Ciebie.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhvolca5.txt b/help/P/mhvolca5.txt
new file mode 100644
index 00000000..15a98cd8
--- /dev/null
+++ b/help/P/mhvolca5.txt
@@ -0,0 +1,11 @@
+\b;Z Centrum Kontroli Misji
+Jak zwykle gratulujemy dobrej roboty.
+
+Ta nowa broń jest kolejnym praktycznym zastosowaniem "zielonego złota", czyli \l;materii organicznej\u object\bullet; wytwarzanej przez owady. Nowy robot został nazwany \l;działem organicznym\u object\botoj;, bądź też robotem wyposażonym w działko organiczne.
+
+Na pewno będzie ono pomocne podczas Twojego powrotu na \l;statek kosmiczny\u object\base;.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/mhvolca6.txt b/help/P/mhvolca6.txt
new file mode 100644
index 00000000..e54e443f
--- /dev/null
+++ b/help/P/mhvolca6.txt
@@ -0,0 +1,7 @@
+\b;Z Centrum Kontroli Misji
+Przed opuszczeniem tej planety musisz odeprzeć ostatni atak mrówek.
+
+Naciśnięcie klawisza \key;\key help;\norm; pozwala ponownie przejrzeć te instrukcje na Twoim osobistym komunikatorze SatCom \button 63;.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;Język CBOT\u cbot;
diff --git a/help/P/micent1.txt b/help/P/micent1.txt
new file mode 100644
index 00000000..55001066
--- /dev/null
+++ b/help/P/micent1.txt
@@ -0,0 +1,20 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Centuria.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 23,4C
+\tab;Atmosfera: tlen, azot, amoniak
+\tab;Wiatr: 1,2 m/s
+\tab;Ruda tytanu: trochÄ™
+\tab;Ruda uranu: trochÄ™
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: olbrzymie mrówki
+\tab; - Zagrożenie: niebezpośrednie
+\tab;Wykryto: użyteczne pozostałości
+\n;
diff --git a/help/P/micent2.txt b/help/P/micent2.txt
new file mode 100644
index 00000000..6adb1f77
--- /dev/null
+++ b/help/P/micent2.txt
@@ -0,0 +1,15 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Centuria.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 25,4C
+\tab;Atmosfera: tlen, azot, amoniak
+\tab;Wiatr: 1,2 m/s
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+\n;
diff --git a/help/P/micent3.txt b/help/P/micent3.txt
new file mode 100644
index 00000000..62c3d85c
--- /dev/null
+++ b/help/P/micent3.txt
@@ -0,0 +1,22 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Centuria.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 25,4C
+\tab;Atmosfera: tlen, azot, amoniak
+\tab;Wiatr: 0,7 m/s
+\tab;Ruda tytanu: trochÄ™
+\tab;Ruda uranu: trochÄ™
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: olbrzymie mrówki
+\tab; - Zagrożenie: niebezpośrednie
+\tab;Wykryto: pajÄ…ki
+\tab; - Zagrożenie: niebezpośrednie
+\tab;Wykryto: użyteczne pozostałości
+\n;
diff --git a/help/P/micent4.txt b/help/P/micent4.txt
new file mode 100644
index 00000000..5f127190
--- /dev/null
+++ b/help/P/micent4.txt
@@ -0,0 +1,20 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Centuria.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 21,3C
+\tab;Atmosfera: tlen, azot, amoniak
+\tab;Wiatr: 1,9 m/s
+\tab;Ruda tytanu: trochÄ™
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: olbrzymie mrówki
+\tab; - Zagrożenie: niebezpośrednie
+\tab;Wykryto: niezbyt użyteczne pozostałości
+\n;
diff --git a/help/P/micent5.txt b/help/P/micent5.txt
new file mode 100644
index 00000000..d39b3e88
--- /dev/null
+++ b/help/P/micent5.txt
@@ -0,0 +1,19 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Centuria.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 21,3C
+\tab;Atmosfera: tlen, azot, amoniak
+\tab;Wiatr: 1,9 m/s
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: olbrzymie mrówki
+\tab; - Zagrożenie: bezpośrednie
+\n;
diff --git a/help/P/micrys1.txt b/help/P/micrys1.txt
new file mode 100644
index 00000000..7a6425d3
--- /dev/null
+++ b/help/P/micrys1.txt
@@ -0,0 +1,19 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Krystalia.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 5,4C
+\tab;Atmosfera: azot
+\tab;Wiatr: 0,0 m/s
+\tab;Ruda tytanu: trochÄ™
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: brak danych
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: niezidentyfikowane organizmy
+\tab; - Zagrożenie: ?
+\n;
diff --git a/help/P/micrys2.txt b/help/P/micrys2.txt
new file mode 100644
index 00000000..79af3a3b
--- /dev/null
+++ b/help/P/micrys2.txt
@@ -0,0 +1,19 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Krystalia.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 3,2C
+\tab;Atmosfera: azot
+\tab;Wiatr: 0,0 m/s
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: odizolowane (blisko statku kosmicznego)
+\tab;Ruda tytanu: rozproszona
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: robale
+\tab; - Zagrożenie: nie
+\n;
diff --git a/help/P/micrys3.txt b/help/P/micrys3.txt
new file mode 100644
index 00000000..d0b6b431
--- /dev/null
+++ b/help/P/micrys3.txt
@@ -0,0 +1,21 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Krystalia.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 4,3C
+\tab;Atmosfera: azot
+\tab;Wiatr: 0,0 m/s
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: olbrzymie mrówki
+\tab; - Zagrożenie: niebezpośrednie
+\tab;Wykryto: nieznane organizmy
+\tab; - Zagrożenie: ?
+\n;
diff --git a/help/P/micrys4.txt b/help/P/micrys4.txt
new file mode 100644
index 00000000..1c32f5ca
--- /dev/null
+++ b/help/P/micrys4.txt
@@ -0,0 +1,19 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Krystalia.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 1,2C
+\tab;Atmosfera: azot
+\tab;Wiatr: 0,0 m/s
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: smog elektromagnetyczny
+\tab;Wykryto: użyteczne pozostałości
+\n;
diff --git a/help/P/milune1.txt b/help/P/milune1.txt
new file mode 100644
index 00000000..c9ac0e07
--- /dev/null
+++ b/help/P/milune1.txt
@@ -0,0 +1,18 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej Księżyca.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: -53,1C
+\tab;Atmosfera: brak
+\tab;Wiatr: 0,0 m/s
+\tab;Ruda tytanu: trochÄ™
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;W niektórych miejscach teren jest zbyt nierówny dla robotów na kołach.
+\n;
diff --git a/help/P/milune2.txt b/help/P/milune2.txt
new file mode 100644
index 00000000..5bfde7cc
--- /dev/null
+++ b/help/P/milune2.txt
@@ -0,0 +1,15 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej Księżyca.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: -51,0C
+\tab;Atmosfera: brak
+\tab;Wiatr: 0,0 m/s
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+\n;
diff --git a/help/P/milune3.txt b/help/P/milune3.txt
new file mode 100644
index 00000000..8b0ae2df
--- /dev/null
+++ b/help/P/milune3.txt
@@ -0,0 +1,15 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej Księżyca.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: -58,9C
+\tab;Atmosfera: brak
+\tab;Wiatr: 0,0 m/s
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+\n;
diff --git a/help/P/milune4.txt b/help/P/milune4.txt
new file mode 100644
index 00000000..47923ced
--- /dev/null
+++ b/help/P/milune4.txt
@@ -0,0 +1,15 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej Księżyca.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: -38,2C
+\tab;Atmosfera: brak
+\tab;Wiatr: 0,0 m/s
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: wszędzie
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+\n;
diff --git a/help/P/miorph1.txt b/help/P/miorph1.txt
new file mode 100644
index 00000000..80448b77
--- /dev/null
+++ b/help/P/miorph1.txt
@@ -0,0 +1,20 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Orfenia.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: -72,8C
+\tab;Atmosfera: brak
+\tab;Wiatr: 0,0 m/s
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: trochÄ™ (niebieska flaga)
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: olbrzymie mrówki
+\tab; - Zagrożenie: niebezpośrednie
+\tab;Wykryto: gwałtowne burze elektromagnetyczne
+\n;
diff --git a/help/P/miorph2.txt b/help/P/miorph2.txt
new file mode 100644
index 00000000..5e6df9b4
--- /dev/null
+++ b/help/P/miorph2.txt
@@ -0,0 +1,20 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Orfenia.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: -64,7C
+\tab;Atmosfera: brak
+\tab;Wiatr: 0,0 m/s
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: olbrzymie mrówki
+\tab; - Zagrożenie: niebezpośrednie
+\tab;Wykryto: gwałtowne burze elektromagnetyczne
+\n;
diff --git a/help/P/misaari1.txt b/help/P/misaari1.txt
new file mode 100644
index 00000000..146dc35a
--- /dev/null
+++ b/help/P/misaari1.txt
@@ -0,0 +1,20 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Saari.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 41,3C
+\tab;Atmosfera: CO2, tlen, azot
+\tab;Wiatr: 2,3 m/s
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: trochę (wierzchołek góry)
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: wszędzie
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: użyteczne pozostałości
+\tab;Wykryto: olbrzymie mrówki
+\tab; - Zagrożenie: niebezpośrednie
+\n;
diff --git a/help/P/misaari2.txt b/help/P/misaari2.txt
new file mode 100644
index 00000000..9b530c89
--- /dev/null
+++ b/help/P/misaari2.txt
@@ -0,0 +1,19 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Saari.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 38,4C
+\tab;Atmosfera: CO2, tlen, azot
+\tab;Wiatr: 1,4 m/s
+\tab;Ruda tytanu: trochÄ™
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: wszędzie
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: zbliżające się olbrzymie mrówki
+\tab; - Zagrożenie: tak, bezpośrednie
+\n;
diff --git a/help/P/misaari3.txt b/help/P/misaari3.txt
new file mode 100644
index 00000000..fde72a4b
--- /dev/null
+++ b/help/P/misaari3.txt
@@ -0,0 +1,20 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Saari.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 44,3C
+\tab;Atmosfera: CO2, tlen, azot
+\tab;Wiatr: 2,3 m/s
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: użyteczne pozostałości
+\tab;Wykryto: olbrzymie mrówki
+\tab; - Zagrożenie: ?
+\n;
diff --git a/help/P/miterra1.txt b/help/P/miterra1.txt
new file mode 100644
index 00000000..75883423
--- /dev/null
+++ b/help/P/miterra1.txt
@@ -0,0 +1,22 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej Nowej Ziemi.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 24,8C
+\tab;Atmosfera: tlen
+\tab;Wiatr: 0,7 m/s
+\tab;Ruda tytanu: pod wodÄ…
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: w niektórych miejscach
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: trochÄ™
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: olbrzymie mrówki
+\tab; - Zagrożenie: bezpośrednie
+\tab;Wykryto: olbrzymie osy
+\tab; - Zagrożenie: niebezpośrednie
+\tab;Wykryto: użyteczne pozostałości
+\n;
diff --git a/help/P/miterra2.txt b/help/P/miterra2.txt
new file mode 100644
index 00000000..38d9c9b9
--- /dev/null
+++ b/help/P/miterra2.txt
@@ -0,0 +1,19 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej Nowej Ziemi.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 24,3C
+\tab;Atmosfera: tlen
+\tab;Wiatr: 0,8 m/s
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: olbrzymie mrówki
+\tab; - Zagrożenie: bezpośrednie
+\n;
diff --git a/help/P/miterra3.txt b/help/P/miterra3.txt
new file mode 100644
index 00000000..2e659f21
--- /dev/null
+++ b/help/P/miterra3.txt
@@ -0,0 +1,21 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej Nowej Ziemi.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 26,1C
+\tab;Atmosfera: tlen
+\tab;Wiatr: 0,4 m/s
+\tab;Ruda tytanu: trochÄ™
+\tab;Ruda uranu: trochÄ™
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: olbrzymie mrówki
+\tab; - Zagrożenie: bezpośrednie
+\tab;Wykryto: olbrzymie osy
+\tab; - Zagrożenie: bezpośrednie
+\n;
diff --git a/help/P/miterra4.txt b/help/P/miterra4.txt
new file mode 100644
index 00000000..475ee441
--- /dev/null
+++ b/help/P/miterra4.txt
@@ -0,0 +1,21 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej Nowej Ziemi.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 23,7C
+\tab;Atmosfera: tlen
+\tab;Wiatr: 0,5 m/s
+\tab;Ruda tytanu: trochÄ™
+\tab;Ruda uranu: trochÄ™
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: w niektórych miejscach (statek kosmiczny)
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: olbrzymie mrówki
+\tab; - Zagrożenie: bezpośrednie
+\tab;Wykryto: gniazdo olbrzymich jaj
+\tab; - Zagrożenie: ?
+\n;
diff --git a/help/P/mitropi1.txt b/help/P/mitropi1.txt
new file mode 100644
index 00000000..b76a8345
--- /dev/null
+++ b/help/P/mitropi1.txt
@@ -0,0 +1,21 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Tropika.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 32,4C
+\tab;Atmosfera: hel, tlen
+\tab;Wiatr: 1,2 m/s
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: materiały wybuchowe
+\tab; - Typ: nieznany
+\tab;Wykryto: niezidentyfikowane organizmy
+\tab; - Zagrożenie: ?
+\n;
diff --git a/help/P/mitropi3.txt b/help/P/mitropi3.txt
new file mode 100644
index 00000000..02014e52
--- /dev/null
+++ b/help/P/mitropi3.txt
@@ -0,0 +1,20 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Tropika.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 29,6C
+\tab;Atmosfera: hel, tlen
+\tab;Wiatr: 1,5 m/s
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: odizolowane (niebieska flaga)
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: olbrzymie mrówki
+\tab; - Zagrożenie: niebezpośrednie
+\tab;Wykryto: użyteczne pozostałości
+\n;
diff --git a/help/P/mitropi4.txt b/help/P/mitropi4.txt
new file mode 100644
index 00000000..9b2db09b
--- /dev/null
+++ b/help/P/mitropi4.txt
@@ -0,0 +1,15 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Tropika.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 32,2C
+\tab;Atmosfera: hel, tlen
+\tab;Wiatr: 0,7 m/s
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+\n;
diff --git a/help/P/mitropi5.txt b/help/P/mitropi5.txt
new file mode 100644
index 00000000..939c139b
--- /dev/null
+++ b/help/P/mitropi5.txt
@@ -0,0 +1,21 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Tropika.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 29,4C
+\tab;Atmosfera: hel, tlen
+\tab;Wiatr: 0,3 m/s
+\tab;Ruda tytanu: trochÄ™
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: rudÄ™ tytanu
+\tab; - Wymagana: huta
+\tab;Wykryto: rozproszone pozostałości
+\tab;Wykryto: czarnÄ… skrzynkÄ™ (pod wodÄ…)
+\n;
diff --git a/help/P/mivolca1.txt b/help/P/mivolca1.txt
new file mode 100644
index 00000000..f1b74ac9
--- /dev/null
+++ b/help/P/mivolca1.txt
@@ -0,0 +1,20 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Wulkania.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 84,6C
+\tab;Atmosfera: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wiatr: 2,2 m/s
+\tab;Ruda tytanu: wszędzie
+\tab;Ruda uranu: trochÄ™
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: wszędzie
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: użyteczne pozostałości
+\tab;Wykryto: nieznane organizmy
+\tab; - Zagrożenie: ?
+\n;
diff --git a/help/P/mivolca2.txt b/help/P/mivolca2.txt
new file mode 100644
index 00000000..0e552745
--- /dev/null
+++ b/help/P/mivolca2.txt
@@ -0,0 +1,21 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Wulkania.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 53,1C
+\tab;Atmosfera: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wiatr: 0,3 m/s
+\tab;Ruda tytanu: trochÄ™
+\tab;Ruda uranu: mało
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: wszędzie
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: olbrzymie mrówki
+\tab; - Zagrożenie: niebezpośrednie
+\tab;Wykryto: nieznane organizmy latajÄ…ce
+\tab; - Zagrożenie: tak, bezpośrednie
+\n;
diff --git a/help/P/mivolca3.txt b/help/P/mivolca3.txt
new file mode 100644
index 00000000..4f506c82
--- /dev/null
+++ b/help/P/mivolca3.txt
@@ -0,0 +1,19 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Wulkania.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 83,5C
+\tab;Atmosfera: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wiatr: 3,4 m/s
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: wszędzie
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: olbrzymie mrówki
+\tab; - Zagrożenie: niebezpośrednie
+\n;
diff --git a/help/P/mivolca4.txt b/help/P/mivolca4.txt
new file mode 100644
index 00000000..b5951445
--- /dev/null
+++ b/help/P/mivolca4.txt
@@ -0,0 +1,21 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Wulkania.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 96,7C
+\tab;Atmosfera: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wiatr: 2,8 m/s
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: robot
+\tab; - Typ: nieznany
+\tab;Wykryto: olbrzymie mrówki
+\tab; - Zagrożenie: niebezpośrednie
+\n;
diff --git a/help/P/mivolca5.txt b/help/P/mivolca5.txt
new file mode 100644
index 00000000..6f885f02
--- /dev/null
+++ b/help/P/mivolca5.txt
@@ -0,0 +1,21 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Wulkania.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 96,6C
+\tab;Atmosfera: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wiatr: 2,7 m/s
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: olbrzymie mrówki
+\tab; - Zagrożenie: bezpośrednie
+\tab;Wykryto: olbrzymie pajÄ…ki
+\tab; - Zagrożenie: niebezpośrednie
+\n;
diff --git a/help/P/mivolca6.txt b/help/P/mivolca6.txt
new file mode 100644
index 00000000..46aaa5dc
--- /dev/null
+++ b/help/P/mivolca6.txt
@@ -0,0 +1,19 @@
+\b;Raport z satelity
+Obecnie na orbicie geostacjonarnej planety Wulkania.
+\c;
+\s;-> POWIERZCHNIA\c;
+\tab;Temperatura: 96,6C
+\tab;Atmosfera: CO2, SO2, HCN, HS, CH4, NH3
+\tab;Wiatr: 2,7 m/s
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> PODGLEBIE\c;
+\tab;Źródło energii: brak
+\tab;Ruda tytanu: brak
+\tab;Ruda uranu: brak
+
+\s;-> DODATKOWE INFORMACJE\c;
+\tab;Wykryto: olbrzymie mrówki
+\tab; - Zagrożenie: bezpośrednie
+\n;
diff --git a/help/P/mlcent1.txt b/help/P/mlcent1.txt
new file mode 100644
index 00000000..945ce924
--- /dev/null
+++ b/help/P/mlcent1.txt
@@ -0,0 +1,15 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/P/mlcent2.txt b/help/P/mlcent2.txt
new file mode 100644
index 00000000..945ce924
--- /dev/null
+++ b/help/P/mlcent2.txt
@@ -0,0 +1,15 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/P/mlcent3.txt b/help/P/mlcent3.txt
new file mode 100644
index 00000000..945ce924
--- /dev/null
+++ b/help/P/mlcent3.txt
@@ -0,0 +1,15 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/P/mlcent4.txt b/help/P/mlcent4.txt
new file mode 100644
index 00000000..945ce924
--- /dev/null
+++ b/help/P/mlcent4.txt
@@ -0,0 +1,15 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/P/mlcent5.txt b/help/P/mlcent5.txt
new file mode 100644
index 00000000..945ce924
--- /dev/null
+++ b/help/P/mlcent5.txt
@@ -0,0 +1,15 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/P/mlcrys1.txt b/help/P/mlcrys1.txt
new file mode 100644
index 00000000..7b4c2a34
--- /dev/null
+++ b/help/P/mlcrys1.txt
@@ -0,0 +1,29 @@
+\b;Programy przysłane z Houston
+Poniżej znajdziesz jeden z programów napisanych przez naszych inżynierów.
+Poleca on \l;transporterowi\u object\botgr; wziąć najbliższą porcję \l;rudy \u object\titanore; i dostarczyć ją do \l;huty\u object\convert;.
+
+Aby uruchomić ten program, zaznacz program \c;CollectTitanium1\n; na liście dostępnych dla robota programów (w lewej dolnej części ekranu), a następnie kliknij symbol strzałki \button 21;. W każdej chwili można zatrzymać program i przejąć nad nim kontrolę, klikając przycisk stop \button 8;.
+\c;
+\s;extern void object::CollectTitanium1()
+\s;{
+\s; // 1) Definicja zmiennej
+\s; \l;object\u cbot\type; item; // informacja o obiekcie
+\s;
+\s; // 2) Idź do rudy tytanu i podnieś ją
+\s; item = \l;radar\u cbot\radar;(\l;TitaniumOre\u cbot\category;);// znajdź rudę tytanu
+\s; \l;goto\u cbot\goto;(item.position); // idź do pozycji
+\s; \l;grab\u cbot\grab;(); // podnieÅ› porcjÄ™ rudy
+\s;
+\s; // 3) Idź do huty i zostaw rudę
+\s; item = \l;radar\u cbot\radar;(\l;Converter\u cbot\category;); // znajdź hutę
+\s; \l;goto\u cbot\goto;(item.position); // idź do pozycji
+\s; \l;drop\u cbot\drop;(); // zostaw rudÄ™
+\s; \l;move\u cbot\move;(-2.5); // cofnij siÄ™ o 2,5 m
+\s;}
+\n;
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/P/mlcrys2.txt b/help/P/mlcrys2.txt
new file mode 100644
index 00000000..2be9df8f
--- /dev/null
+++ b/help/P/mlcrys2.txt
@@ -0,0 +1,38 @@
+\b;Programy przysłane z Houston
+Poniżej znajdziesz jeden z programów napisanych przez naszych inżynierów.
+Poprzedni program został usprawniony: jeśli to konieczne \l;transporter\u object\botgr; w drodze powrotnej odwiedza \l;stację energetyczną\u object\station; w celu naładowania ogniwa elektrycznego.
+
+Program ten działa również na \l;transporterze latającym\u object\botgj;, co może być konieczne jeśli \l;kopalnia\u object\derrick; jest na innej wyspie niż \l;huta\u object\convert;.
+\c;
+\s;extern void object::CollectTitanium2()
+\s;{
+\s; // 1) Definicja zmiennej
+\s; \l;object\u cbot\type; item; // informacja o obiekcie
+\s;
+\s; // 2) Idź do rudy tytanu i podnieś ją
+\s; item = \l;radar\u cbot\radar;(\l;TitaniumOre\u cbot\category;);// znajdź rudę tytanu
+\s; \l;goto\u cbot\goto;(item.position); // idź do pozycji
+\s; \l;grab\u cbot\grab;(); // podnieÅ› porcjÄ™ rudy
+\s;
+\s; // 3) Idź do huty i zostaw rudę
+\s; item = \l;radar\u cbot\radar;(\l;Converter\u cbot\category;); // znajdź hutę
+\s; \l;goto\u cbot\goto;(item.position); // idź do pozycji
+\s; \l;drop\u cbot\drop;(); // zostaw rudÄ™
+\s; \l;move\u cbot\move;(-2.5); // cofnij siÄ™ o 2,5 m
+\s;
+\s; // 4) Naładuj ogniwo elektryczne, jeśli jest w połowie zużyte
+\s; if ( energyCell.energyLevel < 0.5 )
+\s; { // jeśli tak:
+\s; item = \l;radar\u cbot\radar;(\l;PowerStation\u cbot\category;); // znajdź stację energetyczną
+\s; \l;goto\u cbot\goto;(item.position); // idź tam
+\s; \l;wait\u cbot\wait;(5); // poczekaj
+\s; }
+\s;}
+\n;
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/P/mlcrys3.txt b/help/P/mlcrys3.txt
new file mode 100644
index 00000000..127c7088
--- /dev/null
+++ b/help/P/mlcrys3.txt
@@ -0,0 +1,11 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/P/mlcrys4.txt b/help/P/mlcrys4.txt
new file mode 100644
index 00000000..127c7088
--- /dev/null
+++ b/help/P/mlcrys4.txt
@@ -0,0 +1,11 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/P/mllune1.txt b/help/P/mllune1.txt
new file mode 100644
index 00000000..c116dd9d
--- /dev/null
+++ b/help/P/mllune1.txt
@@ -0,0 +1,17 @@
+\b;Programy przysłane z Houston
+Poniżej znajdziesz jeden z programów napisanych przez naszych inżynierów. Umożliwia on prostszą wymianę \l;ogniw elektrycznych\u object\power;. Naładowane ogniwo elektryczne powinno znajdować się przed robotem, na ziemi.
+
+Aby uruchomić ten program, zaznacz program \c;SwitchCell1\n; na liście dostępnych dla robota programów (w lewej dolnej części ekranu), a następnie kliknij symbol strzałki \button 21;.
+\c;
+\s;extern void object::SwitchCell1()
+\s;{
+\s; \l;grab\u cbot\grab;(InFront); // podnieÅ› nowe ogniwo z przodu
+\s; \l;drop\u cbot\drop;(Behind); // i zostaw je z tyłu
+\s;
+\s; \l;grab\u cbot\grab;(EnergyCell); // wyjmij ogniwo z robota
+\s; \l;drop\u cbot\drop;(InFront); // i zostaw je z przodu
+\s;
+\s; \l;grab\u cbot\grab;(Behind); // podnieÅ› nowe ogniwo
+\s; \l;drop\u cbot\drop;(EnergyCell); // i włóż je do robota
+\s;}
+\n;
diff --git a/help/P/mllune2.txt b/help/P/mllune2.txt
new file mode 100644
index 00000000..35bf533e
--- /dev/null
+++ b/help/P/mllune2.txt
@@ -0,0 +1,7 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/P/mllune3.txt b/help/P/mllune3.txt
new file mode 100644
index 00000000..35bf533e
--- /dev/null
+++ b/help/P/mllune3.txt
@@ -0,0 +1,7 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/P/mllune4.txt b/help/P/mllune4.txt
new file mode 100644
index 00000000..8e5919ff
--- /dev/null
+++ b/help/P/mllune4.txt
@@ -0,0 +1,23 @@
+\b;Programy przysłane z Houston
+Poniżej znajdziesz jeden z programów napisanych przez naszych inżynierów. Umożliwia on naładowanie \l;ogniwa elektrycznego\u object\power; robota: idzie on do najbliższej \l;stacji energetycznej\u object\station;, czeka 5 sekund, a następnie wraca do pozycji wyjściowej.
+
+Wskazówka: Kliknięcie elementu programu podkreślonego na niebiesko spowoduje wyświetlenie tekstu opisującego ten element na komunikatorze SatCom. Teksty po podwójnych ukośnikach \c;//\n; nie są częścią programu ale komentarzem pozwalającym na lepsze zrozumienie programu.
+\c;
+\s;extern void object::Recharge1()
+\s;{
+\s; \l;point\u cbot\type; start; // zmienna pozycji startowej
+\s; \l;object\u cbot\type; item; // informacja o stacji energetycznej
+\s;
+\s; start = position; // zachowaj pozycjÄ™ startowÄ…
+\s;
+\s; item = \l;radar\u cbot\radar;(\l;PowerStation\u cbot\category;); // znajdź stację
+\s; \l;goto\u cbot\goto;(item.position); // idź do stacji
+\s; \l;wait\u cbot\wait;(5); // poczekaj 5 sekund
+\s;
+\s; \l;goto\u cbot\goto;(start); // wróć do pozycji startowej
+\s;}
+\n;
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/P/mlnull.txt b/help/P/mlnull.txt
new file mode 100644
index 00000000..b68188cd
--- /dev/null
+++ b/help/P/mlnull.txt
@@ -0,0 +1,3 @@
+\b;Programy przysłane z Houston
+Nie przysłano żadnego programu.
+Jeśli uważasz, że napisanie programu pomoże Ci w wypełnieniu tej misji, nie krępuj się, ale możesz liczyć tylko na siebie.
diff --git a/help/P/mlorph1.txt b/help/P/mlorph1.txt
new file mode 100644
index 00000000..945ce924
--- /dev/null
+++ b/help/P/mlorph1.txt
@@ -0,0 +1,15 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/P/mlorph2.txt b/help/P/mlorph2.txt
new file mode 100644
index 00000000..24ff19e3
--- /dev/null
+++ b/help/P/mlorph2.txt
@@ -0,0 +1,14 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/P/mlsaari1.txt b/help/P/mlsaari1.txt
new file mode 100644
index 00000000..127c7088
--- /dev/null
+++ b/help/P/mlsaari1.txt
@@ -0,0 +1,11 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/P/mlsaari2.txt b/help/P/mlsaari2.txt
new file mode 100644
index 00000000..2f564bb0
--- /dev/null
+++ b/help/P/mlsaari2.txt
@@ -0,0 +1,31 @@
+\b;Programy przysłane z Houston
+Uruchom natychmiast program \c;KillAnt1\n; na Twoim \l;dziale na kołach\u object\botfr;, zabezpieczy on Twoją zachodnią flankę. W międzyczasie możesz opracować strategię obrony.
+\c;
+\s;extern void object::KillAnt1()
+\s;{
+\s; \l;object\u cbot\type; item; // informacja o obiekcie
+\s;
+\s; \l;goto\u cbot\goto;(-30, 0); // idź na zachód
+\s; \l;aim\u cbot\aim;(0); // celuj w poziomie
+\s;
+\s; \l;while\u cbot\while; ( true ) // powtarzaj w nieskończoność:
+\s; {
+\s; item = \l;radar\u cbot\radar;(\l;AlienAnt\u cbot\category;, 0, 360, 0, 40);
+\s; \l;if\u cbot\if; ( item != null ) // wykryto mrówkę?
+\s; {
+\s; \l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));
+\s; \l;fire\u cbot\fire;(0.5); // strzelaj przez 0,5 s
+\s; }
+\s; \l;wait\u cbot\wait;(1); // czekaj 1 sekundÄ™
+\s; }
+\s;}
+\n;
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/P/mlsaari3.txt b/help/P/mlsaari3.txt
new file mode 100644
index 00000000..0aea594d
--- /dev/null
+++ b/help/P/mlsaari3.txt
@@ -0,0 +1,12 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/P/mlterra1.txt b/help/P/mlterra1.txt
new file mode 100644
index 00000000..d1b12c2f
--- /dev/null
+++ b/help/P/mlterra1.txt
@@ -0,0 +1,30 @@
+\b;Programy przysłane z Houston
+Zgodnie z danymi dostarczonymi przez satelitę, nasi inżynierowie napisali dwa programy. Pierwszy z nich prowadzi \l;robota osłaniacza\u object\botshld; przez wąską dolinę na północ, w pobliże klucza. Możesz za nim iść nie obawiając się żadnego ataku:
+\c;
+\s;extern void object::Outward()
+\s;{
+\s; \l;shield\u cbot\shield;(1,15); // uaktywnij osłonę
+\s; \l;goto\u cbot\goto;(6,160); // podejdź do klucza
+\s; \l;shield\u cbot\shield;(0,15); // wyłącz osłonę
+\s;}
+\n;
+Drugi program kieruje \l;robota osłaniacza\u object\botshld; z powrotem do \l;statku kosmicznego\u object\base;:
+\c;
+\s;extern void object::Return()
+\s;{
+\s; \l;shield\u cbot\shield;(1,15); // uaktywnij osłonę
+\s; \l;goto\u cbot\goto;(8,60); // wróć na statek kosmiczny
+\s; \l;shield\u cbot\shield;(0,15); // wyłącz osłonę
+\s;}
+\n;
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/P/mlterra2.txt b/help/P/mlterra2.txt
new file mode 100644
index 00000000..24ff19e3
--- /dev/null
+++ b/help/P/mlterra2.txt
@@ -0,0 +1,14 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/P/mlterra3.txt b/help/P/mlterra3.txt
new file mode 100644
index 00000000..24ff19e3
--- /dev/null
+++ b/help/P/mlterra3.txt
@@ -0,0 +1,14 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/P/mlterra4.txt b/help/P/mlterra4.txt
new file mode 100644
index 00000000..6076c65f
--- /dev/null
+++ b/help/P/mlterra4.txt
@@ -0,0 +1,50 @@
+\b;Programy przysłane z Houston
+Poniżej znajdziesz jeden z programów napisanych przez naszych inżynierów.
+
+Poleca on \l;osłaniaczowi\u object\botshld; śledzenie i ochronę \l;działa fazowego\u object\botphaz;.
+\c;
+\s;extern void object::FollowPhazer()
+\s;{
+\s; \l;object\u cbot\type; item; // informacje o dziale fazowym
+\s; \l;point\u cbot\type; dest; // pozycja docelowa
+\s; \l;float\u cbot\type; dist; // odległość do działa fazowego
+\s;
+\s; item = \l;radar\u cbot\radar;(\l;PhazerShooter\u cbot\category;);
+\s; \l;if\u cbot\if; ( item == null )
+\s; {
+\s; \l;message\u cbot\message;("Nie znaleziono działa fazowego");
+\s; \l;return\u cbot\return;; // zatrzymaj program
+\s; }
+\s; \l;shield\u cbot\shield;(1, 25); // aktywuj osłonę
+\s;
+\s; \l;while\u cbot\while; ( true ) // powtarzaj w nieskończoność
+\s; {
+\s; item = \l;radar\u cbot\radar;(PhazerShooter);// znajdź działo fazowe
+\s; \l;if\u cbot\if; ( item == null ) break;
+\s;
+\s; dist = \l;distance\u cbot\dist;(item.position, position);
+\s; \l;if\u cbot\if; ( dist < 5 )
+\s; { // jeśli jest bliżej niż 5 m:
+\s; \l;wait\u cbot\wait;(1); // czekaj
+\s; }
+\s; \l;else\u cbot\if; // w przeciwnym przypadku:
+\s; { // Oblicz pozycję 5 m przed działem fazowym
+\s; dest.x = (item.position.x-position.x)*((dist-5)/dist)+position.x;
+\s; dest.y = (item.position.y-position.y)*((dist-5)/dist)+position.y;
+\s; dest.z = (item.position.z-position.z)*((dist-5)/dist)+position.z;
+\s; \l;goto\u cbot\goto;(dest, 0, 1, 1); // i idź tam
+\s; }
+\s; }
+\s;}
+\n;
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/P/mltropi1.txt b/help/P/mltropi1.txt
new file mode 100644
index 00000000..8013d6b8
--- /dev/null
+++ b/help/P/mltropi1.txt
@@ -0,0 +1,8 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/P/mltropi3.txt b/help/P/mltropi3.txt
new file mode 100644
index 00000000..ac157ff4
--- /dev/null
+++ b/help/P/mltropi3.txt
@@ -0,0 +1,27 @@
+\b;Programy przysłane z Houston
+Usprawniliśmy program ładowania ogniw. Po dotarciu do \l;stacji energetycznej\u object\station; robot nie czeka już dokładnie 5 sekund, ale tylko do czasu pełnego naładowania \l;ogniwa elektrycznego\u object\power;. Po powrocie na pozycję wyjściową robot wyświetla komunikat na ekranie.
+\c;
+\s;extern void object::Recharge2()
+\s;{
+\s; \l;point\u cbot\type; start; // zmienna pozycji startowej
+\s; \l;object\u cbot\type; item; // informacja o stacji energetycznej
+\s;
+\s; start = position; // zachowaj pozycjÄ™ startowÄ…
+\s;
+\s; item = \l;radar\u cbot\radar;(\l;PowerStation\u cbot\category;); // znajdź stację
+\s; \l;goto\u cbot\goto;(item.position); // idź do stacji energetycznej
+\s;
+\s; \l;while\u cbot\while; ( \l;energyCell.energyLevel\u cbot\object; < 1 )
+\s; {
+\s; \l;wait\u cbot\wait;(1); // poczekaj aż się naładuje
+\s; }
+\s;
+\s; \l;goto\u cbot\goto;(start); // wróć do pozycji startowej
+\s; \l;message\u cbot\message;("Åadowanie zakoÅ„czone");
+\s;}
+\n;
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;SwitchCell1\u mllune1;\n;
+o \c;\l;Recharge1\u mllune4;\n;
diff --git a/help/P/mltropi4.txt b/help/P/mltropi4.txt
new file mode 100644
index 00000000..ef901579
--- /dev/null
+++ b/help/P/mltropi4.txt
@@ -0,0 +1,9 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/P/mltropi5.txt b/help/P/mltropi5.txt
new file mode 100644
index 00000000..ef901579
--- /dev/null
+++ b/help/P/mltropi5.txt
@@ -0,0 +1,9 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/P/mlvolca1.txt b/help/P/mlvolca1.txt
new file mode 100644
index 00000000..5a1289b4
--- /dev/null
+++ b/help/P/mlvolca1.txt
@@ -0,0 +1,61 @@
+\b;Programy przysłane z Houston
+Ponieważ w tej misji potrzebne bÄ™dzie mnóstwo tytanu, po raz kolejny usprawniliÅ›my program \c;CollectTitanium\n;. Gromadzi on caÅ‚Ä… seriÄ™ kostek tytanu na wolnej powierzchni, wiÄ™c możesz mu już pozwolić pracować zupeÅ‚nie samodzielnie. Åaduje on również swoje ogniwo elektryczne w \l;stacji energetycznej\u object\station; jeÅ›li jest to konieczne.
+\c;
+\s;extern void object::CollectTitanium3()
+\s;{
+\s; // 1) Deklaracje zmiennych.
+\s; \l;object\u cbot\type; item; // informacja o obiekcie
+\s;
+\s; \l;while\u cbot\while; (true) // informacja o obiekcie
+\s; {
+\s;
+\s; // 2) Idź do rudy tytanu i podnieś ją
+\s; item = \l;radar\u cbot\radar;(\l;TitaniumOre\u cbot\category;);// znajdź rudę tytanu
+\s; \l;goto\u cbot\goto;(item.position); // idź do pozycji
+\s; \l;grab\u cbot\grab;(); // podnieÅ› porcjÄ™ rudy
+\s;
+\s; // 3) Idź do huty i zostaw rudę
+\s; item = \l;radar\u cbot\radar;(\l;Converter\u cbot\category;); // znajdź hutę
+\s; \l;goto\u cbot\goto;(item.position); // idź do pozycji
+\s; \l;drop\u cbot\drop;(); // zostaw rudÄ™
+\s; \l;move\u cbot\move;(-2.5); // cofnij siÄ™ o 2,5 m
+\s;
+\s; // 4) Poczekaj na przetopienie rudy i zabierz tytan
+\s; \l;do\u cbot\do;
+\s; {
+\s; \l;wait\u cbot\wait;(1); // poczekaj na kostkÄ™ tytanu
+\s; item = \l;radar\u cbot\radar;(\l;Titanium\u cbot\category;, 0, 45, 0, 5);
+\s; }
+\s; \l;while\u cbot\while; ( item == null );
+\s; \l;goto\u cbot\goto;(item.position);
+\s; \l;grab\u cbot\grab;(); // weź ją
+\s;
+\s; // 5) Idź do wolnego miejsca i zostaw ją
+\s; \l;goto\u cbot\goto;(\l;space\u cbot\space;(position)); // idź do wolnego miejsca
+\s; \l;drop\u cbot\drop;(); // zostaw tytan
+\s;
+\s; // 6) Naładuj ogniwo elektryczne, jeśli jest w połowie zużyte
+\s; \l;if\u cbot\if; ( energyCell.energyLevel < 0.5 )
+\s; { // jeśli tak:
+\s; item = \l;radar\u cbot\radar;(\l;PowerStation\u cbot\category;);
+\s; \l;if\u cbot\if; ( item != null ) // czy znaleziono stacjÄ™
+\s; {
+\s; \l;goto\u cbot\goto;(item.position); // idź tam
+\s; \l;while\u cbot\while; ( energyCell.energyLevel < 1 )
+\s; { // do czasu naładowania:
+\s; \l;wait\u cbot\wait;(1); // czekaj
+\s; }
+\s; }
+\s; }
+\s; }
+\s;}
+\n;
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/P/mlvolca2.txt b/help/P/mlvolca2.txt
new file mode 100644
index 00000000..6aa428d8
--- /dev/null
+++ b/help/P/mlvolca2.txt
@@ -0,0 +1,53 @@
+\b;Programy przysłane z Houston
+Napisaliśmy program zajmujący się ładowaniem ogniwa elektrycznego \l;wieży obronnej\u object\tower;:
+
+1) Idź do \l;wieży obronnej\u object\tower;.
+2) Poczekaj aż \l;ogniwo elektryczne\u object\power; będzie w 80% puste.
+3) Zabierz \l;ogniwo elektryczne\u object\power; i doładuj je w \l;stacji energetycznej\u object\station;.
+4) Odnieś je do \l;wieży obronnej\u object\tower;.
+
+W celu zredukowania czasu gdy wieża pozostaje bez zasilania, zbuduj \l;stację energetyczną\u object\station; możliwie najbliżej wieży. Przydatną sztuczką jest zostawienie ogniwa elektrycznego na ziemi przed wieżą. Osy będą atakowały ogniwo i jeśli pierwszy strzał będzie niecelny lub osa przybędzie gdy wieża będzie bez zasilania, zniszczone zostanie tylko ogniw, a nie wieża obronna.
+\c;
+\s;extern void object::ServiceTower1()
+\s;{
+\s; \l;object\u cbot\object; tower; // informacje o wieży
+\s; \l;object\u cbot\object; station; // informacje o stacji
+\s;
+\s; // 1) idź do wieży obronnej
+\s; tower = \l;radar\u cbot\radar;(DefenseTower); // znajdź wieżę
+\s; \l;goto\u cbot\goto;(tower.position); // i idź tam
+\s;
+\s; \l;while\u cbot\while; ( true ) // powtarzaj w nieskończoność
+\s; {
+\s; // 2) poczekaj na wyczerpanie ogniwa elektrycznego
+\s; \l;while\u cbot\while; ( tower.energyCell.energyLevel > 0.2 )
+\s; {
+\s; \l;wait\u cbot\wait;(2);
+\s; }
+\s; \l;grab\u cbot\grab;(); // weź ogniwo elektryczne
+\s;
+\s; // 3) idź do elektrowni i naładuj je
+\s; station = \l;radar\u cbot\radar;(PowerStation);
+\s; \l;goto\u cbot\goto;(station.position); // idź tam
+\s; \l;while\u cbot\while; ( load.energyLevel < 1 )
+\s; {
+\s; \l;wait\u cbot\wait;(1); // poczekaj aż się naładuje
+\s; }
+\s;
+\s; // 4) wróć do wieży obronnej
+\s; \l;goto\u cbot\goto;(tower.position); // idź do wieży
+\s; \l;drop\u cbot\drop;(); // zostaw ogniwo elektryczne
+\s; }
+\s;}
+\n;
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/P/mlvolca3.txt b/help/P/mlvolca3.txt
new file mode 100644
index 00000000..945ce924
--- /dev/null
+++ b/help/P/mlvolca3.txt
@@ -0,0 +1,15 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/P/mlvolca4.txt b/help/P/mlvolca4.txt
new file mode 100644
index 00000000..945ce924
--- /dev/null
+++ b/help/P/mlvolca4.txt
@@ -0,0 +1,15 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/P/mlvolca5.txt b/help/P/mlvolca5.txt
new file mode 100644
index 00000000..945ce924
--- /dev/null
+++ b/help/P/mlvolca5.txt
@@ -0,0 +1,15 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/P/mlvolca6.txt b/help/P/mlvolca6.txt
new file mode 100644
index 00000000..945ce924
--- /dev/null
+++ b/help/P/mlvolca6.txt
@@ -0,0 +1,15 @@
+\b;Programy przysłane z Houston
+Nie napisaliśmy żadnego programu specjalnie dla tej misji. Jednakże możesz napisać własny program, jeśli uważasz, że przyda się on podczas tej misji.
+
+\b;Archiwum
+Lista programów przysłanych w poprzednich misjach:
+
+o \c;\l;ServiceTower1\u mlvolca2;\n;
+o \c;\l;CollectTitanium3\u mlvolca1;\n;
+o \c;\l;KillAnt1\u mlsaari2;\n;
+o \c;\l;CollectTitanium2\u mlcrys2;\n;
+o \c;\l;CollectTitanium1\u mlcrys1;\n;
+o \c;\l;Recharge2\u mltropi3;\n;
+o \c;\l;Recharge1\u mllune4;\n;
+o \c;\l;SwitchCell1\u mllune1;\n;
+
diff --git a/help/P/mscent1.txt b/help/P/mscent1.txt
new file mode 100644
index 00000000..9fc4d2b2
--- /dev/null
+++ b/help/P/mscent1.txt
@@ -0,0 +1,20 @@
+\b;RozwiÄ…zanie
+W małej dolinie na północnym wschodzie znajdziesz kilka przydatnych przedmiotów:
+o \l;Recykler\u object\botrecy; umożliwiający wytworzenie pierwszej \l;kostki tytanu\u object\titan;.
+o \l;Transporter na nogach\u object\botgs;, bardzo przydatny we wspinaniu siÄ™ po stromych zboczach.
+o Prawie pełne \l;atomowe ogniwo elektryczne\u object\atomic;.
+
+1) Zasil \l;transporter na nogach\u object\botgs; \l;atomowym ogniwem elektrycznym\u object\atomic; i użyj go do dostarczenia \l;kostki tytanu\u object\titan; na \l;statek kosmiczny\u object\base;. Wybierz bezpośrednią drogę przez góry.
+
+2) Użyj tytanu do zbudowania \l;huty\u object\convert;. Aby otrzymać mnóstwo tytanu, uruchom program \c;CollectTitanium3\n; na \l;transporterze na nogach\u object\botgs;.
+
+3) Zatrzymaj program i użyj transportera do zbierania \l;rudy uranu\u object\uranore; w drugiej małej dolinie na wschodzie. I tym razem nie idź przez dolinę pełną pełzających mrówek, ale wybierz bezpośrednią drogę przez góry.
+
+4) Zbuduj \l;działo latające\u object\botfj; i zasil je \l;atomowym ogniwem elektrycznym\u object\atomic;. Jeśli polecisz na południowy wschód, dotrzesz w pobliże gniazda mrówek. Zabij je wszystkie i dostarcz kulę \l;materii organicznej\u object\bullet; na \l;statek kosmiczny\u object\base;.
+
+5) Zbuduj \l;laboratorium\u object\labo;, umieść \l;materię organiczną\u object\bullet; na jego platformie i kliknij przycisk \button 110;, aby otrzymać plany działka strzelającego materią organiczną.
+
+6) Zbuduj \l;działo organiczne na nogach\u object\botos;, dostarcz je na pokład statku kosmicznego i odleć.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mscent2.txt b/help/P/mscent2.txt
new file mode 100644
index 00000000..62753e54
--- /dev/null
+++ b/help/P/mscent2.txt
@@ -0,0 +1,5 @@
+\b;RozwiÄ…zanie
+Podjedź \l;działem organicznym na nogach\u object\botos; do każdej z platform przed celami i zestrzel wszystkie widoczne cele jedną serią, poruszając myszą w trakcie strzelania. Do zniszczenia wszystkich celów muszą wystarczyć tylko 4 serie strzałów.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mscent3.txt b/help/P/mscent3.txt
new file mode 100644
index 00000000..7e9a05c2
--- /dev/null
+++ b/help/P/mscent3.txt
@@ -0,0 +1,11 @@
+\b;RozwiÄ…zanie
+Do zabicia wszystkich mrówek i pająków na tym rozległym, górzystym terenie, potrzebne będzie \l;latające działo organiczne\u object\botfj; zasilone \l;atomowym ogniwem elektrycznym\u object\atomic;. W małej dolinie na południowym wschodzie znajdziesz wszystkie potrzebne rzeczy: \l;kostki tytanu\u object\titanium;, \l;ogniwa elektryczne\u object\power; a nawet sprawny \l;transporter latające\u object\botgj;.
+
+1) Zbuduj i zasil \l;radar\u object\radar; oraz \l;działo latające\u object\botfj;. Zabij mrówkę pilnującą \l;rudy uranu\u object\uranore; na północy.
+
+2) Użyj porzuconej \l;elektrowni atomowej\u object\nuclear; na wzgórzu powyżej oraz \l;transportera latającego\u object\botgj; do wyprodukowania kilku \l;atomowych ogniw elektrycznych\u object\atomic;, następnie jednym z nich zasil \l;działo latające\u object\botfj;.
+
+3) Pozbądź się wszystkich owadów w okolicy. Jedna z mrówek ukrywa się w jamie na północnym zachodzie: najłatwiej ją trafić zbliżając się z zachodu, poprzez głęboką dolinę, .
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mscent4.txt b/help/P/mscent4.txt
new file mode 100644
index 00000000..4306c899
--- /dev/null
+++ b/help/P/mscent4.txt
@@ -0,0 +1,12 @@
+\b;RozwiÄ…zanie
+1) Znajdź \l;tytan\u object\titan;.
+2) Zbuduj \l;hutÄ™\u object\convert;.
+3) Zbuduj \l;centrum badawcze\u object\research;.
+4) Uruchom \button 66;.
+5) Zbuduj robota \l;uderzacza\u object\bottump;.
+6) Umieść uderzacza w pobliżu pozostałości statku kosmicznego i "uderz" w ziemię.
+7) Szybko zabierz \l;czarną skrzynkę\u object\bbox; i przynieś ją na pokład \l;statku kosmicznego\u object\base;.
+8) Zabierz ze sobą robota uderzacza i odleć.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mscent5.txt b/help/P/mscent5.txt
new file mode 100644
index 00000000..10671f9b
--- /dev/null
+++ b/help/P/mscent5.txt
@@ -0,0 +1,8 @@
+\b;RozwiÄ…zanie
+1) Uderz w pokład \l;statku kosmicznego\u object\base;. Nie musisz nigdzie się ruszać robotem \l;uderzaczem\u object\bottump;.
+2) Znajdź \l;działo organiczne\u object\botoj; około 70 metrów na wschód.
+3) Zabij wszystkie \l;mrówki\u object\ant;, póki jeszcze leżą na plecach.
+4) Odleć.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mscrys1.txt b/help/P/mscrys1.txt
new file mode 100644
index 00000000..89819c2e
--- /dev/null
+++ b/help/P/mscrys1.txt
@@ -0,0 +1,12 @@
+\b;RozwiÄ…zanie
+1) Zbuduj \l;fabrykę robotów\u object\factory;.
+2) Zbuduj \l;transporter latajÄ…cy\u object\botgj;.
+3) Zanieś \l;kostkę tytanu\u object\titan; na najwyższy punkt.
+4) Zbuduj tam \l;radar\u object\radar;.
+5) Zbuduj \l;centrum badawcze\u object\research; obok statku kosmicznego.
+6) Rozpocznij \button 68;.
+7) Zbuduj \l;wieżę obronną\u object\tower; obok radaru.
+8) Gdy zostaną zniszczone wszystkie robale możesz wrócić na statek kosmiczny i odlecieć.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mscrys2.txt b/help/P/mscrys2.txt
new file mode 100644
index 00000000..3ea43353
--- /dev/null
+++ b/help/P/mscrys2.txt
@@ -0,0 +1,17 @@
+\b;RozwiÄ…zanie
+1) Zbuduj \l;fabrykę robotów\u object\factory;.
+2) Zbuduj \l;szperacza latajÄ…cego\u object\botsj;.
+3) Przebadaj ziemię w pobliżu ogromnych kryształów, aż pojawi się \l;czerwony plus\u object\stonspot;.
+4) Zbuduj \l;kopalnię\u object\derrick; w pobliżu czerwonego plusa.
+5) Zbuduj \l;hutÄ™\u object\convert;.
+
+Zbudowanie pary kopalni i huty zapewnia nieograniczone zaopatrzenie w \l;tytan\u object\titan;. Aby zostawić to zadanie robotowi, uruchom program \c;CollectTitanium2\n;.
+
+6) Przebadaj obszar w pobliżu statku kosmicznego. \l;Zielony plus\u object\enerspot; oznacza miejsce, w którym można zbudować \l;stację energetyczną\u object\station;.
+7) Zbuduj \l;radar\u object\radar;.
+8) Zbuduj \l;działo latające\u object\botfj;.
+9) Zabij wszystkie robale.
+10) Wróć na statek i odleć.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mscrys3.txt b/help/P/mscrys3.txt
new file mode 100644
index 00000000..9edd91f0
--- /dev/null
+++ b/help/P/mscrys3.txt
@@ -0,0 +1,7 @@
+\b;RozwiÄ…zanie
+Jeśli zgubisz robota, zostawi on czarną skrzynkę gdzieś na południowy zachód od Twojego statku kosmicznego, w obszarze otoczonym przez kryształy.
+
+Jeśli skończy Ci się energia przed odzyskaniem czarnej skrzynki, możesz użyć drugiego transportera, który jest na statku kosmicznym.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mscrys4.txt b/help/P/mscrys4.txt
new file mode 100644
index 00000000..63a4cb13
--- /dev/null
+++ b/help/P/mscrys4.txt
@@ -0,0 +1,7 @@
+\b;RozwiÄ…zanie
+Gdzieś na północnym wschodzie w samej dolinie, znajduje się w pełni sprawna \l;stacja energetyczna\u object\station;. Na południowym zachodzie możesz znaleźć kilka \l;ogniw energetycznych\u object\power;.
+
+Kilka sprawnych dział zostało porzuconych w dolinie i w jej pobliżu; użyj ich do zabicia wszystkich mrówek. Używając \l;transportera latającego\u object\botgj; możesz odzyskać \l;czarną skrzynkę\u object\bbox; znajdującą się za wrakiem statku kosmicznego i odlecieć.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mslune1.txt b/help/P/mslune1.txt
new file mode 100644
index 00000000..7043a1fb
--- /dev/null
+++ b/help/P/mslune1.txt
@@ -0,0 +1,15 @@
+\b;RozwiÄ…zanie
+Aby zbudować \l;centrum badawcze\u object\research;, połóż \l;kostkę tytanu\u object\titan; na płaskiej powierzchni w pobliżu statku kosmicznego. Możesz \l;sam\u object\human; nieść kostkę lub użyć dostępnego\l;transportera\u object\botgr;.
+
+Jeśli użyjesz robota, odsuń go od kostki, aby nie przeszkadzał podczas budowy. Aby przenieść zaznaczenie z robota na siebie (pamiętaj, że tylko Ty możesz budować), naciśnij klawisz \key;\key human;\norm;.
+
+Stań w pobliżu \l;kostki tytanu\u object\titan; i zbuduj \l;centrum badawcze\u object\research; \button 163;. Zasil je \l;ogniwem elektrycznym\u object\power;, zaznacz budynek i kliknij symbol \button 65; aby wykonać .
+
+W ten sam sposób zbuduj \l;fabrykę robotów\u object\factory; i zanieś do jej środka \l;kostkę tytanu\u object\titan;. Zbuduj \l;transporter latający\u object\botgj; klikając symbol \button 139; a następnie zasil go \l;ogniwem elektrycznym\u object\power;.
+
+Możesz sam zwiedzać okolicę jeśli chcesz oszczędzać energię. Na dnie kilku kraterów na północ od statku kosmicznego znajdziesz kawałki rudy tytanu. Postawienie \l;flagi\u object\flag; może przyspieszyć znalezienie tego miejsca w przyszłości.
+
+Zbierz 4 kawałki \l;rudy tytanu\u object\titanore; i dostarcz je na pokład \l;statku kosmicznego\u object\base;. Zabierz ze sobą \l;transporter latający\u object\botgj; oraz \l;transporter na kołach\u object\botgr; i odleć \button 28;.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mslune2.txt b/help/P/mslune2.txt
new file mode 100644
index 00000000..e3001860
--- /dev/null
+++ b/help/P/mslune2.txt
@@ -0,0 +1,7 @@
+\b;RozwiÄ…zanie
+Jeśli Twój robot nagle wybuchnie, oznacza to, że za dużo razy uderzył w stalowe elementy. Leć trochę wolniej, a wtedy robot nie zostanie uszkodzony, nawet jeśli wpadnie na przeszkodę.
+
+Jeśli nie możesz wystartować po wykonaniu ćwiczenia, nie wszystkie cele zostały zaliczone. Przeleć przez okręgi oznaczone plusem w środku.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mslune3.txt b/help/P/mslune3.txt
new file mode 100644
index 00000000..e3001860
--- /dev/null
+++ b/help/P/mslune3.txt
@@ -0,0 +1,7 @@
+\b;RozwiÄ…zanie
+Jeśli Twój robot nagle wybuchnie, oznacza to, że za dużo razy uderzył w stalowe elementy. Leć trochę wolniej, a wtedy robot nie zostanie uszkodzony, nawet jeśli wpadnie na przeszkodę.
+
+Jeśli nie możesz wystartować po wykonaniu ćwiczenia, nie wszystkie cele zostały zaliczone. Przeleć przez okręgi oznaczone plusem w środku.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mslune4.txt b/help/P/mslune4.txt
new file mode 100644
index 00000000..520f6431
--- /dev/null
+++ b/help/P/mslune4.txt
@@ -0,0 +1,19 @@
+\b;RozwiÄ…zanie
+1) Z jedynej dostępnej kostki tytanu zbuduj hutę \button 162;.
+
+2) Umieść porcję rudy tytanu na środku platformy huty.
+
+3) Z powstałej kostki tytanu zbuduj stację energetyczną \button 164;.
+
+4) Jeśli nie chcesz sam szukać czarnej skrzynki, zbuduj radar \button 168; a pojawi się ona na mapce, na północ od Ciebie, na dnie krateru, obok wraku statku kosmicznego i szczątków poprzedniej ekspedycji.
+
+5) Umieść transportery na środku platformy stacji energetycznej aby je doładować. Energia w ich ogniwach powinna wystarczyć na wysłanie ich na platformę.
+
+6) Użyj transportera latającego do dostarczenia czarną skrzynkę na statek kosmiczny.
+
+7) Zabierz ze sobÄ… na statek kosmiczny transportery i czarnÄ… skrzynkÄ™.
+
+8) Odleć.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/msorph1.txt b/help/P/msorph1.txt
new file mode 100644
index 00000000..f6cf5c5b
--- /dev/null
+++ b/help/P/msorph1.txt
@@ -0,0 +1,15 @@
+\b;RozwiÄ…zanie
+1) Szybko zbuduj \l;stację odgromnikową\u object\captor; w pobliżu niebieskiej flagi.
+Wszystkie pozostałe budynki powinny znaleźć się w jej \button 41;.
+2) Zanieś puste \l;ogniwa elektryczne\u object\power; pod stację odgromnikową. Zostaną one naładowane po uderzeniu pioruna.
+3) Zbuduj \l;kopalniÄ™\u object\derrick;.
+4) Zbuduj \l;hutÄ™\u object\convert;.
+5) Uruchom program \c;CollectTitanium3\n;, aby rozpocząć produkcję \l;tytanu\u object\titan;.
+6) Zbuduj \l;fabrykę robotów\u object\factory;.
+7) Zbuduj \l;latające działo organiczne\u object\botoj;.
+8) Zbuduj \l;radar\u object\radar;.
+9) Znajdź i zniszcz wszystkie \l;mrówki\u object\ant;.
+10) Wróć na \l;statek kosmiczny\u object\base; i odleć.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/msorph2.txt b/help/P/msorph2.txt
new file mode 100644
index 00000000..de0f3cd1
--- /dev/null
+++ b/help/P/msorph2.txt
@@ -0,0 +1,9 @@
+\b;RozwiÄ…zanie
+W dolinie na południe od statku kosmicznego znajdziesz \l;radar\u object\radar;, \l;stację odgromnikową\u object\captor;, \l;ogniwo elektryczne\u object\power; oraz \l;latające działo organiczne\u object\botoj;. Korzystając z tego możesz zabić mrówki w pobliżu statku i znaleźć \l;czarną skrzynkę\u object\bbox; w pobliżu szczątków statku kosmicznego pierwszej ekspedycji na północy.
+
+Zbuduj szereg \l;stacji odgromnikowych\u object\captor; wzdłuż naturalnej ścieżki północnych szczytów gór. 5 lub 6 odgromników powinno zapewnić wystarczającą ochronę przed piorunami.
+
+Dostarcz czarną skrzynkę na pokład \l;statku kosmicznego\u object\base; i odleć.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mssaari1.txt b/help/P/mssaari1.txt
new file mode 100644
index 00000000..e50e6629
--- /dev/null
+++ b/help/P/mssaari1.txt
@@ -0,0 +1,22 @@
+\b;RozwiÄ…zanie
+1) W zniszczonej fabryce robotów znajdziesz \l;kostkę tytanu\u object\titan;. Wykorzystaj ją do budowy \l;stacji energetycznej\u object\station;.
+
+2) \l;Recykler\u object\botrecy; jest zaprojektowany to przetapiania wraków robotów z powrotem na użyteczne kostki tytanu.
+
+3) Zbuduj \l;warsztat\u object\repair; i \l;radar\u object\radar;.
+
+4) Naładuj jedno z dostępnych \l;ogniw elektrycznych\u object\power; i zasil nim \l;działo latające\u object\botfj;.
+
+5) Zabij wszystkie \l;mrówki\u object\ant;. Pamiętaj o regularnym naprawianiu i ładowaniu ogniwa działa. Sprawdzaj poziom osłon i energii.
+
+6) Naładuj ogniwo elektryczne \l;transportera\u object\botgr; i wyślij go na szczyt...
+ a) Na pierwszy poziom wjedź rampą od wschodu;
+ b) Na pierwszym poziomie jedź na wschód do drugiej rampy;
+ c) Na drugim poziomie jedź na południe do trzeciej rampy;
+ d) Na trzecim poziomie jedź na zachód aby dotrzeć na szczyt;
+...następnie, z rudą, jedź bezpośrednią trasą prosto do statku kosmicznego, aby zaoszczędzić pozostałą energię.
+
+7) Wróć na pokład statku kosmicznego i odleć.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mssaari2.txt b/help/P/mssaari2.txt
new file mode 100644
index 00000000..1920cc8b
--- /dev/null
+++ b/help/P/mssaari2.txt
@@ -0,0 +1,9 @@
+\b;RozwiÄ…zanie
+Uruchom natychmiast program \c;KillAnt1\n; na Twoim \l;dziale na kołach\u object\botfr; a zajmie się on pierwszą falą ataku mrówek zmierzających z zachodu.
+
+Następnie zbuduj dwie \l;wieże obronne\u object\tower;, jedną na północ od \l;statku kosmicznego\u object\base;, drugą na południu (musisz zrobić to BARDZO szybko). Podczas budowania, użyj \l;transportera\u object\botgr; do zdobycia \l;ogniwa elektrycznego\u object\power;.
+
+Jak tylko poradzisz sobie z kolejnymi falami ataków około piętnastu \l;mrówek\u object\ant;, zajmij się pozostałymi mrówkami, które nie zaatakowały. W celu ich wykrycia zbuduj \l;radar\u object\radar; a także \l;hutę\u object\convert;, \l;fabrykę robotów \u object\factory;, \l;stację energetyczną\u object\station; i \l;działo latające\u object\botfj; aby się ich pozbyć...
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mssaari3.txt b/help/P/mssaari3.txt
new file mode 100644
index 00000000..e1e1205b
--- /dev/null
+++ b/help/P/mssaari3.txt
@@ -0,0 +1,9 @@
+\b;RozwiÄ…zanie
+Na poczÄ…tku zbuduj \l;radar\u object\radar;.
+
+Wygląda na to, że \l;mrówki\u object\ant; uciekają od Ciebie. Spróbuj krążyć dookoła każdej z nich aż znajdą się pomiędzy Tobą a \l;miną\u object\mine;. Pójdą wtedy w stronę miny, która wybuchnie i je zabije.
+
+Następnie przynieś \l;czarną skrzynkę\u object\bbox; na pokład statku. Możesz ją znaleźć obok porzuconego statku kosmicznego.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/msterra1.txt b/help/P/msterra1.txt
new file mode 100644
index 00000000..86e4e699
--- /dev/null
+++ b/help/P/msterra1.txt
@@ -0,0 +1,6 @@
+\b;RozwiÄ…zanie
+Niestety nie jest dostępne rozwiązanie dla tej misji.
+Teraz wszystko zależy tylko od Ciebie...
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/msterra2.txt b/help/P/msterra2.txt
new file mode 100644
index 00000000..86e4e699
--- /dev/null
+++ b/help/P/msterra2.txt
@@ -0,0 +1,6 @@
+\b;RozwiÄ…zanie
+Niestety nie jest dostępne rozwiązanie dla tej misji.
+Teraz wszystko zależy tylko od Ciebie...
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/msterra3.txt b/help/P/msterra3.txt
new file mode 100644
index 00000000..86e4e699
--- /dev/null
+++ b/help/P/msterra3.txt
@@ -0,0 +1,6 @@
+\b;RozwiÄ…zanie
+Niestety nie jest dostępne rozwiązanie dla tej misji.
+Teraz wszystko zależy tylko od Ciebie...
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/msterra4.txt b/help/P/msterra4.txt
new file mode 100644
index 00000000..86e4e699
--- /dev/null
+++ b/help/P/msterra4.txt
@@ -0,0 +1,6 @@
+\b;RozwiÄ…zanie
+Niestety nie jest dostępne rozwiązanie dla tej misji.
+Teraz wszystko zależy tylko od Ciebie...
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/msterre1.txt b/help/P/msterre1.txt
new file mode 100644
index 00000000..b567bf81
--- /dev/null
+++ b/help/P/msterre1.txt
@@ -0,0 +1,11 @@
+\b;RozwiÄ…zanie
+Aby znaleźć zestaw przetrwania:
+
+1) Idź drogą na południe.
+2) Skręć na wschód (w lewo) na pierwszym skrzyżowaniu.
+3) Zestaw przetrwania leży pomiędzy północną ścianą Centrum Kontroli Misji a pierwszym drzewem po prawej stronie drogi.
+
+Wystarczy, że zbliżysz się do niego, aby ukończyć to ćwiczenie.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/msterre2.txt b/help/P/msterre2.txt
new file mode 100644
index 00000000..feefb08d
--- /dev/null
+++ b/help/P/msterre2.txt
@@ -0,0 +1,11 @@
+\b;RozwiÄ…zanie
+Idź w dół ulicą biegnącą obok \l;Centrum Kontroli Misji\u object\Huston;. Po lewej stronie drogi, zaraz za \l;transporterem\u object\botgr; znajdziesz \l;kostkę tytanu\u object\titan;.
+
+1) Zbliż się do kostki. Kliknij na pierwszym przycisku w lewej dolnej części ekranu: \button 163; .
+2) Idź dalej tą drogą. Druga kostka jest po prawej stronie, zaraz za czterema zielonymi \l;ogniwami elektrycznymi\u object\power;.
+3) Powtórz punkt 1) ale kliknij na drugim przycisku: \button 160; .
+
+Po ukończeniu obu budynków misja jest wypełniona.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/msterre3.txt b/help/P/msterre3.txt
new file mode 100644
index 00000000..cca26d8b
--- /dev/null
+++ b/help/P/msterre3.txt
@@ -0,0 +1,28 @@
+\b;RozwiÄ…zanie
+Przed odlotem na pokładzie statku kosmicznego powinny się znaleźć:
+
+1) \l;Czarna skrzynka\u object\bbox;.
+2) Transportery \l;na kołach\u object\botgr; i \l;na gąsienicach\u object\botgc;.
+3) \l;Ty\u object\human;.
+
+Oto szczegółowy plan działania:
+1) Zasil \l;centrum badawcze\u object\research; jednym z zielonych \l;ogniw elektrycznych\u object\power;.
+2) Zaznacz \l;centrum badawcze\u object\research; i kliknij przycisk \button 64; .
+3) Umieść \l;kostkę tytanu\u object\titan; wewnątrz \l;fabryki robotów\u object\factory;.
+4) Cofnij się i zaznacz \l;fabrykę robotów\u object\factory;.
+5) Kliknij przycisk \button 138; .
+6) Zasil \l;transporter na gÄ…sienicach\u object\botgc; nowym \l;ogniwem elektrycznym\u object\power;.
+7) Wyślij \l;transporter na gąsienicach\u object\botgc; na szczyt góry na południowym zachodzie.
+8) Dostarcz \l;czarną skrzynkę\u object\bbox; na pokład \l;statku kosmicznego\u object\base;.
+9) Wyślij transportery \l;na gąsienicach\u object\botgc; oraz \l;na kołach\u object\botgr; na pokład statku kosmicznego.
+10) Wejdź na pokład \l;statku kosmicznego\u object\base;.
+11) Odleć!
+
+Aby wystartować, zaznacz \l;statek kosmiczny\u object\base; poprzez kliknięcie na nim, o ile jest widoczny. Jeśli nie, kliknij jeden z przycisków w lewej górnej części ekranu. Niebieski trójkąt \button 130; umożliwia przełączanie pomiędzy symbolami robotów a symbolami budynków. Kliknij przycisk aby uaktywnić ich listę. Pojawi się przycisk \button 171; . Kliknij ten przycisk, aby zaznaczyć statek kosmiczny.
+
+Gdy statek kosmiczny jest już zaznaczony, kliknij duży przycisk \button 28; w dolnej części ekranu. Jeśli Ty oraz przedmioty wspomniane powyżej znajdują się na pokładzie, statek kosmiczny wystartuje.
+
+Żaden przedmiot ani robot nie powinny przeszkadzać w zamykaniu ośmiu wielkich paneli drzwi.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mstropi1.txt b/help/P/mstropi1.txt
new file mode 100644
index 00000000..3a0167fc
--- /dev/null
+++ b/help/P/mstropi1.txt
@@ -0,0 +1,5 @@
+\b;RozwiÄ…zanie
+Idź Å›cieżkÄ… pokazanÄ… na mapce. Åadunek wybuchowy znajdziesz na dnie maÅ‚ej doliny zasiedlonej przez olbrzymie mrówki. Prawdopodobnie CiÄ™ zaatakujÄ… i stracisz przytomność. Niestety nic na to nie poradzisz.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mstropi2.txt b/help/P/mstropi2.txt
new file mode 100644
index 00000000..5dcb78f2
--- /dev/null
+++ b/help/P/mstropi2.txt
@@ -0,0 +1,21 @@
+\b;RozwiÄ…zanie
+Oto kolejne kroki powrotu na statek kosmiczny.
+
+1) Idź dookoła jeziora, kierując się w stronę zielonej opalizującej kuli. Kula ta jest generowana przez grawi-roślinę, która uniemożliwia latanie wewnątrz kuli.
+
+2) Podążaj lewą stroną doliny, mijając sadzawkę po prawej stronie i wejdź na niewielką skarpę. Na szczycie spotkasz kilka ogromnych mrówek: biegnij jak najszybciej w kierunku kolejnej grawi-rośliny trochę dalej po prawej stronie, czas na leczenie ran przyjdzie później.
+
+3) Użyj reaktora i przeleć nad jeziorem przed grawi-rośliną po prawej.
+
+4) Gdy opuścisz grawi-roślinę, trzymaj się lewej strony jeziora i idź wzdłuż brzegu aż dojdziesz do półwyspu ozdobionego podobnymi do paproci roślinami.
+
+5) Większe jeziora pokonuj przeskakując po wyspach. Celuj w drzewa, aby nie spaść do wody po drugiej stronie wyspy. Ostatnia wyspa jest 50 cm pod wodą, ale możesz na niej bezpiecznie wylądować nie ryzykując zanurzenia głowy.
+
+6) Dalej ścieżka biegnie w lewo. Czeka tam ogromna mrówka, która jednak nie uszkodzi Cię zbytnio.
+
+7) Pozwól reaktorowi ochłodzić się, następnie przeleć nad małym jeziorem. Spróbuj wylądować jak najwyżej po prawej stronie, aby nie wpaść do drugiego jeziora.
+
+8) Przekrocz drugie jezioro, wejdź na pokład statku kosmicznego i odleć.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mstropi3.txt b/help/P/mstropi3.txt
new file mode 100644
index 00000000..d46a9147
--- /dev/null
+++ b/help/P/mstropi3.txt
@@ -0,0 +1,13 @@
+\b;RozwiÄ…zanie
+1) Na zachód od Twojej obecnej pozycji znajdziesz \l;kostkę tytanu\u object\titan;, w pobliżu niebieskiej flagi/niebieskiego plusa na mapce. Nie przenoś tytanu ale właśnie tam zbuduj \l;stację energetyczną\u object\station;.
+
+2) Użyj kostki tytanu ze statku kosmicznego do zbudowania \l;centrum badawczego\u object\research;, a następnie wykonaj \button 67;.
+
+3) Zbuduj \l;fabrykę robotów\u object\factory; oraz \l;działo latające\u object\botfj;. Jeśli robot ten zostanie zniszczony przez ogień wroga, kilka dodatkowych \l;kostek tytanu\u object\titan; znajdziesz w małej mglistej dolinie na północny zachód od statku kosmicznego. Możesz je przywieźć \l;transporterem latającym\u object\botgj;\n;.
+
+4) Zbuduj \l;radar\u object\radar;, aby poznać pozycje mrówek na mapce i rozpocząć polowanie. Uważaj, aby robot nie został bez energii ani nie przegrzał reaktora nad wodą. Jeśli spadnie do głębokiej wody, wybuchnie.
+
+5) Gdy zabijesz wszystkie mrówki, wróć na pokład i odleć.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mstropi4.txt b/help/P/mstropi4.txt
new file mode 100644
index 00000000..99000e27
--- /dev/null
+++ b/help/P/mstropi4.txt
@@ -0,0 +1,7 @@
+\b;RozwiÄ…zanie
+Jeśli Twój robot nagle wybuchnie, oznacza to, że za dużo razy uderzył w stalowe elementy. Leć trochę wolniej, a wtedy robot nie zostanie uszkodzony, nawet jeśli wpadnie na przeszkodę.
+
+Jeśli nie możesz odlecieć po wykonaniu ćwiczenia, nie wszystkie cele zostały zaliczone. Zrób jeszcze jedną rundę i sprawdź, czy nie zostały żadne materiały wybuchowe ani plusy pośrodku stalowych struktur.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/mstropi5.txt b/help/P/mstropi5.txt
new file mode 100644
index 00000000..342b6d51
--- /dev/null
+++ b/help/P/mstropi5.txt
@@ -0,0 +1,15 @@
+\b;RozwiÄ…zanie
+1) Znajdź \l;czarną skrzynkę\u object\bbox; osobiście. Możesz ją dostrzec z góry, korzystając z silnika odrzutowego lub nurkując w wodzie.
+2) Zbuduj \l;hutę\u object\convert; w pobliżu kawałków rudy tytanu. Znajdziesz je obok statku kosmicznego, na wschodzie.
+3) Wyprodukuj dwie \l;kostki tytanu\u object\titan;.
+4) Zbuduj \l;fabrykę robotów\u object\factory; w pobliżu czarnej skrzynki.
+5) Zbuduj robota \l;nurka\u object\botsub;.
+6) Dostarcz czarną skrzynkę na pokład.
+7) Odleć.
+
+Czarna skrzynka leży na dnie małego jeziora, na północny wschód od statku kosmicznego.
+
+Fabrykę robotów możesz zbudować tuż przy jeziorze, na jego południowym brzegu.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/msvolca1.txt b/help/P/msvolca1.txt
new file mode 100644
index 00000000..98db24d8
--- /dev/null
+++ b/help/P/msvolca1.txt
@@ -0,0 +1,15 @@
+\b;RozwiÄ…zanie
+1) Zacznij od naładowania \l;zwykłego ogniwa elektrycznego\u object\power; i zasilenia \l;centrum badawczego\u object\research;. Użyj go do opracowania technologii budowy \l;elektrowni atomowej\u object\nuclear; \button 170;.
+
+2) Zbuduj \l;działo na kołach\u object\botgr;.
+
+3) Na północnym zachodzie znajdziesz nieco \l;rudy uranu\u object\uranore;. Elektrownia atomowa przetworzy ją w \l;atomowe ogniwa elektryczne\u object\atomic;, działające dłużej od zwykłych.
+
+4) Zasil \l;działo na kołach\u object\botfr; w jedno z nowych ogniw atomowych. Wyślij je i zabij wszystkie \l;pająki\u object\spider; wzdłuż trasy.
+
+5) Użycie \l;radaru\u object\radar; nie jest konieczne, ale może być pomocne w oznaczeniu pozycji pająków na mapce.
+
+6) Transporter na kołach powinien być częścią ekspedycji. Oczyści on drogę z porozrzucanych kawałków \l;rudy tytanu\u object\titanore; oraz dostarczy \l;ładunek wybuchowy\u object\tnt; na statek.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/msvolca2.txt b/help/P/msvolca2.txt
new file mode 100644
index 00000000..7ff7a0b9
--- /dev/null
+++ b/help/P/msvolca2.txt
@@ -0,0 +1,19 @@
+ \b;RozwiÄ…zanie
+1) Szybko zbuduj \l;wieżę obronną\u object\tower; na północ od statku kosmicznego. Po jej \l;zasileniu\u object\power; na jednym z \l;transporterów\u object\botgr; uruchom program \c;ServiceTower1\n;, który zajmie się ładowaniem baterii, gdy ta będzie pusta. Umieść drugie ogniwo elektryczne 2 m na północ od wieży, jako pierwszy cel dla atakujących os.
+
+2) Zbuduj \l;stację energetyczną\u object\station; w pobliżu wieży obronnej.
+
+3) Zbuduj \l;hutę\u object\convert; na południe od statku kosmicznego a w celu wyprodukowania \l;kostek tytanu\u object\titan; uruchom na drugim \l;transporterze\u object\botgr; program \c;CollectTitanium3\n;.
+
+4) Zbuduj \l;fabrykę robotów\u object\factory;, a następnie \l;działo latające\u object\botfj;, które pozwoli Ci wyeliminować \l;mrówki\u object\ant;.
+
+5) Użyj \l;transportera latającego\u object\botgj; do dostarczenia \l;materii organicznej\u object\bullet; z wyspy pośrodku jeziora lawy.
+
+6) Zbuduj \l;laboratorium\u object\labo;, umieść \l;materię organiczną\u object\bullet; na jego platformie i kliknij przycisk \button 109;, aby otrzymać plany robotów na nogach.
+
+7) Jak tylko materia organiczna zostanie zanalizowana zbuduj \l;transporter na nogach\u object\botgs; i dostarcz go na pokład statku kosmicznego.
+
+8) Odleć.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/msvolca3.txt b/help/P/msvolca3.txt
new file mode 100644
index 00000000..26d0980f
--- /dev/null
+++ b/help/P/msvolca3.txt
@@ -0,0 +1,11 @@
+\b;RozwiÄ…zanie
+1) Zasil \l;działo na nogach\u object\botfs;. Za \l;fabryką robotów\u object\factory; znajdziesz nawet \l;atomowe ogniwo elektryczne\u object\atomic;.
+
+2) Wejdź na północne urwisko i zabij kilka \l;mrówek\u object\ant;. Najlepszy dostęp jest od wschodu.
+
+3) Idź dalej, aż pozbędziesz się wszystkich mrówek.
+
+4) Wejdź na północne urwisko \l;transporterem na nogach\u object\botgs; i zdobądź \l;czarną skrzynkę\u object\bbox;, którą znajdziesz w ruinach fabryki robotów.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/msvolca4.txt b/help/P/msvolca4.txt
new file mode 100644
index 00000000..778c3670
--- /dev/null
+++ b/help/P/msvolca4.txt
@@ -0,0 +1,13 @@
+\b;RozwiÄ…zanie
+Szczelina w północno zachodniej górze prowadzi do jeziora wrzącej lawy.
+
+Wystarczy skakać z jednej skalistej wyspy na drugą. Często sprawdzaj reaktor i pozwól mu zupełnie ostygnąć przed kolejnym startem. W znalezieniu najbliższej wyspy może być pomocna mapka.
+
+Nie martw się zbytnio atakiem mrówek. Poczekaj, aż reaktor ostygnie, nie zwlekając jednak dłużej niż to konieczne, a Twoja wbudowana osłona powinna spełnić swoją rolę. Jednakże zalecane jest zapisanie gry co jakiś czas (klawisz Esc, następnie "Zapisz"), aby nie zaczynać gry od początku w przypadku wylądowania w jeziorze lawy.
+
+Robot znajduje się w najbardziej wysuniętym na zachód punkcie, jednak możesz tam dotrzeć tylko okrężną drogą. W pobliżu znajdziesz \l;atomowe ogniwo elektryczne\u object\atomic;.
+
+Nie musisz w drodze powrotnej kierować robota tą samą drogą, gdyż jego reaktor ma większy zasięg niż Twój. Wciąż może być potrzebny jedne lub dwa przystanki, uważaj również na mrówki.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/msvolca5.txt b/help/P/msvolca5.txt
new file mode 100644
index 00000000..1c8dd332
--- /dev/null
+++ b/help/P/msvolca5.txt
@@ -0,0 +1,11 @@
+\b;RozwiÄ…zanie
+Wszystko dookoła Ciebie wybucha. Musisz opuścić starą bazę jak najszybciej. Wycofaj się drogą przybycia.
+
+Dosyć łatwo można uniknąć \l;mrówek\u object\ant;. Jeśli jednak poważnie Cię trafią, znajdź spokojne miejsce i poczekaj aż Twoja osłona się zregeneruje.
+
+Z \l;pająkami\u object\spider; jest gorzej, ale są one głupsze. Jak tylko Cię zobaczą, ich odwłok wybucha, a pająk przy tym umiera. Jeśli choć jeden fragment Cię trafi, również umrzesz. Ryzykownym ale skutecznym sposobem pozbycia się pająków, jest zbliżenie się do pająka, a gdy jego odwłok zaczyna się nadymać, szybki odlot na bezpieczną odległość.
+
+Po dotarciu do spokojnej wyspy, możesz użyć \l;latającego działa organicznego\u object\botoj; do oczyszczenia drogi z wrogich owadów. Postępuj ostrożnie, aby go nie stracić, gdyż od tego zależy powodzenie misji.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/msvolca6.txt b/help/P/msvolca6.txt
new file mode 100644
index 00000000..329d5de3
--- /dev/null
+++ b/help/P/msvolca6.txt
@@ -0,0 +1,9 @@
+\b;RozwiÄ…zanie
+Bezpieczniej będzie jeśli zostaniesz na \l;statku kosmicznym\u object\base;. Możesz oberwać kilka razy, ale nie śmiertelnie.
+
+Nie marnuj już więcej czasu i użyj nowego \l;latającego działa organicznego\u object\botoj;. Najpierw zabij mrówki po prawej stronie, a następnie dookoła statku kosmicznego zgodnie z ruchem wskazówek zegara, lecąc na niskiej wysokości.
+
+Jeśli to się nie uda, umieść \l;latające działo organiczne\u object\botoj; w bezpiecznym miejscu na północ od statku kosmicznego, następnie sam uciekaj. Później możesz zabijać mrówki pojedynczo; nie mogą one uszkodzić statku kosmicznego ani czarnej skrzynki.
+
+\t;Zobacz również
+\l;Sterowanie\u command;
diff --git a/help/P/navig.txt b/help/P/navig.txt
new file mode 100644
index 00000000..1add2896
--- /dev/null
+++ b/help/P/navig.txt
@@ -0,0 +1,22 @@
+\b;Nawigacja
+Trzy przyciski w lewej górnej części ekranu pozwalają na nawigację po różnych stronach pliku pomocy:
+
+\button 30; Dom
+Wraca do strony głównej, czyli wyświetlonej na początku, na przykład po naciśnięciu klawisza \key;\key help;\norm; lub \key;\key prog;\norm;.
+
+\button 55; Poprzedni
+Wraca do poprzedniej strony, czyli tej która była wyświetlana przed kliknięciem łącza.
+
+\button 48; Następny
+Wyświetla ponownie następną stronę, wyświetlaną przed użyciem przycisku "Dom" lub "Poprzedni".
+
+\t;Uwaga
+Jeśli przycisk jest szary, oznacza to, że w danej chwili nie może być użyty. Na przykład na stronie głównej przycisk "Dom" jest szary, gdyż jego użycie nie miałoby sensu.
+
+Uwaga ta dotyczy wszystkich przycisków w grze COLOBOT.
+
+\t;Przewijanie tekstu
+Jeśli mysz jest wyposażona w kółko, można go używać do przewijania tekstu w górę i w dół. Jeśli nie, można użyć klawiszy strzałek oraz paska przewijania po prawej stronie ekranu.
+
+\t;Wielkość czcionki
+Wskaźnik w górnej części ekranu umożliwia zmianę wielkości czcionki tekstu.
diff --git a/help/P/object/STONSPOT.TXT b/help/P/object/STONSPOT.TXT
new file mode 100644
index 00000000..67573048
--- /dev/null
+++ b/help/P/object/STONSPOT.TXT
@@ -0,0 +1,14 @@
+\b;Podziemne złoże tytanu
+\image stonspot 4 4;
+Czerwony plus oznacza występowanie w podglebiu pokładów \l;rudy tytanu\u object\titanore;. Można ją wydobyć używając \l;kopalni\u object\derrick;.
+
+Robot \l;szperacz\u object\botsr; zostawia czerwony plus w miejscu odkrycia złoża. \l;Robot szperacz\u object\botsr; może również wykrywać obecność \l;rudy uranu\u object\uranore; oznaczonej \l;żółtym kółkiem\u object\uranspot; oraz energii oznaczonej \l;zielonym plusem\u object\enerspot;.
+
+\t;Transport
+Niemożliwy.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;TitaniumSite\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/TITAN.TXT b/help/P/object/TITAN.TXT
new file mode 100644
index 00000000..20dbc783
--- /dev/null
+++ b/help/P/object/TITAN.TXT
@@ -0,0 +1,14 @@
+\b;Tytan
+\image titan 4 4;
+Tytan jest niezastąpiony przy konstrukcji budynków, \l;robotów\u object\factory; oraz \l;zwykłych ogniw elektrycznych\u object\energy;. Zwykle jego niewielkie ilości można znaleźć na \l;statku kosmicznym\u object\base; na początku każdej misji.
+
+Jeśli potrzeba więcej, należy \l;przetopić\u object\convert; kawałki \l;rudy tytanu\u object\titanore; w użyteczne kostki tytanu.
+
+\t;Transport
+Wszystkie \l;transportery\u object\botgr; oraz \l;astronauta\u object\human;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;Titanium\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/TITANORE.TXT b/help/P/object/TITANORE.TXT
new file mode 100644
index 00000000..7568c51f
--- /dev/null
+++ b/help/P/object/TITANORE.TXT
@@ -0,0 +1,14 @@
+\b;Ruda tytanu
+\image titanore 4 4;
+\l;Tytan\u object\titan; jest niezastąpiony przy konstrukcji budynków, \l;robotów\u object\factory; oraz \l;zwykłych ogniw elektrycznych\u object\energy;. Tytan widziany przez \l;astronautę\u object\human; w jego użytkowej, sześciennej postaci powstał przez \l;przetopienie\u object\convert; surowych kawałków rudy tytanu.
+
+Rudę tytanu można znaleźć na powierzchni lub w podglebiu. W drugim przypadku najpierw należy ją zlokalizować i zidentyfikować przy pomocy robota \l;szperacza\u object\botsr;, a następnie wydobyć używając \l;kopalni\u object\derrick;. W miejscu znalezienia rudy tytanu robot szperacz pozostawia \l;czerwony plus\u object\stonspot;.
+
+\t;Transport
+Wszystkie \l;transportery\u object\botgr; oraz \l;astronauta\u object\human;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;TitaniumOre\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/TNT.TXT b/help/P/object/TNT.TXT
new file mode 100644
index 00000000..55434cb7
--- /dev/null
+++ b/help/P/object/TNT.TXT
@@ -0,0 +1,12 @@
+\b; Åadunek wybuchowy (TNT)
+\image tnt 4 4;
+Åadunek TNT jest bardzo czuÅ‚y. Należy zbliżać siÄ™ do niego bardzo ostrożnie, aby nie uderzyć go ani nie narażać na jakiekolwiek wstrzÄ…sy. Po chwyceniu Å‚adunku przez ramiÄ™ \l;transportera\u object\botgr; ryzyko jest już minimalne.
+
+\t;Transport
+Wszystkie \l;transportery\u object\botgr; oraz \l;astronauta\u object\human;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;TNT\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/TOWER.TXT b/help/P/object/TOWER.TXT
new file mode 100644
index 00000000..906ef375
--- /dev/null
+++ b/help/P/object/TOWER.TXT
@@ -0,0 +1,22 @@
+\b;\button 165; Wieża obronna
+\image tower 8 8;
+Wieża umożliwia najlepszą obronę przeciwko atakom \l;wrogów\u object\mother;, zarówno naziemnych, jak i powietrznych.
+
+Do działania wieży potrzebne jest \l;zwykłe\u object\power; lub \l;atomowe\u object\atomic; ogniwo elektryczne. Zwykłe ogniwo elektryczne umożliwia oddanie 8 strzałów. Oczywiście dużo lepsze jest ogniwo atomowe. Gdy skończy się energia, wieża sygnalizuje to miganiem.
+
+Wieża ma zasięg 40 metrów. Aby go wyświetlić na powierzchni planety, należy zaznaczyć wieżę i nacisnąć przycisk \button 41;. Czerwone kropki wyróżnią kolistą strefę przez 20 sekund.
+
+\t;Wymagania
+PÅ‚aska powierzchnia szeroka na minimum 3,5 metra.
+
+\t;Źródło zasilania
+Zwykłe lub atomowe ogniwo elektryczne.
+
+\t;Czas działania
+1 sekunda.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;DefenseTower\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/URANORE.TXT b/help/P/object/URANORE.TXT
new file mode 100644
index 00000000..c4234f73
--- /dev/null
+++ b/help/P/object/URANORE.TXT
@@ -0,0 +1,16 @@
+\b;Ruda uranu
+\image uranore 4 4;
+Uran jest niezbędny do produkcji \l;atomowych ogniw elektrycznych\u object\atomic;.
+
+Rudę uranu można znaleźć na powierzchni lub w podglebiu. W drugim przypadku, najpierw należy ją zlokalizować i zidentyfikować przy pomocy robota \l;szperacza\u object\botsr;, a następnie wydobyć używając \l;kopalni\u object\derrick;. W miejscu znalezienia rudy uranu robot szperacz pozostawia \l;żółte kółko\u object\uranspot;.
+
+\l;Elektrownia atomowa\u object\nuclear; może przetwarzać rudę uranu na nowe, w pełni naładowane\l;atomowe ogniwa elektryczne\u object\atomic;.
+
+\t;Transport
+Wszystkie \l;transportery\u object\botgr;. \l;Astronauta\u object\human; nie może przenosić rudy uranu z powodu jej radioaktywności.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;UraniumOre\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/URANSPOT.TXT b/help/P/object/URANSPOT.TXT
new file mode 100644
index 00000000..251d6eff
--- /dev/null
+++ b/help/P/object/URANSPOT.TXT
@@ -0,0 +1,15 @@
+\b; Podziemne złoże uranu
+\image uranspot 4 4;
+Żółte kółko oznacza występowanie w podglebiu pokładów \l;rudy uranu\u object\uranore;. Można ją wydobyć używając \l;kopalni\u object\derrick;.
+
+Robot \l;szperacz\u object\botsr; zostawia żółte kółko w miejscu odkrycia złoża. \l;Robot szperacz\u object\botsr; może również wykrywać obecność \l;rudy tytanu\u object\titanore; oznaczonej \l;czerwonym plusem\u object\stonspot; oraz energii oznaczonej \l;zielonym plusem\u object\enerspot;.
+
+
+\t;Transport
+Niemożliwy.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;UraniumSite\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/WASP.TXT b/help/P/object/WASP.TXT
new file mode 100644
index 00000000..3814a47f
--- /dev/null
+++ b/help/P/object/WASP.TXT
@@ -0,0 +1,11 @@
+\b;Osa
+\image wasp 8 8;
+Osy są obcą formą wrogiego życia, bardzo trudną do zestrzelenia z powodu częstych zmian kierunku lotu. Osy przenoszą kule \l;materii organicznej\u object\bullet;, które zrzucają z góry na roboty, budynki i astronautę.
+
+Najłatwiej pozbyć się ich budując \l;wieżę obronną\u object\tower;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;AlienWasp\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/WAYPOINT.TXT b/help/P/object/WAYPOINT.TXT
new file mode 100644
index 00000000..f2838fea
--- /dev/null
+++ b/help/P/object/WAYPOINT.TXT
@@ -0,0 +1,12 @@
+\b;Punkt kontrolny
+\image waypoint 4 4;
+W ćwiczeniach niebieskie plusy oznaczają pozycje, które należy zaliczyć. Znikają one natychmiast po przejściu przez nie \l;robota treningowego\u object\bottr;.
+
+\t;Transport
+Niemożliwy.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;WayPoint\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/WORM.TXT b/help/P/object/WORM.TXT
new file mode 100644
index 00000000..c9237605
--- /dev/null
+++ b/help/P/object/WORM.TXT
@@ -0,0 +1,11 @@
+\b;Robal
+\image worm 8 8;
+Robale zarażają wirusami zaprogramowane roboty. Wirusy modyfikują programy w stopniu uniemożliwiającym ich prawidłowe działanie lub powodującym przerwanie ich działania.
+
+Robale żyją w podglebiu, choć czasem wychodzą i pełzają po powierzchni. Gdy są pod ziemią są niewykrywalne i niezniszczalne.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;AlienWorm\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/WRECK.TXT b/help/P/object/WRECK.TXT
new file mode 100644
index 00000000..f68139ae
--- /dev/null
+++ b/help/P/object/WRECK.TXT
@@ -0,0 +1,10 @@
+\b;Pozostałości robota
+Wrak robota to pozostałości po robocie uszkodzonym przez \l;pająka\u object\spider; lub ogień własnych robotów.
+
+Z wraku robota można odzyskać pełnowartościową \l;kostkę tytanu\u object\titan; przy użyciu robota \l;recyklera\u object\botrecy;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;Wreck\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/ant.txt b/help/P/object/ant.txt
new file mode 100644
index 00000000..5a428fbe
--- /dev/null
+++ b/help/P/object/ant.txt
@@ -0,0 +1,11 @@
+\b;Mrówka
+\image ant 8 8;
+Mrówki strzelają małymi żrącymi kulkami które wgryzają się w osłony ochronne robotów i budynków, powodując ich zniszczenie.
+
+\l;Człowiek\u object\human; może znacznie dłużej wytrzymać ich ataki niż większość budynków i robotów, gdyż Twoja osłona ochronna odnawia się, gdy goją się jego rany. Jednkaże, jeśli zostaniesz zbyt długo w ich zasięgu lub gdy jest ich zbyt dużo, Twoje życie może być w wielkim niebezpieczeństwie.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;AlienAnt\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/atomic.txt b/help/P/object/atomic.txt
new file mode 100644
index 00000000..a49e4b61
--- /dev/null
+++ b/help/P/object/atomic.txt
@@ -0,0 +1,15 @@
+\b;Atomowe ogniwo elektryczne
+\image atomic 4 4;
+Atomowe ogniwo elektryczne dostarcza energii robotom i niektórym budynkom.
+Jego pojemność jest 100 razy większa od pojemnośći \l;zwykłego ogniwa elektrycznego\u object\power;.
+
+Atomowe ogniwa elektryczne nie mogą być jednak ponownie ładowane ani przetwarzane. Do wytworzenia nowego, w pełni naładowanego atomowego ogniwa elektrycznego potrzebna jest \l;elektrownia atomowa\u object\nuclear; oraz nieco \l;rudy uranu\u object\uranore;.
+
+\t;Transport
+Wszystkie \l;transportery\u object\botgr; oraz \l;astronauta\u object\human;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;NuclearCell\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;..
diff --git a/help/P/object/barrier.txt b/help/P/object/barrier.txt
new file mode 100644
index 00000000..5b8ba2cc
--- /dev/null
+++ b/help/P/object/barrier.txt
@@ -0,0 +1,8 @@
+\b;Bariera
+Bariera to nic innego niż używana w ćwiczeniach przeszkoda.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;Barrier\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;..
diff --git a/help/P/object/base.txt b/help/P/object/base.txt
new file mode 100644
index 00000000..e73cee6f
--- /dev/null
+++ b/help/P/object/base.txt
@@ -0,0 +1,11 @@
+\b;\button 171; Statek kosmiczny
+\image base 8 8;
+\l;Twój\u object\human; środek transportu pomiędzy planetami, jedyny sposób bezpiecznego podróżowania w kosmosie i wypełnienia misji.
+
+Poza astronautą, statek kosmiczny może przewozić roboty oraz surowce. Po zakończeniu misji, należy zanaczyć statek kosmiczny, a następnie kliknąć polecenie odlotu \button 28;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;SpaceShip\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;..
diff --git a/help/P/object/bbox.txt b/help/P/object/bbox.txt
new file mode 100644
index 00000000..40ded42a
--- /dev/null
+++ b/help/P/object/bbox.txt
@@ -0,0 +1,14 @@
+\b;Czarna skrzynka
+\image bbox 4 4;
+Czarna skrzynka tak naprawdę jest pomarańczowa, żeby łatwiej można ją było rozpoznać i znaleźć. Każdy \l;statek kosmiczny\u object\base; wyposażony jest w czarną skrzynkę zapisującą i przechowującą informacje o przebiegu lotu.
+
+Czarna skrzynka może być także użyta do pozostawienia ważnych informacji. Pierwsza ekspedycja zostawiła na każdej z planet czarną skrzynkę zawierającą współrzędne planety, do której zmierzała w następnej kolejności.
+
+\t;Transport
+Wszystkie \l;transportery\u object\botgr; oraz \l;astronauta\u object\human;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;BlackBox\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;..
diff --git a/help/P/object/botfc.txt b/help/P/object/botfc.txt
new file mode 100644
index 00000000..23ca4734
--- /dev/null
+++ b/help/P/object/botfc.txt
@@ -0,0 +1,20 @@
+\b;\button 144; Działo na gąsienicach
+\image botfc 8 8;
+Robot na gÄ…sienicach strzelajÄ…cy kulami ognia.
+
+Działko strzelające kulami ognia jest skuteczną bronią przeciwko większości \l;wrogów\u object\mother;. Należy używać go z rozwagą, z uwagi na duże zużycie energii. \l;Zwykłe ogniwo elektryczne\u object\power; wystarcza na oddanie tylko 4 serii strzałów.
+
+Porada: poruszanie myszą podczas strzelania spowoduje ogarnięcie strzałami większego obszaru.
+
+Roboty na gąsienicach mogą pokonywać strome pochyłości ale są raczej powolne i zużywają mnóstwo energii. Na płaskim terenie na krótszych dystansach lepszym wyborem jest \l;działo na kołach\u object\botfr;. Gdy jest to możliwe, zbudowanie \l;robota latającego\u object\botfj; jest najlepszym sposobem pokonywania dużych odległości.
+
+\t;Programowanie
+Do zaprogramowania poruszania robotem można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+Do zaprogramowania działka strzelającego kulami ognia służy instrukcja \c;\l;fire\u cbot\fire;\n;. Lufę można podnieść lub opuścić używając instrukcji \c;\l;aim\u cbot\aim;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;TrackedShooter\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/botfj.txt b/help/P/object/botfj.txt
new file mode 100644
index 00000000..ee57d12d
--- /dev/null
+++ b/help/P/object/botfj.txt
@@ -0,0 +1,22 @@
+\b;\button 145; Działo latające
+\image botfj 8 8;
+Latający robot z napędem odrzutowym wyposażony w działko strzelające kulami ognia.
+
+Działko strzelające kulami ognia jest skuteczną bronią przeciwko większości \l;wrogów\u object\mother;. Należy używać go z rozwagą, z uwagi na duże zużycie energii. \l;Zwykłe ogniwo elektryczne\u object\power; wystarcza na oddanie tylko 4 serii strzałów.
+
+Porada: poruszanie myszą podczas strzelania spowoduje ogarnięcie strzałami większego obszaru.
+
+Wyświetlacz na dole ekranu pokazuje temperaturę reaktora. Należy zwracać na niego uwagę. Jeśli reaktor się przegrzeje, silnik się zatrzyma i robot spadnie.
+
+Roboty latające mogą przemieszczać się ponad naturalnymi przeszkodami, takimi jak góry lub jeziora ale ich zapas energii szybko się zużywa. Na ziemi są one powolne. Na krótkich odległościach, nie wymagających latania, polecane jest użycie \l;działa na kołach\u object\botfr;.
+
+\t;Programowanie
+Do zaprogramowania poruszania robotem można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;jet\u cbot\jet;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+Do zaprogramowania działka strzelającego kulami ognia służy instrukcja \c;\l;fire\u cbot\fire;\n;. Lufę można podnieść lub opuścić używając instrukcji \c;\l;aim\u cbot\aim;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;WingedShooter\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/botfr.txt b/help/P/object/botfr.txt
new file mode 100644
index 00000000..5f15e959
--- /dev/null
+++ b/help/P/object/botfr.txt
@@ -0,0 +1,20 @@
+\b;\button 143; Działo na kołach
+\image botfr 8 8;
+Robot na kołach strzelający ognistymi kulami.
+
+Działko strzelające kulami ognia jest skuteczną bronią przeciwko większości \l;wrogów\u object\mother;. Należy używać go z rozwagą, z uwagi na duże zużycie energii. \l;Zwykłe ogniwo elektryczne\u object\power; wystarcza na oddanie tylko 4 serii strzałów.
+
+Porada: poruszanie myszą podczas strzelania spowoduje ogarnięcie strzałami większego obszaru.
+
+Koła to standardowy, szybki i energooszczędny sposób napędu, idealny do poruszania się po relatywnie płaskich powierzchniach. Na pochyłym terenie polecane jest użycie \l;działa latającego\u object\botfj;, a jeśli jest to niemożliwe, \l;działa na gąsienicach\u object\botfc;.
+
+\t;Programowanie
+Do zaprogramowania poruszania robotem można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+Do zaprogramowania działka strzelającego kulami ognia służy instrukcja \c;\l;fire\u cbot\fire;\n;. Lufę można podnieść lub opuścić używając instrukcji \c;\l;aim\u cbot\aim;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;WheeledShooter\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/botfs.txt b/help/P/object/botfs.txt
new file mode 100644
index 00000000..86160c90
--- /dev/null
+++ b/help/P/object/botfs.txt
@@ -0,0 +1,20 @@
+\b;\button 151; Działko na nogach
+\image botfs 8 8;
+Robot pełzający na mrówczych odnóżach, strzelający kulami ognia.
+
+Działko strzelające kulami ognia jest skuteczną bronią przeciwko większości \l;wrogów\u object\mother;. Należy używać go z rozwagą, z uwagi na duże zużycie energii. \l;Zwykłe ogniwo elektryczne\u object\power; wystarcza na oddanie tylko 4 serii strzałów.
+
+Porada: poruszanie myszą podczas strzelania spowoduje ogarnięcie strzałami większego obszaru.
+
+Podczas poruszania się, działo na nogach zużywa o połowę mniej energii od \l;działa na kołach\u object\botfr;. Robot na nogach jest też idealnie przystosowany do wspinania się nawet po najbardziej stromych pochyłościach.
+
+\t;Programowanie
+Do zaprogramowania poruszania robotem można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+Do zaprogramowania działka strzelającego kulami ognia służy instrukcja \c;\l;fire\u cbot\fire;\n;. Lufę można podnieść lub opuścić używając instrukcji \c;\l;aim\u cbot\aim;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;LeggedShooter\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/botgc.txt b/help/P/object/botgc.txt
new file mode 100644
index 00000000..8fae9bea
--- /dev/null
+++ b/help/P/object/botgc.txt
@@ -0,0 +1,33 @@
+\b;\button 138; Transporter na gÄ…sienicach
+\image botgc 8 8;
+Robot na gąsienicach wyposażony w ramię chwytające.
+
+\button 32; Chwyta przedmiot lub odkłada go, w miejscu określonym przez jedną z następujących opcji:
+\button 33; Przedmiot leżący przed robotem, na ziemi lub z tyłu innego robota.
+\button 35; WÅ‚asne ogniwo elektryczne robota.
+\button 34; Przedmiot leżący za robotem, na ziemi.
+
+Następujące przedmioty mogą być przenoszone:
+o \l;Ruda tytanu\u object\titanore;.
+o \l;Ruda uranu\u object\uranore;.
+o \l;Kostka tytanu\u object\titan;.
+o \l;Zwykłe ogniwo elektryczne\u object\power;.
+o \l;Atomowe ogniwo elektryczne\u object\atomic;.
+o \l;Czarna skrzynka\u object\bbox;.
+o \l;Klucze A, B, C i D\u object\key;.
+o \l;Materia organiczna\u object\bullet;.
+
+Roboty na gąsienicach mogą pokonywać strome pochyłości ale są raczej powolne i zużywają mnóstwo energii. Na płaskim terenie, na krótszych dystansach lepszym wyborem jest \l;transporter na kołach\u object\botgr;. Gdy jest to możliwe, zbudowanie \l;robota latającego\u object\botgj; jest najlepszym sposobem pokonywania dużych odległości.
+
+Transporter nie działa pod wodą. Zamiast niego należy użyć robota \l;nurka\u object\botsub;.
+
+\t;Programowanie
+Do zaprogramowania poruszania robotem można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+Do zaprogramowania ramienia chwytającego można używać instrukcji \c;\l;grab\u cbot\grab;\n; i \c;\l;drop\u cbot\drop;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;TrackedGrabber\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/botgj.txt b/help/P/object/botgj.txt
new file mode 100644
index 00000000..9dc7d8c1
--- /dev/null
+++ b/help/P/object/botgj.txt
@@ -0,0 +1,35 @@
+\b;\button 139; Transporter latajÄ…cy
+\image botgj 8 8;
+Latający robot z napędem odrzutowym wyposażony w ramię chwytające.
+
+\button 32; Chwyta przedmiot lub odkłada go, w miejscu określonym przez jedną z następujących opcji:
+\button 33; Przedmiot leżący przed robotem, na ziemi lub z tyłu innego robota.
+\button 35; WÅ‚asne ogniwo elektryczne robota.
+\button 34; Przedmiot leżący za robotem, na ziemi.
+
+Następujące przedmioty mogą być przenoszone:
+o \l;Ruda tytanu\u object\titanore;.
+o \l;Ruda uranu\u object\uranore;.
+o \l;Kostka tytanu\u object\titan;.
+o \l;Zwykłe ogniwo elektryczne\u object\power;.
+o \l;Atomowe ogniwo elektryczne\u object\atomic;.
+o \l;Czarna skrzynka\u object\bbox;.
+o \l;Klucze A, B, C i D\u object\key;.
+o \l;Materia organiczna\u object\bullet;.
+
+Wyświetlacz na dole ekranu pokazuje temperaturę reaktora. Należy zwracać na niego uwagę. Jeśli reaktor się przegrzeje, silnik się zatrzyma i robot spadnie.
+
+Roboty latające mogą przemieszczać się ponad naturalnymi przeszkodami, takimi jak góry lub jeziora ale ich zapas energii szybko się zużywa. Na ziemi są one powolne. Na krótkich odległościach, nie wymagających latania, polecane jest użycie \l;transportera na kołach\u object\botgr;.
+
+Transporter nie działa pod wodą. Zamiast niego należy użyć robota \l;nurka\u object\botsub;.
+
+\t;Programowanie
+Do zaprogramowania poruszania robotem można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+Do zaprogramowania ramienia chwytającego można używać instrukcji \c;\l;grab\u cbot\grab;\n; i \c;\l;drop\u cbot\drop;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;WingedGrabber\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/botgr.txt b/help/P/object/botgr.txt
new file mode 100644
index 00000000..69449085
--- /dev/null
+++ b/help/P/object/botgr.txt
@@ -0,0 +1,33 @@
+\b;\button 137; Transporter na kołach
+\image botgr 8 8;
+Robot na kołach wyposażony w ramię chwytające.
+
+\button 32; Chwyta przedmiot lub odkłada go, w miejscu określonym przez jedną z następujących opcji:
+\button 33; Przedmiot leżący przed robotem, na ziemi lub z tyłu innego robota.
+\button 35; WÅ‚asne ogniwo elektryczne robota.
+\button 34; Przedmiot leżący za robotem, na ziemi.
+
+Następujące przedmioty mogą być przenoszone:
+o \l;Ruda tytanu\u object\titanore;.
+o \l;Ruda uranu\u object\uranore;.
+o \l;Kostka tytanu\u object\titan;.
+o \l;Zwykłe ogniwo elektryczne\u object\power;.
+o \l;Atomowe ogniwo elektryczne\u object\atomic;.
+o \l;Czarna skrzynka\u object\bbox;.
+o \l;Klucze A, B, C i D\u object\key;.
+o \l;Materia organiczna\u object\bullet;.
+
+Koła to standardowy, szybki i energooszczędny sposób napędu, idealny do poruszania się po relatywnie płaskich powierzchniach. Na pochyłym terenie polecane jest użycie \l;działa latającego\u object\botfj;, a jeśli jest to niemożliwe, \l;działa na gąsienicach\u object\botfc;.
+
+Transporter nie działa pod wodą. Zamiast niego należy użyć robota \l;nurka\u object\botsub;.
+
+\t;Programowanie
+Do zaprogramowania poruszania robotem można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+Do zaprogramowania ramienia chwytającego można używać instrukcji \c;\l;grab\u cbot\grab;\n; i \c;\l;drop\u cbot\drop;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;WheeledGrabber\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/botgs.txt b/help/P/object/botgs.txt
new file mode 100644
index 00000000..a8291e91
--- /dev/null
+++ b/help/P/object/botgs.txt
@@ -0,0 +1,34 @@
+\b;\button 150; Transporter na nogach
+\image botgs 8 8;
+Robot pełzający na mrówczych odnóżach, wyposażony w ramię chwytające.
+
+\button 32; Chwyta przedmiot lub odkłada go, w miejscu określonym przez jedną z następujących opcji:
+\button 33; Przedmiot leżący przed robotem, na ziemi lub z tyłu innego robota.
+\button 35; WÅ‚asne ogniwo elektryczne robota.
+\button 34; Przedmiot leżący za robotem, na ziemi.
+
+Następujące przedmioty mogą być przenoszone:
+o \l;Ruda tytanu\u object\titanore;.
+o \l;Ruda uranu\u object\uranore;.
+o \l;Kostka tytanu\u object\titan;.
+o \l;Zwykłe ogniwo elektryczne\u object\power;.
+o \l;Atomowe ogniwo elektryczne\u object\atomic;.
+o \l;Czarna skrzynka\u object\bbox;.
+o \l;Klucze A, B, C i D\u object\key;.
+o \l;Materia organiczna\u object\bullet;.
+
+Podczas poruszania się, transporter na nogach zużywa o połowę mniej energii od \l;transportera na kołach\u object\botgr;. Robot na nogach jest też idealnie przystosowany do wspinania się nawet po najbardziej stromych pochyłościach.
+
+Transporter nie działa pod wodą. Zamiast niego należy użyć robota \l;nurka\u object\botsub;.
+
+\t;Programowanie
+Do zaprogramowania poruszania robotem można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+Do zaprogramowania ramienia chwytającego można używać instrukcji \c;\l;grab\u cbot\grab;\n; i \c;\l;drop\u cbot\drop;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;LeggedGrabber\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
+
diff --git a/help/P/object/botoc.txt b/help/P/object/botoc.txt
new file mode 100644
index 00000000..7fbb01bb
--- /dev/null
+++ b/help/P/object/botoc.txt
@@ -0,0 +1,18 @@
+\b;\button 154; Działo organiczne na gąsienicach
+\image botoc 8 8;
+Robot na gÄ…sienicach strzelajÄ…cy kulami organicznymi.
+
+Działko organiczne jest efektywniejsze od \l;działka ogniowego\u object\botfc;. Strzela ono małymi kulkami żrącej \l;materii organicznej\u object\bullet;. \l;Zwykłe ogniwo elektryczne\u object\power; wystarcza na oddanie 11 serii strzałów.
+
+Roboty na gąsienicach mogą pokonywać strome pochyłości ale są raczej powolne i zużywają mnóstwo energii. Na płaskim terenie na krótszych dystansach lepszym wyborem jest \l;działo organiczne na kołach\u object\botor;. Gdy jest to możliwe, zbudowanie \l;robota latającego\u object\botoj; jest najlepszym sposobem pokonywania dużych odległości.
+
+\t;Programowanie
+Do zaprogramowania poruszania robotem można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+Do zaprogramowania działka strzelającego kulami organicznymi służy instrukcja \c;\l;fire\u cbot\fire;\n;. Lufę można podnieść lub opuścić używając instrukcji \c;\l;aim\u cbot\aim;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;TrackedOrgaShooter\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/botoj.txt b/help/P/object/botoj.txt
new file mode 100644
index 00000000..b63cf2bc
--- /dev/null
+++ b/help/P/object/botoj.txt
@@ -0,0 +1,20 @@
+\b;\button 155; Latające działo organiczne
+\image botoj 8 8;
+Latający robot z napędem odrzutowym wyposażony w działko strzelające kulami organicznymi.
+
+Działko organiczne jest efektywniejsze od \l;działka ogniowego\u object\botfj;. Strzela ono małymi kulkami żrącej \l;materii organicznej\u object\bullet;. \l;Zwykłe ogniwo elektryczne\u object\power; wystarcza na oddanie 11 serii strzałów.
+
+Wyświetlacz na dole ekranu pokazuje temperaturę reaktora. Należy zwracać na niego uwagę. Jeśli reaktor się przegrzeje, silnik się zatrzyma i robot spadnie.
+
+Roboty latające mogą przemieszczać się ponad naturalnymi przeszkodami, takimi jak góry lub jeziora ale ich zapas energii szybko się zużywa. Na ziemi są one powolne. Na krótkich odległościach, nie wymagających latania, polecane jest użycie \l;działa organicznego na kołach\u object\botor;.
+
+\t;Programowanie
+Do zaprogramowania poruszania robotem można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;jet\u cbot\jet;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+Do zaprogramowania działka strzelającego kulami organicznymi służy instrukcja \c;\l;fire\u cbot\fire;\n;. Lufę można podnieść lub opuścić używając instrukcji \c;\l;aim\u cbot\aim;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;WingedOrgaShooter\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/botor.txt b/help/P/object/botor.txt
new file mode 100644
index 00000000..1a192a20
--- /dev/null
+++ b/help/P/object/botor.txt
@@ -0,0 +1,19 @@
+\b;\button 153; Działo organiczne na kołach
+\image botor 8 8;
+Robot na kołach strzelający kulami organicznymi.
+
+Działko organiczne jest efektywniejsze od \l;działka ogniowego\u object\botfr;. Strzela ono małymi kulkami żrącej \l;materii organicznej\u object\bullet;. \l;Zwykłe ogniwo elektryczne\u object\power; wystarcza na oddanie 11 serii strzałów.
+
+Koła to standardowy, szybki i energooszczędny sposób napędu, idealny do poruszania się po relatywnie płaskich powierzchniach. Na pochyłym terenie polecane jest użycie \l;latającego działa organicznego\u object\botoj;, a jeśli jest to niemożliwe, \l;działa organicznego na gąsienicach\u object\botoc;.
+
+\t;Programowanie
+Do zaprogramowania poruszania robotem można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+Do zaprogramowania działka strzelającego kulami organicznymi służy instrukcja \c;\l;fire\u cbot\fire;\n;. Lufę można podnieść lub opuścić używając instrukcji \c;\l;aim\u cbot\aim;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;WheeledOrgaShooter\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
+
diff --git a/help/P/object/botos.txt b/help/P/object/botos.txt
new file mode 100644
index 00000000..434cde1f
--- /dev/null
+++ b/help/P/object/botos.txt
@@ -0,0 +1,18 @@
+\b;\button 156; Działo organiczne na nogach
+\image botos 8 8;
+Robot pełzający na mrówczych odnóżach, strzelający kulami organicznymi.
+
+Działko organiczne jest efektywniejsze od \l;działka ogniowego\u object\botfs;. Strzela ono małymi kulkami żrącej \l;materii organicznej\u object\bullet;. \l;Zwykłe ogniwo elektryczne\u object\power; wystarcza na oddanie 11 serii strzałów.
+
+Podczas poruszania się, działo organiczne na nogach zużywa o połowę mniej energii od \l;działa organicznego na kołach\u object\botor;. Robot na nogach jest też idealnie przystosowany do wspinania się nawet po najbardziej stromych pochyłościach.
+
+\t;Programowanie
+Do zaprogramowania poruszania robotem można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+Do zaprogramowania działka strzelającego kulami organicznymi służy instrukcja \c;\l;fire\u cbot\fire;\n;. Lufę można podnieść lub opuścić używając instrukcji \c;\l;aim\u cbot\aim;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;LeggedOrgaShooter\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/botphaz.txt b/help/P/object/botphaz.txt
new file mode 100644
index 00000000..70b0e1d7
--- /dev/null
+++ b/help/P/object/botphaz.txt
@@ -0,0 +1,14 @@
+\b;\button 147; Działo fazowe
+\image botphaz 8 8;
+Robot na gąsienicach wyposażony w bardzo silne działko fazowe, skuteczne przeciwko większości wrogów. Wycelowane w górę ma zasięg do 60 metrów. Jest to jedyna broń, z której można zabić \l;Królową obcych\u object\mother;.
+
+\t;Programowanie
+Do zaprogramowania poruszania robotem można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+Do zaprogramowania działka fazowego służy instrukcja \c;\l;fire\u cbot\fire;\n;. Lufę można podnieść lub opuścić używając instrukcji \c;\l;aim\u cbot\aim;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;PhazerShooter\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/botrecy.txt b/help/P/object/botrecy.txt
new file mode 100644
index 00000000..b073d021
--- /dev/null
+++ b/help/P/object/botrecy.txt
@@ -0,0 +1,14 @@
+\b;\button 148; Recykler
+\image botrecy 8 8;
+Robot na gąsienicach zaprojektowany do przetwarzania \l;wraków robotów\u object\wreck; na użyteczne \l;kostki tytanu\u object\titan;.
+
+\t;Programowanie
+Do zaprogramowania poruszania robotem, można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+Aby zaprogramować odzyskanie surowców z pozostałości robota, należy użyć instrukcji \c;\l;recycle\u cbot\recycle;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;RecyclerBot\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/botsc.txt b/help/P/object/botsc.txt
new file mode 100644
index 00000000..9091a8d4
--- /dev/null
+++ b/help/P/object/botsc.txt
@@ -0,0 +1,20 @@
+\b;\button 141; Szperacz na gÄ…sienicach
+\image botsc 8 8;
+Robot na gąsienicach przystosowany do badania struktury geologicznej podglebia. Gdy znajdzie coś użytecznego, zostawia na ziemi następujące znaczniki:
+
+- \l;czerwony plus\u object\stonspot; -> \l;ruda tytanu\u object\titanore;.
+- \l;żółte kółko\u object\uranspot; -> \l;ruda uranu\u object\uranore;.
+- \l;zielony plus\u object\enerspot; -> źródło energii, niezbędne dla \l;stacji energetycznej\u object\station; lub \l;elektrowni\u object\energy;.
+
+Roboty na gąsienicach mogą pokonywać strome pochyłości ale są raczej powolne i zużywają mnóstwo energii. Na płaskim terenie na krótszych dystansach lepszym wyborem jest \l;szperacz na kołach\u object\botsr;. Gdy jest to możliwe, zbudowanie \l;robota latającego\u object\botsj; jest najlepszym sposobem pokonywania dużych odległości.
+
+\t;Programowanie
+Do zaprogramowania poruszania robotem można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+Do zaprogramowania ramienia detekcyjnego można użyć instrukcji \c;\l;sniff\u cbot\sniff;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;TrackedSniffer\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/botshld.txt b/help/P/object/botshld.txt
new file mode 100644
index 00000000..4fa26048
--- /dev/null
+++ b/help/P/object/botshld.txt
@@ -0,0 +1,18 @@
+\b;\button 157; Osłaniacz
+\image botshld 8 8;
+Robot na gąsienicach zaprojektowany do obrony przed wszelkimi możliwymi atakami \l;wrogów\u object\mother; w strefie od 10 do 25 metrów. Jego działanie powoduje regenerację osobistych osłon robotów i budynków. Użycie tego robota to jedyna możliwość przedostania się przez wąskie przejścia pomiędzy trującymi zielonymi grzybami.
+
+\l;Zwykłe ogniwo elektryczne\u object\power; pozwala na 20 sekundowe działanie osłony o promieniu 25 metrów, co jest zwykle za krótkim czasem. Bardziej odpowiednie dla tego robota jest \l;atomowe ogniwo elektryczne\u object\atomic;.
+
+Zużycie energii jest wprost proporcjonalne do promienia strefy ochronnej. Z promieniem powłoki ochronnej równym 10 metrów robot może pracować 2,5 raza dłużej, niż przy maksymalnym promieniu równym 25 metrów.
+
+\t;Programowanie
+Do zaprogramowania poruszania robotem, można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+Do programowego użycia osłony, przeznaczona jest instrukcja \c;\l;shield\u cbot\shield;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;Shielder\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/botsj.txt b/help/P/object/botsj.txt
new file mode 100644
index 00000000..2995d441
--- /dev/null
+++ b/help/P/object/botsj.txt
@@ -0,0 +1,22 @@
+\b;\button 142; Szperacz latajÄ…cy
+\image botsj 8 8;
+Robot latający z napędem odrzutowym przystosowany do badania struktury geologicznej podglebia. Gdy znajdzie coś użytecznego, zostawia na ziemi następujące znaczniki:
+
+- \l;czerwony plus\u object\stonspot; -> \l;ruda tytanu\u object\titanore;.
+- \l;żółte kółko\u object\uranspot; -> \l;ruda uranu\u object\uranore;.
+- \l;zielony plus\u object\enerspot; -> źródło energii, niezbędne dla \l;stacji energetycznej\u object\station; lub \l;elektrowni\u object\energy;.
+
+Wyświetlacz na dole ekranu pokazuje temperaturę reaktora. Należy zwracać na niego uwagę. Jeśli reaktor się przegrzeje, silnik się zatrzyma i robot spadnie.
+
+Roboty latające mogą przemieszczać się ponad naturalnymi przeszkodami, takimi jak góry lub jeziora ale ich zapas energii szybko się zużywa. Na ziemi są one powolne. Na krótkich odległościach, nie wymagających latania, polecane jest użycie \l;szperacza na kołach\u object\botsr;.
+
+\t;Programowanie
+Do zaprogramowania poruszania robotem można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;jet\u cbot\jet;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+Do zaprogramowania ramienia detekcyjnego można użyć instrukcji \c;\l;sniff\u cbot\sniff;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;WingedSniffer\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/botsr.txt b/help/P/object/botsr.txt
new file mode 100644
index 00000000..3459fd59
--- /dev/null
+++ b/help/P/object/botsr.txt
@@ -0,0 +1,20 @@
+\b;\button 140; Szperacz na kołach
+\image botsr 8 8;
+Robot na kołach przystosowany do badania struktury geologicznej podglebia. Gdy znajdzie coś użytecznego, zostawia na ziemi następujące znaczniki:
+
+- \l;czerwony plus\u object\stonspot; -> \l;ruda tytanu\u object\titanore;.
+- \l;żółte kółko\u object\uranspot; -> \l;ruda uranu\u object\uranore;.
+- \l;zielony plus\u object\enerspot; -> źródło energii, niezbędne dla \l;stacji energetycznej\u object\station; lub \l;elektrowni\u object\energy;.
+
+Koła to standardowy, szybki i energooszczędny sposób napędu, idealny do poruszania się po relatywnie płaskich powierzchniach. Na pochyłym terenie polecane jest użycie \l;szperacza latającego\u object\botsj;, a jeśli jest to niemożliwe, \l;szperacza na gąsienicach\u object\botsc;.
+
+\t;Programowanie
+Do zaprogramowania poruszania robotem można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+Do zaprogramowania ramienia detekcyjnego można użyć instrukcji \c;\l;sniff\u cbot\sniff;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;WheeledSniffer\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/botss.txt b/help/P/object/botss.txt
new file mode 100644
index 00000000..ebd99b1d
--- /dev/null
+++ b/help/P/object/botss.txt
@@ -0,0 +1,20 @@
+\b;\button 152; Szperacz na nogach
+\image botss 8 8;
+Robot pełzający na mrówczych odnóżach, przystosowany do badania struktury geologicznej podglebia. Gdy znajdzie coś użytecznego, zostawia na ziemi następujące znaczniki:
+
+- \l;czerwony plus\u object\stonspot; -> \l;ruda tytanu\u object\titanore;.
+- \l;żółte kółko\u object\uranspot; -> \l;ruda uranu\u object\uranore;.
+- \l;zielony plus\u object\enerspot; -> źródło energii, niezbędne dla \l;stacji energetycznej\u object\station; lub \l;elektrowni\u object\energy;.
+
+Podczas poruszania się, szperacz na nogach zużywa o połowę mniej energii od \l;szperacza na kołach\u object\botsr;. Robot na nogach jest też idealnie przystosowany do wspinania się nawet po najbardziej stromych pochyłościach.
+
+\t;Programowanie
+Do zaprogramowania poruszania robotem można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+Do zaprogramowania ramienia detekcyjnego można użyć instrukcji \c;\l;sniff\u cbot\sniff;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;LeggedSniffer\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/botsub.txt b/help/P/object/botsub.txt
new file mode 100644
index 00000000..db6bd018
--- /dev/null
+++ b/help/P/object/botsub.txt
@@ -0,0 +1,16 @@
+\b;\button 149; Nurek
+\image botsub 8 8;
+Robot-amfibia na gąsienicach wyposażony w zacisk chwytający. Jest on jedynym robotem zdolnym do poruszania się i działania pod wodą.
+
+Przed zanurzeniem należy sprawdzić wskaźniki poziomu naładowania \l;ogniwa elektrycznego\u object\power;, gdyż jego wymiana ani doładowanie pod wodą nie jest możliwe. Robot nurek może podnosić przedmioty jedynie z ziemi, w odróżnieniu od np. baterii z tyłu innego robota.
+
+\t;Programowanie
+Do zaprogramowania poruszania robotem można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+Do zaprogramowania zacisku chwytającego można używać instrukcji \c;\l;grab\u cbot\grab;\n; i \c;\l;drop\u cbot\drop;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;Subber\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/bottarg.txt b/help/P/object/bottarg.txt
new file mode 100644
index 00000000..13ba1023
--- /dev/null
+++ b/help/P/object/bottarg.txt
@@ -0,0 +1,11 @@
+\b;\button 173; Robot cel
+\image bottarg 8 8;
+Robot na kołach wykorzystywany w ćwiczeniach strzeleckich. Jest on samodzielny, a jego sposób poruszania się jest zależny od rodzaju ćwiczenia.
+
+Należy zwrócić uwagę, że gdy robot cel przenosi \l;TNT\u object\tnt; jest wyjątkowo wrażliwy na wstrząsy.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;TargetBot\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/bottr.txt b/help/P/object/bottr.txt
new file mode 100644
index 00000000..9663bd74
--- /dev/null
+++ b/help/P/object/bottr.txt
@@ -0,0 +1,12 @@
+\b;\button 158; Robot treningowy
+\image bottr 8 8;
+Robot na kołach używany głównie w ćwiczeniach. Jego jedynym zadaniem jest pomoc w nauce programowania różnorodnych sposobów poruszania się robotów.
+
+\t;Instrukcje
+Do zaprogramowania poruszania robotem, można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;PracticeBot\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/bottump.txt b/help/P/object/bottump.txt
new file mode 100644
index 00000000..6435998f
--- /dev/null
+++ b/help/P/object/bottump.txt
@@ -0,0 +1,18 @@
+\b;\button 146; Uderzacz
+\image bottump 8 8;
+Robot na gąsienicach zaprojektowany do uderzania w ziemią z ogromną siłą. Celem tego działania jest przewrócenie wszystkich \l;mrówek\u object\ant; i \l;pająków\u object\spider; w promieniu 100 metrów do góry brzuchem. Przewrócony owad nie jest martwy i będzie starał się stanąć na nogi. Zajmuje mu to około 60 sekund.
+
+Aby wyświetlić strefę jego działania, należy kliknąć przycisk \button 41;. Czerwone kropki otoczą kolistą strefę na 20 sekund.
+
+Robot ten zużywa bardzo duże ilości energii. Jedno uderzenie pochłania 2/5 pojemności \l;zwykłego ogniwa elektrycznego\u object\power;.
+
+\t;Instrukcje
+Do zaprogramowania poruszania robotem można używać następujących instrukcji: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
+
+Do zaprogramowania uderzenia należy użyć instrukcji \c;\l;thump\u cbot\thump;\n;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;Thumper\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/bullet.txt b/help/P/object/bullet.txt
new file mode 100644
index 00000000..b99dfd98
--- /dev/null
+++ b/help/P/object/bullet.txt
@@ -0,0 +1,12 @@
+\b;Materia organiczna
+\image bullet 4 4;
+Materia organiczna jest sekretem owadów. Kulki materii organicznej są często używane do bombardowań przez \l;osy\u object\wasp;. Musisz ją zdobyć, aby umożliwić po odpowiedniej \l;analizie\u object\labo;, odkrycie nowych, niesamowitych technologii poprawiających efektywność robotów.
+
+\t;Transport
+Wszystkie \l;transportery\u object\botgr; oraz \l;astronauta\u object\human;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;OrgaMatter\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/captor.txt b/help/P/object/captor.txt
new file mode 100644
index 00000000..df6b1f61
--- /dev/null
+++ b/help/P/object/captor.txt
@@ -0,0 +1,25 @@
+\b;\button 174; Stacja odgromnikowa
+\image captor 8 8;
+Stacja odgromnikowa spełnia rolę przewodnika wyładowań jak i przetwornika energii.
+Zapewnia ochronę przed wyładowaniami elektrycznymi podczas burz magnetycznych w promieniu 50 metrów. Dodatkowo, w chwili uderzenia pioruna, ładowane są wszystkie roboty i \l;ogniwa elektryczne\u object\power; umieszczone pod nim, oczywiście z wyjątkiem \l;atomowych ogniw elektrycznych\u object\atomic;.
+
+Aby wyświetlić strefę, która jest zabezpieczona przez stację odgromnikową, należy ją zaznaczyć i kliknąć przycisk \button 41;. Czerwone kropki otoczą kolistą strefę na 20 sekund.
+
+W całym kosmosie, tylko na kilku planetach występują burze magnetyczne. Wśród odwiedzanych planet ten fenomen występuje jedynie na Orfenii.
+
+\l;Statek kosmiczny\u object\base; również działa jak przewodnik wyładowań, jednakże nie ładuje on ogniw elektrycznych.
+
+\t;Wymagania
+Płaska powierzchnia szeroka na minimum 10 metrów.
+
+\t;Źródło zasilania
+Wyładowania elektryczne.
+
+\t;Czas działania
+1 sekunda.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;PowerCaptor\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/convert.txt b/help/P/object/convert.txt
new file mode 100644
index 00000000..50ebbacc
--- /dev/null
+++ b/help/P/object/convert.txt
@@ -0,0 +1,24 @@
+\b;\button 162; Huta
+\image convert 8 8;
+Ten budynek został zaprojektowany do przetapiania \l;rudy tytan\u object\titanore; na \l;kostki tytanu\u object\titan;. Wszystko, co trzeba zrobić, to umieścić porcję rudy tytanu na środku platformy i cofnąć się. Ruda zostanie przetopiona na tytan.
+
+\t;Wymagania
+Płaska powierzchnia szeroka na minimum 6 metrów.
+
+\t;Wejście
+Ruda tytanu.
+
+\t;Wyjście
+Tytan.
+
+\t;Źródło zasilania
+Brak.
+
+\t;Czas działania
+15 sekund.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;Converter\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/derrick.txt b/help/P/object/derrick.txt
new file mode 100644
index 00000000..c4a97634
--- /dev/null
+++ b/help/P/object/derrick.txt
@@ -0,0 +1,29 @@
+\b;\button 161; Kopalnia
+\image derrick 8 8;
+Kopalnia umożliwia wydobywanie surowców.
+
+Do określenia najlepszego miejsca na wybudowanie kopalni należy użyć \l;szperacza\u object\botsr;, który zbada podglebie. Pozostawione przez niego znaczniki określają jakie surowce mogą być wydobyte:
+
+- \l;czerwony plus\u object\stonspot; -> \l;ruda tytanu\u object\titanore;.
+- \l;żółte kółko\u object\uranspot; -> \l;ruda uranu\u object\uranore;.
+
+\t;Wymagania
+PÅ‚aska powierzchnia z odpowiednimi warunkami geologicznymi szeroka na minimum 2,5 metra.
+
+\t;Wejście
+Ruda tytanu lub uranu w podglebiu.
+
+\t;Wyjście
+Kawałki rudy tytanu lub uranu.
+
+\t;Źródło zasilania
+Brak.
+
+\t;Czas działania
+10 sekund dla tytanu i 30 dla uranu.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;Derrick\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/egg.txt b/help/P/object/egg.txt
new file mode 100644
index 00000000..eb4e18d6
--- /dev/null
+++ b/help/P/object/egg.txt
@@ -0,0 +1,8 @@
+\b;Jajo obcych
+Jaja składane są przez \l;Królową Obcych\u object\mother;. Po krótkim czasie wykluwają się z nich \l;mrówki\u object\ant;, \l;osy\u object\wasp;, \l;pająki\u object\spider; lub \l;robale\u object\worm;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;AlienEgg\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/energy.txt b/help/P/object/energy.txt
new file mode 100644
index 00000000..cf034ef9
--- /dev/null
+++ b/help/P/object/energy.txt
@@ -0,0 +1,28 @@
+\b;\button 167; Elektrownia
+\image energy 8 8;
+Elektrownia jest fabryką \l;ogniw elektrycznych\u object\power;. Przetwarza ona \l;kostki tytanu\u object\titan; na zwykłe, całkowicie naładowane i gotowe do użycia ogniwa elektryczne.
+
+Elektrownia wymaga pewnego źródła energii w podglebiu. Jeśli z raportu satelitarnego wynika, że energia dostępna jest tylko w niektórych miejscach, należy wcześniej przebadać podglebie przy użyciu \l;robota szperacza\u object\botsr;. Pozostawione przez niego oznaczenia informują o rodzaju znalezionego surowca: \l;zielony plus\u object\enerspot; oznacza znajdujące się pod ziemią źródło energii, wymagane przy budowie elektrowni lub \l;stacji energetycznej\u object\station;.
+
+Jeśli duże ogniwo elektryczny u podstawy elektrowni pozostaje czerwone po jej wybudowaniu, oznacza to, że w wybranym miejscu nie ma odpowiednich warunków geologicznych.
+
+\t;Wymagania
+PÅ‚aska powierzchnia z odpowiednimi warunkami geologicznymi szeroka na minimum 4 metry.
+
+\t;Wejście
+Tytan.
+
+\t;Wyjście
+Zwykłe ogniwo elektryczne.
+
+\t;Źródło zasilania
+Podziemne źródło energii.
+
+\t;Czas działania
+12 sekund.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;PowerPlant\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/enerspot.txt b/help/P/object/enerspot.txt
new file mode 100644
index 00000000..53e9886f
--- /dev/null
+++ b/help/P/object/enerspot.txt
@@ -0,0 +1,17 @@
+\b;Podziemne źródło energii
+\image enerspot 4 4;
+Gdy robot \l;szperacz\u object\botsr; odkryje źródło energii w podglebiu, zostawia w tym miejscu zielony plus. W pobliżu mogą być postawione następujące budynki:
+
+o \l;Stacja energetyczna\u object\station;
+o \l;Elektrownia\u object\energy;
+
+Do przebadania podglebia niezbędny jest \l;robot szperacz\u object\botsr;, wykrywający również złoże \l;rudy tytanu\u object\titanore; (oznaczone \l;czerwonym plusem\u object\stonspot;) lub złoże \l;rudy uranu\u object\uranore; (oznaczone \l;żółtym kółkiem\u object\uranspot;).
+
+\t;Transport
+Niemożliwy.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;EnergySite\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/exchange.txt b/help/P/object/exchange.txt
new file mode 100644
index 00000000..6e98f38e
--- /dev/null
+++ b/help/P/object/exchange.txt
@@ -0,0 +1,31 @@
+\b;\button 172; Stacja przekaźnikowa informacji
+\image info 8 8;
+Budynek ten przechowuje cyfrowe informacje. Stacja może przechowywać do 10 porcji informacji, do każdej z nich można odwoływać się poprzez jej nazwę.
+Na przykład stacja może przechowywać 3 informacje¦:\c;
+\tab;"Pozycja.x" 23.45
+\tab;"Pozycja.y" -102.70
+\tab;"Ilość" 3.00
+\n;
+Do umieszczenia nowej informacji służy polecenie \c;\l;send\u cbot\send;\n;.
+Do odczytania informacji ze stacji służy polecenie \c;\l;receive\u cbot\receive;\n;.
+
+\t;Wymagania
+PÅ‚aska powierzchnia szeroka na minimum 2,5 metra.
+
+\t;Wejście
+Brak.
+
+\t;Wyjście
+Cyfrowe informacje.
+
+\t;Źródło zasilania
+Brak.
+
+\t;Czas działania
+1 sekunda.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;ExchangePost\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/factory.txt b/help/P/object/factory.txt
new file mode 100644
index 00000000..0c719902
--- /dev/null
+++ b/help/P/object/factory.txt
@@ -0,0 +1,33 @@
+\b;\button 160; Fabryka robotów
+\image factory 8 8;
+Ten budynek jest przeznaczony do wytwarzania robotów z \l;tytanu\u object\titan;.
+
+1) Umieść kostkę tytanu w fabryce.
+2) Cofnij siÄ™.
+3) Zaznacz fabrykÄ™.
+4) Kliknij przycisk odpowiadający symbolowi robota, który ma zostać złożony (np.\button 137; dla \l;transportera na kołach\u object\botgr;).
+
+Gotowy robot nie ma na pokładzie \l;ogniwa elektrycznego\u object\power;. Aby mógł opuścić fabrykę, należy go w nie wyposażyć.
+
+Lista dostępnych robotów zależy od postępu prac badawczych w \l;centrum badawczym\u object\research;.
+
+\t;Wymagania
+PÅ‚aska powierzchnia szeroka na minimum 7,5 metra.
+
+\t;Wejście
+Tytan.
+
+\t;Wyjście
+Gotowy robot.
+
+\t;Źródło zasilania
+Brak.
+
+\t;Czas działania
+15 sekund.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;BotFactory\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/flag.txt b/help/P/object/flag.txt
new file mode 100644
index 00000000..1ea26697
--- /dev/null
+++ b/help/P/object/flag.txt
@@ -0,0 +1,22 @@
+\b;Kolorowa flaga
+\image flag 4 4;
+Kolorowe flagi mogą być pomocne w zaznaczeniu strategicznych lokacji lub pozycji, które \l;astronauta\u object\human; będzie musiał ponownie znaleźć. Flagi pojawiają się na mapce jako plusy w tym samym kolorze co kolor flagi.
+
+Do ustawiania i usuwania flag służą przyciski \button 118; i \button 119;, kolor wybierany jest przyciskami powyżej nich.
+
+Gdy nie działa mapka, fakt że flagi orientują się zgodnie z wiatrem, może być pomocny w znalezieniu drogi i zapobieżeniu chodzenia w kółko.
+
+Podczas programowania można użyć flag jako punktów odniesienia dla robota: instrukcja \c;\l;radar\u cbot\radar;\n; umożliwia robotowi poznanie dokładnej pozycji flagi określonego koloru.
+
+\t;Transport
+Niemożliwy.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;BlueFlag\n;
+\c;RedFlag\n;
+\c;GreenFlag\n;
+\c;YellowFlag\n;
+\c;VioletFlag\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/goal.txt b/help/P/object/goal.txt
new file mode 100644
index 00000000..9e9979a7
--- /dev/null
+++ b/help/P/object/goal.txt
@@ -0,0 +1,8 @@
+\b;Platforma końcowa
+Platforma końcowa jest celem, do którego trzeba dotrzeć w niektórych ćwiczeniach.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;GoalArea\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/human.txt b/help/P/object/human.txt
new file mode 100644
index 00000000..e8a3c47f
--- /dev/null
+++ b/help/P/object/human.txt
@@ -0,0 +1,19 @@
+\b;\button 136; Astronauta
+\image human 8 8;
+AstronautÄ… w trakcie gry jesteÅ› Ty.
+
+Jeśli umrzesz, misja kończy się niepowodzeniem.
+
+Za pomocą działa neutronowego umieszczonego w zestawie przetrwania można wznosić budynki. Zestaw przetrwania umożliwia, w większości misji, latanie dzięki umieszczonemu pod nim reaktorowi oraz pływanie bez ograniczenia czasowego. Można też przenosić większość obiektów, ale ich ciężar znacząco zmniejsza prędkość poruszania się. Również latanie, pływanie i chodzenie pod wodą jest niemożliwe w trakcie niesienia przedmiotu. Do tych zadań polecane jest używanie robota \l;transportera\u object\botgr; lub robota \l;nurka\u object\botsub;.
+
+Przenoszenie \l;rudy uranu\u object\uranore; nie jest możliwe z powodu jej radioaktywności.
+
+Specjalny przycisk \button 111; umożliwia sprawdzenie, czy okoliczny grunt jest płaski. Jest to ważne, gdyż budynki mogą stać jedynie na płaskiej powierzchni. Płaska powierzchnia jest zaznaczona na zielono, a pochyłości na czerwono.
+
+Przycisk \button 118; umożliwia zaznaczenie pozycji za pomocą różnokolorowych \l;flag\u object\flag;. Może zapobiec zgubieniu się, może być również pomocne jeśli konieczne jest ponowne znalezienie ważnego miejsca lub oznaczenie pozycji robota. Do dyspozycji jest po 5 flag w 5 różnych kolorach. Flagę można usunąć przyciskiem \button 119; i zachować do późniejszego użycia.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;Me\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/huston.txt b/help/P/object/huston.txt
new file mode 100644
index 00000000..5704881a
--- /dev/null
+++ b/help/P/object/huston.txt
@@ -0,0 +1,11 @@
+\b;\button 176; Centrum Kontroli Misji
+\image huston 8 8;
+Ziemskie centrum kontroli wszystkich \l;Twoich\u object\human; misji. Pomimo takiej samej nazwy jak ogólnie znana stacja kontroli misji z dawnych czasów, "Houston" mieści się w rzeczywistości pośrodku pustyni Nevada, w nowym centrum koordynacji eksploracji kosmosu.
+
+Centrum Kontroli Misji nieustannie nadzoruje Twoją misję, a cały zespół naukowców i inżynierów bardzo ciężko pracuje nad znalezieniem rozwiązań dla wszystkich napotkanych problemów.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;Houston\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/key.txt b/help/P/object/key.txt
new file mode 100644
index 00000000..9ee53784
--- /dev/null
+++ b/help/P/object/key.txt
@@ -0,0 +1,17 @@
+\b;Klucze A, B, C i D
+\image key 4 4;
+Dzięki kluczom, \l;astronauta\u object\human; może uzyskać dostęp do \l;skrytki\u object\safe;. Potrzebne są to tego cztery klucze:
+
+o Klucz A, niebieski, trójkątny
+o Klucz B, czerwony, pięciokątny
+o Klucz C, zielony, w kształcie sześcioramiennej gwiazdy
+o Klucz D, żółty, okrągły
+
+\t;Transport
+Wszystkie \l;transportery\u object\botgr; oraz \l;astronauta\u object\human;.
+
+\t;\l;Kategorie \u cbot\category; obiektów
+\c;KeyA\n;, \c;KeyB\n;, \c;KeyC\n; i \c;KeyD\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/labo.txt b/help/P/object/labo.txt
new file mode 100644
index 00000000..072155e3
--- /dev/null
+++ b/help/P/object/labo.txt
@@ -0,0 +1,24 @@
+\b;\button 166; Laboratorium
+\image labo 8 8;
+Laboratorium jest przeznaczone do analizy \l;materii organicznej\u object\bullet;. Dzięki niemu \l;ludzie\u object\human; mogą poznać technologię owadów, a nawet użyć jej dla zwiększenia swojej przewagi. Fragment \l;materii organicznej\u object\bullet; należy umieścić na platformie, zaznaczyć laboratorium i kliknąć przycisk odpowiadający żądanemu programowi badawczemu.
+
+\t;Wymagania
+Płaska powierzchnia szeroka na minimum 6 metrów.
+
+\t;Wejście
+Materia organiczna.
+
+\t;Wyjście
+Nowe, ulepszone technologie.
+
+\t;Źródło zasilania
+Brak.
+
+\t;Czas działania
+20 sekund.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;AutoLab\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/lrv.txt b/help/P/object/lrv.txt
new file mode 100644
index 00000000..45e8f85f
--- /dev/null
+++ b/help/P/object/lrv.txt
@@ -0,0 +1,9 @@
+\b;Pojazd Księżycowy Apollo
+
+
+
+\c;< zdjęcie archiwalne nie jest dostępne >\n;
+
+
+
+Pojazd księżycowy (LRV - Lunar Roving Vehicle) został przewieziony na Księżyc 30 lipca 1971 roku przez astronautów Davida Scotta i Jima Irwina z misji Apollo 15. Jego akumulatory są wciąż częściowo naładowane, umożliwiając jego zdalną kontrolę, jednak ta przestarzała już technologia nie będzie przydatna w obecnych misjach.
diff --git a/help/P/object/mine.txt b/help/P/object/mine.txt
new file mode 100644
index 00000000..efcb5544
--- /dev/null
+++ b/help/P/object/mine.txt
@@ -0,0 +1,14 @@
+\b;Mina
+\image mine 8 8;
+Miny były systemem broni defensywnej używanej przez pierwszą ekspedycję. Ponieważ były one niebezpieczne dla samej misji, nie są już obecnie używane. W niektórych ćwiczeniach miny służą do nauki unikania przeszkód. Nie jest możliwe ich usunięcie ani wytworzenie nowych.
+
+\l;Robot treningowy\u object\bottr; nie powinien zbliżać się do nich na odległość mniejszą niż 2 metry od pozycji podawanej przez instrukcję \l;radar\u cbot\radar;.
+
+\t;Transport
+Niemożliwy.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;Mine\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/mother.txt b/help/P/object/mother.txt
new file mode 100644
index 00000000..d6bcb987
--- /dev/null
+++ b/help/P/object/mother.txt
@@ -0,0 +1,15 @@
+\b;Królowa obcych
+\image mother 8 8;
+Ten olbrzymi owad jest matką wszystkich obcych. Składa ona \l;jaja\u object\egg;, z których wysiaduje różne rodzaje owadów, z którymi musi walczyć \l;astronauta\u object\human;. Są bardzo groźne, zarówno dla astronauty, jak i dla całej misji. Osłona ochronna królowej jest odporna na większość ataków.
+
+Daje ona życie następującym organizmom:
+o \l;mrówkom\u object\ant;
+o \l;pajÄ…kom\u object\spider;
+o \l;osom\u object\wasp;
+o \l;robalom\u object\worm;
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;AlienQueen\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/nest.txt b/help/P/object/nest.txt
new file mode 100644
index 00000000..3d696029
--- /dev/null
+++ b/help/P/object/nest.txt
@@ -0,0 +1,8 @@
+\b;Gniazdo
+Gniazdo obcych jest niespotykaną wcześniej konstrukcją, z której regularnie wydobywa się \l;materia organiczna\u object\bullet;. Jest ono często odwiedzane przez \l;osy\u object\wasp;, które uzupełniają tu amunicję używaną do bombardowania robotów, budynków i astronauty.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;AlienNest\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/nuclear.txt b/help/P/object/nuclear.txt
new file mode 100644
index 00000000..9fd77e58
--- /dev/null
+++ b/help/P/object/nuclear.txt
@@ -0,0 +1,24 @@
+\b;\button 170; Elektrownia atomowa
+\image nuclear 8 8;
+Elektrownia atomowa to fabryka \l;atomowych ogniw elektrycznych\u object\atomic;. Przetwarza ona porcję \l;rudy uranu\u object\uranore; na w pełni naładowane i gotowe do użycia \l;atomowe ogniwo elektryczne\u object\atomic;.
+
+\t;Wymagania
+Płaska powierzchnia szeroka na minimum 10 metrów.
+
+\t;Wejście
+Ruda uranu.
+
+\t;Wyjście
+Atomowe ogniwo elektryczne
+
+\t;Źródło zasilania
+Brak.
+
+\t;Czas działania
+30 sekund.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;NuclearPlant\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/power.txt b/help/P/object/power.txt
new file mode 100644
index 00000000..e927922b
--- /dev/null
+++ b/help/P/object/power.txt
@@ -0,0 +1,16 @@
+\b;Zwykłe ogniwo elektryczne
+\image power 4 4;
+Ogniwo elektryczne dostarcza energii robotom i niektórym budynkom.
+
+Całkowicie czerwone ogniwo elektryczne jest wyładowane. Część zielona oznacza pozostałą energię. Może być ono naładowane w \l;stacji energetycznej\u object\station;. Do produkcji nowych, w pełni naładowanych ogniw elektrycznych potrzebna jest \l;elektrownia\u object\energy;.
+
+Pojemność zwykłego ogniwa elektrycznego jest 100 razy mniejsza od pojemności \l;atomowego ogniwa elektrycznego\u object\atomic; wytwarzanego przez \l;elektrownię atomową\u object\nuclear; z \l;rudy uranu\u object\uranore;.
+
+\t;Transport
+Wszystkie \l;transportery\u object\botgr; oraz \l;astronauta\u object\human;.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;PowerCell\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/radar.txt b/help/P/object/radar.txt
new file mode 100644
index 00000000..0fab3edb
--- /dev/null
+++ b/help/P/object/radar.txt
@@ -0,0 +1,26 @@
+\b;\button 168; Radar
+\image radar 8 8;
+Radar określa kierunek najbliższego \l;wroga\u object\mother;. Co więcej, informacje uzyskane dzięki radarowi umożliwiają pokazanie pozycji wszystkich robotów, budynków i wrogów, jako małych różnokolorowych kwadratów i trójkątów na mapce, znajdującej się w prawej dolnej części ekranu.
+
+Stacje radarowe spełniają również rolę stacji przekaźnikowych w komunikacji pomiędzy Ziemią i odległymi planetami.
+
+\t;Wymagania
+PÅ‚aska powierzchnia szeroka na minimum 2,5 metra.
+
+\t;Wejście
+Brak.
+
+\t;Wyjście
+Informacje na mapce.
+
+\t;Źródło zasilania
+Brak.
+
+\t;Czas działania
+Stały.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;RadarStation\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/repair.txt b/help/P/object/repair.txt
new file mode 100644
index 00000000..5d7a8300
--- /dev/null
+++ b/help/P/object/repair.txt
@@ -0,0 +1,24 @@
+\b;\button 169; Warsztat
+\image repair 8 8;
+W warsztacie można zregenerować uszkodzone osłony robotów. Osłona robota wchłania pewną ilość strzałów \l;wroga\u object\mother;. Brak osłony oznacza, że robot zostanie zniszczony przy następnym ataku.
+
+\t;Wymagania
+Płaska powierzchnia szeroka na minimum 6 metrów.
+
+\t;Wejście
+Uszkodzony robot.
+
+\t;Wyjście
+Naprawiony robot ze zregenerowaną osłoną.
+
+\t;Źródło zasilania
+Brak.
+
+\t;Czas działania
+Kilka sekund, w zależności od stopnia uszkodzenia robota.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;RepairCenter\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/research.txt b/help/P/object/research.txt
new file mode 100644
index 00000000..5f506246
--- /dev/null
+++ b/help/P/object/research.txt
@@ -0,0 +1,28 @@
+\b;\button 163; Centrum badawcze
+\image research 8 8;
+Centrum badawcze to ogromny komputer. Jego najbardziej użyteczną funkcją jest możliwość odkrywania nowych technologii oraz ulepszeń istniejącej, w szczególności dotyczącej budynków i robotów.
+
+Zawiera 65536 procesorów i zużywa bardzo duże ilości energii.
+Każdy program badawczy potrzebuje nowego, w pełni naładowanego \l;ogniwa elektrycznego\u object\power;
+
+\t;Wymagania
+Płaska powierzchnia szeroka na minimum 5 metrów.
+
+\t;Wejście
+Żądanie rozpoczęcia badań.
+
+\t;Wyjście
+Nowe, ulepszone technologie.
+
+\t;Źródło zasilania
+Zwykłe lub atomowe ogniwo elektryczne.
+
+\t;Czas działania
+Od 9 sekund do 1 minuty, w zależności od programu badawczego.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;ResearchCenter\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
+
diff --git a/help/P/object/safe.txt b/help/P/object/safe.txt
new file mode 100644
index 00000000..a47abfb9
--- /dev/null
+++ b/help/P/object/safe.txt
@@ -0,0 +1,9 @@
+\b;\button 175; Skrytka
+\image safe 8 8;
+Ten kopulasty budynek został skonstruowany przez pierwszą ekspedycję. Jego celem była ochrona nowego typu zaawansowanego robota. W celu zabezpieczenia przed wrogimi atakami, skrytka została zamknięta czterema \l;kluczami\u object\key;. Dostęp do robota można uzyskać po znalezieniu 4 kluczy i umieszczeniu ich w odpowiednich zamkach.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;Vault\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/spider.txt b/help/P/object/spider.txt
new file mode 100644
index 00000000..fa813170
--- /dev/null
+++ b/help/P/object/spider.txt
@@ -0,0 +1,9 @@
+\b;PajÄ…k
+\image spider 8 8;
+Pająki działają jak oddziały samobójcze: gdy zbliży się on do celu, wybucha i rozpada się na wiele małych fragmentów. Powodują one zapłon przedmiotów, z którym się zetkną. Na szczęście pająk również tego nie przeżywa.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;AlienSpider\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/start.txt b/help/P/object/start.txt
new file mode 100644
index 00000000..3f6752cd
--- /dev/null
+++ b/help/P/object/start.txt
@@ -0,0 +1,8 @@
+\b;Platforma startowa
+Jest to platforma używana w niektórych ćwiczeniach.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;StartArea\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/object/station.txt b/help/P/object/station.txt
new file mode 100644
index 00000000..7217c8e1
--- /dev/null
+++ b/help/P/object/station.txt
@@ -0,0 +1,28 @@
+\b;\button 164; Stacja energetyczna
+\image station 8 8;
+Stacja energetyczna pobiera energię spod ziemi i poprzez indukcję ładuje \l;zwykłe ogniwa elektryczne \u object\power;. Aby naładować ogniwo elektryczne umieszczone na robocie, należy przesunąć go na środek platformy i poczekać kilka sekund. \l;Ogniwo elektryczne\u object\power; trzymane przez robota lub astronautę również może zostać doładowane. \l;Atomowe ogniwa elektryczne\u object\atomic; nie są ładowalne.
+
+Stacja energetyczna wymaga pewnego źródła energii w podglebiu. Jeśli z raportu satelitarnego wynika, że energia dostępna jest tylko w niektórych miejscach, należy wcześniej przebadać podglebie przy użyciu \l;robota szperacza\u object\botsr;. Pozostawione przez niego oznaczenia informują o rodzaju znalezionego surowca: \l;zielony plus\u object\enerspot; oznacza znajdujące się pod ziemią źródło energii, wymagane przy budowie stacji energetycznej lub \l;elektrowni\u object\energy;.
+
+Jeśli duże ogniwo elektryczny u góry stacji energetycznej pozostaje czerwone po jej wybudowaniu, oznacza to, że wybrane miejsce nie spełnia wymaganych warunków geologicznych.
+
+\t;Wymagania
+Płaska powierzchnia z odpowiednimi warunkami geologicznymi szeroka na minimum 6 metrów.
+
+\t;Wejście
+Puste ogniwo elektryczne.
+
+\t;Wyjście
+Naładowane ogniwo elektryczne.
+
+\t;Źródło zasilania
+Podziemne źródło energii.
+
+\t;Czas działania
+Kilka sekund, zależnie od pojemności ogniwa, które ma być naładowane.
+
+\t;\l;Kategoria\u cbot\category; obiektu
+\c;PowerStation\n;
+
+\t;Zobacz również
+\l;Język CBOT\u cbot;, \l;zmienne\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/tchasse.txt b/help/P/tchasse.txt
new file mode 100644
index 00000000..59108c46
--- /dev/null
+++ b/help/P/tchasse.txt
@@ -0,0 +1,18 @@
+\b;Ćwiczenie
+Musisz znaleźć sposób na zniszczenie czterech \l;robotów celów\u object\bottarg; bez marnowania amunicji. Warto zauważyć, że po każdym ruchu cele są nieruchome przez jedną sekundę.
+
+\b;Ogólny algorytm
+1) Wykryj cel instrukcjÄ… \c;\l;radar\u cbot\radar;(TargetBot);\n;.
+2) Obróć się w kierunku celu: \c;\l;turn\u cbot\turn;(direction());\n;.
+3) Po wykonaniu obrotu sprawdź, czy cel się nie poruszył.
+4) Jeśli nie, poczekaj 0,2 sekundy: \c;\l;wait\u cbot\wait;(0.2);\n;.
+5) Ponownie sprawdź, czy cel się nie poruszył.
+6) Jeśli nie, strzel, wykonując instrukcję \c;\l;fire\u cbot\fire;(2);\n; i czekając przez 2 sekundy na trafienie i zniszczenie celu.
+
+Są oczywiście również inne sposoby osiągnięcia tego samego celu.
+
+\t;Uwaga
+Aby zwiększyć skuteczność strzałów, celuj nieco w dół instrukcją \c;\l;aim\u cbot\aim;(-3);\n;.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/tdragst.txt b/help/P/tdragst.txt
new file mode 100644
index 00000000..ca5b786e
--- /dev/null
+++ b/help/P/tdragst.txt
@@ -0,0 +1,64 @@
+\b;Ćwiczenie
+Dotrzyj jak najszybciej do platformy końcowej (25 m przed Tobą), używając instrukcji \c;motor( , )\n;. Przed końcem ruchu musisz stopniowo zwalniać, aby robot nie wpadł na \l;miny\u object\mine; i nie wybuchł.
+
+Równie dobrze możesz napisać jedynie instrukcję \c;\l;move\u cbot\move;(25);\n;, która wykona to samo zadanie, jednak celem tego ćwiczenia jest nauka używania instrukcji \c;\l;motor\u cbot\motor;\n;.
+
+Instrukcja ta potrzebuje dwóch wartości:
+1) Prędkości lewego silnika.
+2) Prędkości prawego silnika.
+
+\s;\c; motor( lewy, prawy );
+\n;
+Wartości muszą się zawierać w przedziale od -1 do 1:
+-1 = pełny ciąg wstecz
+ 0 = silnik zatrzymany
+ 1 = pełny ciąg naprzód
+
+Na przykład instrukcja \c;motor(0.5, 0.5);\n; będzie poruszała robotem naprzód z połową prędkości, aż do podania silnikom nowych instrukcji.
+
+Po napotkaniu instrukcji \c;motor(0.5, 0.6);\n;, robot będzie się poruszał do przodu z połową prędkości, wykonując w tym samym czasie niewielki obrót w lewo: prawy silnik porusza się nieco szybciej (\c;0.6\n;) niż lewy (\c;0.5\n;).
+
+\b;Ogólny algorytm
+Aby przejechać dokładnie 25 metrów, należy jechać z pełną prędkością przez pierwsze 23 metry, a następnie stopniowo zmniejszać prędkość przez ostatnie dwa metry.
+\l;Zmienna\u cbot\var; \l;position\u cbot\object; podaje bieżącą pozycję robota, a instrukcja \c;\l;distance\u cbot\dist;( , );\n; oblicza odległość między dwoma punktami. Najlepszy sposób na poznanie własnej pozycji, polega na zachowaniu bieżącej pozycji przed startem w \l;zmiennej\u cbot\var;, nazwanej na przykład \c;start\n;. Następnie można obliczyć odległość między pozycją startową i bieżącą pozycją za pomocą instrukcji \c;distance(position, start)\n;.
+
+\b;Program
+1) zadeklaruj zmienne
+\s;\c; point start;
+\s; float len;
+\n;
+2) zapisz pozycjÄ™ startowÄ…
+\s;\c; start = position;
+\n;
+3) na początek z pełną mocą:
+\s;\c; motor(1, 1);
+\n;
+4) wykonaj pętlę nieskończoną \c;\l;while\u cbot\while;\n;:
+\s;\c; while ( true )
+\s; {
+\s; len = distance(position, start);
+\s; if ( len > 25-2 )
+\s; {
+\s; motor( mniej niż poprzednio! );
+\s; }
+\s; }
+\n;
+Tak długo jak odległość pomiędzy pozycją startową i bieżącą jest mniejsza od 23m, instrukcje w klamrach po instrukcji \c;\l;if\u cbot\if;\n; nie będą wykonywane, więc silniki utrzymają maksymalną prędkość nadaną im instrukcją \c;\l;motor\u cbot\motor;(1,1);\n;.
+
+Aby stopniowo zwalniać, prędkość silników musi być proporcjonalna do pozostałej odległości:
+o zostały \c;2.0\n; metry -> prędkość = \c;1.00\n; (maksymalna)
+o zostało \c;1.5\n; metra -> prędkość = \c;0.75\n;
+o został \c;1.0\n; metr -> prędkość = \c;0.50\n;
+o zostało \c;0.5\n; metra -> prędkość = \c;0.25\n;
+o zostało \c;0.0\n; metrów -> prędkość = \c;0.00\n; (zatrzymanie)
+
+\image tdragst1 12 6;
+Do obliczenia prędkości, która zostanie podana silnikom możesz użyć następującego \l;wyrażenia\u cbot\expr;: \c;(25-len)/2\n;.
+
+Do Ciebie należy złożenie tego wszystkiego razem i przetestowanie programu.
+
+\t;Uwaga
+Możesz używać wartości większych od 1 dla instrukcji \c;\l;motor\u cbot\motor;();\n;, ale robot nie będzie poruszał się szybciej.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/texch1.txt b/help/P/texch1.txt
new file mode 100644
index 00000000..0d741799
--- /dev/null
+++ b/help/P/texch1.txt
@@ -0,0 +1,31 @@
+\b;Ćwiczenie
+Kilka \l;stacji przekaźnikowych informacji\u object\exchange; stoi na środku pola \l;minowego\u object\mine;. Gdy robot jest wystarczająco blisko stacji przekaźnikowej, może odczytać zawarte w niej informacje. Każda stacja przekaźnikowa zawiera kąt obrotu, który powinien wykonać robot, aby dotrzeć do następnej stacji przekaźnikowej bez wpadnięcia na \l;minę\u object\mine;.
+Odległość pomiędzy stacjami przekaźnikowymi wynosi 20 metrów.
+
+\b;Ogólny algorytm
+Powtórz 5 razy:
+ o Idź 20 m naprzód.
+ o Odczytaj kierunek następnej \l;stacji przekaźnikowej informacji\u object\exchange;.
+ o Wykonaj obrót.
+
+\image tinfo1 8 8;
+Do powtarzania powyższych instrukcji, tak jak poprzednio użyj instrukcji \c;\l;for\u cbot\for;\n;.
+\s;\c; for ( int i=0 ; i<5 ; i=i+1 )
+\n;
+Przesuń robota do przodu instrukcją \c;move(20);\n;.
+
+Do odczytania informacji ze \l;stacji przekaźnikowej\u object\exchange; użyj instrukcji \c;\l;receive\u cbot\receive;("Direction");\n;. Jest to oczywiście możliwe tylko gdy robot jest wystarczająco blisko stacji.
+Do przechowywania wartości pobranej ze stacji przekaźnikowej potrzebna będzie \l;zmienna\u cbot\var;. Nazwijmy ją \c;dir\n;; należy ją zadeklarować w następujący sposób:
+\s;\c; float dir;
+\n;
+Aby odczytać kąt obrotu ze stacji przekaźnikowej, przypisz zmiennej jej wartość:
+\s;\c; dir = receive(...);
+\n;
+Następnie wykonaj obrót:
+\s;\c; turn(dir);
+\n;
+\t;Uwaga
+Możesz kliknąć na \l;stacji przekaźnikowej informacji\u object\exchange; aby przeczytać zawarte w niej informacje. W tym ćwiczeniu każda stacja przekaźnikowa zawiera tylko jedną wartość zwaną \c;"Direction"\n; (kierunek), ale może zawierać do 10 różnych wartości, o czym przekonasz się w niektórych z dalszych ćwiczeń.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/texch2.txt b/help/P/texch2.txt
new file mode 100644
index 00000000..65c23e40
--- /dev/null
+++ b/help/P/texch2.txt
@@ -0,0 +1,36 @@
+\b;Ćwiczenie
+W tym ćwiczeniu \l;stacje przekaźnikowe\u object\exchange; wzdłuż drogi zawierają kierunek i odległość do następnej stacji. Nie jest znana liczba stacji przekaźnikowych koniecznych do dotarcia do celu.
+
+\b;Ogólny algorytm
+ Powtarzaj w nieskończoność:
+ o Pobierz kierunek ze \l;stacji przekaźnikowej\u object\exchange;.
+ o Pobierz odległość ze \l;stacji przekaźnikowej\u object\exchange;.
+ o Jeśli nie ma żadnych informacji, zatrzymaj program.
+ o Wykonaj obrót.
+ o Idź do następnej stacji.
+
+Do nieskończonego powtarzania użyj pętli \c;\l;while\u cbot\while; (true)\n;. Instrukcje pomiędzy klamrami \c;{ }\n; będą powtarzane w nieskończoność lub do czasu wykonania instrukcji \c;\l;break\u cbot\break;\n;.
+\s;\c; while ( true )
+\n;
+Tym razem potrzebne będą dwie \l;zmienne\u cbot\var;, jedna dla kąta obrotu, druga dla odległości, na przykład \c;dir\n; i \c;len\n;:
+\s;\c; float dir, len;
+\n;
+Następnie można pobrać informacje:
+\s;\c; dir = receive("Direction");
+\s;\c; len = receive("Length");
+\n;
+Zmienna \l;typu\u cbot\type; \c;\l;float\u cbot\float;\n; może również przyjmować specjalną wartość zwaną \c;\l;nan\u cbot\nan;\n;. Oznacza ona, że zmienna nie zawiera liczby (Not A Number).
+Jeśli w pobliżu nie ma \l;stacji przekaźnikowej\u object\exchange; z powodu osiągnięcia przez robota celu, bądź zgubienia drogi, dwie zmienne \c;dir\n; i \c;len\n; zawierają wartość \c;\l;nan\u cbot\nan;\n;. Możesz to sprawdzić instrukcją \c;\l;if\u cbot\if;\n; i jeśli to konieczne zatrzymać program instrukcją \c;\l;break\u cbot\break;\n;:
+\s;\c; if ( dir == nan ) break;
+\n;
+Jeśli pomyślnie pobrano informacje ze \l;stacji przekaźnikowej\u object\exchange; wykonaj obrót:
+\s;\c; turn(dir);
+\n;
+I idź naprzód:
+\s;\c; move(len);
+\n;
+\t;Uwaga
+Możesz kliknąć na \l;stacji przekaźnikowej informacji\u object\exchange; aby przeczytać zawarte w niej informacje. W tym ćwiczeniu, każda stacja przekaźnikowa zawiera dwie wartości \c;"Direction"\n; (kierunek) i \c;"Length"\n; (odległość).
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/tfollow1.txt b/help/P/tfollow1.txt
new file mode 100644
index 00000000..4505b600
--- /dev/null
+++ b/help/P/tfollow1.txt
@@ -0,0 +1,62 @@
+\b;Ćwiczenie
+Podążaj za \l;robotem celem\u object\bottr; niosącym ładunek wybuchowy. Bądź ostrożny, gdyż zderzenie z nim grozi wybuchem. Podczas każdego zatrzymania robota celu należy być odpowiednio blisko niego (mniej niż 10 metrów). Gdy uda się być w pobliżu robota 10 razy z rzędu, ćwiczenie zakończy się wraz z jego dotarciem na platformę końcową. Przy każdym zatrzymaniu robot cel sprawdza, czy śledzący go robot jest odpowiednio blisko. Jeśli nie, liczenie zaczyna się od początku.
+
+\b;Ogólny algorytm
+Powtarzaj w nieskończoność:
+o Znajdź robot cel.
+o Oblicz odległość do robota.
+o Jeśli odległość jest mniejsza niż 5 m, cofnij się.
+o W przeciwnym przypadku oblicz kierunek do robota celu i idź w jego stronę.
+
+Podobnie jak poprzednio użyj nieskończonej pętli \c;\l;while\u cbot\while; (true)\n;:
+\s;\c;while (true)
+\s;{
+\s; \n;instrukcje, które mają być powtarzane ...\c;
+\s;}
+\n;
+Znajdź robot cel instrukcją \c;\l;radar\u cbot\radar;\n;:
+\s;\c; target = radar(TargetBot);
+\n;
+Nie musisz sprawdzać, czy robot znalazł cel: na pewno tam jest.
+
+Użyj instrukcji \c;\l;distance\u cbot\dist;( , )\n; do obliczenie odległości między dwoma punktami. Pierwszym jest pozycja Twojego robota, podana przez \c;position\n;. Drugim jest pozycja robota celu, podana przez \c;target.position\n;.
+\s;\c;len = distance(position, target.position);
+\n;
+Jeśli odległość od robota celu jest mniejsza niż 5 metrów, oddal się od niego z prędkością odwrotnie proporcjonalną do odległości: im bliżej jest robot, tym szybciej należy się cofać.
+ Odległość = 5.0 metrów -> prędkość = 0.0
+ Odległość = 2.5 metra -> prędkość = -0.5
+ Odległość = 0.0 metrów -> prędkość = -1.0
+Aby to uzyskać, możesz użyć \l;wyrażenia\u cbot\expr; \c;distance/5-1\n;, wspólnie z instrukcją \c;\l;if\u cbot\if;\n; sprawdzającą, czy cel jest bliżej niż 5 m:
+\s;\c;if ( len < 5 ) // za blisko?
+\s;{
+\s; motor(len/5-1, len/5-1); // cofnij
+\s;}
+\n;
+Jeśli odległość do celu jest większa niż 5m, poruszaj się w jego kierunku. Najpierw oblicz kąt niezbędny do obrócenia się w jego kierunku używając instrukcji \c;\l;direction\u cbot\direct;\n;. Następnie dostosuj prędkości prawego i lewego silnika, aby Twój robot podążał za celem:
+\s;\c;else
+\s;{
+\s; dir = direction(target.position);
+\s; if ( dir >= 0 ) // cel po lewej stronie?
+\s; {
+\s; motor(1-dir/90, 1);
+\s; }
+\s; else // cel po prawej stronie?
+\s; {
+\s; \n;do Ciebie należy uzupełnienie tego\c;
+\s; }
+\s;}
+\n;
+Gdy cel jest po lewej stronie, zmienna \c;dir\n; ma wartość dodatnią, pomiędzy 0 i 180. \l;Wyrażenie\u cbot\expr; \c;1-dir/90\n; zwraca prędkość w zakresie pomiędzy 1 i -1 w zależności od kierunku:
+ kierunek = 0 -> prędkość = 1.0
+ kierunek = 45 -> prędkość = 0.5
+ kierunek = 90 -> prędkość = 0.0
+ kierunek = 135 -> prędkość = -0.5
+ kierunek = 180 -> prędkość = -1.0
+
+\image radar2 14 10;
+Gdy cel jest po prawej stronie, zmienna \c;dir\n; ma wartość ujemną, pomiędzy 0 i -180.
+
+Jedynym zadaniem jakie jeszcze Ci zostało jest zadeklarowanie \l;zmiennych\u cbot\var; używanych w programie. \c;target\n; jest typu \c;object\n;, podczas gdy \c;dir\n; i \c;len\n; są typu \c;float\n;.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/tfor.txt b/help/P/tfor.txt
new file mode 100644
index 00000000..b0917570
--- /dev/null
+++ b/help/P/tfor.txt
@@ -0,0 +1,57 @@
+\b;Ćwiczenie
+Zniszcz sześć \l;celów\u object\bottarg; używając programu z pętlą. Odległości pomiędzy celami wynoszą 5 metrów.
+
+\b;Ogólny algorytm
+Program powinien być uruchomiony według następującego schematu:
+Powtórz 6 razy:
+ o idź 5 m naprzód.
+ o skręć o 90 stopni w lewo
+ o strzelaj
+ o skręć o 90 stopni w prawo
+
+\image tfor1 14 5;
+\b;Instrukcja \c;for ( )\n;
+Instrukcja \c;\l;for\u cbot\for;\n; wymaga 3 wyrażeń:
+1) Inicjalizacji zmiennej liczÄ…cej.
+2) \l;Warunku\u cbot\cond; zakończenia pętli.
+3) \l;Wyrażenia\u cbot\expr; liczącego.
+
+Oto pętla umieszczona w programie:
+\s;\c;extern void object::Masakra( )
+\s;{
+\s; for ( int i=0 ; i<6 ; i=i+1 )
+\s; {
+\s; \n;instrukcje powtarzane 6 razy...\c;
+\s; }
+\s;}
+\n;
+UWAGA: Na końcu wiersza z \c;for ( )\n; nie powinno być \l;średnika\u cbot\term;!
+
+\b;Opis instrukcji \c;for ( )\n;
+1) \c;int i=0\n;
+ Przed rozpoczęciem pętli \l;zmiennej\u cbot\var; i jest przypisywana wartość 0.
+
+2) \c;i<6\n;
+ Pętla będzie wykonywana tak długo, aż wartość zmiennej i będzie mniejsza od 6.
+
+3) \c;i=i+1\n;
+ Zwiększa o 1 zmienną i na końcu każdej pętli.
+
+\b;Bloki
+Do utworzenia \l;bloku\u cbot\bloc; użyj nawiasów klamrowych \c;{ }\n;. Wszystkie instrukcje, które powinny być wykonywane przez pętlę \c;for\n; są zgrupowane w blok. Również cały program jest blokiem:
+\c;
+\s;extern void object::Masakra( )
+\s;{
+\s; \n;tutaj wpisz instrukcje...\c;
+\s;}
+\n;
+Nigdy nie zmieniaj tych znaków. Wystarczy dodać instrukcje programu pomiędzy klamrami.
+Możesz umieszczać bloki wewnątrz innego bloku. Na przykład blok \c;for\n; jest zagnieżdżony w bloku całego programu. W celu poprawy czytelności programu, edytor ustawia w odpowiednich liniach klamry należące do różnych bloków.
+
+\b;Zapamiętaj
+Instrukcja używana do poruszania się naprzód: \c;\l;move\u cbot\move;();\n;.
+Instrukcja używana do obracania robota: \c;\l;turn\u cbot\turn;();\n;. Kąt dodatni obraca w lewo.
+Instrukcja używana do strzelania z działka: \c;\l;fire\u cbot\fire;(1);\n;. Jednosekundowa seria umożliwia zniszczenie wszystkich sześciu \l;celów\u object\bottarg;.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/tlaby1.txt b/help/P/tlaby1.txt
new file mode 100644
index 00000000..5f55de07
--- /dev/null
+++ b/help/P/tlaby1.txt
@@ -0,0 +1,62 @@
+\b;Ćwiczenie
+Zaprogramuj robota, aby znajdował wyjście z labiryntu bez uderzania o ściany. Zakładamy, że konfiguracja labiryntu nie jest znana, jednak nie ma w nim rozwidleń ani ślepych uliczek. Labirynt składa się z kwadratów o boku 5 m każdy.
+
+\b;Instrukcja \c;radar\n;
+Instrukcja \c;\l;radar\u cbot\radar;(Barrier, 0, 45, 0, 5);\n; znajdzie \l;barierę\u object\barrier; przed robotem, która jest bliżej niż 5 metrów. Przyjrzyjmy się bliżej pięciu użytym parametrom:
+
+\s;\c;Barrier\n;
+\l;Kategoria\u cbot\category; obiektu, którego ma szukać radar, np. bariera.
+
+\s;\c;0\n;
+Kierunek, w którym "patrzy" radar. \c;0\n; oznacza, że radar powinien szukać obiektu wprost przed sobą.
+
+\s;\c;45\n;
+Kąt widzenia, w stopniach. Z kątem widzenia równym 45 stopni, wykryte zostaną bariery znajdujące się pomiędzy 22,5 stopnia w lewo a 22,5 stopnia w prawo.
+
+\s;\c;0\n;
+Minimalna odległość wykrywania. \c;0\n; oznacza, że zostaną wykryte nawet obiekty będące bardzo blisko robota.
+
+\s;\c;5\n;
+Maksymalna odległość wykrywania. Żadna bariera dalej niż \c;5\n; metrów nie zostanie wykryta.
+
+Weźmy inny przykład, \c;\l;radar\u cbot\radar;(Barrier, 90, 45, 0, 5);\n; skieruje radar 90 stopni w lewo, w celu sprawdzenia, czy droga po lewej stronie jest wolna.
+
+\image tlaby1 10 10;
+\b;Ogólny algorytm
+Program powinien zajmować się tylko pojedynczymi kwadratami labiryntu. Należy uruchomić go wielokrotnie, aby robot doszedł do platformy końcowej.
+o Jeśli nie ma niczego przed robotem, idź naprzód.
+o Jeśli nie ma niczego po lewej stronie, wykonaj ćwierć obrotu w lewo i idź naprzód.
+o Jeśli nie ma niczego po prawej stronie, wykonaj ćwierć obrotu w prawo i idź naprzód.
+
+1) Na początek zadeklaruj trzy \l;zmienne\u cbot\var; typu \c;\l;object\u cbot\object;\n;, nazwane \c;front\n;, \c;left\n; i \c;right\n;. Zmienne tego typu mogą zawierać opisy dowolnych obiektów, w tym przypadku bariery znalezionej przez radar.
+\s;\c; object front, left, right;\n;
+
+2) Szukaj bariery we wszystkich trzech kierunkach, a wyniki instrukcji \c;radar\n; umieść w trzech zmiennych zdefiniowanych w punkcie 1). Jeśli radar niczego nie wykryje, zmienna będzie zawierała wartość \c;\l;null\u cbot\null;\n;.
+\s;\c; front = radar(Barrier, 0, 45, 0, 5);
+\s; left = radar(Barrier, 90, 45, 0, 5);
+\s; right = radar(Barrier, -90, 45, 0, 5);
+\n;
+3) Używając instrukcji \c;\l;if\u cbot\if;\n;, sprawdź droga przed robotem jest wolna. Jeśli warunek będzie prawdziwy, zostaną wykonane instrukcje w klamrach \c;{ }\n;, w przeciwnym wypadku, działanie programu zostanie wznowione po klamrze zamykającej \c;}\n;.
+Instrukcja \c;return\n; opuszcza program: zadanie zostało wykonane.
+\s;\c;if ( front == null )
+\s;{
+\s; move(5);
+\s; return;
+\s;}
+\n;
+4) Sprawdź, czy możliwy jest obrót w lewo; jeśli tak, skręć w lewo instrukcją \c;\l;turn\u cbot\turn;\n; i idź 5 metrów do przodu.
+\s;\c;if ( left == null )
+\s;{
+\s; turn(90);
+\s; move(5);
+\s; return;
+\s;}
+\n;
+5) Sprawdź, czy możliwy jest obrót w prawo.
+ ...
+
+\b;Uwaga
+Po instrukcji \c;if ( )\n; nigdy nie powinien wystąpić \l;średnik\u cbot\term;.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/tlaby2.txt b/help/P/tlaby2.txt
new file mode 100644
index 00000000..6deead74
--- /dev/null
+++ b/help/P/tlaby2.txt
@@ -0,0 +1,55 @@
+\b;Ćwiczenie
+To ćwiczenie jest bardzo podobne do poprzedniego. Tym razem robot powinien samodzielnie znaleźć drogę od startu do celu; musisz uruchomić program tylko jeden raz.
+
+\b;Uwaga
+Labirynt nie jest dokładnie taki sam ale powinno to być bez znaczenia, gdyż program przystosowuje się do tego co "widzi".
+
+\image tlaby1 10 10;
+\b;Ogólny algorytm
+Użyj nieskończonej pętli \c;\l;while\u cbot\while;\n; aby wielokrotnie wykonać poprzedni program:
+\s;\c;while ( true )
+\s;{
+\s; \n;Jeśli nie ma niczego z przodu, idź naprzód\c;
+\s; \n;Jeśli nie ma niczego po lewej, skręć w lewo\c;
+\s; \n;Jeśli nie ma niczego po prawej, skręć w prawo\c;
+\s;}
+\n;
+Wewnątrz pętli \c;while\n; zastąp instrukcje \c;return\n; instrukcjami \c;\l;continue\u cbot\continue;\n;. \c;return\n; kończy działanie programu, co nie jest pożądane w tym przypadku. \c;continue\n; wznawia wykonywanie na początku pętli \c;\l;while\u cbot\while;\n;:
+\s;\c;if ( front == null )
+\s;{
+\s; move(5);
+\s; continue;
+\s;}
+\n;
+\b;Zapamiętaj
+Oto jeszcze raz program z poprzedniego ćwiczenia:
+\c;
+\s;object front, left, right;
+\s;
+\s;front = radar(Barrier, 0, 45, 0, 5);
+\s;left = radar(Barrier, 90, 45, 0, 5);
+\s;right = radar(Barrier, -90, 45, 0, 5);
+\s;
+\s;if ( front == null )
+\s;{
+\s; move(5);
+\s; return;
+\s;}
+\s;if ( left == null )
+\s;{
+\s; turn(90);
+\s; move(5);
+\s; return;
+\s;}
+\s;if ( right == null )
+\s;{
+\s; turn(-90);
+\s; move(5);
+\s; return;
+\s;}
+\n;
+\b;Pomoc
+Jeśli potrzebujesz pomocy, kliknij na hiperłączu instrukcji \c;\l;radar\u cbot\radar;\n;, \c;\l;if\u cbot\if;\n;, \c;\l;move\u cbot\move;\n; lub \c;\l;turn\u cbot\turn;\n;.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/tmove1.txt b/help/P/tmove1.txt
new file mode 100644
index 00000000..1ea0880d
--- /dev/null
+++ b/help/P/tmove1.txt
@@ -0,0 +1,33 @@
+\b;Ćwiczenie
+Zaprogramuj robota aby dotarł na platformę końcową po przejściu przez trzy niebieskie plusy.
+
+\b;Procedura
+1) Weź ogniwo elektryczne i umieść je z tyłu robota.
+2) Zrób rekonesans, aby zrozumieć co powinien zrobić robot.
+3) Zaprogramuj robota. Aby to zrobić, musisz go zaznaczyć, a następnie kliknąć przycisk z klamrami \button 22;; dostaniesz się do edytora programu.
+4) Po zakończeniu pisania programu, kliknij przycisk "OK" i uruchom program przyciskiem strzałki \button 21;.
+
+\b;Program
+Odległości między platformami wynoszą po 20 metrów.
+Instrukcja \c;move(20);\n; przemieszcza robota 20 metrów do przodu.
+Instrukcja \c;turn(90);\n; obraca robota w lewo o 90 stopni.
+Instrukcja \c;turn(-90);\n; obraca robota w prawo o 90 stopni.
+
+Schemat programu wygląda następująco:
+\c;
+\s; extern void object::MoveBot( )
+\s; {
+\s; \n;\\tutaj wpisz potrzebne instrukcje...\c;
+\s; }
+\n;
+Jak na razie nie musisz zmieniać tego schematu. Wystarczy pomiędzy klamry \c;{ }\n; wstawić potrzebne instrukcje, poruszające robotem.
+
+\b;Uwaga
+Zwracaj uwagę na wielkie i małe litery!
+Każda instrukcja powinna być zakończona średnikiem.
+
+\b;Przydatna sztuczka
+Podczas pisania programu możesz obserwować scenę, klikając przycisk \button 51; i poruszając myszą w kierunku krawędzi ekranu w celu obrócenia kamery.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/tmove2.txt b/help/P/tmove2.txt
new file mode 100644
index 00000000..c401ad61
--- /dev/null
+++ b/help/P/tmove2.txt
@@ -0,0 +1,66 @@
+\b;Ćwiczenie
+To ćwiczenie jest bardzo podobne do poprzedniego. Robot musi się poruszać dokładnie w ten sam sposób, ale podczas pisania programu musisz użyć nowego, niezwykle ważnego w programowaniu rozwiązania, a mianowicie \l;zmiennych\u cbot\var;.
+Jak wiadomo, odległości pomiędzy platformami wynoszą 20 metrów, a wszystkie wykonywane obroty mają po 90 stopni. Zamiast w programie wciąż przepisywać te same wartości, można przechować je w zmiennych:
+
+Zamiast:
+\c;\s; move(20);
+\s; turn(90);
+\s; move(20);
+\s; turn(-90);
+\s; ...
+\n;
+Napiszemy:
+\c;\s; dist = 20;
+\s; dir = 90;
+\s; move(dist);
+\s; turn(dir);
+\s; move(dist);
+\s; turn(-dir);
+\s; ...
+\n;
+\b;Zmienne
+\l;Zmienna\u cbot\var; składa się z trzech elementów:
+1) Nazwy
+2) Typu zawartości
+3) Zawartości
+
+\t;Nazwa
+Nazwa służy do odwoływania się do zmiennej. Zamiast pisać \c;move(20);\n;, wystarczy napisać \c;move(dist);\n;, gdzie "dist" jest nazwą zmiennej. Zmiennej można nadać prawie dowolną nazwę, na przykład \c;dist\n;, \c;dir\n;, \c;p2\n;, \c;a\n;, \c;x\n;, \c;nothing_2_grab\n;, itd.
+
+\t;Typ
+Typ zmiennej określa jaki rodzaj informacji jest przechowywany przez zmienną. Zależnie od typu, zmienna może zawierać liczby całkowite, liczby rzeczywiste, ciągi znakowe, współrzędne punktu, itd. Oto lista najbardziej popularnych typów zmiennych:
+ o \c;\l;int\u cbot\int;\n; dla liczb całkowitych (12, -500, itd.)
+ o \c;\l;float\u cbot\float;\n; dla liczb rzeczywistych (3.14, 0.2, -99.98, itd.)
+ o \c;\l;string\u cbot\string;\n; dla łańcuchów znakowych ("Cześć!", "Nie ma nic do podniesienia", itd.)
+ o \c;\l;point\u cbot\point;\n; dla współrzędnych przestrzeni x, y, z
+ o \c;\l;object\u cbot\object;\n; dla informacji o obiekcie (robocie, budynku, itd.)
+
+\t;Zawartość
+Zawartością zmiennej może być liczba, łańcuch, współrzędne, itd., zależnie od typu zmiennej. Zawartość zmiennej może być wielokrotnie modyfikowana w trakcie wykonywania programu.
+
+Przed użyciem zmiennej konieczne jest jej zadeklarowanie. Na przykład przed użyciem dwóch zmiennych \c;dist\n; i \c;dir\n;, należy je zadeklarować w następujący sposób:
+\c;
+\s; float dist;
+\s; float dir;
+\n;
+Teraz już można ich używać. Aby przypisać zmiennej \c;dist\n; wartość 20 a zmiennej \c;dir\n; wartość 90, napisz:
+\c;
+\s; dist = 20;
+\s; dir = 90;
+\n;
+Teraz można poruszać i obracać robota instrukcjami \c;\l;move\u cbot\move;\n; i \c;\l;turn\n;\u cbot\turn;:
+\c;
+\s; move(dist);
+\s; turn(dir);
+\n;
+Można również użyć całego \l;wyrażenia matematycznego\u cbot\expr; zamiast samej zmiennej:
+\c;
+\s; move(dist+100);
+\s; turn(-dir);
+\n;
+Druga z instrukcji będzie potrzebna do obrócenia robota w prawo.
+
+A teraz przepisz program z poprzedniego ćwiczenia, używając jednak zmiennych dla odległości i kąta obrotu.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/tproc1.txt b/help/P/tproc1.txt
new file mode 100644
index 00000000..0238a835
--- /dev/null
+++ b/help/P/tproc1.txt
@@ -0,0 +1,59 @@
+\b;Ćwiczenie
+\l;Robot\u object\bottr; musi przejść przez wszystkie \l;niebieskie plusy\u object\waypoint; leżące na ziemi. Droga, którą musi pokonać, składa się z dwóch kwadratów. Pierwszy ma bok równy 15 metrów a drugi, 25 metrów.
+
+\image tproc1a 8 8;
+\b;Ogólny algorytm
+Najbardziej efektywne rozwiązanie tego problemu polega na napisaniu \l;funkcji\u cbot\function;, która porusza robotem po kwadracie określonego rozmiaru. Główny program staje się wtedy bardzo prosty:\c;
+\s;extern void object::Funkcja1( )
+\s;{
+\s; Kwadrat(15);
+\s; Kwadrat(25);
+\s;}
+\n;
+Wciąż jednak należy zdefiniować funkcję nazwaną \c;Kwadrat\n;. Aby to zrobić, konieczne będzie napisanie kilku instrukcji poza \l;blokiem\u cbot\bloc; który dotychczas był ramką dla każdego z Twoich programów. Na samym końcu programu, po ostatniej klamrze zamykającej, należy zdefiniować funkcję \c;Kwadrat\n;. Program będzie wyglądał następująco:
+\c;
+\s;extern void object::Funkcja1( )
+\s;{
+\s; \n;główna funkcja...\c;
+\s;}
+\s;
+\s;void object::Kwadrat(float bok)
+\s;{
+\s; \n;nowa funkcja...\c;
+\s;}
+\n;
+Przyjrzyjmy się uważniej różnym elementom deklaracji funkcji \c;Kwadrat\n;:
+
+\c;\l;void\u cbot\void;\n;
+Oznacza, że ta funkcja nie zwraca żadnej wartości.
+
+\c;\l;object\u cbot\object;::\n;
+Napisanie tego przed nazwą funkcji oznacza, że będzie ona miała dostęp do wszystkich charakterystyk robota, takich jak \c;position\n;, \c;orientation\n;, itd. W tym ćwiczeniu element ten nie jest wymagany, jako że w funkcji nie będą potrzebne charakterystyki robota.
+
+\c;Kwadrat ( )\n;
+To jest nazwa funkcji. Możesz ją nazwać Kwadrat lub dowolnie inaczej.
+
+\c;\l;float\u cbot\float; bok\n;
+Tutaj definiujesz parametry, które otrzymuje funkcja podczas wywołania. Przy pierwszym wywołaniu funkcji \c;Kwadrat(15)\n;, zmienna \c;bok\n; będzie miała wartość \c;15\n;. Za drugim razem \c;bok\n; będzie równy \c;25\n;.
+
+Oto szczegóły tego co zdarzy się po wykonaniu programu:
+- Najpierw uruchamiana jest główna funkcja \c;Funkcja1\n;.
+- W wierszu \c;Kwadrat(15)\n;, program podąży za czerwoną strzałką i przejdzie do funkcji \c;Kwadrat\n; po raz pierwszy, \c;bok\n; równy \c;15\n;.
+- Na końcu funkcji \c;Kwadrat\n;, program podąży za pomarańczową strzałką i wróci do funkcji głównej.
+- W wierszu \c;Kwadrat(25)\n;, program podąży za niebieską strzałką, przechodząc po raz drugi do funkcji \c;Kwadrat\n;.
+- Na końcu funkcji \c;Kwadrat\n;, program podąży za jasno niebieską strzałką i wróci do funkcji głównej.
+
+\image tproc1b 17 12;
+W funkcji \c;Kwadrat\n;, użyj instrukcji \c;\l;move\u cbot\move;\n; i \c;\l;turn\u cbot\turn;\n;. Aby skrócić program możesz użyć pętli \c;\l;for\u cbot\for;\n;, która powtórzy 4 razy instrukcje \c;\l;move\u cbot\move;\n; i \c;\l;turn\u cbot\turn;\n;, nie jest to jednak niezbędne.
+\c;
+\s;void object::Kwadrat(float bok)
+\s;{
+\s; for ( int i=0 ; i<4 ; i=i+1 )
+\s; {
+\s; move(bok);
+\s; turn(90);
+\s; }
+\s;}
+\n;
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/tproc2.txt b/help/P/tproc2.txt
new file mode 100644
index 00000000..15d30a2f
--- /dev/null
+++ b/help/P/tproc2.txt
@@ -0,0 +1,34 @@
+\b;Ćwiczenie
+Idź drogą w kształcie spirali. Robot musi przejść 2 razy 25 metrów naprzód i skręcić, a następnie 2 razy przejść po 20 metrów naprzód i skręcić, itd.
+\image tproc2 8 8;
+\b;Funkcja
+Warto zauważyć, że "L"-kształtne części pasują do siebie. Pierwsza część (ciemno niebieska) ma rozmiar dwa razy po 25 metrów. Druga (jasno niebieska) jest 5 metrów krótsza. Zacznijmy od napisania \l;funkcji\u cbot\function; która będzie poruszać robotem po "L"-kształtnej części o długości podanej jako parametr:
+\c;
+\s;void object::Part(float length)
+\s;{
+\s; for ( int i=0 ; i<2 ; i=i+1 )
+\s; {
+\s; move(length);
+\s; turn(90);
+\s; }
+\s;}
+\n;
+Teraz wystarczy tylko napisać główną funkcję, która będzie wywoływała funkcję \c;Part\n;. Na początku zmienna \c;rest\n; będzie miała wartość 25m. Pętla \c;while\n; będzie powtarzała instrukcje wewnątrz bloku tak długo, jak długo zmienna \c;rest\n; będzie większa od zera. Wewnątrz pętli najpierw należy wywołać funkcję \c;Part\n; (zobacz powyżej), a następnie odjąć 5m od długości L.
+\c;
+\s;extern void object::Funkcja2( )
+\s;{
+\s; float rest = 25;
+\s; while ( rest > 0 )
+\s; {
+\s; Part(rest);
+\s; rest = rest-5;
+\s; }
+\s;}
+\n;
+Funkcja \c;Part\n; zostanie po raz ostatni wywołana z wartością \c;5\n;. Następnie wyrażenie \c;rest-5\n; przypisze zmiennej \c;rest\n; wartość zero i pętla \c;while\n; zatrzyma się.
+
+\b;Uwaga
+Można zauważyć, że w poprzednim ćwiczeniu główna funkcja była na początku programu, podczas gdy w tym ćwiczeniu jest ona na końcu programu, za funkcją \c;Part\n;. Kolejność funkcji w programie nie ma znaczenia, można je uszeregować dowolnie.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/tradar1.txt b/help/P/tradar1.txt
new file mode 100644
index 00000000..dd248436
--- /dev/null
+++ b/help/P/tradar1.txt
@@ -0,0 +1,57 @@
+\b;Ćwiczenie
+Napisz program umożliwiający robotowi znalezienie wszystkich \l;niebieskich plusów\u object\waypoint; leżących na ziemi. Plusy znikają po przejściu przez nie robota. Oto główna zasada działania programu:
+
+Powtarzaj w nieskończoność:
+ o Szukaj plusa
+ o Jeśli nie ma żadnego, zatrzymaj program.
+ o Oblicz kierunek do plusa.
+ o Ustaw prędkości silników tak, aby robot dotarł do znalezionego plusa.
+
+\b;Program
+Użyj pętli \c;\l;while\u cbot\while;\n; do wielokrotnego powtarzania instrukcji:
+\s;\c;while ( true )
+\s;{
+\s; \n;instrukcje...\c;
+\s;}
+\n;
+Instrukcja \c;\l;radar\u cbot\radar;\n; wykryje niebieskie plusy i umieści ich opis w zmiennej, na przykład \c;spot\n;. W tym przypadku instrukcja \c;\l;radar\u cbot\radar;()\n; potrzebuje tylko jednego parametru, to jest kategorii obiektu, który musi znaleźć:
+\s;\c;spot = radar(WayPoint);
+\n;
+Po znalezieniu wszystkich plusów, instrukcja \c;radar\n; zwróci wartość \c;\l;null\u cbot\null;\n;. Konieczne będzie sprawdzanie tego warunku instrukcją \c;\l;if\u cbot\if;\n; i odpowiednie reagowanie:
+\s;\c;if ( spot == null ) // nie ma więcej?
+\s;{
+\s; motor(0, 0); // zatrzymaj silniki
+\s; break; // zatrzymaj pętlę
+\s;}
+\n;Instrukcja \c;\l;break\u cbot\break;\n; zatrzyma nieskończoną pętlę \c;while (true)\n;.
+
+Użyj instrukcji \c;\l;direction\u cbot\direct;()\n; do obliczenia kąta obrotu, jaki musi wykonać robot, aby iść w kierunku niebieskiego plusa. Współrzędne obiektu są podawane przez \c;spot.position\n;. Następujący wiersz umieści kąt niezbędnego obrotu w \l;zmiennej\u cbot\var; \c;dir\n;:
+\s;\c;dir = direction(spot.position);
+\n;
+Wartość kąta jest dodatnia, gdy niebieski plus jest po lewej stronie a ujemna, gdy jest po prawej. Jeśli plus jest po lewej stronie, należy ustawić pełną prędkość prawego silnika i zmniejszyć prędkość lewego silnika w zależności od kąta:
+
+ kierunek = \c; 0\n; -> prędkość = \c; 1.0\n;
+ kierunek = \c; 45\n; -> prędkość = \c; 0.5\n;
+ kierunek = \c; 90\n; -> prędkość = \c; 0.0\n;
+ kierunek = \c;135\n; -> prędkość = \c;-0.5\n;
+ kierunek = \c;180\n; -> prędkość = \c;-1.0\n;
+
+Poniższy schemat pokazuje zależność prędkości lewego i prawego silnika, ustawianego instrukcją \c;\l;motor\u cbot\motor;\n;, od kąta:
+
+\image radar2 14 10;
+Jeśli plus jest wprost przed robotem, kąt jest równy 0 stopni. Prędkości obu silników zostaną ustawione na 1, czyli pełną prędkość naprzód. Jeśli plus jest za robotem, prędkość prawego silnika zostanie ustawiona na -1, co obróci robota dookoła. Można użyć \l;wyrażenia\u cbot\expr; \c;1+dir/90\n; w celu obliczenia niezbędnej prędkości silników:
+\s;\c;if ( dir < 0 ) // po prawej stronie?
+\s;{
+\s; motor(1, 1+dir/90); // skręca bardziej lub mniej
+\s;}
+\n;
+Użyj tej samej metody w przypadku dodatniej wartości kąta, w przedziale od 0 do 180 stopni. Do Ciebie należy napisanie dokładnych instrukcji do wykonania:
+\s;\c;else // po lewej stronie?
+\s;{
+\s; \n;do Ciebie należy wypełnienie tego...\c;
+\s;}
+\n;
+Na początku programu musisz zadeklarować wszystkie zmienne. \c;spot\n; jest typu \c;\l;object\u cbot\object;\n;, podczas gdy \c;dir\n; jest typu \c;\l;float\u cbot\float;\n;.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/tradar2.txt b/help/P/tradar2.txt
new file mode 100644
index 00000000..781aff06
--- /dev/null
+++ b/help/P/tradar2.txt
@@ -0,0 +1,8 @@
+\b;Ćwiczenie
+W tym ćwiczeniu "szalony robot" porozrzucał wiele \l;niebieskich plusów\u object\waypoint; na ziemi. Aby je znaleźć, możesz użyć ponownie programu napisanego w poprzednim ćwiczeniu. Ukazuje to elastyczność takiego programu: przystosowuje się on do każdego napotkanego środowiska.
+
+\t;Uwaga
+Nie czekaj zbyt długo, gdyż szalony robot natychmiast rozpoczyna swoją pracę. Na szczęście gra jest zatrzymywana, gdy jesteś w edytorze programu.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/tremote1.txt b/help/P/tremote1.txt
new file mode 100644
index 00000000..6fc6e089
--- /dev/null
+++ b/help/P/tremote1.txt
@@ -0,0 +1,39 @@
+\b;Ćwiczenie
+Pokieruj zdalnie robotem, używając \l;stacji przekaźnikowej informacji\u object\exchange;, aby przetransportować \l;rudę uranu\u object\uranore;.
+Głównymi postaciami tego ćwiczenia są¦:
+
+1) Robot \l;szperacz\u object\botsr; (nie może niczego przenosić).
+2) \l;Stacja przekaźnikowa informacji\u object\exchange;, otrzymująca informacje od nadawcy i przekazująca je do odbiorcy.
+3) \l;Transporter\u object\botgr;, czekający na rozkazy ze stacji przekaźnikowej. Nie jest możliwe bezpośrednie kontrolowania tego robota.
+
+\image tremot1a 16 8;
+Stacja przekaźnikowa informacji przechowuje pary "nazwa/wartość". Aby kontrolować robota podległego wystarczy użyć tylko jednej pary¦:
+
+ nazwa="order", wartoscr=numer rozkazu
+
+Robot odbiorca rozumie następujące rozkazy¦:
+\c;
+ 1 -> grab(); // podnieÅ› obiekt
+ 2 -> drop(); // upuść obiekt
+ 3 -> move(10); // przesuń robota 10 metrów naprzód
+ 4 -> move(-10); // cofnij robota o 10 metrów
+\n;
+Aby rozkazać robotowi podległemu przemieścić się 10 metrów naprzód, wystarczy napisać¦:
+\c;\s; \l;send\u cbot\send;("order", 3, 100); // order 3 -> "move(10)"
+\n;
+Po wysłaniu instrukcji odczekaj 5 sekund, aby upewnić się, że ruch został wykonany.
+\c;\s; \l;wait\u cbot\wait;(5);
+\n;
+Wskazówka: Jest lepszy sposób na czekanie na zakończenie wykonywania rozkazu, ale zobaczymy to w późniejszym ćwiczeniu "Kontrola zdalna #2".
+
+Aby zakończyć ćwiczenie, robot musi¦:
+
+1) Podnieść rudę uranu
+2) Iść od przodu o 10 metrów
+3) Zostawić rudę uranu
+4) Cofnąć się o 10 metrów
+
+Do Ciebie należy dokończenie programu...
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/tremote2.txt b/help/P/tremote2.txt
new file mode 100644
index 00000000..b9a54f3f
--- /dev/null
+++ b/help/P/tremote2.txt
@@ -0,0 +1,50 @@
+\b;Ćwiczenie
+Zaprogramuj zdalnie robota używając \l;stacji przekaźnikowej informacji\u object\exchange;, aby przeszedł on przez 6 punktów kontrolnych.
+Głównymi postaciami tego ćwiczenia są¦:
+
+1) \l;Transporter na kołach\u object\botgr; bez ogniwa elektrycznego. Jest to robot nadrzędny, którego musisz zaprogramować.
+2) \l;Stacja przekaźnikowa informacji\u object\exchange;, otrzymująca informacje od nadawcy i przekazująca je do odbiorcy.
+3) \l;Robot treningowy\u object\bottr; czekający na rozkazy ze stacji przekaźnikowej. Ten robot został już zaprogramowany.
+
+\image tremot2a 16 8;
+Stacja przekaźnikowa informacji przechowuje pary "nazwa/wartość". Aby kontrolować robota podległego należy użyć dwóch par¦:
+
+1) nazwa="order", wartosc=numer rozkazu
+2) nom="param", wartoscr=parametr dla rozkazu
+
+Rozkaz numer 1 oznacza "move" a rozkaz numer 2 oznacza "turn". Parametr jest długością ruchu lub kątem obrotu. Na przykład robota podległego można przemieścić o 20 metrów pisząc¦:
+\c;\s; \l;send\u cbot\send;("order", 1, 100); // rozkaz "move"
+\s; \l;send\u cbot\send;("param", 20, 100); // odległość 20 metrów
+\n;
+Te dwie instrukcje wysyłają następujące informacje do stacji przekaźnikowej¦:
+\c; order=1
+ param=20
+\n;
+Robot podległy czeka na rozkaz i wykonuje go. Po wykonaniu rozkazu, zostanie on usunięty ze stacji przekaźnikowej. Po wysłaniu rozkazu, robot nadrzędny musi poczekać na wykonanie rozkazu przed wysłaniem następnego. Można to zrobić, sprawdzając czy rozkaz wciąż jest w stacji przekaźnikowej. Wystarczy napisać¦:
+\c;\s; while ( \l;testinfo\u cbot\testinfo;("order", 100) ) // czekaj na koniec pracy
+\s; {
+\s; wait(1);
+\s; }
+\n;
+Ponieważ konieczne jest wydanie więcej niż jednego rozkazu, przydatne będzie napisanie \l;funkcji\u cbot\function; \c;SendToPost\n;, która wysyła rozkaz i czeka na jego wykonanie¦:
+\c;\s;void object::SendToPost(float order, float param)
+\s;{
+\s; send("param", param, 100); // wyślij parametr
+\s; send("order", order, 100); // wyślij rozkaz
+\s;
+\s; while ( testinfo("order", 100) ) // czekaj na koniec pracy
+\s; {
+\s; wait(1);
+\s; }
+\s;}
+\n;
+Aby przemieścić robota o 20 metrów naprzód, należy napisać w głównym programie¦:
+\c;\s; SendToPost(1, 20); // move(20);
+\n;
+Oto droga, którą powinien podróżować robot¦:
+
+\image tremot2b 8 8;
+Do Ciebie należy dokończenie programu.
+
+\t;Zobacz również
+\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
diff --git a/help/P/tremote3.txt b/help/P/tremote3.txt
new file mode 100644
index 00000000..83270412
--- /dev/null
+++ b/help/P/tremote3.txt
@@ -0,0 +1,103 @@
+\b;Ćwiczenie
+Zdalnie pokieruj robotem bez używania \l;stacji przekaźnikowej informacji\u object\exchange;. Robot powinien przejść przez 6 niebieskich plusów. Musisz użyć \l;Å‚aÅ„cucha\u cbot\string; do przekazania rozkazów podlegÅ‚emu robotowi. ÅaÅ„cuch zawiera rozkaz, który powinien być wykonany przez tego robota, na przykÅ‚ad \c;"move(20)"\n;. Możesz użyć tej samej skÅ‚adni co w jÄ™zyku CBOT, choć możesz też wybrać dowolnÄ… innÄ…, na przykÅ‚ad podobnÄ… do tej: \c;"advance=20"\n;. ÅaÅ„cuch bÄ™dzie elementem klasy zdefiniowanym jako \c;\l;static\u cbot\static;\n;, używanym do komunikacji pomiÄ™dzy robotem nadrzÄ™dnym i podlegÅ‚ym.
+
+Dwoma głównymi postaciami tego ćwiczenia są¦:
+1) \l;Transporter na kołach\u object\botgr; bez ogniwa elektrycznego, wobec czego unieruchomiony. Jest to robot nadrzędny, który powinien zostać zaprogramowany aby mógł przesyłać rozkazy do podległego mu robota.
+2) Podległy \l;robot treningowy\u object\bottr;, który jest już zaprogramowany i tylko czeka na rozkazy od robota nadrzędnego.
+
+\b;Robot podległy
+Najpierw musisz zrozumieć jak działa program robota podległego. \l;Klasa\u cbot\class; \c;exchange\n; zawiera mechanizmy przekazywania rozkazów. Należy zadeklarować element klasy \c;m_order\n; jako \c;\l;static\u cbot\static;\n;, będzie on zawierał rozkazy do wykonania. Słowo \c;static\n; zapewnia, że element \c;m_order\n; jest współużytkowany przez wszystkie instancje \l;klasy\u cbot\class; exchange.
+
+\c;\s;\l;public\u cbot\public; \l;class\u cbot\class; exchange
+\s;{
+\s; \l;static\u cbot\static; \l;private\u cbot\private; \l;string\u cbot\string; m_order = "";
+
+\n;Metoda \c;put\n; będzie używana przez robota nadrzędnego do przesyłania rozkazów. Jeśli łańcuch \c;m_order\n; nie jest pusty, robot podległy nie zakończył wykonywania rozkazu a metoda \c;put\n; zwróci wartość \c;false\n; i niczego nie zrobi.
+
+\c;\s; \l;synchronized\u cbot\synchro; \l;bool\u cbot\bool; put(string order)
+\s; {
+\s; if ( m_order == "" )
+\s; {
+\s; m_order = order;
+\s; return true;
+\s; }
+\s; else
+\s; {
+\s; return false;
+\s; }
+\s; }
+\n;
+Inna metoda \c;get\n; zostanie użyta przez robota podległego do pobrania rozkazów. Metoda ta zwraca łańcuch zawarty w zmiennej \c;m_order\n; i opróżnia ją, aby mógł być przyjęty nowy rozkaz:
+
+\c;\s; \l;synchronized\u cbot\synchro; string get()
+\s; {
+\s; string ret = m_order;
+\s; m_order = "";
+\s; return ret;
+\s; }
+\s;}
+\n;
+Główny program niewolnika zawiera instancję klasy \c;exchange\n; nazwaną \c;list\n;.
+
+\c;\s;\l;extern\u cbot\extern; void object::Slave3( )
+\s;{
+\s; exchange list();
+\s; string todo;
+\n;
+Zewnętrzna pętla \c;while\n; działa w nieskończoność. Wewnętrzna pętla \c;while\n; czeka na rozkaz używając metody \c;get\n; z klasy \c;exchange\n;. Pętla zatrzymuje się gdy metoda \c;get\n; zwróci pusty łańcuch.
+
+\c;\s; \l;while\u cbot\while; ( true )
+\s; {
+\s; \l;while\u cbot\while; ( true )
+\s; {
+\s; todo = list.get();
+\s; if ( todo != "" ) break;
+\s; wait(1);
+\s; }
+\n;
+Po otrzymaniu rozkazu i zapisaniu go w zmiennej \c;todo\n; wystarczy jedynie go wykonać:
+
+\c;\s; if ( \l;strfind\u cbot\strfind;(todo, "move") == 0 )
+\s; {
+\s; move(\l;strval\u cbot\strval;(\l;strmid\u cbot\strmid;(todo,5)));
+\s; }
+\s; if ( strfind(todo, "turn") == 0 )
+\s; {
+\s; turn(strval(strmid(todo,5)));
+\s; }
+\s; }
+\s;}
+\n;
+\b;Robot nadrzędny
+W robocie nadrzędnym należy napisać funkcję nazwaną \c;SendOrder\n;, która wyśle rozkaz do robota podległego:
+
+\c;\s;void object::SendOrder(string order)
+\s;{
+\s; exchange list();
+\s;
+\s; while ( list.put(order) == false )
+\s; {
+\s; wait(1);
+\s; }
+\s;}
+\n;
+Pętla \c;while\n; czeka na zakończenie oczekującego rozkazu, czyli na wyjście przez robota podległego z metody \c;get\n;.
+Główny program robota nadrzędnego jest bardzo prosty:
+
+\c;\s;extern void object::Remote3( )
+\s;{
+\s; SendOrder("move(20)");
+\s; SendOrder("turn(90)");
+\s; SendOrder("move(20)");
+\s; SendOrder("turn(90)");
+\s; SendOrder("move(10)");
+\s; SendOrder("turn(90)");
+\s; SendOrder("move(10)");
+\s; SendOrder("turn(-90)");
+\s; SendOrder("move(10)");
+\s;}
+\n;
+Klawisz \key;\key help;\norm; umożliwia wyświetlenie tych informacji w dowolnej chwili.
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;programowanie\u cbot;.
diff --git a/help/P/tremote4.txt b/help/P/tremote4.txt
new file mode 100644
index 00000000..843f9420
--- /dev/null
+++ b/help/P/tremote4.txt
@@ -0,0 +1,129 @@
+\b;Ćwiczenie
+Pokieruj zdalnie robotem podległym bez używania \l;stacji przekaźnikowej informacji\u object\exchange;. Robot powinien przejść przez 6 niebieskich plusów. Musisz użyć zmiennej zadeklarowanej jako \c;\l;static\u cbot\static;\n; do przekazania rozkazów robotowi podległemu.
+
+Dwoma głównymi postaciami tego ćwiczenia są¦:
+1) \l;Transporter na kołach\u object\botgr; bez ogniwa elektrycznego, wobec czego unieruchomiony. Jest to robot nadrzędny, który powinien zostać zaprogramowany aby mógł przesyłać rozkazy do podległego mu robota.
+2) Podległy \l;robot treningowy\u object\bottr;, który jest już zaprogramowany i tylko czeka na rozkazy od robota nadrzędnego.
+
+\b;Robot podległy
+Najpierw musimy zrozumieć jak działa program robota podległego. \l;Klasa\u cbot\class; \c;order\n; zawiera dwa elementy: \c;m_type\n; jest rozkazem do wykonania (move lub turn), a \c;m_param\n; jest odległością do pokonania lub kątem obrotu¦:
+
+\c;\s;\l;public\u cbot\public; \l;class\u cbot\class; order
+\s;{
+\s; \l;int\u cbot\int; m_type = \l;nan\u cbot\nan;;
+\s; \l;float\u cbot\float; m_param;
+\s;}
+\n;
+Druga \l;klasa\u cbot\class; \c;exchange\n; zawiera mechanizm przekazywania rozkazów. Deklarujemy jako \c;\l;static\u cbot\static;\n; element klasy \c;m_order\n;, który będzie zawierał rozkaz do wykonania. Słowo \c;static\n; zapewnia, że element \c;m_order\n; będzie współużytkowany przez wszystkie instancje \l;klasy\u cbot\class; exchange.
+
+\c;\s;\l;public\u cbot\public; \l;class\u cbot\class; exchange
+\s;{
+\s; \l;static\u cbot\static; \l;private\u cbot\private; order m_order = new order;
+\n;
+\n;Metoda \c;put\n; będzie używana przez robota nadrzędnego do przesyłania rozkazów. Jeśli zmienna \c;m_order\n; jest różna od \c;\l;nan\u cbot\nan;\n;, robot podległy nie zakończył wykonywania rozkazu a metoda \c;put\n; zwróci wartość \c;false\n; i niczego nie zrobi¦:
+
+\c;\s; \l;synchronized\u cbot\synchro; \l;bool\u cbot\bool; put(order a)
+\s; {
+\s; if ( m_order.m_type == nan )
+\s; {
+\s; m_order = a;
+\s; return true;
+\s; }
+\s; else
+\s; {
+\s; return false;
+\s; }
+\s; }
+\n;
+Kolejna metoda \c;get\n; będzie używana przez robota podległego do otrzymywania rozkazów. Metoda ta jako wynik zwraca rozkaz do wykonania:
+
+\c;\s; \l;synchronized\u cbot\synchro; order get()
+\s; {
+\s; return m_order;
+\s; }
+\n;
+Trzecia metoda \c;delete\n; będzie używana przez robota podległego do zaznaczenia, że rozkaz został wykonany:
+
+\c;\s; \l;synchronized\u cbot\synchro; void delete()
+\s; {
+\s; m_order.m_type = nan;
+\s; }
+\s;}
+\n;
+Główny program robota podległego zawiera instancję klasy \c;exchange\n; nazwaną \c;list\n;. Po słowie \c;list\n; należy napisać nawiasy (), w celu utworzenia instancji klasy \c;exchange\n;.
+
+\c;\s;\l;extern\u cbot\extern; void object::Slave3( )
+\s;{
+\s; exchange list();
+\s; order todo;
+\n;
+Zewnętrzna pętla \c;while\n; działa w nieskończoność. Wewnętrzna pętla \c;while\n; czeka na rozkaz używając metody \c;get\n; z klasy \c;exchange\n;. Pętla zatrzymuje się gdy \c;get\n; zwróci wartość różną od \c;nan\n;.
+
+\c;\s; \l;while\u cbot\while; ( true )
+\s; {
+\s; \l;while\u cbot\while; ( true )
+\s; {
+\s; todo = list.get();
+\s; if ( todo.m_type != nan ) break;
+\s; wait(1);
+\s; }
+\n;
+Po otrzymaniu rozkazu i zapisaniu go w zmiennej \c;todo\n; wystarczy jedynie go wykonać:
+
+\c;\s; if ( todo.m_type == 1 )
+\s; {
+\s; move(todo.m_param);
+\s; }
+\s; else if ( todo.m_type == 2 )
+\s; {
+\s; turn(todo.m_param);
+\s; }
+\s; else
+\s; {
+\s; message("Nieznany rozkaz");
+\s; }
+\n;
+Po zakończeniu wykonywania rozkazu, należy wywołać metodę \c;delete\n;, aby powiadomić robota nadrzędnego, że może już przesłać następny rozkaz¦:
+
+\c;\s; list.delete();
+\s; }
+\s;}
+\n;
+\b;Robot nadrzędny
+W robocie nadrzędnym należy napisać funkcję nazwaną \c;SendOrder\n;, która wyśle rozkaz do robota podległego:
+
+\c;\s;void object::SendOrder(float order, float param)
+\s;{
+\s; exchange list();
+\s; order todo();
+\s;
+\s; todo.m_type = order;
+\s; todo.m_param = param;
+\s;
+\s; while ( list.put(todo) == false )
+\s; {
+\s; wait(1);
+\s; }
+\s;}
+\n;
+Pętla \c;while\n; czeka na zakończenie oczekującego rozkazu, czyli na wyjście przez robota podległego z metody \c;get\n; i wywołanie metody \c;delete\n;.
+Główny program robota nadrzędnego jest bardzo prosty:
+
+\c;\s;extern void object::Remote4( )
+\s;{
+\s; SendOrder(1, 20); // move(20);
+\s; SendOrder(2, 90); // turn(90);
+\s; SendOrder(1, 20); // move(20);
+\s; SendOrder(2, 90); // turn(90);
+\s; SendOrder(1, 10); // move(10);
+\s; SendOrder(2, 90); // turn(90);
+\s; SendOrder(1, 10); // move(10);
+\s; SendOrder(2,-90); // turn(-90);
+\s; SendOrder(1, 10); // move(10);
+\s;}
+\n;
+Klawisz \key;\key help;\norm; umożliwia wyświetlenie tych informacji w dowolnej chwili.
+
+
+\t;Zobacz również
+\l;Sterowanie\u command; i \l;programowanie\u cbot;.
diff --git a/help/P/tremote5.txt b/help/P/tremote5.txt
new file mode 100644
index 00000000..06598477
--- /dev/null
+++ b/help/P/tremote5.txt
@@ -0,0 +1,113 @@
+\b;Ćwiczenie
+Pokieruj zdalnie robotem podległym bez używania \l;stacji przekaźnikowej informacji\u object\exchange;. Robot powinien przejść przez 6 niebieskich plusów.
+
+Dwoma głównymi postaciami tego ćwiczenia są¦:
+1) \l;Transporter na kołach\u object\botgr; bez ogniwa elektrycznego, wobec czego unieruchomiony. Jest to robot nadrzędny, który powinien zostać zaprogramowany aby mógł przesyłać rozkazy do podległego mu robota.
+2) Podległy \l;robot treningowy\u object\bottr;, który jest już zaprogramowany i tylko czeka na rozkazy od robota nadrzędnego.
+
+Rozkazy powinny być przechowywane, tak aby robot nadrzędny mógł wysłać wiele rozkazów bez czekania na przetworzenie każdego z nich. Do tego celu należy użyć \l;tablicy\u cbot\array;.
+
+\b;Robot podległy
+Najpierw musimy zrozumieć jak działa program robota podległego. \l;Klasa\u cbot\class; \c;order\n; zawiera dwa elementy: \c;m_type\n; jest rozkazem do wykonania (move lub turn), a \c;m_param\n; jest odległością do pokonania lub kątem obrotu¦:
+
+\c;\s;\l;public\u cbot\public; \l;class\u cbot\class; order
+\s;{
+\s; \l;int\u cbot\int; m_type;
+\s; \l;float\u cbot\float; m_param;
+\s;}
+\n;
+Druga \l;klasa\u cbot\class; \c;exchange\n; zawiera mechanizm przekazywania rozkazów. Deklarujemy jako \c;\l;static\u cbot\static;\n; element klasy \c;m_fifo\n;, który będzie zawierał listę rozkazów do wykonania. Słowo \c;static\n; zapewnia, że element \c;m_fifo\n; jest współużytkowany przez wszystkie instancje \l;klasy\u cbot\class; exchange.
+
+\c;\s;{
+\s; \l;static\u cbot\static; \l;private\u cbot\private; order m_fifo[] = null;
+\n;
+Metoda \c;put\n; będzie używana przez robota nadrzędnego do przesyłania rozkazów. Rozkaz będzie dodawany na końcu tablicy \c;m_fifo\n;:
+
+\c;\s; \l;synchronized\u cbot\synchro; void put(order a)
+\s; {
+\s; m_fifo[sizeof(m_fifo)] = a;
+\s; }
+\n;
+Kolejna metoda \c;get\n; będzie używana przez robota podległego do otrzymywania rozkazów. Metoda ta jako wynik zwraca rozkaz do wykonania. Jeśli lista jest pusta, zostanie zwrócona wartość \c;null\n; i robot powinien czekać na więcej rozkazów. W przeciwnym przypadku powinien zostać zwrócony pierwszy rozkaz na liście, a pozostałe muszą zostać "przesunięte". Ponieważ tablica nie może być "skrócona", używamy pomocniczej tablicy \c;copy\n;¦:
+
+\c;\s; \l;synchronized\u cbot\synchro; order get()
+\s; {
+\s; if ( sizeof(m_fifo) == 0 ) return null;
+\s;
+\s; order a = m_fifo[0];
+\s; order copy[] = null;
+\s; for ( int i=1 ; i b )
-\s; {
-\s; int i = 0;
-\s; while ( i < 18 )
-\s; {
-\s; move(10);
-\s; turn(5);
-\s; i = i+1;
-\s; }
-\s; }
-\n;
-You had better line up the open brace \c;{\n; with the closing brace \c;}\n; in order to improve readability, but it is not compulsory. The following example takes less space, is equivalent to the previous example, but it is not advisable to write your programs in the following style :
-\c;
-\s; if(a>b) { int i=0; while(i<18) {
-\s; move(10);turn(5);i=i+1; }}
-\n;
-\t;See also
-\l;Instructions\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/bool.txt b/help/cbot/bool.txt
deleted file mode 100644
index 6837a8c4..00000000
--- a/help/cbot/bool.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-\b;Type \c;bool\n;
-In a variable of this type you can put a boolean value, that is a value that can take only two states: true or false.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/break.txt b/help/cbot/break.txt
deleted file mode 100644
index 27bb7416..00000000
--- a/help/cbot/break.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-\b;Instruction \c;break\n;
-Syntax :
-\s;\c;while ( condition )
-\s;{
-\s; break;
-\s;}
-\n;
-With this instruction, you can get out immediately of a \c;\l;while\u cbot\while;\n; or \c;\l;for\u cbot\for;\n; loop.
-
-Here is an example:
-\s;\c;int i = 0;
-\s;while ( true )
-\s;{
-\s; \n;Instructions ...\c;
-\s; i = i+1;
-\s; if ( i >= 10 )
-\s; {
-\s; break;
-\s; }
-\s; \n;more instructions ...\c;
-\s;}
-\n;
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/category.txt b/help/cbot/category.txt
deleted file mode 100644
index 0260750a..00000000
--- a/help/cbot/category.txt
+++ /dev/null
@@ -1,108 +0,0 @@
-\b;Value \c;Categories\n;
-Categories represent the names of objects in the CBOT language. Everything in COLOBOT is an object: robots, buildings, raw materials, etc., even yourself.
-
-In a program, categories are always displayed on a \const;red background\norm;. If a category isn't highlighted in red, it is misspelled. Caps and lower cases should be kept as is.
-
-Below are the different categories available :
-
-\t;Buildings :
-
-\button 176; \c;\l;Houston\u object\Huston; \n;Mission Control
-\button 171; \c;\l;SpaceShip\u object\base; \n;Spaceship
-\button 160; \c;\l;BotFactory\u object\factory; \n;Robot Factory
-\button 163; \c;\l;ResearchCenter\u object\research; \n;Research Center
-\button 168; \c;\l;RadarStation\u object\radar; \n;Radar
-\button 172; \c;\l;ExchangePost\u object\exchange; \n;Information Exchange Post
-\button 169; \c;\l;RepairCenter\u object\repair; \n;Repair Center
-\button 165; \c;\l;DefenseTower\u object\tower; \n;Defense Tower
-\button 166; \c;\l;AutoLab\u object\labo; \n;Organic Matter Analyzer
-\button 164; \c;\l;PowerStation\u object\station; \n;Power Station
-\button 167; \c;\l;PowerPlant\u object\energy; \n;Power Cell Factory
-\button 170; \c;\l;NuclearPlant\u object\nuclear; \n;Nuclear Plant
-\button 162; \c;\l;Converter\u object\convert; \n;Titanium Converter
-\button 161; \c;\l;Derrick\u object\derrick; \n;Derrick
-\button 174; \c;\l;PowerCaptor\u object\captor; \n;Parabolic Lightning Conductor
-\button 175; \c;\l;Vault\u object\safe; \n;Vault
- \c;\l;StartArea\u object\start; \n;Starting Pad
- \c;\l;GoalArea\u object\goal; \n;Finishing Pad
- \c;\l;AlienNest\u object\nest; \n;Alien Nest
-
-
-\t;Portable Objects :
-
- \c;\l;TitaniumOre\u object\titanore; \n;Titanium Ore
- \c;\l;UraniumOre\u object\uranore; \n;Uranium Ore
- \c;\l;Titanium\u object\titan; \n;Cube of converted Titanium
- \c;\l;PowerCell\u object\power; \n;Regular Power Cell
- \c;\l;NuclearCell\u object\atomic; \n;Nuclear Power Cell
- \c;\l;OrgaMatter\u object\bullet; \n;Organic Matter
- \c;\l;BlackBox\u object\bbox; \n;Black Box
- \c;\l;TNT\u object\tnt; \n;Explosive device
- \c;\l;KeyA..D\u object\key; \n;Keys A, B, C and D
-
-
-\t;Robots :
-
-\button 158; \c;\l;PracticeBot\u object\bottr; \n;Practice Bot
-\button 173; \c;\l;TargetBot\u object\bottarg; \n;Target Bot
-
-\button 137; \c;\l;WheeledGrabber\u object\botgr; \n;Wheeled Grabber
-\button 138; \c;\l;TrackedGrabber\u object\botgc; \n;Tracked Grabber
-\button 139; \c;\l;WingedGrabber\u object\botgj; \n;Winged Grabber
-\button 150; \c;\l;LeggedGrabber\u object\botgs; \n;Legged Grabber
-
-\button 140; \c;\l;WheeledSniffer\u object\botsr; \n;Wheeled Sniffer
-\button 141; \c;\l;TrackedSniffer\u object\botsc; \n;Tracked Sniffer
-\button 142; \c;\l;WingedSniffer\u object\botsj; \n;Winged Sniffer
-\button 152; \c;\l;LeggedSniffer\u object\botss; \n;Legged Sniffer
-
-\button 143; \c;\l;WheeledShooter\u object\botfr; \n;Wheeled Shooter
-\button 144; \c;\l;TrackedShooter\u object\botfc; \n;Tracked Shooter
-\button 145; \c;\l;WingedShooter\u object\botfj; \n;Winged Shooter
-\button 151; \c;\l;LeggedShooter\u object\botfs; \n;Legged Shooter
-
-\button 153; \c;\l;WheeledOrgaShooter\u object\botor; \n;Wheeled Orga Shooter
-\button 154; \c;\l;TrackedOrgaShooter\u object\botoc; \n;Tracked Orga Shooter
-\button 155; \c;\l;WingedOrgaShooter\u object\botoj; \n;Winged Orga Shooter
-\button 156; \c;\l;LeggedOrgaShooter\u object\botos; \n;Legged Orga Shooter
-
-\button 149; \c;\l;Subber\u object\botsub; \n;Subber
-\button 148; \c;\l;Recycler\u object\botrecy; \n;Recycler
-\button 157; \c;\l;Shielder\u object\botshld; \n;Shielder
-\button 146; \c;\l;Thumper\u object\bottump; \n;Thumper
-\button 147; \c;\l;PhazerShooter\u object\botphaz; \n;Phazer Shooter
-
-
-\t;Enemies :
-
- \c;\l;AlienQueen\u object\mother; \n;Alien Queen
- \c;\l;AlienEgg\u object\egg; \n;Alien Egg
- \c;\l;AlienAnt\u object\ant; \n;Ant
- \c;\l;AlienSpider\u object\spider; \n;Spider
- \c;\l;AlienWasp\u object\wasp; \n;Wasp
- \c;\l;AlienWorm\u object\worm; \n;Worm
-
-
-\t;Miscellaneous :
-
-\button 136; \c;\l;Me\u object\human; \n;You!
- \c;\l;Mine\u object\mine; \n;Mine
- \c;\l;Barrier\u object\barrier; \n;Barrier
- \c;\l;Wreck\u object\wreck; \n;Derelict bot
- \c;\l;Ruin\u object\ruin; \n;Derelict building
-
-
-\t;Flags and Other Indicators :
-
- \c;\l;BlueFlag\u object\flag; \n;Blue Flag
- \c;\l;RedFlag\u object\flag; \n;Red Flag
- \c;\l;GreenFlag\u object\flag; \n;Green Flag
- \c;\l;YellowFlag\u object\flag; \n;Yellow Flag
- \c;\l;VioletFlag\u object\flag; \n;Violet Flag
- \c;\l;WayPoint\u object\waypoint; \n;Checkpoint
- \c;\l;EnergySite\u object\enerspot; \n;Underground Energy Deposit
- \c;\l;TitaniumSite\u object\stonspot; \n;Underground Titanium Deposit
- \c;\l;UraniumSite\u object\uranspot; \n;Underground Uranium Deposit
-
-\t;See also
-\l;CBOT Language\u cbot; and \l;Variables\u cbot\type;.
diff --git a/help/cbot/class.txt b/help/cbot/class.txt
deleted file mode 100644
index 829dc5c5..00000000
--- a/help/cbot/class.txt
+++ /dev/null
@@ -1,72 +0,0 @@
-\b;Instruction \c;class\n;
-This allows you to declare a class definition using following syntax:
-\c;
-\s;public class ClassName
-\s;{
-\s; declarations;
-\s;}
-\n;
-Classes can only be \l;public\u cbot\public;, that is they can be used from all bots in a mission. Class members are also public, that is they are accessible from outside the class. Class members can be fields or functions (also called methods), for example the followin class \c;MyClass\n; contains 4 fields (a, b, x and s) and one method (MyFunction).
-\c;
-\s;public class MyClass
-\s;{
-\s; int a, b;
-\s; float x = 3.33;
-\s; string s = "hello";
-\s; float MyFunction( float value )
-\s; {
-\s; return (value*x)-1;
-\s; }
-\s;}
-\n;
-As shown in this exemple the class members can be initialized (\c;x=3.33\n;). You can also define a constructor which is a special method having the same name as the class name. This method will be called automatically at creation time of a class instance. You can also declare more than one method with the same name but different parameters.
-\c;
-\s;public class MyClass
-\s;{
-\s; int a, b;
-\s; void MyClass( )
-\s; {
-\s; a = 2; b = 3;
-\s; }
-\s; void MyClass( int a, int b )
-\s; {
-\s; this.a = a; this.b = b;
-\s; }
-\s;}
-\n;
-In this example two constructors are declared for \c;MyClass\n;, one without parameters and the other one with two parameters. As the names of the parameters of the second constructor are the same as the names of the two members \c;a\n; et \c;b\n; we must use the \c;\l;this\u cbot\this;.a\n; and \c;\l;this\u cbot\this;.b\n; to avoid confusion with the parameters. Another more simpler solution would be to give different names to the parameters.
-\c;
-\s;void Test( )
-\s;{
-\s; MyClass item1(); // constr. w/o parameters
-\s; MyClass item2(4, 5); // constr. with 2 parameters
-\s; MyClass item3; // no constructor called,
-\s; // therefore item3 == null
-\s;}
-\n;
-You can also define a destructor. This must be a \c;void\n; fonction without parameters that has the same name as the class name but prefixed by the ~ character. The destructor is called automatically as soon as the class instance is no more referenced by anyone.
-\c;
-\s;public class MyClass
-\s;{
-\s; static private int counter = 0; // instance counter
-\s; void MyClass( )
-\s; {
-\s; counter ++; // one instance more
-\s; }
-\s; void ~MyClass( )
-\s; {
-\s; counter --; // one instance less
-\s; }
-\s;}
-\s;void Test()
-\s;{
-\s; MyClass item1( ); // counter = 1
-\s; MyClass item2( ); // counter = 2
-\s; item1 = null; // counter = 1
-\s;} // counter = 0
-\n;
-If you pass a class instance as parameter to a \l;function\u cbot\function;, the function only receives a \l;reference\u cbot\pointer; to the instance. That means if you modify the instance in the function, the instance that has been passed to the function will be actuallay modified.
-
-\t;See also
-\c;\l;public\u cbot\public;\n;, \c;\l;private\u cbot\private;\n;, \c;\l;static\u cbot\static;\n;, \c;\l;synchronized\u cbot\synchro;\n;, \c;\l;new\u cbot\new;\n;, \c;\l;reference\u cbot\pointer;\n;, \c;\l;this\u cbot\this;\n;
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/close.txt b/help/cbot/close.txt
deleted file mode 100644
index a14f6a3b..00000000
--- a/help/cbot/close.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-\b;Instruction \c;close\n;
-Close a file opened previously with \c;\l;open\u cbot\open;\n;. This is a method of the \c;\l;file\u cbot\file;\n; class; therefore you cannot write \c;close()\n; but only \c;handle.close()\n;¦:
-\c;
-\s; handle.close();
-\n;
-\t;See also
-\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;readln\u cbot\readln;\n;, \c;\l;writeln\u cbot\writeln;\n; and \c;\l;eof\u cbot\eof;\n;.
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/cond.txt b/help/cbot/cond.txt
deleted file mode 100644
index a7b6ae2a..00000000
--- a/help/cbot/cond.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-\b;Conditions
-A condition is a special \l;expression\u cbot\expr; that returns a \l;boolean\u cbot\bool; value, that can only be either \c;\l;true\u cbot\true;\n; or \c;\l;false\u cbot\false;\n;. With a condition, you can choose f. ex. if the instructions in a \c;\l;while\u cbot\while;\n; loop must be repeated again, or if the instruction in a \c;\l;if\u cbot\if;\n; bloc must be executed.
-Here are some operators that you can use in conditions to compare two values :
-
-\c;a == b \n;\c;a\n; equals \c;b\n;
-\c;a != b \n;\c;a\n; is different from \c;b\n;
-\c;a < b \n;\c;a\n; smaller than \c;b\n;
-\c;a <= b \n;\c;a\n; smaller than or equal to \c;b\n;
-\c;a > b \n;\c;a\n; greater than \c;b\n;
-\c;a >= b \n;\c;a\n; greater than or equal to \c;b\n;
-
-For example :
-
-\c;12 == 12 \n;returns true
-\c;45 != 47 \n;returns true
-\c;99 == 98 \n;returns false
-\c;12 < -1 \n;returns false
-\c;12 >= 10 \n;returns true
-\c;12 >= 12 \n;returns true
-
-\t;Remarque
-Be careful not to confuse the equality comparison \c;==\n; with the assignment of a \l;variable\u cbot\var; \c;=\n;.
-
-\c;a == b\n; is an expression that compares \c;a\n; with \c;b\n;.
-\c;a = b\n; is an expression that copies the value of \c;b\n; into \c;a\n;.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
-
diff --git a/help/cbot/continue.txt b/help/cbot/continue.txt
deleted file mode 100644
index 9c3ba564..00000000
--- a/help/cbot/continue.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-\b;Instruction \c;continue\n;
-Syntax :
-\s;\c;while ( condition )
-\s;{
-\s; continue;
-\s;}
-\n;
-With this instruction, you can jump over the rest of instructions in the \c;\l;bloc\u cbot\bloc;\n; of a \c;\l;while\u cbot\while;\n; or \c;\l;for\u cbot\for;\n; loop: The execution will resume at the beginning of the bloc, the next time the loop is repeated.
-
-Here is an example:
-\s;\c;int i = 0;
-\s;while ( i < 5 )
-\s;{
-\s; i = i+1;
-\s; if ( i == 3 )
-\s; {
-\s; continue;
-\s; }
-\s; \n;Instructions ...\c;
-\s;}
-\n;
-The instructions will only be executed for the values of \c;i\n; 1, 2, 4 and 5.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/deletef.txt b/help/cbot/deletef.txt
deleted file mode 100644
index 298cba56..00000000
--- a/help/cbot/deletef.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-\b;Instruction \c;deletefile\n;
-The deletefile instruction deletes an existing file in the files/ folder.
-
-Files can only be deleted in the files/ folder which is located in the folder where Colobot has been installed. You cannot not delete files that are located elsewhere than in the files/ folder.
-
-Syntax¦:
-\s;\c;deletefile ( filename );\n;
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/delinfo.txt b/help/cbot/delinfo.txt
deleted file mode 100644
index b673e7bd..00000000
--- a/help/cbot/delinfo.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Instruction \c;deleteinfo\n;
-Syntax¦:
-\s;\c;deleteinfo ( name, power );\n;
-
-Delete an existing information in the closest \l;information exchange post\u object\exchange;.
-
-\t;name: \c;string\n;
-Name of the information to be deleted. This name is a string: it must be written in quotation marks "¦".
-
-\t;power: \c;float\n;
-Power of the transmitter, which corresponds to the maximal distance between the sender and the exchange post. If the distance is longer, the information won't be deleted. Default value is 10 metres.
-
-\t;See also
-\c;\l;receive\u cbot\receive;\n;, \c;\l;send\u cbot\send;\n; and \c;\l;testinfo\u cbot\testinfo;\n;.
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/direct.txt b/help/cbot/direct.txt
deleted file mode 100644
index ea92ba27..00000000
--- a/help/cbot/direct.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Instruction \c;direction\n;
-Syntax :
-\s;\c;direction ( pos );\n;
-
-Calculates the rotation that a robot must perform in order to point towards a given position.
-
-\t;pos: \c;\l;point\u cbot\point;\n;
-Position towards which the robot must point.
-
-\t;Return value: \c;\l;float\u cbot\float;\n;
-Angle of the rotation that must be performed. -90 means f. ex. a rotation of 90 degrees to the right.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
-
diff --git a/help/cbot/dist.txt b/help/cbot/dist.txt
deleted file mode 100644
index 6921fbf5..00000000
--- a/help/cbot/dist.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-\b;Instruction \c;distance\n;
-With the instruction \c;distance( , )\n; you can calculate the distance between two positions.
-
-\b;Basic use
-If you write \c;position\n; alone, this gives you the position of the bot that executes the program. If you write the name of a variable followed by \c;.position\n;, this gives you the position of the object described in the variable.
-
-Here is a program that moves forward, covering exactly the distance between the bot and the closest ant:
-\c;
-\s; item = \l;radar\u cbot\radar;(AlienAnt);
-\s; \l;move\u cbot\move;(distance(position, item.position));
-\n;
-This is of course pure suicide. Better to stop 40 meters before, in order to be at shooting range:
-\c;
-\s; item = radar(AlienAnt);
-\s; move(distance(position, item.position) - 40);
-\n;
-\b;For specialists
-Syntax:
-\s;\c;distance ( pos1, pos2 );\n;
-
-Calculates the distance between two positions.
-
-\t;pos1, pos2: \c;\l;point\u cbot\point;\n;
-Coordinates of the two positions.
-
-\t;Return value: \c;\l;float\u cbot\float;\n;
-Distance between the two positions.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/dist2d.txt b/help/cbot/dist2d.txt
deleted file mode 100644
index e1c96916..00000000
--- a/help/cbot/dist2d.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-\b;Instruction \c;distance2d\n;
-Syntax:
-\s;\c;distance2d ( pos1, pos2 );\n;
-
-Calculates the distance between two positions (ignores the z coordinate).
-
-\t;pos1, pos2: \c;\l;point\u cbot\point;\n;
-Coordinates of the two positions.
-
-\t;Return value: \c;\l;float\u cbot\float;\n;
-Distance between the two positions.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/do.txt b/help/cbot/do.txt
deleted file mode 100644
index 1b411cfe..00000000
--- a/help/cbot/do.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-\b;Instruction \c;do - while\n;
-Syntax:
-\s;\c;do
-\s;{
-\s; \n;Instructions ...\c;
-\s;}
-\s;while ( condition );
-\n;
-This instruction allows you to perform several times the instructions inside the \l;block\u cbot\bloc;. The instructions are executed at least once, because the condition is tested only afterwards.
-Be careful not to confuse the instruction \c;do { } while ( );\n; with the instruction \c;\l;while\u cbot\while; ( ) { }\n;; the latter tests the condition before the instructions in the block are executed.
-
-\t;\c;condition\n;
-The instructions in the block are performed over and over again, as long as the \l;condition\u cbot\cond; is true.
-
-Here is an example :
-\s;\c;do
-\s;{
-\s; p = radar(TitaniumOre);
-\s;}
-\s;while ( p == null );
-\n;
-\t;Attention
-Always put a \l;semicolon\u cbot\term; at the end of the line \c;while ( )\n;.
-
-The instructions \c;\l;break\u cbot\break;\n; and \c;\l;continue\u cbot\continue;\n; can be useful inside a block following the instruction \c;do { }\n;.
-
-\t;See also
-\l;Instructions\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/drop.txt b/help/cbot/drop.txt
deleted file mode 100644
index 275173ed..00000000
--- a/help/cbot/drop.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-\b;Instruction \c;drop\n;
-The instruction \c;drop();\n; instructs the bot to drop whatever the operating arm is carrying on the ground, on the platform of a building or on the power cell location of a bot.
-
-\b;Basic use
-The instruction \c;drop();\n; written in this form drops the object in front of the bot. Here is a short program that grabs an object in front of the bot and drops it 5 meters further:
-\c;
-\s; \l;grab\u cbot\grab;();
-\s; \l;move\u cbot\move;(5);
-\s; drop();
-\n;
-\b;For specialists
-Syntax:
-\s;\c;drop ( oper );\n;
-
-This instruction appeals to the operating arm of a \l;grabber bot\u object\botgr;, in order to drop what it is holding.
-
-\t;oper: \c;\l;int\u cbot\int;\n; (default value\c;InFront\n;)
-Oper indicates where the robot should drop the object. If no indication is given, the object is dropped in front of the bot.
-\c;InFront \n; Drops in front (default value).
-\c;Behind \n; Drops behind.
-\c;EnergyCell\n; Drops on the bot's own power cell location.
-
-\t;Return value: \c;\l;int\u cbot\int;\n;
-Normally an error stops the program. You can prevent the program from stopping on errors by using the \c;\l;errmode\u cbot\errmode;(0)\n; instruction. A value different from zero if an error occurred is then returned by \c;drop();\n;.
-\c;== 0 \n;object was dropped
-\c;!= 0 \n;error, no object was dropped
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/eof.txt b/help/cbot/eof.txt
deleted file mode 100644
index 9104d608..00000000
--- a/help/cbot/eof.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Instruction \c;eof\n;
-Test the end of file condition of an open file. This is a method of the \c;\l;file\u cbot\file;\n; class; therefore you cannot write \c;eof()\n; but only \c;handle.eof()\n;¦:
-\c;
-\s; if ( handle.eof() )
-\n;
-Example¦:
-\c;
-\s; while ( not handle.eof() )
-\s; {
-\s; s = handle.readln();
-\s; }
-\n;
-\t;See also
-\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n; and \c;\l;writeln\u cbot\writeln;\n;.
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/errmode.txt b/help/cbot/errmode.txt
deleted file mode 100644
index a264121b..00000000
--- a/help/cbot/errmode.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-\b;Instruction \c;errmode\n;
-The \c;errmode();\n; instruction allows you to chose if the program should stop when an error occurs in one of the following instructions: \c;\l;goto\u cbot\goto;\n;, \c;\l;move\u cbot\move;\n;, \c;\l;grab\u cbot\grab;\n;, \c;\l;drop\u cbot\drop;\n;, etc.
-
-\b;For specialists
-Syntax¦:
-\s;\c;errmode ( mode );\n;
-
-Normally the program is stopped when an error occurs. If you use the instruction \c;errmode(0);\n; at the beginning of the program, the instructions listed above return a value different from zero if the instruction could not be performed.
-
-\t;mode: \c;\l;float\u cbot\float;\n; (\c;1\n; per default)
-Error treatment mode.
-\c;0\n; -> continues program execution and returns a non zero value
-\c;1\n; -> stops the program (default behavior)
-
-Exemple 1¦:
-\s;\c;errmode(0);
-\s;while ( goto(pos) != 0 )
-\s;{
-\s; wait(2);
-\s;}
-\n;
-Exemple 2¦:
-\s;\c;errmode(0);
-\s;int err;
-\s;err = goto(pos);
-\s;if ( err != 0 )
-\s;{
-\s; \n;goto did not perform correctly ...\c;
-\s; \n;take some appropriate action ...\c;
-\s;}
-\n;
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/expr.txt b/help/cbot/expr.txt
deleted file mode 100644
index e42c17e2..00000000
--- a/help/cbot/expr.txt
+++ /dev/null
@@ -1,88 +0,0 @@
-\b;Expressions
-Expressions can include the following operators:
-
-\c;+\n; addition
-\c;-\n; subtraction
-\c;*\n; multiplication
-\c;/\n; division
-\c;%\n; remainder of the division (only for the type \c;\l;int\u cbot\int;\n;)
-
-With the addition operator \c;+\n;, you can not only add numbers, you can also append \l;strings\u cbot\string;.
-\c;
-\s; int i = 12+3; // returns 15
-\s; string s = "a"+"bc"; // returns "abc"
-\s; int i = 2-5; // returns -3
-\s; float f = 3.01*10; // returns 30.1
-\s; int i = 5/3; // returns 1
-\s; float f = 5/3; // returns 1.67
-\s; float f = 5/0; // returns an error
-\s; int i = 13%5; // returns 3
-\s; int i = -8%3; // returns -2
-\n;
-An expression can include constants or \l;variables\u cbot\var;. For example:
-
-\s;\c; 12+dist\n;
-
-Multiplications and divisions are performed before additions and subtractions. In order to be sure that the operations are performed in the right order, use brackets:
-\c;
-\s; 12*a+b/c \n;is equivalent to\c; (12*a)+(b/c)
-\s; 2.5*(dist+range)
-\n;
-In order to improve readability, you can put as many spaces as you want:
-\c;
-\s; 12*a + b/c
-\s; 2.5 * (dist+range)
-\n;
-Here is a list of mathematical functions:
-
-\c;sin(angle) \n;sinus
-\c;cos(angle) \n;cosinus
-\c;tan(angle) \n;tangent
-\c;asin(value) \n;arc-sinus
-\c;acos(value) \n;arc-cosinus
-\c;atan(value) \n;arc-tangente
-\c;sqrt(value) \n;square root
-\c;pow(x, y) \n;x power y
-\c;rand() \n;random value ranging between 0 and 1
-
-Angles are in degrees.
-
-\t;Compound assignment operators (for specialists)
-Besides the \c;=\n; operators for variable assignment there are several compound-assignment operators.
-
-The compound-assignment operators combine the \c;=\n; assignment operator with another binary operator such as \c;+\n; or \c;-\n;. Compound-assignment operators perform the operation specified by the additional operator and then assign the result to the left operand. For example, a compound-assignment expression such as
-
-\c;\s;expression1 += expression2
-
-is equivalent to
-
-\c;\s;expression1 = expression1 + expression2
-
-\c;+=\n; addition
-\c;-=\n; subtraction
-\c;*=\n; multiplication
-\c;/=\n; division
-\c;%=\n; remainder of the division (only for the type \c;\l;int\u cbot\int;\n;)
-
-\t;Prefix and posfix increment- and decrement operators (for specialists)
-The operators \c;++\n; and \c;--\n; allow you to increment (++) or to decrement (--) a variable in very compact and efficient manner.
-
-For example to increment the variable \c;a\n; you can write
-\c;\s; a++ ;
-\n;instead of
-\c;\s; a = a + 1 ;
-\n;
-The value of the expression \c;a++\n; is the value of the variable \c;a\n; before the increment. If you use the prefix operator \c;++a\n; the value of the expression is the value of the variable \c;a\n; after the increment. The same holds for the \c;--\n; decrement operator.
-
-Exemples:
-\c;\s; a = 2 ;
-\s; b = a++ ;
-\s; // now b contains 2 and a contains 3
-
-\c;\s; a = 2 ;
-\s; b = ++a ;
-\s; // now b contains 3 and a contains 3
-\n;
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/extern.txt b/help/cbot/extern.txt
deleted file mode 100644
index 6f4a2d5e..00000000
--- a/help/cbot/extern.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-\b;Instruction \c;extern\n;
-The \c;extern\n; instruction determines the \l;function\u cbot\function; that acts as main program of a robot. The name of the function declared with \c;extern\n; will apear in the program list in the lower left corner of the screen.
-\c;
-\s;extern void object::MowDown( )
-\s;{
-\s; while ( true )
-\s; {
-\s; fire(1);
-\s; turn(10);
-\s; }
-\s;}
-\n;
-If the program contains other functions, only the main function must be preceded by \c;extern\n;.
-\c;
-\s;extern void object::Square( )
-\s;{
-\s; for ( int i=0 ; i<4 ; i++ )
-\s; {
-\s; Line(10);
-\s; }
-\s;}
-\s;
-\s;void object::Line(float dist)
-\s;{
-\s; move(dist);
-\s; turn(90);
-\s;}
-\n;
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/false.txt b/help/cbot/false.txt
deleted file mode 100644
index 2942c6b4..00000000
--- a/help/cbot/false.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-\b;Type \c;false\n;
-This value means that a condition is not true; it is one of the two values that a \l;boolean\u cbot\bool; \l;variable\u cbot\var; can take.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
-
diff --git a/help/cbot/file.txt b/help/cbot/file.txt
deleted file mode 100644
index b6991152..00000000
--- a/help/cbot/file.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-\b;Type \c;file\n;
-This type is used for accessing files in the files/ folder.
-\c;
-\s; file handle();
-\n;
-Use the syntax above for declaring a file handle. You must use () to create an instance of the \c;file\n; class. Without the () the handle would have the value \c;\l;null\u cbot\null;\n;.
-
-Files can only be created and opened in the files/ folder which is located in the folder where Colobot has been installed. You cannot not create or open files elsewhere than in the files/ folder.
-
-\b;For specialists
-\c;file\n; is actually not a simple type but a class. \c;open\n;, \c;close\n;, \c;writeln\n; etc. are methods of the \c;file\n; class. This is the reason why we always write \c;handle.method()\n;¦:
-\c;
-\s; handle.open("test.txt", "w");
-\s; handle.close();
-\n;
-\t;See also
-\c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n;, \c;\l;writeln\u cbot\writeln;\n; and \c;\l;eof\u cbot\eof;\n;.
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/fire.txt b/help/cbot/fire.txt
deleted file mode 100644
index 0da624ca..00000000
--- a/help/cbot/fire.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-\b;Instruction \c;fire\n;
-The instruction \c;fire();\n; fires the bot's onboard cannon.
-
-\b;Basic use
-Generally this instruction is used to shoot one-second bursts:
-\c;
-\s; fire(1);
-\n;
-\b;For specialists
-Syntax:
-\s;\c;fire ( time );\n;
-
-Fires the gun, with a burst that lasts a certain time. The longer the burst, the more energy it needs. This instruction can be used with the following bot types:
-o \l;Shooter\u object\botfr;
-o \l;Orga shooter\u object\botor;
-o \l;Phazer shooter\u object\botphaz;
-
-When controlling the robot through programming, the only way to turn the gun left or right is to turn the whole robot with the instruction \c;\l;turn\u cbot\turn;\n;.
-
-In order to move the gun upward or downward, use the instruction \c;\l;aim\u cbot\aim;\n;.
-
-\t;time: \c;\l;float\u cbot\float;\n;
-Duration of the burst. Generally, the value given is 1. Shorter bursts can also be performed in order to spare time and energy.
-
-\t;Return value: \c;\l;int\u cbot\int;\n;
-Zero if OK, or a value different from zero if an error occurred.
-\c;== 0 \n;the cannon has been fired
-\c;!= 0 \n;error, the cannon could not be fired
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/flatgrnd.txt b/help/cbot/flatgrnd.txt
deleted file mode 100644
index d9a45791..00000000
--- a/help/cbot/flatgrnd.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-\b;Instruction \c;flatground\n;
-Syntax¦:
-\s;\c;flatground ( center, rmax );\n;
-
-Calculates the maximal radius of a flat zone on which a building ca be built.
-
-\t;center: \c;\l;point\u cbot\point;\n;
-Center of the circlular zone.
-
-\t;rmax: \c;\l;float\u cbot\float;\n;
-Maximal radius.
-
-\t;Return value: \c;\l;float\u cbot\float;\n;
-Radius of the flat zone (always between 0 and rmax).
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/float.txt b/help/cbot/float.txt
deleted file mode 100644
index 2cd23e83..00000000
--- a/help/cbot/float.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-\b;Type \c;float\n;
-Use this type for most variables that contains numbers. Variables of this type can contain positive and negative numbers, whole or real numbers, for example:
-\c;
-\s; 12.9
-\s; 1.125
-\s; 0.002
-\s; -4.1
-\n;
-If you need only whole numbers (f. ex. 12 or -5000), you should rather use the type \c;\l;int\u cbot\int;\n;.
-
-\t;Attention
-Do not insert space or colon characters into a number. To separate the whole part from the fractional part, use a dot.
-\c;
-\s; Write and not
-\s; 12.56 12 . 56
-\s; -54.34 -54,34
-\s;12895.69 12,895.69
-\n;
-\t;For specialists
-Floating point numbers are represented in Colobot with 32 bits.
-The highest value that can be represented is 3.4E+38.
-The smallest value that can be represented is 3.4E-38.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/for.txt b/help/cbot/for.txt
deleted file mode 100644
index 6c5c32fb..00000000
--- a/help/cbot/for.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-\b;Instruction \c;for\n;
-Syntax:
-\s;\c;for ( before ; condition ; end )
-\s;{
-\s; \n;Instructions ...\c;
-\s;}
-\n;
-This instruction allows you to execute a certain number of times the instructions contained in the \l;block\u cbot\bloc;.
-
-\t;\c;before\n;
-This instruction is executed before the first loop instance.
-
-\t;\c;condition\n;
-This \l;condition\u cbot\cond; determines if another instance of the loop must be executed. It is tested before every instance of the loop.
-
-\t;\c;end\n;
-This instruction is executed at the end of every instance of the loop.
-
-Example: count from 1 to 4
-\c;\s;\c;for ( i = 0 ; i <= 4 ; i++ )
-\s;{
-\s; message(i) ;
-\s;}
-\n;
-The following example is strictly equivalent to a \c;for\n;-loop, but it uses the instruction \c;\l;while\u cbot\while;\n;:
-\s;\c;before;
-\s;while ( condition )
-\s;{
-\s; \n;Instructions ...\c;
-\s; end;
-\s;}
-\n;
-\t;Attention
-Do not put a \l;semicolon\u cbot\term; at the end of the line \c;for ( )\n;.
-
-The instructions \c;\l;break\u cbot\break;\n; and \c;\l;continue\u cbot\continue;\n; can be useful inside a block following the instruction \c;for \n;.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
-
diff --git a/help/cbot/function.txt b/help/cbot/function.txt
deleted file mode 100644
index 2f03b6cf..00000000
--- a/help/cbot/function.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-\b;Functions
-With functions you can divide your program into several parts, each of them will execute a specific task.
-Let's imagine following program¦:
-\c;
-\s;extern void object::Remote( )
-\s;{
-\s; send("order", 1, 100);
-\s; wait(5);
-\s; send("order", 3, 100);
-\s; wait(5);
-\s; send("order", 2, 100);
-\s; wait(5);
-\s; send("order", 4, 100);
-\s; wait(5);
-\s;}
-\n;
-\c;send\n; and \c;wait\n; are repeated several times. So it would be a good thing if we created a function that executes these two instructions:
-\c;
-\s;void object::SendToPost( float op )
-\s;{
-\s; send("order", op, 100);
-\s; wait(5);
-\s;}
-\s;extern void object::Remote( )
-\s;{
-\s; SendToPost(1);
-\s; SendToPost(3);
-\s; SendToPost(2);
-\s; SendToPost(4);
-\s;}
-\n;
-A function can have paramteters¦:
-\c;
-\s;void Example( int a, float x, string s )
-\n;
-The \c;Exemple\n; function will reveive un integer \c;a\n;, a floating point number \c;x\n; and a string \c;s\n;. Parameters are "passed by value", that is the values of parameter variables in a function are copies of the values the caller specified as variables. If you pass an \c;int\n; to a function, its parameter is a copy of whatever value was being passed as argument, and the function can change its parameter value without affecting values in the code that invoked the function.
-
-If you pass a \l;class\u cbot\class; instance or an \l;array\u cbot\array; as parameter to a function, the function only receives a \l;reference\u cbot\pointer; to the instance or the array. That means if you modify the instance or the array in the function, the instance or the array that has been specified by the caller will be actuallay modified.
-
-A function can also return a result with the \c;\l;return\u cbot\return;\n; instruction. Therefore the function must be declared no longer as void but as a type:
-\c;
-\s;float Mean( float a, float b )
-\s;{
-\s; return (a+b)/2;
-\s;}
-\s;
-\s;extern void object::Test( )
-\s;{
-\s; float value;
-\s; value = Mean(2, 6);
-\s; message( value ); // will display 4
-\s;}
-\n;
-Some other examples¦:
-\c;
-\s;float Pi( )
-\s;{
-\s; return 3.1415;
-\s;}
-\s;
-\s;string Sign( float a )
-\s;{
-\s; if ( a > 0 ) return "positive";
-\s; if ( a < 0 ) return "négative";
-\s; return "null";
-\s;}
-\n;
-You can declare several functions with the same name but different parameters¦:
-\c;
-\s;float Pythagoras( float a, float b )
-\s;{
-\s; return sqrt((a*a)+(b*b));
-\s;}
-\s;
-\s;float Pythagoras( float a, float b, float c )
-\s;{
-\s; return sqrt((a*a)+(b*b)+(c*c));
-\s;}
-\n;
-CBOT will call either the one or the other function depending on the paramteres passed.
-
-You can also declare a function \l;public\u cbot\public; so it can be used by other bots.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/goto.txt b/help/cbot/goto.txt
deleted file mode 100644
index 116b5ada..00000000
--- a/help/cbot/goto.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-\b;Instruction \c;goto\n;
-The instruction \c;goto();\n; instructs the bot to reach a given position.
-
-\b;Basic use
-The most current use consists in moving the bot to an object located with the instruction \c;\l;radar\u cbot\radar;();\n;. If the information returned by the \c;\l;radar\u cbot\radar;();\n; has been stored in a certain variable, write the name of the variable followed by \c;.position\n; in order to get the position of the object. Here is an example of a program that looks for a \l;titanium cube\u object\titan;, goes to the position and grabs it:
-\c;
-\s; item = \l;radar\u cbot\radar;(Titanium);
-\s; goto(item.position);
-\s; \l;grab\u cbot\grab;();
-\n;
-\b;For specialists
-Syntax:
-\s;\c;goto ( position, altitude, goal, crash );\n;
-
-Tells the robot to go to the given position, avoiding all the obstacles if this is possible.
-
-\t;pos: \c;\l;point\u cbot\point;\n;
-Coordinates of the goal position.
-
-\t;altitude: \c;\l;float\u cbot\float;\n;
-Flight altitude for \l;winged bots\u object\botgj;. The altitude is useful only for \l;winged bots\u object\botgj;. From the initial altitude, the bot climbs higher until it reaches the specified hight. When arriving close to destination, it goes down to touch the ground at the given position. If no value is given, an altitude of 10 meters is the default value. On very short moves, even winged bot stay on the ground. For all bot except winged bots, this parameter is ignored.
-
-\t;goal: \c;\l;int\u cbot\int;\n; (default value \c;0\n;)
-This parameter tells the bot how it must reach the goal:
-\c;0\n; stops exactly at the goal position
-\c;1\n; goes close to the goal position, without stopping.
-If no value is given, \c;1\n; (precision) is the default value.
-
-\t;Return value: \c;\l;int\u cbot\int;\n;
-Normally an error stops the program. You can prevent the program from stopping on errors by using the \c;\l;errmode\u cbot\errmode;(0)\n; instruction. A value different from zero if an error occurred is then returned by \c;goto()\n;.
-\c;== 0 \n;Goal position reached
-\c;!= 0 \n;Goal position impossible to reach
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/grab.txt b/help/cbot/grab.txt
deleted file mode 100644
index d3b9c444..00000000
--- a/help/cbot/grab.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-\b;Instruction \c;grab\n;
-The instruction \c;grab();\n; instructs the bot to use the operating arm to grab an object located on the ground, on the platform of a building or on the power cell location of a bot.
-
-\b;Basic use
-The instruction \c;grab();\n; written in this form grabs the object located in front of the bot. Here is a short program that grabs an object in front of the bot and drops it 5 meters further:
-\c;
-\s; grab();
-\s; \l;move\u cbot\move;(5);
-\s; \l;drop\u cbot\drop;();
-\n;
-\b;For specialists
-Syntax:
-\s;\c;grab ( oper );\n;
-
-This instruction appeals to the operating arm of a \l;grabber bot\u object\botgr;, in order to grab the closest object.
-
-\t;oper: \c;\l;int\u cbot\int;\n; (default value\c;InFront\n;)
-Oper indicates where the bot should look for an object to grab. If no indication is given, the object is picked up in front of the bot.
-\c;InFront \n; Grabs in front (default value).
-\c;Behind \n; Grabs behind.
-\c;EnergyCell\n; Grabs the bot's own power cell.
-
-\t;Return value: \c;\l;int\u cbot\int;\n;
-Normally an error stops the program. You can prevent the program from stopping on errors by using the \c;\l;errmode\u cbot\errmode;(0)\n; instruction. A value different from zero if an error occurred is then returned by \c;grab();\n;.
-\c;== 0 \n;an object was grabbed
-\c;!= 0 \n;error, no object was grabbed
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/if.txt b/help/cbot/if.txt
deleted file mode 100644
index c5ab281d..00000000
--- a/help/cbot/if.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-\b;Instructions \c;if\n; and \c;else\n;
-With the instruction \c;if() {}\n; you can execute a set of instructions only if a certain condition is true. Write the condition in brackets \c;()\n;, and the instructions in braces \c;{}\n;.
-
-\b;Basic use
-Here is a concrete example: The bot will shoot only if the target is closer than 40 meters:
-\c;
-\s; item = \l;radar\u cbot\radar;(AlienAnt);
-\s; if (\l;distance\u cbot\dist;(position, item.position) < 40)
-\s; {
-\s; fire(1);
-\s; }
-\n;
-You can also test if an object exists at all. If the instruction \c;\l;radar\u cbot\radar;();\n; does not find the requested object, it returns the value \c;null\n;. So you can test if an object does not exists with the condition \c;(item == null)\n;, or test if it exists with \c;(item != null)\n;. Two equal signs \c;==\n; test equality, an exclamation mark followed by an equal sign \c;!=\n; test inequality. Here is a test that will go to rechage the \l;power cell\u object\power; only if there is a \l;power station\u object\station;:
-\c;
-\s; item = \l;radar\u cbot\radar;(PowerStation);
-\s; if (item != null)
-\s; {
-\s; \l;goto\u cbot\goto;(item.position);
-\s; \l;wait\u cbot\wait;(5);
-\s; }
-\n;
-\b;For specialists
-Syntax:
-\s;\c;if ( condition )
-\s;{
-\s; \n;Instructions A ...\c;
-\s;}
-\s;else
-\s;{
-\s; \n;Instructions B ...\c;
-\s;}
-\n;
-With this conditional structure you can execute a \l;bloc\u cbot\bloc; A or a \l;bloc\u cbot\bloc; B depending on a \l;condition\u cbot\cond;. If the condition is true, bloc A is executed. If the condition is false, bloc B is executed.
-Part \c;else { }\n; is not compulsory.
-
-\t;Attention
-Do not put a \l;semicolon\u cbot\term; at the end of the line \c;if ( )\n;.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/int.txt b/help/cbot/int.txt
deleted file mode 100644
index edf666bd..00000000
--- a/help/cbot/int.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;Type \c;int\n;
-Use this type for variables that contain only whole numbers, negative or positive. For example:
-\c;
-\s; 12
-\s; 1000
-\s; -4
-\n;
-To represent real numbers like 12.05 or -0.005, use the type \c;\l;float\u cbot\float;\n;.
-
-\t;Attention
-Do not put space or colon signs inside a number.
-
-\t;For specialists
-Numbers of the type \c;int\n; are represented with 32 bits.
-The highest number that can be represented is (2^31)-1, that is 2'147'483'647.
-The smallest number that can be represented is -(2^31), that is -2'147'483'648.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
-
diff --git a/help/cbot/jet.txt b/help/cbot/jet.txt
deleted file mode 100644
index f0beae6e..00000000
--- a/help/cbot/jet.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-\b;Instruction \c;jet\n;
-Syntax:
-\s;\c;jet ( power );\n;
-
-Direct control of the jet of a \l;winged bot\u object\botgj;. The jet is what makes the bot fly. Use this instruction in order to take off, climb, descend or land.
-
-\t;power: \c;\l;float\u cbot\float;\n;
-Power of the jet, ranges between \c;-1\n; and \c;+1\n;. \c;jet(1);\n; instructs the bot to climb as fast as possible, \c;jet(-1);\n; descends as fast as possible, \c;jet(0);\n; stabilizes the altitude. In order to get slower altitude changes, use intermediate values, for example \c;jet(0.3);\n;.
-
-
-\t;Return value: \c;\l;void\u cbot\void;\n;
-None.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
-
diff --git a/help/cbot/message.txt b/help/cbot/message.txt
deleted file mode 100644
index 1f361b84..00000000
--- a/help/cbot/message.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-\b;Instruction \c;message\n;
-Syntax:
-\s;\c;message ( text, type );\n;
-
-Prints a message on top of the screen. After a few seconds, the message disappears automatically.
-
-\t;text: \c;\l;string\u cbot\string;\n;
-Text that is to be displayed. It is possible to append several texts and/or values with the operator \c;+\n;:
-\c;message("Not found");\n;
-\c;message(angle);\n;
-\c;message(n + " object(s) found");\n;
-\c;message("Distance = " + dist + " meters");\n;
-
-\t;type: \c;\l;int\u cbot\int;\n; (default value \c;DisplayMessage\n;)
-Type of the message, that determines the background color.
-o \c;DisplayMessage\n; Standard message on yellow background.
-o \c;DisplayInfo \n; Information on green background.
-o \c;DisplayWarning\n; Warning on blue background.
-o \c;DisplayError \n; Error on red background.
-
-\t;Return value: \c;\l;void\u cbot\void;\n;
-None.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/motor.txt b/help/cbot/motor.txt
deleted file mode 100644
index 202b7af6..00000000
--- a/help/cbot/motor.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-\b;Instruction \c;motor\n;
-The instruction \c;motor( , );\n; sets the speed for the left-hand and the right-hand motor of the bot.
-
-\b;Basic use
-The speed given to the motors will remain constant during the execution of the following instructions. Thanks to this characteristic it is possible to perform a rotation during the instruction \c;\l;fire\u cbot\fire;();\n;. This will sweep a whole zone with only one burst. Here is an example that will sweep the zone in front of the bot:
-\c;
-\s; \l;turn\u cbot\turn;(45); // turns 45 degrees left
-\s; motor(0.5, -0.5); // slow rotation to the right
-\s; \l;fire\u cbot\fire;(2); // fire
-\s; motor(0,0); // stops the rotation
-\n;
-With the left-hand motor turning half-speed forward and the right-hand motor turning half-speed backward, the bot will turn slowly on itself during the 2-second-burst.
-
-\b;For specialists
-Syntax :
-\s;\c;motor ( left, right );\n;
-
-Gives speed instructions to the right and left motors of the robot. The motors will keep this speed until a new motor instruction is performed, or until a \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n; or \c;\l;goto\u cbot\goto;\n; instruction is performed.
-
-\t;left: \c;\l;float\u cbot\float;\n;
-Speed instruction for the left motor; the value must range between -1 and 1.
-
-\t;right: \c;\l;float\u cbot\float;\n;
-Speed instruction for the right motor; the value must range between -1 and 1.
-
-Examples :
-\c;motor(1, 1);\n; moves forward with highest possible speed.
-\c;motor(-0.5, -0.5);\n; moves backward with half speed.
-\c;motor(1, -1);\n; turns right as fast as possible.
-
-Note :
-\c;motor(2, 2);\n; will not move forward any faster than \c;motor(1, 1)\n;
-\c;motor(-2, -2);\n; will not move backward any faster than \c;motor(-1, -1)\n;
-
-\t;Return value: \c;\l;void\u cbot\void;\n;
-None.
-
-\t;See also
-\l;Instructions\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/move.txt b/help/cbot/move.txt
deleted file mode 100644
index 6b9129fb..00000000
--- a/help/cbot/move.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-\b;Instruction \c;move\n;
-The instruction \c;move();\n; instructs the bot to move forward or backward while keeping the same orientation. In brackets you must specify the length of the move in meters.
-
-\b;Basic use
-If you want the bot to move forward 30 meters, write \c;move(30);\n;. In order to move the bot backward after it dropped a chunk of \l;titanium ore\u object\titanore; on the \l;converter\u object\convert;, write \c;move(-2.5);\n;.
-
-\b;For specialists
-Syntax:
-\s;\c;move ( length );\n;
-
-Moves forward or backward of a given distance, always keeping the current orientation of the bot.
-
-\t;length: \c;\l;float\u cbot\float;\n;
-Length of the move, in meters. A negative value makes the bot move backward.
-
-\t;Return value: \c;\l;int\u cbot\int;\n;
-Normally an error stops the program. You can prevent the program from stopping on errors by using the \c;\l;errmode\u cbot\errmode;(0)\n; instruction. A value different from zero if an error occurred is then returned by \c;move()\n;.
-\c;== 0 \n;Move executed
-\c;!= 0 \n;error, the instruction was not performed correctly
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/nan.txt b/help/cbot/nan.txt
deleted file mode 100644
index a2db962b..00000000
--- a/help/cbot/nan.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-\b;Type \c;nan\n;
-This special value indicates that a \l;variable\u cbot\var; of type \c;\l;int\u cbot\int;\n; or \c;\l;float\u cbot\float;\n; contains no number, but "nothing".
-For example, if the instruction \c;\l;receive\u cbot\receive;\n; can not get the requested information, it returns \c;nan\n; :
-\c;
-\s; value = receive("Length");
-\s; if ( value == nan ) // not found ?
-\s; {
-\s;
-\s; }
-\n;
-\t;Dictionnary
-\c;nan\n; = Not A Number
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
-
diff --git a/help/cbot/new.txt b/help/cbot/new.txt
deleted file mode 100644
index 2bacfee1..00000000
--- a/help/cbot/new.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-\b;Instruction \c;new\n; (for specialists)
-The \c;new\n; operator creates a \l;class\u cbot\class; instance:
-\c;\s; MyClass item; // now item is a null reference
-\s; item = new MyClass(); // now item is a reference
-\s; // to a new class instance
-\n;
-If you want to create a new instance at declaration time you can ommit the new \c;new\n; operator by putting () after the declaration:
-
-Instead of:
-\c;\s; MyClass item = new MyClass();
-\n;you can write:
-\c;\s; MyClass item();
-\n;
-If your class has a constructor with parameters you can write:
-\c;\s; MyClass item = new MyClass(2, 3);
-\n;or:
-\c;\s; MyClass item(2, 3);
-\n;
-\t;See also
-\c;\l;class\u cbot\class;\n;, \c;\l;reference\u cbot\pointer;\n;
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/null.txt b/help/cbot/null.txt
deleted file mode 100644
index 1e8c76cb..00000000
--- a/help/cbot/null.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-\b;Type \c;null\n;
-This special value indicates that the variable containing it does not reference an instance.
-
-\t;See also
-\l;References\u cbot\pointer;
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
-
diff --git a/help/cbot/object.txt b/help/cbot/object.txt
deleted file mode 100644
index 47d0ff34..00000000
--- a/help/cbot/object.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-\b;Type \c;object\n;
-Use this type for variables that contain the characteristics of an object, be it a bot, a building, some raw material, an enemy, etc.
-
-\c;\l;int\u cbot\int; object.category \n;\l;Category\u cbot\category; of the object
-\c;\l;point\u cbot\point; object.position \n;Position of the object (x,y,z)
-\c;\l;float\u cbot\float; object.orientation \n;Orientation of the object (0..360)
-\c;\l;float\u cbot\float; object.pitch \n;Forward/backward angle of the object
-\c;\l;float\u cbot\float; object.roll \n;Right/left angle of the object
-\c;\l;float\u cbot\float; object.energyLevel \n;Energy level (0..1)
-\c;\l;float\u cbot\float; object.shieldLevel \n;Shield level (0..1)
-\c;\l;float\u cbot\float; object.temperature \n;Jet temperature (0..1)
-\c;\l;float\u cbot\float; object.altitude \n;Altitude above ground
-\c;\l;float\u cbot\float; object.lifeTime \n;Lifetime of the object
-\c;object object.energyCell \n;Power cell on the bot
-\c;object object.load \n;Object carried by the bot
-
-\s;\c;category\n;
-The \n;\l;category\u cbot\category; of an object allows you to know what it is, f. ex. what kind of bot, building, enemy, etc.
-
-\s;\c;position\n;
-Position of the object on the planet, in meters. The coordinates \c;x\n; and \c;y\n; correspond to the location on a map, the \c;z\n; coordinate corresponds to the altitude above (respectively below) sea level.
-
-\s;\c;orientation\n;
-Orientation of the object, in degrees. The orientation tells you what direction the object is facing. An orientation of \c;0\n; corresponds to an object facing eastwards, thus following the positive \c;x\n; axis. The orientation is measured counterclockwise.
-
-\s;\c;pitch\n;
-Forward/backward angle of the robot. A pitch of \c;0\n; means that the bot is standing on flat ground. A positive inclination means that it is facing upwards, a negative inclination means that it is facing downwards.
-
-\s;\c;roll\n;
-Left/right angle of the bot, in degrees. A positive value means that the bot is leaning to the left side, a negative value means that it is leaning to the right side.
-
-\s;\c;energyLevel\n;
-Energy level, between 0 and 1. A normal \l;power cell\u object\power; that is fully charged returns the value \c;1\n;. A \l;nuclear power cell\u object\atomic; never returns a value higher than 1, it just lasts longer. Attention: The energy level of a bot is always zero, because the energy is not contained in the bot, but in the power cell. To know the energy level of the power cell of a bot, you must write \c;energyCell.energyLevel\n;.
-
-\s;\c;shieldLevel\n;
-Shield level of a robot or building. A level \c;1\n; indicates that the shield is still perfect. Every time that the bot or building gets a bullet or collides with another object, the shield level decreases. When the level reaches \c;0\n;, the next bullet or collision will destroy the bot or building.
-Bots can re-energize their shield on a \l;repair center\u object\repair;. The shield of a building is repaired if it lays inside the protection sphere of a \l;shielder\u object\botshld;.
-
-\s;\c;temperature\n;
-Temperature of the jet of \l;winged bots\u object\botgj;. \c;0\n; corresponds to a cold jet. When used, the temperature increases progressively. When it reaches the value \c;1\n;, the jet is overheated and stops working, until it cooled down a little.
-
-\s;\c;altitude\n;
-The \c;z\n; coordinate of the position indicates the altitude above sea level, whereas the \c;altitude\n; indicates the height above ground. This value is meaningful only for \l;winged bots\u object\botgj; and for \l;wasps\u object\wasp;. For all other objects, this value is zero.
-
-\s;\c;lifeTime\n;
-The age of the object in seconds since it's creation.
-
-\s;\c;energyCell\n;
-This information is special, because it returns the information about another object, in this case the power pack. This means that energyCell contains all the characteristics of a normal object, for example \c;category\n; (PowerCell or NuclearCell), \c;position\n; (the position of the cell), etc.
-If you want to know the energy level of a robot, you must not check \c;energyLevel\n;, but \c;energyCell.energyLevel\n;.
-If the bot has bot no power cell, \c;energyCell\n; returns \c;null\n;.
-
-\s;\c;load\n;
-This information also returns the description of a whole object: the description of the object carried by a \l;grabber\u object\botgr;. If it carries nothing, \c;load\n; returns \c;null\n;.
-
-\b;Examples
-The type \c;object\n; returns the special value \c;\l;null\u cbot\null;\n; when the object does not exist. For example:
-\c;
-\s; object a;
-\s; a = radar(BotGrabberRoller);
-\s; if ( a == null ) // object does not exist ?
-\s; {
-\s; }
-\s; if ( a.position.z > 50 ) // is it on a mountain ?
-\s; {
-\s; }
-\n;
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
-
diff --git a/help/cbot/open.txt b/help/cbot/open.txt
deleted file mode 100644
index f7fb2ba9..00000000
--- a/help/cbot/open.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;Instruction \c;open\n;
-Open a text file in the files/ folder. This is a method of the \c;\l;file\u cbot\file;\n; class. This is the reason why we always write \c;handle.open()\n;¦:
-\c;
-\s; handle.open("test.txt", "w");
-\n;
-To open a file, proceed as follows¦:
-\c;
-\s; file handle();
-\s; handle.open("filename", "w");
-\s; handle.writeln("abc");
-\s; handle.close();
-\n;
-\c;"r"\n; mode: open for reading.
-\c;"w"\n; mode: open for writing.
-
-Files can only be created and opened in the files/ folder which is located in the folder where Colobot has been installed. You cannot not create or open files that are located elsewhere than in the files/ folder.
-
-\t;See also
-\c;\l;file\u cbot\file;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n;, \c;\l;writeln\u cbot\writeln;\n; and \c;\l;eof\u cbot\eof;\n;.
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/openfile.txt b/help/cbot/openfile.txt
deleted file mode 100644
index 13ea97a4..00000000
--- a/help/cbot/openfile.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;Instruction \c;openfile\n;
-\c;openfile();\n; opens an text file in the files/ folder. This is not a method of the \c;\l;file\u cbot\file;\n; class but openfile returne a \l;reference\u cbot\pointer; to a new instance of the file class. You must supply two parameters, the filename and the opening mode.
-\c;
-\s;file handle = openfile("filename", "r");
-\n;
-\c;"r"\n; mode: open for reading.
-\c;"w"\n; mode: open for writing.
-
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/point.txt b/help/cbot/point.txt
deleted file mode 100644
index bf4dfad7..00000000
--- a/help/cbot/point.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-\b;Type \c;point\n;
-Variables of this type contain the coordinates of a point in space. This type is made of three values that represent the \c;x\n;, \c;y\n; and \c;z\n; coordinates.
-\c;x\n; and \c;y\n; correspond to the place on the ground. The positive \c;x\n; axis faces towards east, the positive \c;y\n; axis faces towards north.
-The \c;z\n; value corresponds to the altitude above sea level.
-
-If you want to declare a variable of type point, you can write:
-\c;
-\s; point a (10, 20, 30);
-\n;
-You can also set the variable taking one value after another:
-\c;
-\s; point b;
-\s; b.x = 10;
-\s; b.y = 20;
-\s; b.z = 30;
-\n;
-With these examples, the following \l;condition\u cbot\cond; is true:
-\c;
-\s; if ( a == b )
-\s; {
-\s; }
-\n;
-The following declaration :
-\c;
-\s; point c (4, 7);
-\n;
-Is equivalent to :
-\c;
-\s; point c;
-\s; c.x = 4;
-\s; c.y = 7;
-\s; c.z = 0;
-\n;
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/pointer.txt b/help/cbot/pointer.txt
deleted file mode 100644
index 708dfeb7..00000000
--- a/help/cbot/pointer.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-\b;References (for specialists)
-CBOT uses references for \l;classes\u cbot\class; and \l;arrays\u cbot\array;. Any class variable actually contains a reference to the instance. The instance actually contains the class fields. Several references can reference the same instance. A \c;\l;null\u cbot\null;\n; reference references nothing. You can compare an instance to a suitcase and a reference to a carrier. Each time we need a new suitcase we create a new instance with a carrier. But a suitcase can be carried by more than one carrier. A carrier who carries no suitcase is a \c;\l;null\u cbot\null;\n; reference.
-
-Example:
-\c;\s;{
-\s; MyClass item1(); // create a new instance
-\s; // referenced by item1
-\s; MyClass item2; // create a null reference
-\s; item2 = item1; // copy the reference,
-\s; // item2 and item1 now reference
-\s; // the same instance
-\s; item1.a = 12; // modifies the instance
-\s; // referenced by item1 (and item2)
-\s; message(item2.a);// displays 12
-\s;}
-\n;
-If you pass a \l;class\u cbot\class; instance as parameter to a function, the function only receives a reference to the instance. That means if you modify the instance in the function, the instance that has been specified by the caller will be actuallay modified.
-
-\c;\s;void Test( MyClass item )
-\s;{
-\s; item.a = 12; // modify the original instance
-\s; item = new MyClass(); // new local instance
-\s; item.a = 33; // modifie the local instance
-\s;}
-\n;
-Calling the fucntion \c;Test()\n;¦:
-\c;\s;{
-\s; MyClass toto();
-\s; Test(toto);
-\s; message(toto.a); // displays 12
-\s;}
-\n;
-The instance containing the field \c;a = 33\n; is referenced only by the newly created instance \c;item\n; inside the fucntion \c;Test\n;. At the end of \c;Test\n; this newly created instance referenced by \c;item\n; is automatically deleted.
-
-A function can return an instance¦:
-\c;\s;MyClass Test2( )
-\s;{
-\s; MyClass item = new MyClass();
-\s; item.x = 33;
-\s; return item;
-\s;}
-\n;
-Call the function like this:
-\c;\s;{
-\s; MyClass toto;
-\s; toto = Test2(); // toto will contain a reference to
-\s; // the instance created by Test2()
-\s; message(toto.a); // displays 33
-\s;}
-\n;
-\t;See also
-\c;\l;class\u cbot\class;\n;, \c;\l;new\u cbot\new;\n;
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/private.txt b/help/cbot/private.txt
deleted file mode 100644
index 6f7d9825..00000000
--- a/help/cbot/private.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-\b;Instruction \c;private\n; (for specialists)
-\l;Class\u cbot\class; members can be \l;public\u cbot\public; (by default) or private. A member can be declared privat by putting \c;private\n; before the type declaration of the member. Private members are not accessible from outside the class definition.
-\c;
-\s;public class MyClass
-\s;{
-\s; int b; // public by défault
-\s; public int a; // als public
-\s; private point position; // privat
-\s;}
-\s;void Test()
-\s;{
-\s; MyClass item;
-\s; item.a = item.b = 12; // ok
-\s; message( item.position ); // this is an error
-\s;}
-\n;
-\t;See also
-\c;\l;class\u cbot\class;\n;, \c;\l;public\u cbot\public;\n;
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/public.txt b/help/cbot/public.txt
deleted file mode 100644
index 8cbc65de..00000000
--- a/help/cbot/public.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-\b;Instruction \c;public\n; (for specialists)
-This instruction has two distinct purposes¦:
-
-1) Make a function available to other bots.
-2) Make a class member accessible from outside the class definition.
-
-\b;Instruction \c;public\n; for functions
-If you put \c;public\n; before a \l;function\u cbot\function; definition, you can make the function available to programs in other bots in the same mission.
-
-For example in the first bot we would have¦:
-\c;
-\s;public void object::Segment(float dist, float angle)
-\s;{
-\s; move(dist);
-\s; turn(angle);
-\s;}
-\n;
-And in another bot we would have¦:
-\c;
-\s;extern void object::Square( )
-\s;{
-\s; for ( int i=0 ; i<4 ; i++ )
-\s; {
-\s; Segment(10, 90);
-\s; fire(1);
-\s; }
-\s;}
-\n;
-If you have declared a function \c;public\n;, you cannot define a function with the same name and arguments in another bot of the same mission.
-
-If a bot containing a \c;public\n; function is destroyed, the other bots that make use of this function will be stopped with an error.
-
-\b;Instruction \c;public\n; for classes
-\l;Class\u cbot\class; members can be public (by default) or \l;privat\u cbot\private;. A member can be declared private by putting \c;private\n; before the member type. Private members are not accessible from outside the class definition.
-\c;
-\s;public class MyClass
-\s;{
-\s; int b; // public by default
-\s; public int a; // also public
-\s; private point position; // privat
-\s;}
-\s;void Test()
-\s;{
-\s; MyClass item;
-\s; item.a = item.b = 12; // ok
-\s; message( item.position ); // this is an error
-\s;}
-\n;
-\t;See also
-\c;\l;class\u cbot\class;\n;, \c;\l;private\u cbot\private;\n;, \c;\l;functions\u cbot\function;\n;
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/radar.txt b/help/cbot/radar.txt
deleted file mode 100644
index 13841933..00000000
--- a/help/cbot/radar.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-\b;Instruction \c;radar\n;
-With the instruction \c;radar()\n;, you can look for objects like \l;enemies\u object\mother;, bots, buildings or raw materials.
-
-\b;Basic use
-Write in brackets the \l;name of the object\u cbot\category; that you look for. Put the result in a variable of the \l;type\u cbot\type; \c;object\n;. Here is an example that looks for the closest ant:
-\c;
-\s;// At the beginning of the program:
-\s;object item; // variable declaration
-\s;
-\s;// Look for the closest ant
-\s;item = radar(AlienAnt);
-\n;
-\b;For specialists
-Syntax:
-\s;\c;radar ( category, angle, focus, min, max, way );\n;
-
-Detects an object according to several parameters.
-
-\image radar1 8 8;
-Seen from above, the purple zone corresponds to the zone where objects will be detected.
-
-\t;category: \c;\l;int\u cbot\int;\n;
-\l;Category\u cbot\category; of the objects that should be detected. For example, when you are looking for an ant, write \c;radar (AlienAnt)\n;.
-
-\t;angle: \c;\l;float\u cbot\float;\n; (default value\c;0\n;)
-Direction that the radar is facing, in degrees.
-\c; 0\n; -> radar is facing straight ahead
-\c;-90\n; -> radar is facing a quarter turn right
-\c; 90\n; -> radar is facing a quarter turn left
-
-\t;focus: \c;\l;float\u cbot\float;\n; (default value\c;360\n;)
-Opening angle of the radar, in degrees.
-
-\t;min: \c;\l;float\u cbot\float;\n; (default value \c;0\n;)
-Minimum detection distance, in meters. Objects that are closer than the minimum distance will not be detected.
-
-\t;max: \c;\l;float\u cbot\float;\n; (Default value\c;1000\n;)
-Maximum detection distance, in meters. Objects that are farther away than the maximum distance will not be detected.
-
-\t;way: \c;\l;float\u cbot\float;\n; (default value\c;1\n;)
-Determines which way the objects are detected. With value \c;1\n;, returns the closest object found in the specified zone. With value \c;-1\n;, the farthest object in the zone will be returned.
-
-\t;Return value: \c;\l;object\u cbot\object;\n;
-Returns the first object found that corresponds to the specified category in the specified zone. If no object was found, returns the value \c;\l;null\u cbot\null;\n;.
-
-\t;Remark
-You do not have to give all the parameters. Here are two examples of instructions that are equivalent:
-\c;
-\s; radar(Titanium, 0, 360, 0, 1000);
-\s; radar(Titanium); // equivalent
-
-\s; radar(Titanium, 0, 90, 0, 1000);
-\s; radar(Titanium, 0, 90); // equivalent
-\n;
-When one or more parameters are not specified, the default values indicated above are used instead; only the first parameter is compulsory.
-Generally, only the first parameter is specified: f. ex. \c;radar (AlienAnt)\n; detects the closest ant, wherever it may be.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
-
diff --git a/help/cbot/readln.txt b/help/cbot/readln.txt
deleted file mode 100644
index 4e6df345..00000000
--- a/help/cbot/readln.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;Instruction \c;readln\n;
-Read one line from an open file in the files/ folder. This is a method of the \c;\l;file\u cbot\file;\n; class. This is the reason why we always write \c;handle.readln()\n;¦:
-\c;
-\s; s = handle.readln();
-\n;
-The file must have been opened for reading (\c;"r"\n;) with the \c;\l;open\u cbot\open;\n; instruction. \c;readln\n; returns the string containing the whole line but without the end of line characters 0x0D (CR) and 0x0A (LF).
-
-Syntax¦:
-\s;\c;string = handle.readln ( );\n;
-
-Example¦:
-\c;
-\s; string s;
-\s; s = handle.readln();
-\s; if ( s == "abc" )
-\s; ...
-\n;
-\t;See also
-\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;writeln\u cbot\writeln;\n; and \c;\l;eof\u cbot\eof;\n;.
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/receive.txt b/help/cbot/receive.txt
deleted file mode 100644
index 5b77beee..00000000
--- a/help/cbot/receive.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-\b;Instruction \c;receive\n;
-Syntax:
-\s;\c;receive ( name, power );\n;
-
-Retrieves an information from the closest \l;information exchange post\u object\exchange;.
-
-\t;name: \c;string\n;
-Name of the information required from the exchange post. This name is a string: it must be written in quotation marks "¦".
-
-\t;power: \c;float\n;
-Power of the receiver, which corresponds to maximal distance between the receiver and the exchange post. If the distance is longer, no information is received. Default value is 10 metres.
-
-\t;Return value: \c;\l;float\u cbot\float;\n;
-Value of the retrieved information. If no exchange post is close enough, or if the name of the requested information does not exist in the exchange post, the value \c;nan\n; is returned.
-
-\t;See also
-\c;\l;send\u cbot\send;\n;, \c;\l;testinfo\u cbot\testinfo;\n; and \c;\l;deleteinfo\u cbot\delinfo;\n;.
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/recycle.txt b/help/cbot/recycle.txt
deleted file mode 100644
index bb209877..00000000
--- a/help/cbot/recycle.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-\b;Instruction \c;recycle\n;
-Syntax:
-\s;\c;recycle ( );\n;
-
-Recycles the derelict bot in front of the \l;recycler\u object\botrecy; into a \l;titanium cube\u object\titan;.
-
-\t;Return value: \c;\l;int\u cbot\int;\n;
-Zero if OK, or a value different from zero if an error occurred.
-\c;== 0 \n;the derelict bot has been recycled
-\c;!= 0 \n;error, no derelict bot could be recycled
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
-
diff --git a/help/cbot/retobj.txt b/help/cbot/retobj.txt
deleted file mode 100644
index 69b47df7..00000000
--- a/help/cbot/retobj.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Instruction \c;retobject\n;
-Syntax:
-\s;\c;retobject ( number );\n;
-
-Returns the object corresponding to the given number.
-
-\t;number: \c;\l;int\u cbot\int;\n;
-Number of the object, between 0 and n. "n" represents the total number of objects in the scene.
-
-\t;Return value: \c;\l;object\u cbot\object;\n;
-Object corresponding to the number. The return value \c;\l;null\u cbot\null;\n; means that no object corresponds to this number, because the number was too high, and there are not so many objects in the scene.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
-
diff --git a/help/cbot/return.txt b/help/cbot/return.txt
deleted file mode 100644
index 6337e99f..00000000
--- a/help/cbot/return.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-\b;Instruction \c;return\n;
-Returns from a function. Syntax:
-\c;
-\s;void function ( )
-\s;{
-\s; return;
-\s;}
-\n;
-\b;For specialists
-If the \l;function\u cbot\function; has a return type, the \c;return\n; instruction must be followed by the value to be returned:
-\c;
-\s;float Pi ( )
-\s;{
-\s; return 3.1415;
-\s;}
-
-\s;float Mean (float a, float b)
-\s;{
-\s; return (a+b)/2;
-\s;}
-
-\s;string Sign (float a)
-\s;{
-\s; if ( a > 0 ) return "positive";
-\s; if ( a < 0 ) return "négative";
-\s; return "null";
-\s;}
-\n;
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
-
diff --git a/help/cbot/search.txt b/help/cbot/search.txt
deleted file mode 100644
index fa6c96bf..00000000
--- a/help/cbot/search.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-\b;Instruction \c;search\n;
-Syntax:
-\s;\c;search ( category, position );\n;
-
-Detects the object of the given category that is closest to the given position.
-
-\t;category: \c;\l;int\u cbot\int;\n;
-\l;Category\u cbot\category; of the requested object.
-
-\t;position: \c;\l;point\u cbot\point;\n;
-\c;search\n; returns the object of the given category that is closest to the position indicated here.
-
-\t;Return value: \c;\l;object\u cbot\object;\n;
-Characteristics of the object that has been found. The value \c;\l;null\u cbot\null;\n; means that no object of this category has been found.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
-
diff --git a/help/cbot/send.txt b/help/cbot/send.txt
deleted file mode 100644
index 3274fcfd..00000000
--- a/help/cbot/send.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-\b;Instruction \c;send\n;
-Syntax¦:
-\s;\c;send ( name, value, power );\n;
-
-Sends an information to the closest \l;information exchange post\u object\exchange;.
-
-\t;name: \c;string\n;
-Name of the information to be sent to the exchange post. This name is a string: it must be written in quotation marks "¦".
-If there is any information having this name, a new entry is created, as far as the total number of entries does not exceed 10. If there is already an information having this name, value is simply replaced by the new.
-
-\t;value: \c;float\n;
-Value of the information to be sent.
-
-\t;power: \c;float\n;
-Power of the transmitter, which corresponds to the maximal distance to where information can be the sent. Default value is 10 metres.
-
-\t;See also
-\c;\l;receive\u cbot\receive;\n;, \c;\l;testinfo\u cbot\testinfo;\n; and \c;\l;deleteinfo\u cbot\delinfo;\n;.
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/shield.txt b/help/cbot/shield.txt
deleted file mode 100644
index b67c3942..00000000
--- a/help/cbot/shield.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-\b;Instruction \c;shield\n;
-Syntax:
-\s;\c;shield ( oper );\n;
-
-Activates or deactivates the shield of the \l;ahielder\u object\botshld;. You can of course move the shielder when the shield is active. It protects all objects that are inside the shielded sphere from enemy fire. The radius of the sphere can range between 10 and 25 meters.
-
-\t;oper: \c;\l;float\u cbot\float;\n;
-\c;1\n; activates the shield.
-\c;0\n; deactivates the shield
-A normal \l;power cell\u object\power; fully charged can maintain the shield active during 20 seconds. When the cell is empty, the shield deactivates.
-
-\t;radius: \c;\l;float\u cbot\float;\n;
-Radius of the shield, ranging between 10 and 25 meters.
-
-\t;Return value: \c;\l;void\u cbot\void;\n;
-None.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/sizeof.txt b/help/cbot/sizeof.txt
deleted file mode 100644
index 11958314..00000000
--- a/help/cbot/sizeof.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-\b;Instruction \c;sizeof\n;
-The sizeof function lets you know the number of elements contained in an \l;array\u cbot\array;.
-That is the index of the last element plus one ("empty" elements are counted).
-\c;
-\s;{
-\s; int a[12];
-\s; a[5] = 345;
-\s; message( sizeof(a) ); // will display 6
-\s;}
-\n;
-In this example we have 6 elements in the array after \c;a[5]=345\n;. The non initialized elements \c;[0]\n;, \c;[1]\n;, \c;[2]\n;, \c;[3]\n; and \c;[4]\n; will be counted.
-
-With multidimensionnal arrays you can get the size of a sub array:
-\c;
-\s;float xy[][]; // 2 dimensionnal array
-\s;xy[5][10] = 67;
-\s;message( sizeof(xy) ); // will display 6
-\s;message( sizeof(xy[5]) ); // will display 11
-\s;
-\n;
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/sniff.txt b/help/cbot/sniff.txt
deleted file mode 100644
index 9de55246..00000000
--- a/help/cbot/sniff.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-\b;Instruction \c;sniff\n;
-Syntax:
-\s;\c;sniff ( );\n;
-
-Sounds the underground in front of the \l;sniffer\u object\botsr;. According to what raw materials were detected, the following objects will be created:
-
-\c;TitaniumSpot\n; -> \l;Red cross\u object\stonspot;
-\c;UraniumSpot \n; -> \l;Yellow circle\u object\uranspot;
-\c;PowerSpot \n; -> \l;Green cross\u object\enerspot;
-
-\t;Return value: \c;\l;int\u cbot\int;\n;
-Zero if everything is OK, or a value different from zero if an error occurred.
-\c;== 0 \n;sounding performed
-\c;!= 0 \n;sounding impossible
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/space.txt b/help/cbot/space.txt
deleted file mode 100644
index 2154f378..00000000
--- a/help/cbot/space.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-\b;Instruction \c;space\n;
-Syntax :
-\s;\c;space ( center, rmin, rmax, dist );\n;
-
-Determines the position of the nearest free space around a given position.
-
-\t;center: \c;\l;point\u cbot\point;\n; (default: bot position)
-Desired position of the free space.
-
-\t;rmin: \c;\l;float\u cbot\float;\n; (default value: \c;8\n;)
-Minimum distance from the desired position.
-
-\t;rmax: \c;\l;float\u cbot\float;\n; (default value: \c;50\n;)
-Maximum distance from the desired position.
-
-\t;dist: \c;\l;float\u cbot\float;\n; (default value: \c;4\n;)
-Required distance between two free spaces.
-
-\t;Return: \c;\l;point\u cbot\point;\n;
-Position of the free space.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/static.txt b/help/cbot/static.txt
deleted file mode 100644
index f815c39c..00000000
--- a/help/cbot/static.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-\b;Instruction \c;static\n; (for specialists)
-\l;Class\u cbot\class; members declared with \c;static\n; are shared between all instances of the class.
-\c;
-\s;public class MyClass
-\s;{
-\s; static int nb = 1;
-\s; static string [ ] list = null;
-\s;}
-\s;void Test ()
-\s;{
-\s; MyClasse item1();
-\s; MyClasse item2();
-\s; item1.nb = 3;
-\s; item1.list[item1.nb] = "Hello";
-\s; message( item2.list[item2.nb] ); // display "Hello"
-\s;}
-\n;
-\c;Static\n; members can be declared \c;\l;private\u cbot\private;\n; so they will be only acessible from within class members (including constructors and destructors).
-
-\t;See also
-\c;\l;class\u cbot\class;\n;, \c;\l;synchronized\u cbot\synchro;\n;
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/strfind.txt b/help/cbot/strfind.txt
deleted file mode 100644
index a036efdd..00000000
--- a/help/cbot/strfind.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;Instruction \c;strfind\n;
-Find a substring in a string and returns the position of the first substring found or \l;nan\u cbot\nan; if the substring has not been found.
-
-Syntax¦:
-\s;\c;strfind ( string, sub );\n;
-
-\t;string: \c;\l;string\u cbot\string;\n;
-String we are searching in.
-
-\t;sub: \c;\l;string\u cbot\string;\n;
-Substring we are searching for.
-
-Examples¦:
-\s;\c; int pos = strfind("abcdef", "ab"); // pos will be 0
-\s; int pos = strfind("abcdef", "de"); // pos will be 3
-\s; int pos = strfind("abcdef", "xy"); // pos will be \l;nan\u cbot\nan;
-\n;
-\t;See also
-\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/string.txt b/help/cbot/string.txt
deleted file mode 100644
index 96274cb9..00000000
--- a/help/cbot/string.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-\b;Type \c;string\n;
-Use a variable of this type for storing characters or strings.
-
-For example:
-\s;\c; "Hello!"
-\s; "This is a string"
-\s; "x"
-\s; "" // empty string
-\n;
-You can append two strings with the \c;+\n; operator :
-\s;\c; "Good morning," + " " + "Sir"
-\n;
-Returns the string:
-\s;\c; "Good morning, Sir"
-\n;
-If you want to put a quotation mark (") or a backslash (\) in a string you must write¦:
-\s;\c;"This is \"very\" important"
-\n;which will result in the string \c; This is "very" important.
-\s;\c;"%user%\\ant.txt"
-\n;will result in \c;%user%\ant.txt
-\n;
-Following instructions can be used with strings¦:
-\c;\l;strlen\u cbot\strlen; \n;Get string length
-\c;\l;strleft\u cbot\strleft; \n;Extract left part
-\c;\l;strright\u cbot\strright; \n;Extract right part
-\c;\l;strmid\u cbot\strmid; \n;Extract center part
-\c;\l;strfind\u cbot\strfind; \n;Find a substring.
-\c;\l;strval\u cbot\strval; \n;Convert string to number
-\c;\l;strupper\u cbot\strupper; \n;Convert to upper case
-\c;\l;strlower\u cbot\strlower; \n;Convert to lower case
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/strleft.txt b/help/cbot/strleft.txt
deleted file mode 100644
index a4e2f51d..00000000
--- a/help/cbot/strleft.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-\b;Instruction \c;strleft\n;
-Extracts the first (that is, leftmost) characters from a string.
-
-Syntax¦:
-\s;\c;strleft ( string, len );\n;
-
-\t;len: \c;\l;int\u cbot\int;\n;
-Number of characters to be extracted.
-
-Examples¦:
-\s;\c; string s = strleft("abcdef", 2); // s is "ab"
-\s; string s = strleft("abc", 10); // s is "abc"
-\n;
-\t;See also
-\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/strlen.txt b/help/cbot/strlen.txt
deleted file mode 100644
index ad53342e..00000000
--- a/help/cbot/strlen.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-\b;Instruction \c;strlen\n;
-Get the length of a string.
-
-Syntax¦:
-\s;\c;strlen ( string );\n;
-
-Examples¦:
-\s;\c; int len = strlen("abc"); // len is 3
-\s; int len = strlen(""); // len is 0
-\s; if ( strlen(s) == 0 ) // is string empty ?
-\n;
-\t;See also
-\c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/strlower.txt b/help/cbot/strlower.txt
deleted file mode 100644
index 893b169e..00000000
--- a/help/cbot/strlower.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-\b;Instruction \c;strlower\n;
-Convert all characters in a string to lowercase.
-
-Syntax¦:
-\s;\c;strlower ( string );\n;
-
-Examples¦:
-\s;\c; string s = strlower("Abc"); // s is "abc"
-\n;
-\t;See also
-\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/strmid.txt b/help/cbot/strmid.txt
deleted file mode 100644
index 1ccc63f1..00000000
--- a/help/cbot/strmid.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;Instruction \c;strmid\n;
-Extracts a substring of a given length starting at a given position from a string.
-
-Syntax¦:
-\s;\c;strmid ( string, pos, len );\n;
-
-\t;pos: \c;\l;int\u cbot\int;\n;
-The index of the first character that is to be included in the extracted substring.
-
-\t;len: \c;\l;int\u cbot\int;\n;
-Number of characters to be extracted.
-
-Examples¦:
-\s;\c; string s = strmid("abcdef", 1, 2); // s is "bc"
-\s; string s = strmid("abcdef", 4, 5); // s is "ef"
-\s; string s = strmid("abcdef", 9, 2); // s is ""
-\n;
-\t;See also
-\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/strright.txt b/help/cbot/strright.txt
deleted file mode 100644
index 6d5bfc10..00000000
--- a/help/cbot/strright.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-\b;Instruction \c;strright\n;
-Extracts the last (that is, rightmost) characters from a string.
-
-Syntax¦:
-\s;\c;strright ( string, len );\n;
-
-\t;len: \c;\l;int\u cbot\int;\n;
-Number of characters to be extracted.
-
-Examples¦:
-\s;\c; string s = strright("abcdef", 2); // s is "ef"
-\s; string s = strright("abc", 10); // s is "abc"
-\n;
-\t;See also
-\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/strupper.txt b/help/cbot/strupper.txt
deleted file mode 100644
index a1c994da..00000000
--- a/help/cbot/strupper.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-\b;Instruction \c;strupper\n;
-Convert all characters in a string to uppercase.
-
-Syntax¦:
-\s;\c;strupper ( string );\n;
-
-Examples¦:
-\s;\c; string s = strupper("Abc"); // s is "ABC"
-\n;
-\t;See also
-\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strlower\u cbot\strlower;\n;
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/strval.txt b/help/cbot/strval.txt
deleted file mode 100644
index d523bbc6..00000000
--- a/help/cbot/strval.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-\b;Instruction \c;strval\n;
-Convert a string to a number. Don't confuse the string \c;"45"\n; that contains actually the two characters \c;4\n; and \c;5\n; and the number \c;45\n;.
-
-Examples¦:
-\s;\c; string s = "45"+"12"; // s contains "4512"
-\s; float n = 45 + 12; // n contains 67
-\n;
-Syntax¦:
-\s;\c;strval ( string );\n;
-\n;
-Examples¦:
-\s;\c; float n = strval("1.23"); // n is 1.23
-\s; float n = strval("12abc45"); // n is 12
-\s; float n = strval("abc"); // n is 0
-\s; float n = strval("100")+2; // n is 102
-\n;
-\t;See also
-\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/synchro.txt b/help/cbot/synchro.txt
deleted file mode 100644
index 8fa7e554..00000000
--- a/help/cbot/synchro.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-\b;Instruction \c;synchronized\n; (for specialists)
-A \l;class\u cbot\class; method can be declared \c;synchronized\n;. This is to make sure that the method is never being executed by more than one bot at the same time.
-
-The following example illustrates the problem:
-\c;
-\s;class blocking
-\s;{
-\s; static int nb = 33;
-\s; synchronized int inc( )
-\s; {
-\s; int val = nb;
-\s; wait ( 2 ); // wait 2 sec.
-\s; nb = nb + 1;
-\s; return val;
-\s; }
-\s;}
-\n;
-What happens if two bots execute the \c;inc\n; method at the same time¦?
-Both of them will execute \c;val=nb\n; and wait 2 seconds so both of them will have \c;val=33\n;. With \c;synchronized\n; the first bot starts execution with \c;val=33\n; and then waits 2 seconds and returns. Only once the first bot has returned from the \c;inc\n; method, the second bot will be allowed to enter the \c;inc\n; method and therefore the second bot will always have \c;val=34\n;.
-
-You can have more than one synchronized method in your \l;class\u cbot\class; in order to prevent simultaneous execution across more than one method. In other words: as long as a bot's program is inside a synchronized method, no other bot can enter any synchronized method of the same class.
-
-\t;See also
-\c;\l;class\u cbot\class;\n;, \c;\l;static\u cbot\static;\n;
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/term.txt b/help/cbot/term.txt
deleted file mode 100644
index 8e5cf19b..00000000
--- a/help/cbot/term.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-\b;Semicolon
-Always use a semicolon \c;;\n; after a simple expression. For example:
-\c;
-\s; int counter = 0;
-\n;
-However, after a \l;bloc\u cbot\bloc;, never put a semicolon:
-\c;
-\s; {
-\s; float dist;
-\s; dist = distance(p1, p2);
-\s; } \n;// no semicolon here!\c;
-\n;
-Do not use a semicolon either immediately after the instructions \c;\l;while\u cbot\while;\n;, \c;\l;if\u cbot\if;\n; or \c;\l;for\u cbot\for;\n;:
-\c;
-\s; if ( a < b ) \n;// no semicolon here!\c;
-\s; {
-\s; b = 100-a;
-\s; }
-\n;
-An instruction is always ended by a semicolon, and not by the end of the line. So you can very well put several instructions on the same line:
-\c;
-\s; int d=20;
-\s; move(d);
-\s; turn(90);
-\n;
-Is equivalent to:
-\c;
-\s; int d=20; move(d); turn(90);
-\n;
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/testinfo.txt b/help/cbot/testinfo.txt
deleted file mode 100644
index 5944fe90..00000000
--- a/help/cbot/testinfo.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-\b;Instruction \c;testinfo\n;
-Syntax¦:
-\s;\c;testinfo ( name, power );\n;
-
-Tests if an information exists in the closest \l;information exchange post\u object\exchange;.
-
-\t;name: \c;string\n;
-Name of the information to be tested in the exchange post. This name is a string: it must be written in quotation marks "¦".
-
-\t;power: \c;float\n;
-Power of the transmitter, which corresponds to the maximal distance between the transmitter and the exchange post. If the distance is longer, the function returns \c;false\n;. Default value is 10 metres.
-
-\t;Return: \c;\l;bool\u cbot\bool;\n;
-Return \c;true\n; if the information exists. Return and \c;false\n; if the information does not exist or if the receiver is too far away from the exchange post.
-
-\t;See also
-\c;\l;receive\u cbot\receive;\n;, \c;\l;send\u cbot\send;\n; and \c;\l;deleteinfo\u cbot\delinfo;\n;.
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/this.txt b/help/cbot/this.txt
deleted file mode 100644
index 9fcd720b..00000000
--- a/help/cbot/this.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-\b;Instruction \c;this\n;
-Occasionally, a \l;class\u cbot\class; method needs to know the reference to the instance it is acting upon. For example the instance might want to pass it's own reference to another function. An implicit reference name \c;this\n; is available to methods and \c;this\n; is a reference to the current instance.
-\c;
-\s;public class MyClass
-\s;{
-\s; int m_int;
-\s; string m_str;
-\s; void MyFunction()
-\s; {
-\s; OtherFunction(this);
-\s; m_int = 2;
-\s; }
-\s;}
-\s;
-\s;void OtherFunction(MyClass obj)
-\s;{
-\s; message(obj.m_str);
-\s;}
-\s;
-\s;extern void object::Test()
-\s;{
-\s; MyClass item();
-\s; item.m_str = "Hello";
-\s; item.MyFunction(); // display "Hello"
-\s;}
-\n;
-You can also put \c;this\n; before a field name in a method but this is not necessary. In the example above in the method \c;MyFunction()\n; following two lines have strictly the same meaning:
-\c;
-\s; m_int = 2;
-\s; this.m_int = 2; // identical
-\n;
-In a method of the \c;\l;object\u cbot\object;\n; class, you can also use \c;this.\n; before a fieldname.
-\c;
-\s;extern void object::Display()
-\s;{
-\s; message(orientation);
-\s; message(this.orientation); // same thing but
-\s; // more explicit
-\s;}
-\n;
-However if a field name is hidden by a parameter declaration or a variable declaration you must use \c;this\n;. In the following example the name \c;value\n; of the parameter is the same as the name of the field \c;value\n; of the \l;class\u cbot\class; \c;MyClass\n;, we must therefore write \c;this.value\n; in order to distinguish the field from the parameter.
-\c;
-\s;public class MyClass
-\s;{
-\s; int value;
-\s; void Put( int value )
-\s; {
-\s; this.value = value;
-\s; }
-\s;}
-\n;
-\t;See also
-\c;\l;class\u cbot\class;\n;
-\l;Programming\u cbot;, \l;types\u cbot\type; et \l;catégories\u cbot\category;.
diff --git a/help/cbot/thump.txt b/help/cbot/thump.txt
deleted file mode 100644
index 49962713..00000000
--- a/help/cbot/thump.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-\b;Instruction \c;thump\n;
-Syntax:
-\s;\c;thump ( );\n;
-
-Activates the weapon system of the \l;thumper\u object\bottump;, that turns ants and spiders belly up and makes them completely harmless for a while.
-
-\t;Return value: \c;\l;int\u cbot\int;\n;
-Zero if everything is OK, a value different from zero if an error occurred.
-\c;== 0 \n;Thumping performed
-\c;!= 0 \n;Operation impossible
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/topo.txt b/help/cbot/topo.txt
deleted file mode 100644
index c24ababd..00000000
--- a/help/cbot/topo.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-\b;Instruction \c;topo\n;
-Syntax:
-\s;\c;topo ( position );\n;
-
-Returns the altitude of the ground at a give position. The altitude zero corresponds to sea level. A negative value indicates that at this position ground is covered with water.
-
-\t;position: \c;\l;point\u cbot\point;\n;
-Coordinates of the position whose altitude you want to know.
-
-\t;Return value: \c;\l;float\u cbot\float;\n;
-Altitude of the ground at the given position.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/true.txt b/help/cbot/true.txt
deleted file mode 100644
index 3de4f24e..00000000
--- a/help/cbot/true.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-\b;Type \c;true\n;
-This value means that a condition is true; it is one of the two values that a \l;boolean\u cbot\bool; \l;variable\u cbot\var; can take.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/turn.txt b/help/cbot/turn.txt
deleted file mode 100644
index 0bd7e960..00000000
--- a/help/cbot/turn.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-\b;Instruction \c;turn\n;
-Use the instruction \c;turn();\n; to instruct the bot to perform a rotation on itself of a certain number of degrees.
-
-\b;Basic use
-90 degreed means a quarter turn, 180 degrees means a half turn. A positive angle will perform a counterclockwise rotation, a negative angle means a clockwise rotation. Here are some examples with \c;turn();\n;:
-
-\c;turn(90);\n; quarter turn to the left
-\c;turn(-90);\n; quarter turn to the right (negative angle)
-\c;turn(180);\n; half turn
-
-In order to turn the bot towards an object found with the instruction \c;\l;radar\u cbot\radar;();\n;, you must calculate the rotation angle with the instruction \c;\l;direction\u cbot\direct;()\n;:
-\c;
-\s; item = \l;radar\u cbot\radar;(AlienSpider);
-\s; turn(\l;direction\u cbot\direct;(item.position));
-\n;
-After these lines, just fire the cannon, and there is one hostile element less.
-
-\b;For specialists
-Syntax:
-\s;\c;turn ( angle );\n;
-
-Turns the bot with a given angle, right or left, without moving either forward or backward.
-
-\t;angle: \c;\l;float\u cbot\float;\n;
-Angle of the required rotation, in degrees. A positive value turns left, a negative value turns right. \c;turn(180)\n; turns round completely.
-
-\t;Return value: \c;\l;int\u cbot\int;\n;
-Zero if everything is OK, or a value different from zero if an error occurred.
-\c;== 0 \n;rotation performed
-\c;!= 0 \n;rotation impossible
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/type.txt b/help/cbot/type.txt
deleted file mode 100644
index 509aa33a..00000000
--- a/help/cbot/type.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-\b;Variable types
-When you define a \l;variable\u cbot\var;, you must give two elements:
-
-1) a name
-2) a type
-
-Once you defined a variable, you can use it to put information in it. However, the information that a variable can contain must always be of the correct type: a variable of type \l;float\u cbot\float; can not contain a string, etc.
-
-In a program, the name of a type is always written on \type;green background\norm;. If the name of a type is not colored, this means that the name is misspelled. Type names are always written with lower case characters. Here is a list of the different types:
-
-\s;\c;\l;int\u cbot\int;\n;
-For a whole number (12, -500, etc.).
-
-\s;\c;\l;float\u cbot\float;\n;
-For a real number (12, 3.14, 0.2, -99.98, etc.).
-
-\s;\c;\l;bool\u cbot\bool;\n;
-For a boolean variable, that can only take the values \c;true\n; or \c;false\n;.
-
-\s;\c;\l;string\u cbot\string;\n;
-For texts ("Hello!", "No object found", etc.)
-
-\s;\c;\l;point\u cbot\point;\n;
-For the coordinates of a point in space; a variable of this type consists of three parts named x, y and z.
-
-\s;\c;\l;object\u cbot\object;\n;
-A variable of this type contains the information about an object (bot, building, enemy, etc.).
-
-\s;\c;\l;void\u cbot\void;\n;
-This type is an "empty type", that you use when you do not want to specify a type.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/var.txt b/help/cbot/var.txt
deleted file mode 100644
index 5b6a47a8..00000000
--- a/help/cbot/var.txt
+++ /dev/null
@@ -1,67 +0,0 @@
-\b;Variables
-A variable is like a box, where you can put some information. The content of the variable can change during the execution of the program.
-
-For example, you can use a variable to count the number of titanium ore units that the grabber has collected and carried to the converter. First, you must find a name for it: the name should not be too long, but explain by itself what the variable is used for. Let's call it \c;countTit\n;. This variable must contain only whole numbers, so choose the type \c;int\n;. At the beginning of the program, you must declare the variable. Then you put the value \c;0\n; into the variable, and every time you grab a titanium ore, you increase the variable by \c;1\n;. At every moment, the variable contains the number of titanium ore units that the grabber collected.
-
-For the declaration of the variable, write the following line:
-\c;\s; int countTit;\n;
-
-To put \c;0\n; into the variable, write:
-\c;\s; countTit = 0;\n;
-
-At every titanium ore grabbed, write:
-\c;\s; countTit = countTit + 1\n;
-
-You have much freedom in the choice of the name for a variable, you can call them by any name, f. ex.: \c;dist\n;, \c;direct\n;, \c;p2\n;, \c;a\n;, \c;x\n;, \c;nothing_2_shoot_at\n;, etc.
-A variable name must always begin with a letter. It can be followed by any combination of letters, digits or the underscore character \c;_\n;. You can of course not use the keywords of the CBOT language like \c;\l;for\u cbot\for;\n;, \c;\l;while\u cbot\while;\n;, \c;\l;break\u cbot\break;\n;, \c;\l;continue\u cbot\continue;\n;, \c;do\n;, etc.
-You should be careful about the choice of the names that you give to variables; writing a program can become very difficult if you forget the names of variables or if you do not remember what they are used for. Elaborate your own system to find variable names, and do not use names like \c;Bmo45\n;, \c;a\n; or \c;tgBinX\n;.
-
-In the example above, the keyword \c;int\n; indicates that this variable can contain only whole numbers, which is adequate to counting objects. If you want to measure a distance, better use a variable that can contain also real numbers, with a fractional part (like 3.45 or 0.034): in this case, use the type \c;float\n;.
-
-In fact, a variable is made up of three parts:
-1) the name
-2) the type of the information stored inside
-3) the content, i.e. the information itself
-
-\t;the name
-You need the name to be able to distinguish the different variables from each other.
-
-\t;the type
-The \l;type\u cbot\type; determines what kind of information the variable can contain. According to the type, a variable can contain a whole number, a real number, a string, the coordinates of a point, information about an object, etc.
-Here is a list of the most common variable types:
- o \c;\l;int\u cbot\int;\n; for a whole number (12, -500, etc.)
- o \c;\l;float\u cbot\float;\n; for a real number (3.14, 0.2, -99.98, etc.)
- o \c;\l;string\u cbot\string;\n; for a character string ("Hello!", "No object found", etc.)
- o \c;\l;point\u cbot\point;\n; for a x,y,z-coordinate in space
- o \c;\l;object\u cbot\object;\n; for information about an object (bot, building, etc.)
-
-\t;The content
-The content of a variable is an information of the kind specified in the type. It can change during the execution of the program.
-
-Once you declared a variable, it still does not contain any value. Before you can use it, you must put a value inside:
-\c;\s; int i, j;
-\s; j = 25; // j takes the value 25
-\s; j = i; // can not write this, because i has got no content yet.
-\n;
-You can also declare a variable and put a value inside in the same line, writing:
-\c;\s; int countTit = 0;
-\n;
-When you assign a value to a variable with the equals sign \c;=\n;, the value on the right side is copied into the value on the left side. Consider the following example:
-\c;\s; int i, j;
-\s; i = 5+2; // i takes the value 7
-\s; j = i+6; // j takes the value of i plus 6, this is 13
-\s; i = j; // i takes the value of j, this is 13
-\n;
-At the end of this example, both variables \c;i\n; and \c;j\n; contain the value \c;13\n;.
-
-The following assignment is not correct, because on the left side of the equals sign \c;=\n;, there can be only a variable name:
-\c;\s; i+2 = j; // impossible
-\n;
-If you want to exchange the values of two variables, you must use a third variable. Here is an example to exchange the content of two variables \c;a\n; and \c;b\n; :
-\c;\s; int temp;
-\s; temp = a; // temp takes the value of a
-\s; a = b; // the content of b is copied into a
-\s; b = temp; // the content of temp is copied into b
-\n;
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/void.txt b/help/cbot/void.txt
deleted file mode 100644
index 9b6c5ff8..00000000
--- a/help/cbot/void.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;Type \c;void\n;
-Use this type when you want to declare a function that returns nothing.
-
-Example:
-\c;\s;void MyFunction(int a)
-\s;{
-\s; ...
-\s;}
-\n;
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/wait.txt b/help/cbot/wait.txt
deleted file mode 100644
index c518bfd7..00000000
--- a/help/cbot/wait.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-\b;Instruction \c;wait\n;
-The instruction \c;wait();\n; instructs the bot to wait for some seconds, according to the value written in brackets.
-
-\b;Basic use
-In order to wait until the \l;power cell\u object\power; is recharged on a power station, wait 5 seconds with \c;wait(5);\n;.
-
-In order to wait until the \l;converter\u object\convert; finished transforming some \l;titanium ore\u object\titanore; in a \l;titanium cube\u object\titan;, wait 15 seconds with \c;wait(15);\n;.
-
-\b;For specialists
-Syntax:
-\s;\c;wait ( time );\n;
-
-Waits for a moment.
-
-\t;time: \c;\l;float\u cbot\float;\n;
-Specifies the time that the bot must wait.
-
-\t;Return value: \c;\l;void\u cbot\void;\n;
-None.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/while.txt b/help/cbot/while.txt
deleted file mode 100644
index cd0cd59c..00000000
--- a/help/cbot/while.txt
+++ /dev/null
@@ -1,47 +0,0 @@
-\b;Instruction \c;while\n;
-The instruction \c;while () {}\n; is used to repeat a set of instructions several times.
-
-\b;Basic use
-The most frequent use of \c;while\n; consists in repeating a set of instructions again and again. In order to achieve this, write \c;while (true) {}\n; and put the instructions to be repeated in braces \c;{}\n;. As an example, here is a program that repeats again and again the following actions:
-o look for a spider,
-o turn towards it,
-o shoot.
-\c;
-\s; while (true)
-\s; {
-\s; item = \l;radar\u cbot\radar;(AlienSpider);
-\s; \l;turn\u cbot\turn;(direction(item.position));
-\s; \l;fire\u cbot\fire;(1);
-\s; }
-\n;
-Just execute this program once, and it will kill all spiders around it.
-
-\b;For specialists
-Syntax :
-\s;\c;while ( condition )
-\s;{
-\s; \n;Instructions ...\c;
-\s;}
-\n;
-This instruction allows you to perform the instructions inside the \l;block\u cbot\bloc; several times.
-
-Be careful not to confuse the instruction \c;while( ) { }\n; with the instruction \c;\l;do\u cbot\do; { } while( );\n;; the latter tests the condition only after the instructions in the block have been performed a first time.
-
-\t;\c;condition\n;
-The instructions in the block are performed over and over again, as long as the \l;condition\u cbot\cond; is true.
-
-Here is an example :
-\s;\c;int i = 0;
-\s;while ( i < 10 )
-\s;{
-\s; \n;Instructions ...\c;
-\s; i = i+1;
-\s;}
-\n;
-\t;Attention
-Do not put a \l;semicolon\u cbot\term; at the end of the line \c;while ( )\n;.
-
-The instructions \c;\l;break\u cbot\break;\n; and \c;\l;continue\u cbot\continue;\n; can be useful inside a block following the instruction \c;while { }\n;.
-
-\t;See also
-\l;Instructions\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/writeln.txt b/help/cbot/writeln.txt
deleted file mode 100644
index 290475af..00000000
--- a/help/cbot/writeln.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-\b;Instruction \c;writeln\n;
-Write one line of text to an open file in the files/ folder. This is a method of the \c;\l;file\u cbot\file;\n; class. This is the reason why we always write \c;handle.writeln()\n;¦:
-\c;
-\s; handle.writeln("abc");
-\n;
-The file must have been opened for writing (\c;"w"\n;) with the \c;\l;open\u cbot\open;\n; instruction. The line will automatically be terminated by the end of line characters 0x0D (CR) and 0x0A (LF).
-
-Syntax¦:
-\s;\c;handle.writeln ( string );\n;
-
-Examples¦:
-\c;
-\s; writeln("Line of text");
-
-\s; string s1 = "abc";
-\s; string s2 = "def";
-\s; writeln(s1 + " " + s2);
-\n;
-\t;See also
-\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n; and \c;\l;eof\u cbot\eof;\n;.
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/command.txt b/help/command.txt
deleted file mode 100644
index bc5354ec..00000000
--- a/help/command.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-\b;Controls
-You are advised to play with one hand on the arrow keys and the other hand on the mouse.
-
-\t;Bots
-\key;\key left;\norm; = turn left
-\key;\key right;\norm; = turn right
-\key;\key up;\norm; = move forward
-\key;\key down;\norm; = move back
-These controls are unavailable when working with the \l;practice bots\u object\bottr;.
-
-\key;\key gup;\norm; = take off and climb \button 28;
-\key;\key gdown;\norm; = descend and land \button 29;
-These controls are of course restricted to the \l;astronaut\u object\human; as well as the various \l;winged bots\u object\botgj; and in selected missions only.
-
-mouse forward = higher aim
-mouse backward = lower aim
-mouse right = aim right
-mouse left = aim left
-These controls are only available to the \l;shooters\u object\botfr;, the \l;orga shooters\u object\botor; and the \l;phazer shooter\u object\botphaz;.
-
-\key;\key action;\norm; = main action for a given selection (human or bot)
-This control will for example operate the arm of a \l;grabber\u object\botgr; or fire a \l;shooter\u object\botfr; \button 42;.
-
-\t;Selections
-\key;\key next;\norm; = selects next object
-\key;\key human;\norm; = selects astronaut
-\key;\key desel;\norm; = previous selection \button 10;
-
-\t;Camera
-\key;\key camera;\norm; = shifts between onboard and following cameras \button 13;
-\key;\key near;\norm; = zoom in
-\key;\key away;\norm; = zoom out
-\key;\key visit;\norm; = pauses the game and shows where the latest message originated. Press again to show origin of previous message.
-
-\t;Help
-\key;\key help;\norm; = mission instructions
-\key;\key prog;\norm; = programming help
-
-\t;Game
-\key;\key speed10;\norm; = normal speed x1
-\key;\key speed15;\norm; = medium speed x1.5
-\key;\key speed20;\norm; = faster speed x2
-\key;\key quit;\norm; = exits mission \button 11;
-
-All these commands can be redefined in the options/controls menu.
diff --git a/help/dexch1.txt b/help/dexch1.txt
deleted file mode 100644
index 2894b82a..00000000
--- a/help/dexch1.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-\b;Exercice
-Several \l;information exchange posts\u object\exchange; are standing along the way. When the bot is close enough to a post, it can read the instructions it contains. The \l;information exchange posts\u object\exchange; along the way contain the direction of the next post and the distance. And you do not know how many exchange posts you must get in touch with before arriving at your goal.
-
-\b;General principle
- Always repeat:
- o Retrieve the direction from the \l;exchange post\u object\exchange;.
- o Retrieve the distance from the \l;exchange post\u object\exchange;.
- o If no information could be retrieved, stop the program.
- o Execute the rotation.
- o Move forward to the next post.
-
-\b;Useful instructions
-\c;\l;while\u cbot\while;\n; to repeat the instructions
-\c;\l;receive\u cbot\receive;\n; to get the information from a post
-\c;\l;move\u cbot\move;\n; to move the bot
-\c;\l;turn\u cbot\turn;\n; to turn the bot
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/dfollow1.txt b/help/dfollow1.txt
deleted file mode 100644
index debaf10b..00000000
--- a/help/dfollow1.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;Exercise
-You must follow the \l;target bot\u object\bottr; with the explosive device, but without touching it, otherwise it will blow up. Every time the target bot stops, you must be close to it (less than 10m). After you managed to stay close to the target bot at 10 successive stops, it will lead you to the finishing pad, and the exercise is over. At every stop, the target bot checks that you are there. If you are not there, you must start over again.
-
-\b;General principle
-Repeat forever:
-o Look for the target bot.
-o Calculate the distance to the bot.
-o if the distance to the target bot is less than 5m, move backward.
-o Otherwise, calculate the direction of the target bot, and move towards it.
-
-\b;Useful instructions
-\c;\l;radar\u cbot\radar;\n; to look for the bot (category \c;\l;TargetBot\u object\bottarg;\n;)
-\c;\l;radar\u cbot\radar;\n; to detect obstacles
-\c;\l;distance\u cbot\dist;\n; to calculate a distance
-\c;\l;direction\u cbot\direct;\n; to calculate a direction
-\c;\l;if\u cbot\if;\n; to test a condition
-\c;\l;motor\u cbot\motor;\n; to set the motor speeds
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/dfor.txt b/help/dfor.txt
deleted file mode 100644
index 483cd075..00000000
--- a/help/dfor.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;Exercise
-Destroy all four \l;targets\u object\bottarg; with a program using a \c;for\n; loop. You must move 10m to get from one target to another.
-
-\b;Useful instructions
-\c;\l;for\u cbot\for;\n; loop to repeat the instructions
-\c;\l;move\u cbot\move;\n; to move the bot
-\c;\l;turn\u cbot\turn;\n; to turn the bot
-\c;\l;fire\u cbot\fire;\n; to fire the cannon
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/dhelp1.txt b/help/dhelp1.txt
deleted file mode 100644
index 8fed8a3e..00000000
--- a/help/dhelp1.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Exercise
-Defend against all enemy attacks
-
-\b;General idea
-The range of your cannon is about 40m. The category of the enemies is \c;AlienAnt\n;. Turn towards the closest ant, even if it is still more than 40m away. But shoot only when it is closer than 40m, in order not to waste your energy.
-
-\b;Useful instructions
-\c;\l;radar\u cbot\radar;\n; to detect your enemies (category \c;\l;AlienAnt\u object\ant;\n;)
-\c;\l;direction\u cbot\direct;\n; to calculate a direction
-\c;\l;distance\u cbot\dist;\n; to calculate a distance
-\c;\l;fire\u cbot\fire;\n; to fire your cannon
-\c;\l;wait\u cbot\wait;\n; to wait
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/dlaby1.txt b/help/dlaby1.txt
deleted file mode 100644
index 48a98849..00000000
--- a/help/dlaby1.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;Exercise
-Program the bot so that it will find its way without hitting the walls of the labyrinth. We suppose that you do not know the configuration of the labyrinth, but there are no bifurcations, and no dead-ends. The labyrinth is made of squares measuring 5m each.
-
-\b;Useful instructions
-\c;\l;radar\u cbot\radar;\n; to detect obstacles
-\c;\l;if\u cbot\if;\n; to test a condition
-\c;\l;move\u cbot\move;\n; to move the bot
-\c;\l;turn\u cbot\turn;\n; to turn the bot
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/dmove1.txt b/help/dmove1.txt
deleted file mode 100644
index c9a0823c..00000000
--- a/help/dmove1.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-\b;Exercise
-Program the robot in such a way that it arrives on the finishing pad, after having passed by the three blue crosses.
-The platforms and the crosses are all distant of 20m from each other.
-
-\b;Useful instructions
-\c;\l;move\u cbot\move;\n; to move the bot
-\c;\l;turn\u cbot\turn;\n; to turn the bot
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/dproc1.txt b/help/dproc1.txt
deleted file mode 100644
index a5c15c7f..00000000
--- a/help/dproc1.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-\b;Exercice
-\b;Exercise
-The \l;bot\u object\bottr; must pass over all the \l;blue crosses\u object\waypoint; on the ground. The way that must be covered is made of two squares. The first one measures 15 meters, the second 25 meters.
-
-\image tproc1a 8 8;
-\b;General principle
-In order to solve this problem, the most efficient solution consists in creating a \l;function\u cbot\function; that instructs the bot to move on a square shape of a certain size. The main program becomes then very simple:\c;
-\c;
-\s; extern void object::Function3( )
-\s; {
-\s; Square(15);
-\s; Square(25);
-\s; }
-\n;
-\b;Useful instructions
-\c;\l;for\u cbot\for;\n; loop to repeat some instructions
-\c;\l;move\u cbot\move;\n; to move the bot
-\c;\l;turn\u cbot\turn;\n; to turn the bot
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/dproc2.txt b/help/dproc2.txt
deleted file mode 100644
index f56c4413..00000000
--- a/help/dproc2.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-\b;Exercise
-Follow the way in form of a spiral. The bot must move 2 times 25m forward and turn, then move 2 times 20m forward and turn, and so on.
-\image tproc2 8 8;
-
-\b;Function
-You will have noticed that the way is made of "L"-shaped parts that are fit one into another. The first one (dark blue) measures two times 25 meters. The second one (light blue) measures 5 meters less. Let us start with writing the \l;function\u cbot\function; that will move the bot on a "L"-shaped part whose length will be given as a parameter.
-
-\b;Useful instructions
-\c;\l;for\u cbot\for;\n; loop to repeat some instructions
-\c;\l;move\u cbot\move;\n; to move the bot
-\c;\l;turn\u cbot\turn;\n; to turn the bot
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/dradar1.txt b/help/dradar1.txt
deleted file mode 100644
index b4a02448..00000000
--- a/help/dradar1.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-\b;Exercise
-In this exercise, a "crazy bot" places many \l;blue crosses\u object\waypoint; on the ground. Just try to find them all.
-
-\b;Useful instructions
-\c;\l;radar\u cbot\radar;\n; to detect the blue crosses (category \c;\l;WayPoint\u object\waypoint;\n;)
-\c;\l;direction\u cbot\direct;\n; to calculate a direction
-\c;\l;if\u cbot\if;\n; to test a condition
-\c;\l;motor\u cbot\motor;\n; to set the motor speeds
-
-\t;Remark
-Do not wait too long, because the crazy bot gets down to work immediately. Fortunately, as long as you are in the program editor, the game will pause.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/dremova1.txt b/help/dremova1.txt
deleted file mode 100644
index 4f6f8896..00000000
--- a/help/dremova1.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-\b;Exercise
-Convert some \l;titanium ore\u object\titanore; to \l;titanium cubes\u object\titan;, then drop 2 titanium cubes on the pads whose coordinates are:
-\c;
- x=10, y=-60
- x=10, y=-65
-\n;
-\image derrick 8 8;
-The \l;derrick\u object\derrick; extracts titanium ore from the subsoil; you just have to pick it up.
-
-\image convert 8 8;
-The \l;converter\u object\convert; converts titanium ore to titanium cubes. Just drop the titanium ore on the platform, move backward, and wait until it has been converted.
-
-\b;General principle
-Repeat two times :
-o Wait until there is some titanium ore.
-o Go to the titanium ore.
-o Pick it up.
-o Go to the converter.
-o Drop the titanium ore.
-o Move back 2.5 meters.
-o Wait until there is a titanium cube.
-o Pick up the titanium cube.
-o Go to the platform.
-o Drop the titanium cube.
-
-\b;Useful instructions
-\c;\l;for\u cbot\for;\n; to repeat some instructions
-\c;\l;do - while\u cbot\do;\n; to repeat some instructions
-\c;\l;radar\u cbot\radar;\n; to look for different objects
-\c;\l;goto\u cbot\goto;\n; to move the bot
-\c;\l;grab\u cbot\grab;\n; to grab an object
-\c;\l;drop\u cbot\drop;\n; to drop an object
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/dremova2.txt b/help/dremova2.txt
deleted file mode 100644
index 29de659c..00000000
--- a/help/dremova2.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;Exercise
-Move the \l;titanium cube\u object\titan; on the finishing pad. You do not know the position of the titanium, but we can tell you the position of the finishing pad x=10 and y=-60.
-
-\b;Useful instructions
-\c;\l;radar\u cbot\radar;\n; to find the titanium cube (category \c;\l;Titanium\u object\titan;\n;)
-\c;\l;goto\u cbot\goto;\n; to move the bot
-\c;\l;grab\u cbot\grab;\n; to grab an object
-\c;\l;drop\u cbot\drop;\n; to drop an object
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/dtrap1.txt b/help/dtrap1.txt
deleted file mode 100644
index 15edc8d0..00000000
--- a/help/dtrap1.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-\b;Exercise
-Instruct the bot to find all the \l;blue crosses\u object\waypoint; on the ground, but do not get too close to the \l;mines\u object\mine;. When the bot passes over a cross, it disappears. Here is the general principle:
-
- Repeat forever:
- o Look for a mine
- o If a mine has been found, calculate the opposite direction
- o Look for a cross
- o If nothing has been found, stop the program
- o Calculate the direction of the cross
- o Calculate the mean value of the two directions
- o Set the motor speeds in order to head towards the mean direction
-
-\b;The instruction \c;radar\n;
-In order to detect a mine with the \c;\l;radar\u cbot\radar;\n;, we recommend the following parameters:
-\c;\s; radar(Mine, 0, 180, 0, 5);\n;
-With the opening angle of 180 degrees, mines that are behind the bot will not be found. Mines that are at more than 5 meters are also ignored.
-
-In order to find a blue cross, simply write:
-\c;\s; radar(WayPoint);\n;
-Blue crosses will be found everywhere.
-
-In order to calculate a direction, use \c;\l;direction\u cbot\direct;\n;.
-In order to set the motor speeds, use \c;\l;motor\u cbot\motor;\n;.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/dtrap2.txt b/help/dtrap2.txt
deleted file mode 100644
index d8b8fa0c..00000000
--- a/help/dtrap2.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-\b;Exercise
-Instruct your \l;bot\u object\bottr; to find all the \l;blue crosses\u object\waypoint; on the ground, but do not get too close to the \l;mines\u object\mine;.
-
-If a bot gets within less than 2m of the center of a mine (which is the position returned by the radar instruction), il will blow up. However, you must take into account the inertia of the bot. Probably a safety distance of 3 to 3.5m would be more appropriate.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/fglobal.txt b/help/fglobal.txt
deleted file mode 100644
index 5065a250..00000000
--- a/help/fglobal.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-\b;Objective
-Here you can play around without any definite objective. You can do whatever you want, explore the region, build a base camp and several bots, run various research programs, kill the insects if you find some, etc.
-
-\t;See also
-\l;Controls\u command;.
diff --git a/help/licences.txt b/help/licences.txt
deleted file mode 100644
index 884e1732..00000000
--- a/help/licences.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-The photograph of the nebula NGC3606 illuminating the sky on Orpheon and the installation program was taken with the Hubble space telescope. It is used with the permission of the authors Wolfgang Brandner (JPL/IPAC), Eva K. Grebel (Washington University), You-Hua Chu (Illinois Urbana-Champaign University) and NASA.
-
-The thunder sound on Orpheon is used by limited permission from CREATIVE.
diff --git a/help/mhcent1.txt b/help/mhcent1.txt
deleted file mode 100644
index 02664cba..00000000
--- a/help/mhcent1.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;From Mission Control
-Find some more \l;organic matter\u object\bullet; and, given an appropriate research program performed by your \l;autolab\u object\labo;, \l;you\u object\human; should be able to manufacture orga shooters yourself.
-
-Produce a \l;legged orga shooter\u object\botos; and bring it back aboard your \l;spaceship\u object\base;.
-
-Please keep in mind that low energy resources are a major concern on this planet.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhcent2.txt b/help/mhcent2.txt
deleted file mode 100644
index fbf988bb..00000000
--- a/help/mhcent2.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-\b;From Mission Control
-It is time for \l;you\u object\human; to improve your shooting skills again. In the following drill, hit all the \l;explosive devices\u object\tnt; but watch out: your \l;orga shooter\u object\botoj; has very little power left in it, barely enough to complete the drill.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhcent3.txt b/help/mhcent3.txt
deleted file mode 100644
index dab80410..00000000
--- a/help/mhcent3.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-\b;From Mission Control
-Build a \l;radar\u object\radar; on one of the highest accessible spots and make sure that no organism can destroy it after \l;you\u object\human;'re gone.
-
-The destruction of a previous radar set up by the first expedition was probably the cause of a communication breakdown, which led to complete loss of contact.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhcent4.txt b/help/mhcent4.txt
deleted file mode 100644
index 351fb946..00000000
--- a/help/mhcent4.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-\b;A Word on New Policies
-We are sorry to have to bring this to your attention but this seems like a good a time to let you in on a little concern we're having at the moment. There has been a strong reaction in the public opinion and in Congress concerning your systematic termination of the "indigenous inhabitants" of the planets you've been visiting. Congress has chosen to demonstrate its sensitivity to the concerns of the general population.
-
-We hereby relay their new directives and these directives intimate for you to limit the casualties as much as humanly possible. In other words, do your very best to spare the life-forms you encounter from now on. Your mission should of course in no way find itself jeopardized by this new course of action.
-
-\b;From Mission Control
-Your energy resources appear dangerously limited at this time and so is your arsenal but you need to locate and retrieve the previous expedition's \l;black box\u object\bbox; so you can proceed to the next planet.
-
-We received a piece of information from your predecessors, via the observation satellite, regarding a new type of weaponry they have developed precisely for a predicament such as this one.
-
-This weapon will offer you an opportunity to demonstrate your newfound compassion towards \l;indigenous species\u object\ant; for it is not a weapon of mass destruction. What it offers instead, to the best of our knowledge, is an option to incapacitate them, rendering them, if only temporarily, harmless. If this is indeed the case, you'll need to act quickly before they are given a chance to become hostile to you again.
-
-\b;Procedure
-Perform the \l;research program\u object\research; and experiment for yourself but don't forget to bring this new weapon back on board. We are very curious to study its workings.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhcent5.txt b/help/mhcent5.txt
deleted file mode 100644
index aa3def54..00000000
--- a/help/mhcent5.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-\b;From Mission Control
-You're under attack and this is no time for compassion...
-
-Your new \l;thumper\u object\bottump; might come in very handy. However, we emphasize that you should not risk a takeoff if there are any ants still alive in the vicinity of the spaceship.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhcrys1.txt b/help/mhcrys1.txt
deleted file mode 100644
index ba9f2afa..00000000
--- a/help/mhcrys1.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-\b;From Mission Control
-Build a \l;radar\u object\radar; on the highest point in the area. Make sure that the radar will work safely even after your departure to other planets. Your \l;research center\u object\research; should be able to provide a solution.
-
-It is possible that the organisms detected are in fact the \l;worms\u object\worm; alluded to by the first expedition. If this is indeed the case, don't be excessively alarmed: they seem fairly harmless to living organisms but could cause the programs of bots and buildings to malfunction through the emission of viruses.
-
-Radars not only give you precious information about objects and organisms present in the region, they also relay information to and from the Earth once you have taken off to other planets. It is highly probable that problems with the radar stations built by the first expedition caused the transmission problems that we are aware of.
-
-In order to help you with the boring task of gathering the necessary raw material, we have developed a program that instructs the \l;wheeled grabber\u object\botgr; to look for \l;titanium ore\u object\titanore; on its own (see the programming page \button 53;).
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhcrys2.txt b/help/mhcrys2.txt
deleted file mode 100644
index 37fac584..00000000
--- a/help/mhcrys2.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;From Mission Control
-Cleanse the area of all hostile organisms. The way you accomplish this (\l;defense tower\u object\tower; or \l;winged shooter\u object\botfj;) is up to you.
-
-The radar seems to be perfectly suited to the detection of worms. Keep in mind though that they only appear when they are on the surface.
-
-We relayed a transmission to your \l;bot factory\u object\factory;. It concerns a bot designed to detect raw materials in the subsoil: energy sources, ore. We call it a \l;sniffer\u object\botsr; for short. Preliminary analysis leads us to believe that the presence of titanium ore on Crystalium is closely linked to the growth of large blue crystals. If this is indeed the case, this information should allow you to save some precious time. A \l;derrick\u object\derrick; is of course required for the extraction.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhcrys3.txt b/help/mhcrys3.txt
deleted file mode 100644
index cdf9b07a..00000000
--- a/help/mhcrys3.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-\b;From Mission Control
-We have just received this warning from the observation satellite: a rogue bot from the previous expedition has seized the black box from your spaceship.
-
-We are going to investigate this incident further but it is of vital importance that you retrieve your black box at once.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhcrys4.txt b/help/mhcrys4.txt
deleted file mode 100644
index 10ef464c..00000000
--- a/help/mhcrys4.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;From Mission Control
-This planet has turned out to be a very unlikely candidate for colonization. Better to leave it for good. Retrieve the \l;black box\u object\bbox; from the previous expedition and head towards the next planet.
-
-The observation satellite has indicated that its present location is at the bottom of a valley. However the pervasive stratum of electromagnetic smog could make all satellite information rather undependable.
-
-Stay alert.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhlune1.txt b/help/mhlune1.txt
deleted file mode 100644
index aec7b004..00000000
--- a/help/mhlune1.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-\b;From Mission Control
-Collect 4 chunks of \l;titanium ore\u object\titanore; and bring them back aboard your \l;spaceship\u object\base;. Build the equipment necessary for this task (\l;flying bots\u object\botgj;).
-
-Before you venture any further, you should always take a look at the satellite report \button 186;.
-
-We have transmitted to your \l;spaceship\u object\base; a program that might help you in this task; please refer to the corresponding page of your SatCom with the button \button 53;.
-
-\b;Procedure
-1) A new \l;research program\u object\research; is required for winged bots to be added to the list of bots that can be produced by the factory. This research program will also make the propulsion reactor in your personal survival kit operational.
-
-2) Produce a \l;winged grabber\u object\botgj; and collect the 4 chunks of \l;titanium ore\u object\titanore;.
-
-3) Take the \l;winged grabber\u object\botgj; and the \l;wheeled grabber\u object\botgr; along with you and take off.
-
-Be careful that your winged bot does not run out of power when you are far from base. If necessary, replace the \l;power cell\u object\power; before leaving the spaceship. You can either do this manually or you can execute the enclosed program provided by Houston \button 53;.
-
-In order not to lose your way among the numerous craters on the Moon's surface, use the mini map on the lower right-hand corner of your screen.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mhlune2.txt b/help/mhlune2.txt
deleted file mode 100644
index c82d9e49..00000000
--- a/help/mhlune2.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-\b;From Mission Control
-This apparatus was set up by the previous expedition to test and train the flying capacity of winged bots.
-
-\b;Objective
-Use these drills to your advantage. Your ability to survive future critical situations may depend upon the dexterity they will have helped you develop.
-
-\b;Procedure
-Fly as quickly as possible through each target. Try to accomplish this without causing the engine to overheat. If this appears too difficult, just touch down and let the engine cool off.
-
-You should use the arrow keys on the keyboard to pilot the bot, but keep one hand on the mouse. The mouse is useless in this exercise, but will be essential in later missions.
-
-It may be useful to come back to these drills once in a while if you wish to improve your reflexes further.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhlune3.txt b/help/mhlune3.txt
deleted file mode 100644
index 38f77227..00000000
--- a/help/mhlune3.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-\b;From Mission Control
-Similar drill as before, only this time viewed through the camera placed on board.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhlune4.txt b/help/mhlune4.txt
deleted file mode 100644
index f901585d..00000000
--- a/help/mhlune4.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;From Mission Control
-We have no way of being sure where the previous expedition was headed when it left the Moon surface nor why it chose to go wherever it was going.
-
-Locate the \l;black box\u object\bbox; they must have left behind and bring it back aboard your ship. The black box should contain the coordinates of the next planet the expedition was planning to visit.
-
-Your bot's \l;power cells\u object\power; are almost entirely empty. Recharging them should be your priority. The observation satellite in orbit indicates that the subsoil in this particular area is loaded with energy. You should therefore be able to build a functional \l;power station\u object\station; on any flat surface.
-
-We have developed a program that will recharge the \l;power cell\u object\power; of a bot. Refer to the program page of your SatCom \button 53;.
-
-\b;Procedure
-1) You first need to build a \l;converter\u object\convert; that converts the chunks of titanium ore already in your possession into usable \l;titanium cubes\u object\titan;.
-
-2) You should then build both a \l;power station\u object\station; and a \l;radar\u object\radar; which will indicate the location of the black box on your mini map.
-
-3) With your power cells fully charged, retrieve the black box. It needs to be placed on the \l;spaceship\u object\base; platform for you to be able to take off.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhorph1.txt b/help/mhorph1.txt
deleted file mode 100644
index 30ee987c..00000000
--- a/help/mhorph1.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-\b;From Mission Control
-It seems obvious enough that this planet will be no haven for humanity.
-
-Build a radar to relay future transmissions.
-
-Also... we're very sorry to inform you that you may need to exterminate all hostile organisms.
-
-The first expedition located \l;titanium ore\u object\titanore; under the surface of Orpheon. The spot is marked with a blue \l;flag\u object\flag;.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhorph2.txt b/help/mhorph2.txt
deleted file mode 100644
index 00535b0e..00000000
--- a/help/mhorph2.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;From Mission Control
-Retrieve the black box.
-
-Electromagnetic lightning bolts appear to strike even more frequently now than they did previously. You need to protect your equipment.
-
-Please note that your spaceship also naturally acts as a lightning conductor, and our engineers assure us that your space suit does not attract lightning.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhsaari1.txt b/help/mhsaari1.txt
deleted file mode 100644
index ce6848ec..00000000
--- a/help/mhsaari1.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-\b;From Mission Control
-The observation satellite has detected a chunk of \l;uranium ore\u object\uranore; on the summit of the main mountain. You need to bring it back to your spaceship.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhsaari2.txt b/help/mhsaari2.txt
deleted file mode 100644
index 95547c0e..00000000
--- a/help/mhsaari2.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;From Mission Control
-Eliminate all hostile presence from the region.
-
-Your current situation is of utmost concern to us. The satellite has detected an extremely strong enemy presence approaching your spaceship from all directions. Use your best judgment and the quickest, most efficient defense: either \l;towers\u object\tower; or \l;shooters\u object\botfr;.
-
-In order to increase your survival chances, we have developed a program that will protect your west flank if you execute it on your \l;wheeled shooter\u object\botfr;; see the program page \button 53;.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhsaari3.txt b/help/mhsaari3.txt
deleted file mode 100644
index ca9202a4..00000000
--- a/help/mhsaari3.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-\b;From Mission Control
-Your satellite has located the remains of the previous expedition. You should come across a \l;black box\u object\bbox; not too far from there. It will give you the coordinates of your next destination.
-
-Exterminate the few remaining ants. We've been notified that your neutron gun is currently out of order so you will not be able to build new bots. We're convinced that you're resourceful enough at this point to come up with a solution.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhterra1.txt b/help/mhterra1.txt
deleted file mode 100644
index 9046f437..00000000
--- a/help/mhterra1.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;From Mission Control
-We've just received information that the first expedition designed a brand new weapon to be used on Terranova. It was safely stored away from possible enemy reach, inside a \l;vault\u object\safe; which can be accessed only by using four \l;keys\u object\key;. The keys are scattered on or under the planet surface.
-
-The observation satellite has located one of these keys (A) north of your present position.
-
-In compliance with Congress directives, our engineers have developed yet another strictly "defensive" bot : it is called a \l;shielder\u object\botshld; and it will offer adequate protection within a given perimeter. The data have been transmitted to your \l;research center\u object\research; along with a couple of relevant programs.
-
-As you may know, uranium ore in the subsoil is a powerful fertilizer, furthering the growth of a variety of mushrooms. Please also note that \l;titanium ore\u object\titanore; is often located at the bottom of lakes on this planet.
-
-When your mission is completed and before taking off, bring both a \l;shielder\u object\botshld; and a \l;subber\u object\botsub; aboard your spaceship.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhterra2.txt b/help/mhterra2.txt
deleted file mode 100644
index 96b7ee47..00000000
--- a/help/mhterra2.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-\b;From Mission Control
-Retrieve the second \l;key\u object\key; (B). It should be located near your current position.
-
-When your mission is completed and before taking off, bring both \l;shielder\u object\botshld; and \l;subber\u object\botsub; aboard your spaceship.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhterra3.txt b/help/mhterra3.txt
deleted file mode 100644
index a99bbfc1..00000000
--- a/help/mhterra3.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-\b;From Mission Control
-The third \l;key\u object\key; (C) is buried in a mushroom-infested area. A \l;sniffer\u object\botss; should be able to locate it and a \l;derrick\u object\derrick; should be able to extract it.
-
-When your mission is completed and before taking off, bring both \l;shielder\u object\botshld; and \l;subber\u object\botsub; aboard your spaceship.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhterra4.txt b/help/mhterra4.txt
deleted file mode 100644
index 1a9e9d19..00000000
--- a/help/mhterra4.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-\b;From Mission Control
-With the help of the fourth \l;key\u object\key; (D) located nearby, you will finally gain access to the \l;vault\u object\safe;. The groundbreaking bot you'll find inside was named a "\l;phazer\u object\botphaz;".
-
-A program allowing for a collaboration between a \l;phazer\u object\botphaz; and a \l;shielder\u object\botshld; has been attached.
-
-You should soon find yourself in a position to test your new weapon. Your last mission is to dispose of the \l;Alien Queen\u object\mother;, the egglayer responsible for the growing number of insects on Terranova. The phazer might very well be the only bot capable of getting the job done.
-
-There will then be no further obstacle to the human colonization of this magnificent planet and you'll soon be able to notify Earth of the success of your mission.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhterre1.txt b/help/mhterre1.txt
deleted file mode 100644
index 6a9ccb62..00000000
--- a/help/mhterre1.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-\b;From the NASA Training Center
-We are pleased to inform you that you have been selected for the space exploration mission Colobot.
-
-Your psychological profile has been established as more than 98.84% favorable, and your aptitude during the extensive testing period was undeniable. The detailed results are at your disposal in the central computer under the registration number that was assigned to you.
-
-Please report to the \l;Houston Mission Control\u object\Huston; for further directives about your forthcoming mission.
-
-\b;From Houston Mission Control
-As you know, Earth is heading towards imminent disaster, due to increasing atmospheric pollution.
-
-\l;Your\u object\human; mission consists of exploring neighboring galaxies with the hopes of finding a planet that will be suitable to human needs and possibly serve as a shelter for mankind. You will be on your own for the entire mission but your spaceship will be carrying a few bots along.
-
-Eight months ago an expedition composed entirely of robots was sent across the cosmos with the same objective. It encountered a fair share of obstacles along the way, apparently landing on planets that were unsuitable for colonization, even possibly outright hostile. Very recently all communications were terminated.
-
-The reasons for the mission's failure are unclear at this date, mainly because of recurrent transmission problems. It is our hope that you will be able to use some of the data it gathered to your advantage.
-
-\b;Immediate Objective
-The Nevada desert is already bustling with activity. Bots are setting up a space station catered to your specific needs.
-
-In order to let you familiarize with your spacesuit and equipment, we have set up a few training drills.
-
-In the first drill, you need to find your survival kit that contains all the tools necessary to brave the cold of outer space. It is easy to spot since it contains both an orange and a blue tank.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mhterre2.txt b/help/mhterre2.txt
deleted file mode 100644
index 8a37f2b4..00000000
--- a/help/mhterre2.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-\b;From Mission Control
-This is your second drill. \l;You\u object\human; should now familiarize yourself with the handling of basic equipment. This could turn out to be your best ally during the course of this expedition.
-
-The construction of buildings and the manufacturing of bots all require the use of \l;titanium\u object\titan;. Titanium is a mineral found in most solar systems in the universe.
-
-\b;Procedure
-1) Position yourself close to the first \l;titanium cube\u object\titan;.
-2) Build a \l;research center\u object\research; \button 163;. Note that only \l;you\u object\human; can accomplish the task of building; no bot can be substituted.
-3) With a second \l;titanium cube\u object\titan;, build a \l;bot factory\u object\factory; \button 160;.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mhterre3.txt b/help/mhterre3.txt
deleted file mode 100644
index a47feb02..00000000
--- a/help/mhterre3.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-\b;From Mission Control
-Your \l;spaceship\u object\base; is now standing on the launching pad, ready for takeoff.
-
-The last drill left for \l;you\u object\human; to perform before embarking on your journey is to equip your spaceship with its \l;black box\u object\bbox;. The only way to reach the \l;black box\u object\bbox; is by a steep path that can only be climbed by a \l;tracked grabber\u object\botgc; which you need to build.
-
-Unfortunately your \l;bot factory\u object\factory; hasn't yet got the capacity to assemble this type of bot. You need to request your \l;research center\u object\research; to come up with a blueprint for this particular propeller.
-
-\b;Procedure
-1) Power the research center with one of the green \l;power cells\u object\power;.
-2) Click on the button \button 64;.
-3) Drop a \l;titanium cube\u object\titan; in the center of the \l;bot factory\u object\factory; and build a \l;tracked grabber\u object\botgc;.
-4) Power and radio-control the \l;tracked grabber\u object\botgc; to the top of the southwest-oriented mountain.
-5) Bring the black box back aboard your spaceship.
-6) Don't forget to take the \l;wheeled grabber\u object\botgr; along. These bots may prove very useful in the future.
-7) Climb aboard the \l;spaceship\u object\base;.
-11) Select the \l;spaceship\u object\base; and take off \button 28;.
-
-
-Please note: To work more efficiently, you can use the \l;wheeled grabber\u object\botgr;.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mhtropi1.txt b/help/mhtropi1.txt
deleted file mode 100644
index 6a618684..00000000
--- a/help/mhtropi1.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-\b;From Mission Control
-The observation satellite has detected a new kind of explosive apparently designed by the previous expedition. You must locate it and bring it back to your \l;spaceship\u object\base;.
-
-\b;Procedure
-The location of the explosive is marked by a red cross on your mini map.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mhtropi2.txt b/help/mhtropi2.txt
deleted file mode 100644
index f0718102..00000000
--- a/help/mhtropi2.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-\b;From Mission Control
-It is our hope that this message will reach you.
-
-A transmission from the observation satellite a few hours ago informed us that you seemed to be wandering in a frighteningly uncoordinated manner. Your SatCom has ceased broadcasting. Your reactor seems to have suffered some sort of damage and your helmet was spotted at the bottom of a lake. If this is indeed the case, do not try to retrieve it, do not go into the water! Water on Tropica is highly toxic. You would not survive it.
-
-Get back to your ship as quickly as possible and try to transmit information about the possible causes of this disaster. The satellite's information remains undecipherable. We have been speculating about an X-factor ever since the first expedition got lost. It appears you have just encountered it.
-
-There is nothing we can really do to guide you but don't forget that you're following in the footsteps of a previous expedition. If what happened to you is what happened to them, chances are they may have left some clues along the way back to their own spaceship which landed in roughly the same area as yours. Use those clues.
-
-You may also want to consider planting flags. They indicate the direction of the wind so you can use them to orient yourself.
-
-This is all we can say for now...
-Good Luck...
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mhtropi3.txt b/help/mhtropi3.txt
deleted file mode 100644
index ef13f79e..00000000
--- a/help/mhtropi3.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-\b;From Mission Control
-Terminate all hostile life-form.
-Perform the necessary \l;research program\u object\research; in order to develop an offensive weapon system.
-
-The satellite has detected an energy source, on a spot marked by the previous expedition with a blue flag (blue cross on the mini-map).
-
-Do not forget to take a look at the satellite report \button 186; before you venture any further in a mission; we suspect that you have not always done this.
-
-We have improved the recharge program. Please refer to the page \button 53;.
-
-A note of warning: bots cannot be submerged. If in doubt, test the water yourself if you plan to radio-control a non-winged bot across - water shouldn't be deeper than knee-level.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhtropi4.txt b/help/mhtropi4.txt
deleted file mode 100644
index 947d4d2f..00000000
--- a/help/mhtropi4.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-\b;From Mission Control
-This is another training course set up by your predecessors and intended this time to test and train the firing capacity of \l;winged bots\u object\botfj;. Use it to familiarize yourself with the two simultaneous actions of shooting while flying.
-
-Fly quickly through all targets and shoot all 10 explosive devices scattered along the way. Try to complete the drill without touching down. Watch your reactor though: if it overheats, just settle the bot and let it cool off.
-
-Use one hand on the keyboard to pilot the bot, and the other hand on the mouse to aim and to shoot (left button).
-
-It may be useful to come back to these drills once in a while if you wish to improve your reflexes further.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhtropi5.txt b/help/mhtropi5.txt
deleted file mode 100644
index 568b1891..00000000
--- a/help/mhtropi5.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-\b;From Mission Control
-Locate and retrieve another \l;black box\u object\bbox; from the previous expedition.
-
-The observation satellite seems to have spotted it underwater. Water is harmless to you as long as you wear your helmet but keep in mind that you can't carry objects underwater. A \l;subber\u object\botsub; may come in handy.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhvolca1.txt b/help/mhvolca1.txt
deleted file mode 100644
index 1ead30b5..00000000
--- a/help/mhvolca1.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-\b;From Mission Control
-You need to retrieve an \l;explosive device\u object\tnt; that has been spotted in a deep valley next to a lake of boiling lava.
-
-Because of the high temperatures, reactors no longer function, i.e. flying is impossible. It is a long way there and you should equip your bots with \l;nuclear power cells\u object\atomic;. Nuclear power cells are manufactured from \l;uranium ore\u object\uranore;.
-
-A more efficient program for the gathering of raw materials is attached to this message.
-
-A note of warning: the explosive device is extremely volatile. Use extreme caution.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhvolca2.txt b/help/mhvolca2.txt
deleted file mode 100644
index fd2091b7..00000000
--- a/help/mhvolca2.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-\b;From Mission Control
-The previous expedition provided us with a piece of information about some \l;organic matter\u object\bullet;, which seems to be produced by the \l;ants\u object\ant;, and which opened startling new possibilities. It apparently allows the creation of a new type of mutant bot with enhanced performance through the use of insect parts.
-
-Your mission is to experiment with the first practical application of this "green gold". Build a \l;legged grabber bot\u object\botgs;, load it on the spaceship and take off.
-
-\b;Procedure
-Take a sample of organic matter from a nest of giant ants. The analysis of it will be performed by an \l;autolab\u object\labo;, which will also perform the necessary research to allow a practical application.
-
-In order to improve your defense capacity, we have transmitted a program to your \l;grabber bots\u object\botgr; that takes care of recharging the power cell of a \l;defense tower\u object\tower; (see \button 53; ).
-
-\b;Note
-The temperature has dropped significantly, it should therefore be possible to fly.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhvolca3.txt b/help/mhvolca3.txt
deleted file mode 100644
index a615f018..00000000
--- a/help/mhvolca3.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-\b;From Mission Control
-This planet is obviously unsuited to a long-lasting colonization. Retrieve the \l;black box\u object\bbox; from the previous expedition then take off.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhvolca4.txt b/help/mhvolca4.txt
deleted file mode 100644
index 9c6341c2..00000000
--- a/help/mhvolca4.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-\b;An urgent notification from Mission Control
-As you were about to take off, we received from the satellite the following piece of information: a bot of a type yet unknown has been spotted on Volcano. Try to bring it back onto your spaceship for further study.
-
-Our engineers on Earth have very recently come up with a formula that should allow reactors to function properly, at least for a short while, despite the high temperatures. The data have been transmitted to you.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhvolca5.txt b/help/mhvolca5.txt
deleted file mode 100644
index 3f39260c..00000000
--- a/help/mhvolca5.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;From Mission Control
-Congratulations on a fine job as usual.
-
-This new weapon appears to be yet another practical application of what we've come to refer to as "green gold", the \l;organic matter\u object\bullet; produced by the insects. We've named this bot the \l;orga shooter\u object\botoj; or bot equipped with an orgaball cannon.
-
-It will most certainly come in handy as you make your way back to your \l;spaceship\u object\base;.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/mhvolca6.txt b/help/mhvolca6.txt
deleted file mode 100644
index edd74ab5..00000000
--- a/help/mhvolca6.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-\b;From Mission Control
-You need to repel a last minute ant attack before taking off.
-
-\key;\key help;\norm; allows you to review these instructions at all times on your personal SatCom \button 63;.
-
-\t;See also
-\l;Controls\u command; and \l;CBOT Language\u cbot;
diff --git a/help/micent1.txt b/help/micent1.txt
deleted file mode 100644
index 8a7d4d0b..00000000
--- a/help/micent1.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Centaury.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 23.4C
-\tab;Atmosphere: oxygen, nitrogen, ammonia
-\tab;Wind: 1.2 mps
-\tab;Titanium ore: some
-\tab;Uranium ore: some
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: giant ants
-\tab; - Danger: not immediate
-\tab;Detected: reusable derelicts
-\n;
diff --git a/help/micent2.txt b/help/micent2.txt
deleted file mode 100644
index 3a3b0918..00000000
--- a/help/micent2.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Centaury.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 25.4C
-\tab;Atmosphere: oxygen, nitrogen, ammonia
-\tab;Wind: 1.2 mps
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-\n;
diff --git a/help/micent3.txt b/help/micent3.txt
deleted file mode 100644
index cd4ae270..00000000
--- a/help/micent3.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Centaury.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 25.4C
-\tab;Atmosphere: oxygen, nitrogen, ammonia
-\tab;Wind: 0.7 mps
-\tab;Titanium ore: some
-\tab;Uranium ore: some
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: giant ants
-\tab; - Danger: not immediate
-\tab;Detected: spiders
-\tab; - Danger: not immediate
-\tab;Detected: reusable derelicts
-\n;
diff --git a/help/micent4.txt b/help/micent4.txt
deleted file mode 100644
index 71ab47f5..00000000
--- a/help/micent4.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Centaury.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 21.3C
-\tab;Atmosphere: oxygen, nitrogen, ammonia
-\tab;Wind: 1.9 mps
-\tab;Titanium ore: some
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: giant ants
-\tab; - Danger: not immediate
-\tab;Detected: derelicts of no particular use
-\n;
diff --git a/help/micent5.txt b/help/micent5.txt
deleted file mode 100644
index 530a3ef9..00000000
--- a/help/micent5.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Centaury.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 21.3C
-\tab;Atmosphere: oxygen, nitrogen, ammonia
-\tab;Wind: 1.9 mps
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: giant ants
-\tab; - Danger: immediate
-\n;
diff --git a/help/micrys1.txt b/help/micrys1.txt
deleted file mode 100644
index dc6137e2..00000000
--- a/help/micrys1.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Crystalium.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 5.4C
-\tab;Atmosphere: nitrogen
-\tab;Wind: 0.0 mps
-\tab;Titanium ore: some
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: data not available
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: unidentified organisms
-\tab; - Danger: ?
-\n;
diff --git a/help/micrys2.txt b/help/micrys2.txt
deleted file mode 100644
index 07ac951a..00000000
--- a/help/micrys2.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Crystalium.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 3.2C
-\tab;Atmosphere: nitrogen
-\tab;Wind: 0.0 mps
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: isolated (close to the spaceship)
-\tab;Titanium ore: scattered
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: worms
-\tab; - Danger: no
-\n;
diff --git a/help/micrys3.txt b/help/micrys3.txt
deleted file mode 100644
index e2e7fd74..00000000
--- a/help/micrys3.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Crystalium.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 4.3C
-\tab;Atmosphere: nitrogen
-\tab;Wind: 0.0 mps
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: giant ants
-\tab; - Danger: not immediate
-\tab;Detected: unknown organisms
-\tab; - Danger: ?
-\n;
diff --git a/help/micrys4.txt b/help/micrys4.txt
deleted file mode 100644
index 3baf096f..00000000
--- a/help/micrys4.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Crystalium.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 1.2C
-\tab;Atmosphere: nitrogen
-\tab;Wind: 0.0 mps
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: electromagnetic smog
-\tab;Detected: reusable derelicts
-\n;
diff --git a/help/milune1.txt b/help/milune1.txt
deleted file mode 100644
index 320391c1..00000000
--- a/help/milune1.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of the Moon.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: -53.1C
-\tab;Atmosphere: none
-\tab;Wind: 0.0 mps
-\tab;Titanium ore: some
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Terrain in places too uneven for wheeled bots.
-\n;
diff --git a/help/milune2.txt b/help/milune2.txt
deleted file mode 100644
index 224cb3a7..00000000
--- a/help/milune2.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of the Moon.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: -51.0C
-\tab;Atmosphere: none
-\tab;Wind: 0.0 mps
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-\n;
diff --git a/help/milune3.txt b/help/milune3.txt
deleted file mode 100644
index 18ff4a6a..00000000
--- a/help/milune3.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of the Moon.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: -58.9C
-\tab;Atmosphere: none
-\tab;Wind: 0.0 mps
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-\n;
diff --git a/help/milune4.txt b/help/milune4.txt
deleted file mode 100644
index 67965bd1..00000000
--- a/help/milune4.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of the Moon.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: -38.2C
-\tab;Atmosphere: none
-\tab;Wind: 0.0 mps
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: everywhere
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-\n;
diff --git a/help/miorph1.txt b/help/miorph1.txt
deleted file mode 100644
index fe516e4c..00000000
--- a/help/miorph1.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Orpheon.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: -72.8C
-\tab;Atmosphere: none
-\tab;Wind: 0.0 mps
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: some (blue flag)
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: giant ants
-\tab; - Danger: not immediate
-\tab;Detected: fierce electromagnetic storms
-\n;
diff --git a/help/miorph2.txt b/help/miorph2.txt
deleted file mode 100644
index e6c6ed95..00000000
--- a/help/miorph2.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Orpheon.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: -64.7C
-\tab;Atmosphere: none
-\tab;Wind: 0.0 mps
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: giant ants
-\tab; - Danger: not immediate
-\tab;Detected: fierce electromagnetic storms
-\n;
diff --git a/help/misaari1.txt b/help/misaari1.txt
deleted file mode 100644
index bd657999..00000000
--- a/help/misaari1.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Saari.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 41.3C
-\tab;Atmosphere: CO2, oxygen, nitrogen
-\tab;Wind: 2.3 mps
-\tab;Titanium ore: none
-\tab;Uranium ore: some (mountain summit)
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: everywhere
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: reusable derelicts
-\tab;Detected: giant ants
-\tab; - Danger: not immediate
-\n;
diff --git a/help/misaari2.txt b/help/misaari2.txt
deleted file mode 100644
index a849d412..00000000
--- a/help/misaari2.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Saari.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 38.4C
-\tab;Atmosphere: CO2, oxygen, nitrogen
-\tab;Wind: 1.4 mps
-\tab;Titanium ore: some
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: everywhere
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: giant ants approaching
-\tab; - Danger: yes, immediate
-\n;
diff --git a/help/misaari3.txt b/help/misaari3.txt
deleted file mode 100644
index cfe8cf15..00000000
--- a/help/misaari3.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Saari.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 44.3C
-\tab;Atmosphere: CO2, oxygen, nitrogen
-\tab;Wind: 2.3 mps
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: reusable derelicts
-\tab;Detected: giant ants
-\tab; - Danger: ?
-\n;
diff --git a/help/miterra1.txt b/help/miterra1.txt
deleted file mode 100644
index be4c90c4..00000000
--- a/help/miterra1.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Terranova.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 24.8C
-\tab;Atmosphere: oxygen
-\tab;Wind: 0.7 mps
-\tab;Titanium ore: underwater
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: at some places
-\tab;Titanium ore: none
-\tab;Uranium ore: some
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: giant ants
-\tab; - Danger: immediate
-\tab;Detected: giant wasps
-\tab; - Danger: not immediate
-\tab;Detected: reusable derelicts
-\n;
diff --git a/help/miterra2.txt b/help/miterra2.txt
deleted file mode 100644
index b6805c70..00000000
--- a/help/miterra2.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Terranova.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 24.3C
-\tab;Atmosphere: oxygen
-\tab;Wind: 0.8 mps
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: giant ants
-\tab; - Danger: immediate
-\n;
diff --git a/help/miterra3.txt b/help/miterra3.txt
deleted file mode 100644
index 450a924f..00000000
--- a/help/miterra3.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Terranova.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 26.1C
-\tab;Atmosphere: oxygen
-\tab;Wind: 0.4 mps
-\tab;Titanium ore: some
-\tab;Uranium ore: some
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: giant ants
-\tab; - Danger: immediate
-\tab;Detected: giant wasps
-\tab; - Danger: immediate
-\n;
diff --git a/help/miterra4.txt b/help/miterra4.txt
deleted file mode 100644
index 35676a4a..00000000
--- a/help/miterra4.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Terranova.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 23.7C
-\tab;Atmosphere: oxygen
-\tab;Wind: 0.5 mps
-\tab;Titanium ore: some
-\tab;Uranium ore: some
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: in some places (spaceship)
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: giant ants
-\tab; - Danger: immediate
-\tab;Detected: giant egglayer
-\tab; - Danger: ?
-\n;
diff --git a/help/mitropi1.txt b/help/mitropi1.txt
deleted file mode 100644
index 5e61ed08..00000000
--- a/help/mitropi1.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Tropica.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 32.4C
-\tab;Atmosphere: helium, oxygen
-\tab;Wind: 1.2 mps
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: explosive
-\tab; - Type: unknown
-\tab;Detected: unidentified organisms
-\tab; - Danger: ?
-\n;
diff --git a/help/mitropi3.txt b/help/mitropi3.txt
deleted file mode 100644
index 6e842730..00000000
--- a/help/mitropi3.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Tropica.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 29.6C
-\tab;Atmosphere: helium, oxygen
-\tab;Wind: 1.5 mps
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: isolated (blue flag)
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: giant ants
-\tab; - Danger: not immediate
-\tab;Detected: reusable derelicts
-\n;
diff --git a/help/mitropi4.txt b/help/mitropi4.txt
deleted file mode 100644
index 7b5a7c8d..00000000
--- a/help/mitropi4.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Tropica.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 32.2C
-\tab;Atmosphere: helium, oxygen
-\tab;Wind: 0.7 mps
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-\n;
diff --git a/help/mitropi5.txt b/help/mitropi5.txt
deleted file mode 100644
index afd143db..00000000
--- a/help/mitropi5.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Tropica.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 29.4C
-\tab;Atmosphere: helium, oxygen
-\tab;Wind: 0.3 mps
-\tab;Titanium ore: some
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: titanium ore
-\tab; - Requires: converter
-\tab;Detected: scattered derelicts
-\tab;Detected: black box (underwater)
-\n;
diff --git a/help/mivolca1.txt b/help/mivolca1.txt
deleted file mode 100644
index 47538393..00000000
--- a/help/mivolca1.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Volcano.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 84.6C
-\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
-\tab;Wind: 2.2 mps
-\tab;Titanium ore: everywhere
-\tab;Uranium ore: some
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: everywhere
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: reusable derelicts
-\tab;Detected: unknown organisms
-\tab; - Danger: ?
-\n;
diff --git a/help/mivolca2.txt b/help/mivolca2.txt
deleted file mode 100644
index a74dc682..00000000
--- a/help/mivolca2.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Volcano.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 53.1C
-\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
-\tab;Wind: 0.3 mps
-\tab;Titanium ore: some
-\tab;Uranium ore: little
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: everywhere
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: giant ants
-\tab; - Danger: yes, not immediate
-\tab;Detected: unknown flying organisms
-\tab; - Danger: yes, immediate
-\n;
diff --git a/help/mivolca3.txt b/help/mivolca3.txt
deleted file mode 100644
index 7d2a3727..00000000
--- a/help/mivolca3.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Volcano.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 83.5C
-\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
-\tab;Wind: 3.4 mps
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: everywhere
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: giant ants
-\tab; - Danger: not immediate
-\n;
diff --git a/help/mivolca4.txt b/help/mivolca4.txt
deleted file mode 100644
index 29d55f0b..00000000
--- a/help/mivolca4.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Volcano.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 96.7C
-\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
-\tab;Wind: 2.8 mps
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: bot
-\tab; - Type: unknown
-\tab;Detected: giant ants
-\tab; - Danger: not immediate
-\n;
diff --git a/help/mivolca5.txt b/help/mivolca5.txt
deleted file mode 100644
index 48740fe9..00000000
--- a/help/mivolca5.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Volcano.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 96.6C
-\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
-\tab;Wind: 2.7 mps
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: giant ants
-\tab; - Danger: immediate
-\tab;Detected: giant spiders
-\tab; - Danger: not immediate
-\n;
diff --git a/help/mivolca6.txt b/help/mivolca6.txt
deleted file mode 100644
index bb090a2b..00000000
--- a/help/mivolca6.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-\b;Satellite Report
-Currently in a geo-stationary orbit of Volcano.
-\c;
-\s;-> SURFACE\c;
-\tab;Temperature: 96.6C
-\tab;Atmosphere: CO2, SO2, HCN, HS, CH4, NH3
-\tab;Wind: 2.7 mps
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> SUBSOIL\c;
-\tab;Energy source: none
-\tab;Titanium ore: none
-\tab;Uranium ore: none
-
-\s;-> ADDITIONAL INFORMATION\c;
-\tab;Detected: giant ants
-\tab; - Danger: immediate
-\n;
diff --git a/help/mlcent1.txt b/help/mlcent1.txt
deleted file mode 100644
index 46c8d9e6..00000000
--- a/help/mlcent1.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Programs dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;ServiceTower1\u mlvolca2;\n;
-o \c;\l;CollectTitanium3\u mlvolca1;\n;
-o \c;\l;KillAnt1\u mlsaari2;\n;
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
-
diff --git a/help/mlcent2.txt b/help/mlcent2.txt
deleted file mode 100644
index 46c8d9e6..00000000
--- a/help/mlcent2.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Programs dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;ServiceTower1\u mlvolca2;\n;
-o \c;\l;CollectTitanium3\u mlvolca1;\n;
-o \c;\l;KillAnt1\u mlsaari2;\n;
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
-
diff --git a/help/mlcent3.txt b/help/mlcent3.txt
deleted file mode 100644
index 46c8d9e6..00000000
--- a/help/mlcent3.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Programs dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;ServiceTower1\u mlvolca2;\n;
-o \c;\l;CollectTitanium3\u mlvolca1;\n;
-o \c;\l;KillAnt1\u mlsaari2;\n;
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
-
diff --git a/help/mlcent4.txt b/help/mlcent4.txt
deleted file mode 100644
index 46c8d9e6..00000000
--- a/help/mlcent4.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Programs dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;ServiceTower1\u mlvolca2;\n;
-o \c;\l;CollectTitanium3\u mlvolca1;\n;
-o \c;\l;KillAnt1\u mlsaari2;\n;
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
-
diff --git a/help/mlcent5.txt b/help/mlcent5.txt
deleted file mode 100644
index 46c8d9e6..00000000
--- a/help/mlcent5.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Programs dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;ServiceTower1\u mlvolca2;\n;
-o \c;\l;CollectTitanium3\u mlvolca1;\n;
-o \c;\l;KillAnt1\u mlsaari2;\n;
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
-
diff --git a/help/mlcrys1.txt b/help/mlcrys1.txt
deleted file mode 100644
index 598db67d..00000000
--- a/help/mlcrys1.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-\b;Programs dispatched by Houston
-Below is one of the programs that has been developed by our engineers.
-It instructs a \l;grabber\u object\botgr; to retrieve the nearest chunk of \l;titanium ore\u object\titanore; and place it on the \l;converter\u object\convert;.
-
-In order to execute this program, select the program \c;CollectTitanium1\n; 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;.
-\c;
-\s;extern void object::CollectTitanium1()
-\s;{
-\s; // 1) Variable definition.
-\s; \l;object\u cbot\type; item; // info. about objects
-\s;
-\s; // 2) Go to the titanium ore and grab it.
-\s; item = \l;radar\u cbot\radar;(\l;TitaniumOre\u cbot\category;);// look for titanium ore
-\s; \l;goto\u cbot\goto;(item.position); // go to the position
-\s; \l;grab\u cbot\grab;(); // grab the titanium
-\s;
-\s; // 3) Go to the converter and drop it.
-\s; item = \l;radar\u cbot\radar;(\l;Converter\u cbot\category;); // look for converter
-\s; \l;goto\u cbot\goto;(item.position); // go to the position
-\s; \l;drop\u cbot\drop;(); // drop the titanium
-\s; \l;move\u cbot\move;(-2.5); // step back 2.5 m
-\s;}
-\n;
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/mlcrys2.txt b/help/mlcrys2.txt
deleted file mode 100644
index 08d5a5e7..00000000
--- a/help/mlcrys2.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-\b;Programs dispatched by Houston
-Below is one of the programs that has been developed by our engineers.
-An upgrade on the previous program: the \l;grabber\u object\botgr;, on its way back from the converter, makes a stop, if necessary, at the \l;power station\u object\station; to recharge its power cell.
-
-This program also works on \l;winged grabbers\u object\botgj;, if the \l;derrick\u object\derrick; is on another island than the \l;converter\u object\convert;.
-\c;
-\s;extern void object::CollectTitanium2()
-\s;{
-\s; // 1) Variable definition.
-\s; \l;object\u cbot\type; item; // info. about objects
-\s;
-\s; // 2) Go to the titanium ore and grab it.
-\s; item = \l;radar\u cbot\radar;(\l;TitaniumOre\u cbot\category;);// look for titanium ore
-\s; \l;goto\u cbot\goto;(item.position); // go to the position
-\s; \l;grab\u cbot\grab;(); // grab the titanium
-\s;
-\s; // 3) Go to the converter and drop it.
-\s; item = \l;radar\u cbot\radar;(\l;Converter\u cbot\category;); // look for converter
-\s; \l;goto\u cbot\goto;(item.position); // go to the position
-\s; \l;drop\u cbot\drop;(); // drop the titanium
-\s; \l;move\u cbot\move;(-2.5); // step back 2.5 m
-\s;
-\s; // 4) If power cell half empty, recharges.
-\s; if ( energyCell.energyLevel < 0.5 )
-\s; { // if so:
-\s; item = \l;radar\u cbot\radar;(\l;PowerStation\u cbot\category;); // look for station
-\s; \l;goto\u cbot\goto;(item.position); // go there
-\s; \l;wait\u cbot\wait;(5); // wait
-\s; }
-\s;}
-\n;
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/mlcrys3.txt b/help/mlcrys3.txt
deleted file mode 100644
index 466ec639..00000000
--- a/help/mlcrys3.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;Programs dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/mlcrys4.txt b/help/mlcrys4.txt
deleted file mode 100644
index 466ec639..00000000
--- a/help/mlcrys4.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;Programs dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/mllune1.txt b/help/mllune1.txt
deleted file mode 100644
index bef3bfa0..00000000
--- a/help/mllune1.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-\b;Programs dispatched by Houston
-Following is a program that has been developed by our engineers. It allows you to switch \l;power cells\u object\power;. A charged cell needs to be placed on the ground in front of the bot.
-
-In order to execute this program, select the program \c;SwitchCell1\n; 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;.
-\c;
-\s;extern void object::SwitchCell1()
-\s;{
-\s; \l;grab\u cbot\grab;(InFront); // take the new cell in front
-\s; \l;drop\u cbot\drop;(Behind); // and drop it behind
-\s;
-\s; \l;grab\u cbot\grab;(EnergyCell); // take the cell from the bot
-\s; \l;drop\u cbot\drop;(InFront); // and drop it in front
-\s;
-\s; \l;grab\u cbot\grab;(Behind); // take the new cell
-\s; \l;drop\u cbot\drop;(EnergyCell); // and drop it on the bot
-\s;}
-\n;
diff --git a/help/mllune2.txt b/help/mllune2.txt
deleted file mode 100644
index 50609ae1..00000000
--- a/help/mllune2.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-\b;Programs dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/mllune3.txt b/help/mllune3.txt
deleted file mode 100644
index 9092b42f..00000000
--- a/help/mllune3.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-\b;Program(s) dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/mllune4.txt b/help/mllune4.txt
deleted file mode 100644
index 969d644f..00000000
--- a/help/mllune4.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-\b;Programs dispatched by Houston
-Below is a program that has been developed by our engineers. It allows you to recharge the \l;power cell\u object\power; of a bot: it goes to the closest \l;power station\u object\station;, waits 5 seconds, and comes back to the initial position.
-
-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 \c;//\n; are not part of the program, but are comments that help you to understand the program.
-\c;
-\s;extern void object::Recharge1()
-\s;{
-\s; \l;point\u cbot\type; start; // variable for initial pos.
-\s; \l;object\u cbot\type; item; // info. about power station
-\s;
-\s; start = position; // store initial position
-\s;
-\s; item = \l;radar\u cbot\radar;(\l;PowerStation\u cbot\category;); // look for station
-\s; \l;goto\u cbot\goto;(item.position); // go to the power station
-\s; \l;wait\u cbot\wait;(5); // wait 5 seconds
-\s;
-\s; \l;goto\u cbot\goto;(start); // go back to initial pos.
-\s;}
-\n;
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/mlnull.txt b/help/mlnull.txt
deleted file mode 100644
index 02d20b56..00000000
--- a/help/mlnull.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-\b;Program(s) dispatched by Houston
-No program was transmitted.
-If you feel like developing one that can be of use to the completion of this mission, be our guest but you are on your own.
diff --git a/help/mlorph1.txt b/help/mlorph1.txt
deleted file mode 100644
index 46c8d9e6..00000000
--- a/help/mlorph1.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Programs dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;ServiceTower1\u mlvolca2;\n;
-o \c;\l;CollectTitanium3\u mlvolca1;\n;
-o \c;\l;KillAnt1\u mlsaari2;\n;
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
-
diff --git a/help/mlorph2.txt b/help/mlorph2.txt
deleted file mode 100644
index 216dcf0b..00000000
--- a/help/mlorph2.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-\b;Programs dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;ServiceTower1\u mlvolca2;\n;
-o \c;\l;CollectTitanium3\u mlvolca1;\n;
-o \c;\l;KillAnt1\u mlsaari2;\n;
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/mlsaari1.txt b/help/mlsaari1.txt
deleted file mode 100644
index 466ec639..00000000
--- a/help/mlsaari1.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;Programs dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/mlsaari2.txt b/help/mlsaari2.txt
deleted file mode 100644
index 01fd8132..00000000
--- a/help/mlsaari2.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-\b;Programs dispatched by Houston
-Execute the program \c;KillAnt1\n; immediately on your \l;wheeled shooter\u object\botfr;, it will protect your west flank. Meantime you can elaborate your defense strategy.
-\c;
-\s;extern void object::KillAnt1()
-\s;{
-\s; \l;object\u cbot\type; item; // info. about object
-\s;
-\s; \l;goto\u cbot\goto;(-30, 0); // go west
-\s; \l;aim\u cbot\aim;(0); // aim straight
-\s;
-\s; \l;while\u cbot\while; ( true ) // repeat forever:
-\s; {
-\s; item = \l;radar\u cbot\radar;(\l;AlienAnt\u cbot\category;, 0, 360, 0, 40);
-\s; \l;if\u cbot\if; ( item != null ) // ant detected ?
-\s; {
-\s; \l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));
-\s; \l;fire\u cbot\fire;(0.5); // shoot 0.5 s
-\s; }
-\s; \l;wait\u cbot\wait;(1); // wait 1 second
-\s; }
-\s;}
-\n;
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
-
diff --git a/help/mlsaari3.txt b/help/mlsaari3.txt
deleted file mode 100644
index 8f97b4b6..00000000
--- a/help/mlsaari3.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-\b;Programs dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;KillAnt1\u mlsaari2;\n;
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/mlterra1.txt b/help/mlterra1.txt
deleted file mode 100644
index d86281e8..00000000
--- a/help/mlterra1.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-\b;Programs dispatched by Houston
-According to the data transmitted by the satellite, our engineers have developed two programs. The first one guides the \l;shielder bot\u object\botshld; through the narrow valley north close to the place where the key has been located. You can follow it without fearing any attack:
-\c;
-\s;extern void object::Outward()
-\s;{
-\s; \l;shield\u cbot\shield;(1,15); // activate the shield
-\s; \l;goto\u cbot\goto;(6,160); // go close to the key
-\s; \l;shield\u cbot\shield;(0,15); // deactivate the shield
-\s;}
-\n;
-The second program guides the \l;shielder bot\u object\botshld; back to the \l;spaceship\u object\base;:
-\c;
-\s;extern void object::Return()
-\s;{
-\s; \l;shield\u cbot\shield;(1,15); // activate the shield
-\s; \l;goto\u cbot\goto;(8,60); // go to the spaceship
-\s; \l;shield\u cbot\shield;(0,15); // deactivate the shield
-\s;}
-\n;
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;ServiceTower1\u mlvolca2;\n;
-o \c;\l;CollectTitanium3\u mlvolca1;\n;
-o \c;\l;KillAnt1\u mlsaari2;\n;
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/mlterra2.txt b/help/mlterra2.txt
deleted file mode 100644
index 216dcf0b..00000000
--- a/help/mlterra2.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-\b;Programs dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;ServiceTower1\u mlvolca2;\n;
-o \c;\l;CollectTitanium3\u mlvolca1;\n;
-o \c;\l;KillAnt1\u mlsaari2;\n;
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/mlterra3.txt b/help/mlterra3.txt
deleted file mode 100644
index 216dcf0b..00000000
--- a/help/mlterra3.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-\b;Programs dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;ServiceTower1\u mlvolca2;\n;
-o \c;\l;CollectTitanium3\u mlvolca1;\n;
-o \c;\l;KillAnt1\u mlsaari2;\n;
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/mlterra4.txt b/help/mlterra4.txt
deleted file mode 100644
index 3df16594..00000000
--- a/help/mlterra4.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-\b;Programs dispatched by Houston
-Below is a program that has been developed by our engineers.
-
-It instructs the \l;shielder\u object\botshld; to follow and protect the \l;phazer\u object\botphaz;.
-\c;
-\s;extern void object::FollowPhazer()
-\s;{
-\s; \l;object\u cbot\type; item; // info. about phazer
-\s; \l;point\u cbot\type; dest; // position where to go
-\s; \l;float\u cbot\type; dist; // distance to phazer
-\s;
-\s; item = \l;radar\u cbot\radar;(\l;PhazerShooter\u cbot\category;);
-\s; \l;if\u cbot\if; ( item == null )
-\s; {
-\s; \l;message\u cbot\message;("No phazer found");
-\s; \l;return\u cbot\return;; // stop the program
-\s; }
-\s; \l;shield\u cbot\shield;(1, 25); // activate the shield
-\s;
-\s; \l;while\u cbot\while; ( true ) // repeat forever
-\s; {
-\s; item = \l;radar\u cbot\radar;(PhazerShooter);// look for phazer
-\s; \l;if\u cbot\if; ( item == null ) break;
-\s;
-\s; dist = \l;distance\u cbot\dist;(item.position, position);
-\s; \l;if\u cbot\if; ( dist < 5 )
-\s; { // if closer than 5 m:
-\s; \l;wait\u cbot\wait;(1); // wait
-\s; }
-\s; \l;else\u cbot\if; // otherwise:
-\s; { // Calculate a position 5 m before the phazer
-\s; dest.x = (item.position.x-position.x)*((dist-5)/dist)+position.x;
-\s; dest.y = (item.position.y-position.y)*((dist-5)/dist)+position.y;
-\s; dest.z = (item.position.z-position.z)*((dist-5)/dist)+position.z;
-\s; \l;goto\u cbot\goto;(dest, 0, 1, 1); // and go there
-\s; }
-\s; }
-\s;}
-\n;
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;ServiceTower1\u mlvolca2;\n;
-o \c;\l;CollectTitanium3\u mlvolca1;\n;
-o \c;\l;KillAnt1\u mlsaari2;\n;
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/mltropi1.txt b/help/mltropi1.txt
deleted file mode 100644
index a8cb7d18..00000000
--- a/help/mltropi1.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-\b;Programs dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/mltropi3.txt b/help/mltropi3.txt
deleted file mode 100644
index 0893d2b8..00000000
--- a/help/mltropi3.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-\b;Programs dispatched by Houston
-We have improved the recharge program. When it arrives at the \l;power station\u object\station;, the bot does not wait exactly 5 seconds, but only until the \l;power cell\u object\power; is fully charged. After the bot is back at the initial position, it displays a message on the screen.
-\c;
-\s;extern void object::Recharge2()
-\s;{
-\s; \l;point\u cbot\type; start; // variable for initial pos.
-\s; \l;object\u cbot\type; item; // info. about power station
-\s;
-\s; start = position; // store initial position
-\s;
-\s; item = \l;radar\u cbot\radar;(\l;PowerStation\u cbot\category;); // look for station
-\s; \l;goto\u cbot\goto;(item.position); // go to the power station
-\s;
-\s; \l;while\u cbot\while; ( \l;energyCell.energyLevel\u cbot\object; < 1 )
-\s; {
-\s; \l;wait\u cbot\wait;(1); // wait until recharged
-\s; }
-\s;
-\s; \l;goto\u cbot\goto;(start); // go back to initial pos.
-\s; \l;message\u cbot\message;("Recharge completed");
-\s;}
-\n;
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;SwitchCell1\u mllune1;\n;
-o \c;\l;Recharge1\u mllune4;\n;
diff --git a/help/mltropi4.txt b/help/mltropi4.txt
deleted file mode 100644
index 9ba9bf02..00000000
--- a/help/mltropi4.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-\b;Programs dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/mltropi5.txt b/help/mltropi5.txt
deleted file mode 100644
index 9ba9bf02..00000000
--- a/help/mltropi5.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-\b;Programs dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/mlvolca1.txt b/help/mlvolca1.txt
deleted file mode 100644
index 953fe7c3..00000000
--- a/help/mlvolca1.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-\b;Programs dispatched by Houston
-As you will need lots of titanium for this mission, we have made the program \c;CollectTitanium\n; 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 \l;power station\u object\station; if necessary.
-\c;
-\s;extern void object::CollectTitanium3()
-\s;{
-\s; // 1) Variable definition.
-\s; \l;object\u cbot\type; item; // info. about objects
-\s;
-\s; \l;while\u cbot\while; (true) // repeat forever
-\s; {
-\s;
-\s; // 2) Go to the titanium ore and grab it.
-\s; item = \l;radar\u cbot\radar;(\l;TitaniumOre\u cbot\category;);// look for titanium
-\s; \l;goto\u cbot\goto;(item.position); // go to the position
-\s; \l;grab\u cbot\grab;(); // grab the titanium
-\s;
-\s; // 3) Go to the converter and drop it.
-\s; item = \l;radar\u cbot\radar;(\l;Converter\u cbot\category;); // look for converter
-\s; \l;goto\u cbot\goto;(item.position); // go to the position
-\s; \l;drop\u cbot\drop;(); // drop the titanium
-\s; \l;move\u cbot\move;(-2.5); // step back 2.5 m
-\s;
-\s; // 4) Wait until titanium converted and grab it
-\s; \l;do\u cbot\do;
-\s; {
-\s; \l;wait\u cbot\wait;(1); // wait for cube
-\s; item = \l;radar\u cbot\radar;(\l;Titanium\u cbot\category;, 0, 45, 0, 5);
-\s; }
-\s; \l;while\u cbot\while; ( item == null );
-\s; \l;goto\u cbot\goto;(item.position);
-\s; \l;grab\u cbot\grab;(); // grab it
-\s;
-\s; // 5) Drop on a free space
-\s; \l;goto\u cbot\goto;(\l;space\u cbot\space;(position)); // go to free space
-\s; \l;drop\u cbot\drop;(); // drop titanium
-\s;
-\s; // 6) If power cell half empty, recharges.
-\s; \l;if\u cbot\if; ( energyCell.energyLevel < 0.5 )
-\s; { // if so:
-\s; item = \l;radar\u cbot\radar;(\l;PowerStation\u cbot\category;);
-\s; \l;if\u cbot\if; ( item != null ) // station found ?
-\s; {
-\s; \l;goto\u cbot\goto;(item.position); // go there
-\s; \l;while\u cbot\while; ( energyCell.energyLevel < 1 )
-\s; { // until recharged:
-\s; \l;wait\u cbot\wait;(1); // wait
-\s; }
-\s; }
-\s; }
-\s; }
-\s;}
-\n;
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;KillAnt1\u mlsaari2;\n;
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
diff --git a/help/mlvolca2.txt b/help/mlvolca2.txt
deleted file mode 100644
index 89e2125f..00000000
--- a/help/mlvolca2.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-\b;Programs dispatched by Houston
-We have developed a program that takes care of recharging the power cell of a \l;defense tower\u object\tower;:
-
-1) Go to a \l;defense tower\u object\tower;.
-2) Wait until the \l;power cell\u object\power; is 80% empty.
-3) Grab the \l;power cell\u object\power; and recharge it on a \l;power station\u object\station;.
-4) Put it back on the \l;defense tower\u object\tower;.
-
-Build the \l;power station\u object\station; 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.
-\c;
-\s;extern void object::ServiceTower1()
-\s;{
-\s; \l;object\u cbot\object; tower; // info. about tower
-\s; \l;object\u cbot\object; station; // info. about station
-\s;
-\s; // 1) go to the defense tower
-\s; tower = \l;radar\u cbot\radar;(DefenseTower); // look for tower
-\s; \l;goto\u cbot\goto;(tower.position); // go there
-\s;
-\s; \l;while\u cbot\while; ( true ) // repeat forever
-\s; {
-\s; // 2) wait until power cell is empty
-\s; \l;while\u cbot\while; ( tower.energyCell.energyLevel > 0.2 )
-\s; {
-\s; \l;wait\u cbot\wait;(2);
-\s; }
-\s; \l;grab\u cbot\grab;(); // grab the power cell
-\s;
-\s; // 3) go to the power station to recharge
-\s; station = \l;radar\u cbot\radar;(PowerStation);
-\s; \l;goto\u cbot\goto;(station.position); // go there
-\s; \l;while\u cbot\while; ( load.energyLevel < 1 )
-\s; {
-\s; \l;wait\u cbot\wait;(1); // wait until recharged
-\s; }
-\s;
-\s; // 4) go back to defense tower
-\s; \l;goto\u cbot\goto;(tower.position); // go to tower
-\s; \l;drop\u cbot\drop;(); // drop the power cell
-\s; }
-\s;}
-\n;
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;CollectTitanium3\u mlvolca1;\n;
-o \c;\l;KillAnt1\u mlsaari2;\n;
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
-
diff --git a/help/mlvolca3.txt b/help/mlvolca3.txt
deleted file mode 100644
index 46c8d9e6..00000000
--- a/help/mlvolca3.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Programs dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;ServiceTower1\u mlvolca2;\n;
-o \c;\l;CollectTitanium3\u mlvolca1;\n;
-o \c;\l;KillAnt1\u mlsaari2;\n;
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
-
diff --git a/help/mlvolca4.txt b/help/mlvolca4.txt
deleted file mode 100644
index 46c8d9e6..00000000
--- a/help/mlvolca4.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Programs dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;ServiceTower1\u mlvolca2;\n;
-o \c;\l;CollectTitanium3\u mlvolca1;\n;
-o \c;\l;KillAnt1\u mlsaari2;\n;
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
-
diff --git a/help/mlvolca5.txt b/help/mlvolca5.txt
deleted file mode 100644
index 46c8d9e6..00000000
--- a/help/mlvolca5.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Programs dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;ServiceTower1\u mlvolca2;\n;
-o \c;\l;CollectTitanium3\u mlvolca1;\n;
-o \c;\l;KillAnt1\u mlsaari2;\n;
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
-
diff --git a/help/mlvolca6.txt b/help/mlvolca6.txt
deleted file mode 100644
index 46c8d9e6..00000000
--- a/help/mlvolca6.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Programs dispatched by Houston
-We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
-
-\b;Archives
-Index of the programs dispatched in former missions:
-
-o \c;\l;ServiceTower1\u mlvolca2;\n;
-o \c;\l;CollectTitanium3\u mlvolca1;\n;
-o \c;\l;KillAnt1\u mlsaari2;\n;
-o \c;\l;CollectTitanium2\u mlcrys2;\n;
-o \c;\l;CollectTitanium1\u mlcrys1;\n;
-o \c;\l;Recharge2\u mltropi3;\n;
-o \c;\l;Recharge1\u mllune4;\n;
-o \c;\l;SwitchCell1\u mllune1;\n;
-
diff --git a/help/mscent1.txt b/help/mscent1.txt
deleted file mode 100644
index 5e3f11c5..00000000
--- a/help/mscent1.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;Walkthrough
-You'll find some useful items in a small valley northeast.
-o A \l;recycler\u object\botrecy; that will allow you to make your first \l;titanium cube\u object\titan;.
-o A \l;legged grabber\u object\botgs; that is very good at climbing steep slopes.
-o A nearly charged \l;nuclear power cell\u object\atomic;.
-
-1) Power the \l;legged grabber\u object\botgs; with the \l;nuclear power cell\u object\atomic;, and use it to carry a \l;titanium cube\u object\titan; to the \l;spaceship\u object\base;. Choose the direct way over the mountains.
-
-2) Use the titanium to build a \l;converter\u object\convert;. Execute the program \c;CollectTitanium3\n; on the \l;legged grabber\u object\botgs; and you will have plenty of titanium.
-
-3) Stop the program, and use the grabber to collect some \l;uranium ore\u object\uranore; in a second small valley to the east. Again, do not take the way of the valley which is crawling with ants, but take the direct way over the mountains.
-
-4) Build a \l;winged shooter\u object\botfj; and power it with a \l;nuclear power cell\u object\atomic;. If you take the pass south-east, you will arrive immediately at the ant nest. Kill all the ants, and bring back a ball of \l;organic matter\u object\bullet; to the \l;spaceship\u object\base;.
-
-5) Build an \l;auto-lab\u object\labo;, drop the \l;organic matter\u object\bullet; on the platform and click the \button 110; button in order to develop the blueprints for the orgaShooter cannon.
-
-6) Build a \l;legged orga shooter\u object\botos;, bring it aboard and take off.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mscent2.txt b/help/mscent2.txt
deleted file mode 100644
index 1b930ee2..00000000
--- a/help/mscent2.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-\b;Walkthrough
-Drive the \l;legged orga shooter\u object\botos; to each of the pads in front of the targets, and hit all targets that you see with only one burst, moving the mouse during the burst. With 4 bursts, you must be able to hit all the targets.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mscent3.txt b/help/mscent3.txt
deleted file mode 100644
index 859ce009..00000000
--- a/help/mscent3.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;Walkthrough
-In order to kill all ants and spiders in this large and mountainous region, you will need a \l;winged orga shooter\u object\botfj; powered with \l;nuclear power cells\u object\atomic;. In a small valley to the southeast you will find everything you need: \l;titanium cubes\u object\titanium;, \l;power cells\u object\power; and even a \l;winged grabber\u object\botgj; in working condition.
-
-1) Build a \l;radar\u object\radar; and a \l;winged shooter\u object\botfj; and power it. Kill the ant that is watching over the \l;uranium ore\u object\uranore; further north.
-
-2) Use the abandoned \l;nuclear plant\u object\nuclear; on the hill above and the \l;winged grabber\u object\botgj; to produce several \l;nuclear power cells\u object\atomic;, and use one to power the \l;winged shooter\u object\botfj;.
-
-3) Wipe out all insects from the region. There is one isolated ant in the northwest hidden in a hole: an approach from the west thorough the deep valley will make it easier to hit.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mscent4.txt b/help/mscent4.txt
deleted file mode 100644
index b6934075..00000000
--- a/help/mscent4.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-\b;Walkthrough
-1) Search the area for \l;titanium\u object\titan;.
-2) Build a \l;converter\u object\convert;.
-3) Build a \l;research center\u object\research;.
-4) Run the \button 66;.
-5) Manufacture a \l;thumper\u object\bottump;.
-6) Position the thumper close to the derelict spaceship and "thump" the ground.
-7) Quickly retrieve the \l;black box\u object\bbox; and bring it back aboard your \l;spaceship\u object\base;.
-8) Bring the thumper along and take off.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mscent5.txt b/help/mscent5.txt
deleted file mode 100644
index df78b58a..00000000
--- a/help/mscent5.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-\b;Walkthrough
-1) Thump the deck of the \l;spaceship\u object\base;. You don't need to move the \l;thumper\u object\bottump; anywhere.
-2) Locate the \l;orga shooter\u object\botoj; approximately 70 meters to the east.
-3) Terminate the \l;ants\u object\ant; while they are still on their backs.
-4) Take off.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mscrys1.txt b/help/mscrys1.txt
deleted file mode 100644
index 8d59342e..00000000
--- a/help/mscrys1.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-\b;Walkthrough
-1) Build a \l;bot factory\u object\factory;.
-2) Produce a \l;winged grabber\u object\botgj;.
-3) Carry a \l;titanium cube\u object\titan; to the highest point.
-4) Build a \l;radar\u object\radar; on the spot.
-5) Build a \l;research center\u object\research; next to the spaceship.
-6) Initiate the \button 68;.
-7) Build the \l;defense tower\u object\tower; next to the radar.
-8) When all the worms are destroyed, you can go back to your ship and take off.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mscrys2.txt b/help/mscrys2.txt
deleted file mode 100644
index 08d2e272..00000000
--- a/help/mscrys2.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-\b;Walkthrough
-1) Build a \l;bot factory\u object\factory;.
-2) Produce a \l;winged sniffer\u object\botsj;.
-3) Sniff the ground near the large crystals until you get a \l;red cross\u object\stonspot;.
-4) Build a \l;derrick\u object\derrick; near the red cross.
-5) Build a \l;converter\u object\convert;.
-
-The pairing of a derrick and a converter allows for an unlimited supply of \l;titanium\u object\titan;. In order to leave this task to a bot, execute the program \c;CollectTitanium2\n;.
-
-6) Sniff the area at the foot of the spaceship. A \l;green cross\u object\enerspot; means you can build a \l;power station\u object\station; on the spot.
-7) Build a \l;radar\u object\radar;.
-8) Produce a \l;winged shooter\u object\botfj;.
-9) Eliminate all worms.
-10) Go back to your ship and take off.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mscrys3.txt b/help/mscrys3.txt
deleted file mode 100644
index fbafc4ff..00000000
--- a/help/mscrys3.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-\b;Walkthrough
-If you lose the bot, it will drop the black box somewhere southwest of your spaceship on a region surrounded by crystals.
-
-In case your power runs out before you can bring the black box back, use the second grabber left on the spaceship.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mscrys4.txt b/help/mscrys4.txt
deleted file mode 100644
index 4f7b2bd0..00000000
--- a/help/mscrys4.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-\b;Walkthrough
-Somewhere northeast in the valley itself you should come across a fully functional \l;power station\u object\station;. Northwest you will find several \l;power cells\u object\power;.
-
-A few shooters in working condition have been abandoned in and around the same area in the valley; use them to shoot all the ants. With the \l;winged grabber\u object\botgj;, you can then retrieve the \l;black box\u object\bbox; that is located behind the derelict spaceship and take off.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mslune1.txt b/help/mslune1.txt
deleted file mode 100644
index d0fb5e5f..00000000
--- a/help/mslune1.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Walkthrough
-In order to build the \l;research center\u object\research;, drop a \l;titanium cube\u object\titan; on a flat surface not too far from the spaceship. \l;You\u object\human; can carry the cube yourself, or use the available \l;grabber\u object\botgr;.
-
-If you used the bot, move it away from the cube in order not to interfere with the construction. To shift the selection from the bot to yourself (remember that only you can build), use \key;\key human;\norm;.
-
-Position yourself close to the \l;titanium cube\u object\titan; and build a \l;research center\u object\research; \button 163;. Drop a \l;power cell\u object\power; on the \l;research center\u object\research;, select the building and click the \button 65; symbol in order to perform the .
-
-Build a \l;bot factory\u object\factory; in the same way, and drop a \l;titanium cube\u object\titan; in the center. Build a \l;winged grabber\u object\botgj; with the \button 139; symbol, and power it with a \l;power cell\u object\power;.
-
-It may be preferable to scout the area yourself in order to save power. You'll find the chunks of titanium ore at the bottom of a few craters located north of the spaceship. A \l;flag\u object\flag; may help you pin down the spot faster on subsequent trips.
-
-Collect 4 chunks of \l;titanium ore\u object\titanore; and bring them back aboard your \l;spaceship\u object\base;. Take the \l;winged grabber\u object\botgj; and the \l;wheeled grabber\u object\botgr; along with you and take off \button 28;.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mslune2.txt b/help/mslune2.txt
deleted file mode 100644
index 91832044..00000000
--- a/help/mslune2.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-\b;Walkthrough
-If your bot suddenly explodes, this means that you have hit the steel structures too often. Drive more slowly, so your bot will not be damaged even if you bump into an obstacle.
-
-If you can not take off after you have completed the training, this means that you did not pass through all the targets. Go round one more time, and pass through the targets where the cross is left in the center.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mslune3.txt b/help/mslune3.txt
deleted file mode 100644
index 91832044..00000000
--- a/help/mslune3.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-\b;Walkthrough
-If your bot suddenly explodes, this means that you have hit the steel structures too often. Drive more slowly, so your bot will not be damaged even if you bump into an obstacle.
-
-If you can not take off after you have completed the training, this means that you did not pass through all the targets. Go round one more time, and pass through the targets where the cross is left in the center.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mslune4.txt b/help/mslune4.txt
deleted file mode 100644
index f77455ff..00000000
--- a/help/mslune4.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-\b;Walkthrough
-1) Build a converter \button 162; with the only titanium cube available.
-
-2) Deposit one chunk of titanium ore at a time at the center of the platform and let the converter do the rest.
-
-3) Build a power station \button 164; with one of the newly converted titanium cubes.
-
-4) If you don't feel like looking for the black box yourself, build a radar \button 168; and the box will appear on your mini map somewhere north of your present location, at the bottom of a crater, next to a few derelict spacecraft and debris from the previous expedition.
-
-5) Place the grabbers at the center of the power station platform to recharge them. The cells should still have a little power left in them, just enough to radio-control the bots onto the platform.
-
-6) Radio-control the winged grabber to the black box and back.
-
-7) Gather both grabbers and the black box onto the spaceship platform and climb on board yourself.
-
-8) Take off.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/msorph1.txt b/help/msorph1.txt
deleted file mode 100644
index 3b4cc8ab..00000000
--- a/help/msorph1.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Walkthrough
-1) Quickly build a \l;power captor\u object\captor; near the blue flag.
-All subsequent buildings should be erected within the \button 41; covered by the power captor.
-2) Carry some empty \l;power cells\u object\power; under the power captor. When lightning strikes, they will be recharged.
-3) Build a \l;derrick\u object\derrick;.
-4) Build a \l;converter\u object\convert;.
-5) Execute the program \c;CollectTitanium3\n; in order to produce \l;titanium\u object\titan;.
-6) Build a \l;bot factory\u object\factory;.
-7) Manufacture a \l;winged orga shooter\u object\botoj;.
-8) Build a \l;radar\u object\radar;.
-9) Locate and terminate all \l;ants\u object\ant;.
-10) Return to your \l;spaceship\u object\base; and take off.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/msorph2.txt b/help/msorph2.txt
deleted file mode 100644
index 6189a737..00000000
--- a/help/msorph2.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-\b;Walkthrough
-You will find a \l;radar\u object\radar;, a \l;power captor\u object\captor;, a \l;power cell\u object\power; and a \l;winged orga shooter\u object\botoj; in the valley south of the spaceship. This will allow you to kill the ants close to the spaceship and to locate the \l;black box\u object\bbox; in the north next to the remains of the first expedition spaceship.
-
-Build a succession of \l;power captors\u object\captor; along the natural path offered by the northern mountain peaks. 5 or 6 captors should offer sufficient protection against lightning.
-
-Bring the black box back aboard your \l;spaceship\u object\base; and take off.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mssaari1.txt b/help/mssaari1.txt
deleted file mode 100644
index cbc11d4a..00000000
--- a/help/mssaari1.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-\b;Walkthrough
-1) You'll find a \l;titanium cube\u object\titan; left in a smashed up bot factory. Use it to build a \l;power station\u object\station;.
-
-2) The \l;recycler\u object\botrecy; is designed to convert derelicts back into usable titanium cubes.
-
-3) Build both a \l;repair center\u object\repair; and a \l;radar\u object\radar;.
-
-4) Recharge one of the \l;power cells\u object\power; available and power a \l;winged shooter\u object\botfj;.
-
-5) Eliminate all \l;ants\u object\ant;. Note that you should recharge and repair the shooter regularly. Check your levels.
-
-6) Fully charge the \l;grabber\u object\botgr;'s power cell, then radio-control it to the summit...
- a) Access the first level by ramp on west;
- b) On first level travel east to find second ramp;
- c) On second level travel south to find third ramp;
- d) On third level travel west for access to summit;
-...then, with the chunk, straight back to the spaceship by the most direct route so as to save the remaining power.
-
-7) Climb aboard the ship yourself and take off.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mssaari2.txt b/help/mssaari2.txt
deleted file mode 100644
index af50d191..00000000
--- a/help/mssaari2.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-\b;Walkthrough
-Execute immediately the program \c;KillAnt1\n; on the \l;wheeled shooter\u object\botfr;; it will take care of the first wave of attack coming from west.
-
-Then build two \l;defense towers\u object\tower; one in the north of the \l;spaceship\u object\base;, the other one in the south (you have to do this VERY quickly). While \l;you\u object\human; are building, use the \l;grabber\u object\botgr; to get a \l;power cell\u object\power;.
-
-As soon as the successive waves of attack, made up of about fifteen \l;ants\u object\ant;, are gone, you have time to take care of the ants that did not attack. Build a \l;radar\u object\radar; in order to spot them, and a \l;converter\u object\convert;, a \l;bot factory\u object\factory;, a \l;power station\u object\station; and a \l;winged shooter\u object\botfj; in order to get rid of them...
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mssaari3.txt b/help/mssaari3.txt
deleted file mode 100644
index 8048a14c..00000000
--- a/help/mssaari3.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-\b;Walkthrough
-You should build a \l;radar\u object\radar; first.
-
-The \l;ants\u object\ant; appear to be running away from you. Try to circle around each one of them until they find themselves trapped between you and a \l;mine\u object\mine;. They'll opt for the mine and blow themselves up.
-
-Then bring the \l;black box\u object\bbox; aboard your ship. It is next to the derelict spaceship.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/msterra1.txt b/help/msterra1.txt
deleted file mode 100644
index f8db803d..00000000
--- a/help/msterra1.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-\b;Walkthrough
-Unfortunately no walkthrough has been provided for this mission.
-You are on your own...
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/msterra2.txt b/help/msterra2.txt
deleted file mode 100644
index f8db803d..00000000
--- a/help/msterra2.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-\b;Walkthrough
-Unfortunately no walkthrough has been provided for this mission.
-You are on your own...
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/msterra3.txt b/help/msterra3.txt
deleted file mode 100644
index f8db803d..00000000
--- a/help/msterra3.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-\b;Walkthrough
-Unfortunately no walkthrough has been provided for this mission.
-You are on your own...
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/msterra4.txt b/help/msterra4.txt
deleted file mode 100644
index f8db803d..00000000
--- a/help/msterra4.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-\b;Walkthrough
-Unfortunately no walkthrough has been provided for this mission.
-You are on your own...
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/msterre1.txt b/help/msterre1.txt
deleted file mode 100644
index 1868764e..00000000
--- a/help/msterre1.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;Walkthrough
-To find the survival kit from your starting point :
-
-1) Follow the road heading south.
-2) Turn east (left) at the first crossroad.
-3) The survival kit is lying between the northern wall of Mission Control and the first tree on the right hand side of the road.
-
-Just position yourself close to it to successfully complete the drill.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/msterre2.txt b/help/msterre2.txt
deleted file mode 100644
index 12fd2a02..00000000
--- a/help/msterre2.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;Walkthrough
-Walk down the street that runs beside \l;Mission Control\u object\Huston;. You will find a \l;titanium cube\u object\titan; on the left hand side of the road, right after the \l;grabber bot\u object\botgr;.
-
-1) Face the cube. Click on the first button at the bottom left of your screen: \button 163; .
-2) Walk further down the road. The second cube is on the right past the four green \l;power cells\u object\power;.
-3) Repeat 1) but click on the second button: \button 160; .
-
-As soon as both buildings are completed, the mission is at an end.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/msterre3.txt b/help/msterre3.txt
deleted file mode 100644
index 29825b74..00000000
--- a/help/msterre3.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-\b;Walkthrough
-Before taking off, you need to bring the following aboard your spaceship:
-
-1) \l;Black box\u object\bbox;.
-2) \l;Wheeled\u object\botgr; and \l;tracked\u object\botgc; grabbers.
-3) \l;Yourself\u object\human;.
-
-Here is a detailed breakdown of the operations:
-1) Power the \l;research center\u object\research; with one of the green \l;power cells\u object\power;.
-2) Activate the \l;research center\u object\research; then click on the \button 64; button.
-3) Place a \l;titanium cube\u object\titan; inside the \l;bot factory\u object\factory;.
-4) Step back out and activate the \l;bot factory\u object\factory;.
-5) Click on the \button 138; button.
-6) Power the \l;tracked grabber\u object\botgc; with a brand new \l;power cell\u object\power;.
-7) Radio-control the \l;tracked grabber\u object\botgc; to the top of the mountain in the south-west.
-8) Bring the \l;black box\u object\bbox; back aboard your \l;spaceship\u object\base;.
-9) Radio-control both the \l;tracked\u object\botgc; and the \l;wheeled\u object\botgr; grabbers onto the platform.
-10) Climb aboard the \l;spaceship\u object\base; yourself.
-11) Take off!
-
-In order to take off, select the \l;spaceship\u object\base;, provided that it is visible, by clicking on it. If it is not visible, you need to click one of the buttons in the upper left corner of your screen. The blue triangle \button 130; allows you to alternate between symbols for bots and symbols for buildings. Click once to shift to the list. A \button 171; symbol will now appear. Click on the button to select it.
-
-Once the spaceship is selected, click on the larger \button 28; button in the lower center of your screen. If the objects mentioned above as well as yourself are indeed standing on deck, takeoff will take place.
-
-No object or bot should hinder the closing of the eight large panel doors.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mstropi1.txt b/help/mstropi1.txt
deleted file mode 100644
index 1410b56d..00000000
--- a/help/mstropi1.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-\b;Walkthrough
-Follow the path shown on your mini map. The explosive device lies at the bottom of a small valley populated by giant ants. They will probably attack you and you will probably lose consciousness. There is nothing you can really do about this.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mstropi2.txt b/help/mstropi2.txt
deleted file mode 100644
index 3355aac0..00000000
--- a/help/mstropi2.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-\b;Walkthrough
-Here is a breakdown of the steps to follow to get back to the spaceship.
-
-1) Go round the lake, and head towards the green fluorescent globe. This globe is generated by a gravi-plant that will make flight impossible inside the globe.
-
-2) Follow the left flank of the valley, passing a pond on your right, and climb the small slope. On top you will be facing some giant ants: run as fast as you can towards another gravi-plant a little further on your right, your wounds will have time to heal later.
-
-3) Use your reactor to fly past the lake before the gravi-plant on your right.
-
-4) When you leave the gravi-plant, keep on the left-hand side of the lake, and follow the shore until you reach a peninsula adorned with fern-like plants.
-
-5) Do some island-hopping across the larger lake. Aim for the trees in order to avoid falling into the water on the other side of the island. The last island is 50 cm under water but you can still land on it without having your head submerged.
-
-6) The path continues to the left. A giant ant is waiting for you there, but it will not do you much harm.
-
-7) Give your reactor enough time to cool down, then fly across the small lake. Try to land as high on the right as you can, this is the best way not to fall into the second lake.
-
-8) Cross the second lake, get aboard the spaceship, and take off.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mstropi3.txt b/help/mstropi3.txt
deleted file mode 100644
index 692633b2..00000000
--- a/help/mstropi3.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-\b;Walkthrough
-1) There is a \l;titanium cube\u object\titan; west of your present location, near the blue flag/blue cross on your mini map. You don't need to move the cube, just build a \l;power station\u object\station; right there on the spot.
-
-2) With the titanium cubes on the spaceship, build a \l;research center\u object\research; and execute the \button 67;.
-
-3) Build a \l;bot factory\u object\factory; and a \l;winged shooter\u object\botfj;. If this bot is destroyed by enemy fire, you will find some additional \l;titanium cubes\u object\titan; in a small foggy valley northwest of the spaceship. You can bring them back with the \l;winged grabber\u object\botgj;\n;.
-
-4) Build a \l;radar station\u object\radar; in order to see the location of the ants on the mini-map, and let the hunt begin. Be careful not to run out of energy and not to overheat the reactor of a bot while over water. If a bot falls into deep water, it explodes.
-
-5) Once you have killed all the ants, get on board and take off.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mstropi4.txt b/help/mstropi4.txt
deleted file mode 100644
index 29418a17..00000000
--- a/help/mstropi4.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-\b;Walkthrough
-If your bot suddenly explodes, this means that you have hit the steel structures too often. Drive more slowly, so your bot will not be damaged even if you bump into an obstacle.
-
-If you can not take off after you completed the training, this means that you have not hit all the targets. Go round one more time, and check if any of the explosive devices or crosses in the center of the steel structures are left.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/mstropi5.txt b/help/mstropi5.txt
deleted file mode 100644
index 8b206ea1..00000000
--- a/help/mstropi5.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Walkthrough
-1) Locate the \l;black box\u object\bbox; on your own. You can try to spot it from above, using your jet engine, or dive into the water.
-2) Build a \l;converter\u object\convert; near the chunks of titanium ore. You'll find them in the vicinity of the spaceship to the east.
-3) Produce two \l;cubes\u object\titan;.
-4) Build a \l;bot factory\u object\factory; not too far from the black box.
-5) Manufacture a \l;subber\u object\botsub;.
-6) Bring the black box back on board.
-7) Take off.
-
-The black box is lying at the bottom of a small lake, northeast of the spaceship.
-
-You can build the bot factory right beside the lake, on the south bank.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/msvolca1.txt b/help/msvolca1.txt
deleted file mode 100644
index 57aa1f43..00000000
--- a/help/msvolca1.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Walkthrough
-1) Start by recharging a \l;regular power cell\u object\power; and power the \l;research center\u object\research;. Use it to research the technology for the building of a \l;nuclear plant\u object\nuclear; \button 170;.
-
-2) Produce a \l;wheeled grabber\u object\botgr;.
-
-3) Find some \l;uranium ore\u object\uranore; northwest of your position. The nuclear plant will then transform it into \l;nuclear power cells\u object\atomic; of a longer duration.
-
-4) Power a \l;wheeled shooter\u object\botfr; with one of your new nuclear cells. Dispatch it to kill all intruding \l;spiders\u object\spider; along the way.
-
-5) A \l;radar\u object\radar; is optional but could turn out useful to mark the position of the spiders on your mini map.
-
-6) A wheeled grabber should be part of the expedition. It will both clear the way cluttered with \l;titanium ore\u object\titanore; and bring the \l;explosive device\u object\tnt; back.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/msvolca2.txt b/help/msvolca2.txt
deleted file mode 100644
index 3fe03203..00000000
--- a/help/msvolca2.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-\b;Walkthrough
-1) Quickly build a \l;defense tower\u object\tower; north of your spaceship. After you \l;powered\u object\power; it, execute the program \c;ServiceTower1\n; on one of the \l;grabbers\u object\botgr; which will recharge the power cell when it is empty. Place another power cell 2 m north of the tower as a first target for the attacking wasps.
-
-2) Build a \l;power station\u object\station; close to the defense tower.
-
-3) Build a \l;converter\u object\convert; south of the spaceship and execute the program \c;CollectTitanium3\n; on the second \l;grabber\u object\botgr; in order to produce some \l;titanium\u object\titan;.
-
-4) Build a \l;bot factory\u object\factory; and a \l;winged shooter\u object\botfj; to eliminate the \l;ants\u object\ant;.
-
-5) Use a \l;winged grabber\u object\botgj; to bring back some \l;organic matter\u object\bullet; from the island in the middle of the lava lake.
-
-6) Build an \l;autolab\u object\labo;, drop the \l;organic matter\u object\bullet; on the platform and click the button \button 109; in order to develop the blueprints for legged bots.
-
-7) As soon as the organic matter has been analyzed, produce a \l;legged grabber\u object\botgs; and bring it aboard the spaceship.
-
-8) Take off.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/msvolca3.txt b/help/msvolca3.txt
deleted file mode 100644
index 3bd14215..00000000
--- a/help/msvolca3.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;Walkthrough
-1) Power a \l;legged shooter\u object\botfs;. There is even a \l;nuclear cell\u object\atomic; left behind the \l;bot factory\u object\factory;.
-
-2) Climb the northern cliff and kill a few \l;ants\u object\ant;. The best access is from the east.
-
-3) Keep going until all ants are out of the way.
-
-4) Climb the northern cliff with a \l;legged grabber\u object\botgs; and retrieve the \l;black box\u object\bbox; that you will find in the derelict bot factory.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/msvolca4.txt b/help/msvolca4.txt
deleted file mode 100644
index 3005a0db..00000000
--- a/help/msvolca4.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-\b;Walkthrough
-A gap in the northwest mountain leads the way to a lake of boiling lava.
-
-Just hop from one rocky island to the next. Keep checking your reactor, let it cool off completely before taking off again. The mini map will help you to figure out where the closest island is.
-
-In case of an ant attack, don't worry too much. Just take the time for your reactor to cool off, without lingering longer than necessary, and your built-in shield should do its duty. However we advise you to save the game from time to time (key Esc, and "Save"), so you will not have to start from the beginning in case of a landing in the lava lake.
-
-The bot is at the westernmost point on your map though you'll have to take a roundabout route to reach it. A \l;nuclear power cell\u object\atomic; lies nearby.
-
-You don't have to radio-control the bot back to the spaceship by the same way you came because its reactor has a greater range than yours. One or two stops may still be needed and watch out for those ants.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/msvolca5.txt b/help/msvolca5.txt
deleted file mode 100644
index b8782189..00000000
--- a/help/msvolca5.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;Walkthrough
-Everything is blowing up around you. You need to leave the old basecamp as quickly as possible. Just retreat the same way you came.
-
-\l;Ants\u object\ant; are fairly easy to avoid. If you're badly hit, find a quiet spot and wait until your shield has regenerated.
-
-\l;Spiders\u object\spider; are a bit tougher but also more stupid. As soon as they see you, they burst their abdomen, dying in the process. If one fragment hits you, you'll die too. One risky but efficient method to rid yourself of a spider consists in moving dangerously close and, when the spider's abdomen starts inflating, swiftly fly backwards to safety.
-
-As soon as you have reached a quiet island, you can use the \l;winged orga shooter\u object\botoj; to clear your way of hostile insects. Be careful not to lose it, otherwise the whole mission would be in vain.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/msvolca6.txt b/help/msvolca6.txt
deleted file mode 100644
index e3a7ef6f..00000000
--- a/help/msvolca6.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-\b;Walkthrough
-It is safer for \l;you\u object\human; to stay on the \l;spaceship\u object\base;. You may get hit a few times but not fatally.
-
-Put your new \l;winged orga shooter\u object\botoj; to good use and don't waste any time. First shoot the ants on your right, then turn clockwise around the spaceship, flying at low altitude.
-
-If you can not do it this way, place the \l;winged orga shooter\u object\botoj; on a safe place north of the spaceship, then save yourself. You can then take your time to shoot the ants one after another; they can do no harm to the spaceship and the black box.
-
-\t;See also
-\l;Controls\u command;
diff --git a/help/navig.txt b/help/navig.txt
deleted file mode 100644
index 71700d07..00000000
--- a/help/navig.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-\b;Navigation
-The three buttons on the upper left-hand corner of the screen allow you to navigate in the different texts of the help file:
-
-\button 30; Home
-Get back to the home page, i.e. the first page that was displayed, for example when you hit the \key;\key help;\norm; or \key;\key prog;\norm; key.
-
-\button 55; Previous
-Get back to the previous page, i.e. the page that was displayed before you clicked on a link.
-
-\button 48; Next
-Get again to the next page, after you used the "Home" or "Previous" button.
-
-\t;Remark
-When a button is gray, this means that it can not be used at this precise moment. For example, when you are in the home page, the "Home" button is gray, because it does not make sense to use it.
-
-This remark is valid for all buttons in COLOBOT.
-
-\t;Text scrolling
-If your mouse is equipped with a wheel, you can use it to scroll the text up and down. Otherwise, use the arrow keys and the scroll bar on the right-hand side of the screen.
-
-\t;Font size
-The cursor on the upper side of the screen allows you to change the font size of the text.
diff --git a/help/object/ant.txt b/help/object/ant.txt
deleted file mode 100644
index f1335766..00000000
--- a/help/object/ant.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;Ant
-\image ant 8 8;
-Ants shoot tiny corrosive balls that eventually gnaw into the protective shielding of bots and buildings, causing them to explode.
-
-\l;You\u object\human; can resist their attack much longer than most buildings and bots, and your protective shield will be restored as your wounds heal. However, if you stay too long in their range or if there are too many of them, your life is in great danger.
-
-\t;Object \l;Category\u cbot\category;
-\c;AlienAnt\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/atomic.txt b/help/object/atomic.txt
deleted file mode 100644
index 8ce2801b..00000000
--- a/help/object/atomic.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Nuclear Power Cell
-\image atomic 4 4;
-A nuclear power cell supplies the bots and some buildings with energy.
-Its capacity is 100 times that of a \l;regular power cell\u object\power;.
-
-Nuclear power cells cannot be recharged or recycled. A \l;nuclear plant\u object\nuclear; and some \l;uranium ore\u object\uranore; is needed to produce a new and fully charged nuclear power cell.
-
-\t;Transport
-All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
-
-\t;Object \l;Category\u cbot\category;
-\c;NuclearCell\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/barrier.txt b/help/object/barrier.txt
deleted file mode 100644
index d16e296f..00000000
--- a/help/object/barrier.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-\b;Barrier
-The barrier is nothing more than an obstacle used in the exercises.
-
-\t;Object \l;Category\u cbot\category;
-\c;Barrier\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/base.txt b/help/object/base.txt
deleted file mode 100644
index 227c6861..00000000
--- a/help/object/base.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;\button 171; Spaceship
-\image base 8 8;
-\l;Your\u object\human; means of transportation from one planet to the next, the only way to travel safely across the cosmos and accomplish your missions.
-
-In addition to yourself, the spaceship can carry bots and raw materials. Whenever a mission is completed, you must select the spaceship, then click on the command \button 28;.
-
-\t;Object \l;Category\u cbot\category;
-\c;SpaceShip\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/bbox.txt b/help/object/bbox.txt
deleted file mode 100644
index e5468f4d..00000000
--- a/help/object/bbox.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-\b;Black Box
-\image bbox 4 4;
-A black box is actually orange so as to be easier to identify and locate. Each \l;spaceship\u object\base; is equipped with a black box that records and stores information about the flight.
-
-A black box can also be used to leave important information. On every planet the first expedition has left a black box containing the coordinates of the planet it was heading towards next.
-
-\t;Transport
-All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
-
-\t;Object \l;Category\u cbot\category;
-\c;BlackBox\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/botfc.txt b/help/object/botfc.txt
deleted file mode 100644
index ba61d999..00000000
--- a/help/object/botfc.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;\button 144; Tracked Shooter
-\image botfc 8 8;
-Tracked bot equipped with a fireball cannon.
-
-The fireball cannon is an efficient weapon against most kinds of \l;enemies\u object\mother;. Use it sparingly though for it requires large amounts of energy. A \l;regular power cell\u object\power; will only allow you to shoot 4 fireball bursts.
-
-Tip : it is possible to move the mouse while shooting, so as to sweep a larger area.
-
-Tracked bots can ascend steep inclinations but they are quite slow and use a lot of energy. On flat ground for short distances, a \l;wheeled shooter\u object\botfr; is a better option. When it is possible to build \l;winged bots\u object\botfj;, these represent the best solution for long distances.
-
-\t;Programming
-To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-To program the fireball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;TrackedShooter\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/botfj.txt b/help/object/botfj.txt
deleted file mode 100644
index 188b7f2c..00000000
--- a/help/object/botfj.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-\b;\button 145; Winged Shooter
-\image botfj 8 8;
-Jet propelled flying bot equipped with a fireball cannon.
-
-The fireball cannon is an efficient weapon against most kinds of \l;enemies\u object\mother;. Use it sparingly though for it requires large amounts of energy. A \l;regular power cell\u object\power; will only allow you to shoot 4 fireball bursts.
-
-Tip : it is possible to move the mouse while shooting, so as to sweep a larger area.
-
-The display at the bottom of your screen indicates the temperature of the reactor. Keep an eye on it. If the reactor overheats, the engine will stop and the bot will crash.
-
-Winged bots can fly across natural obstacles such as mountains or lakes but their energy supply is used up quickly. They're slow on the ground. To cover a short distance that will not call for flying, it is recommended to use a \l;wheeled shooter\u object\botfr; instead.
-
-\t;Programming
-To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;jet\u cbot\jet;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-To program the fireball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;WingedShooter\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/botfr.txt b/help/object/botfr.txt
deleted file mode 100644
index dc716aa6..00000000
--- a/help/object/botfr.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;\button 143; Wheeled Shooter
-\image botfr 8 8;
-Wheeled bot equipped with a fireball cannon.
-
-The fireball cannon is an efficient weapon against most kinds of \l;enemies\u object\mother;. Use it sparingly though for it requires large amounts of energy. A \l;regular power cell\u object\power; will only allow you to shoot 4 fireball bursts.
-
-Tip : it is possible to move the mouse while shooting, so as to sweep a larger area.
-
-Wheels constitute a standard, fast and energy-saving mode of propulsion, which is perfectly adapted for a relatively flat terrain. Whenever the terrain gets sloped, it is advised to use a \l;winged shooter\u object\botfj; instead, or, if this is impossible, a \l;tracked shooter\u object\botfc;.
-
-\t;Programming
-To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-To program the fireball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;WheeledShooter\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/botfs.txt b/help/object/botfs.txt
deleted file mode 100644
index 9c25e2dd..00000000
--- a/help/object/botfs.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;\button 151; Legged Shooter
-\image botfs 8 8;
-Ant-legged creeping bot equipped with a fireball cannon.
-
-The fireball cannon is an efficient weapon against most kinds of \l;enemies\u object\mother;. Use it sparingly though for it requires large amounts of energy. A \l;regular power cell\u object\power; will only allow you to shoot 4 fireball bursts.
-
-Tip : it is possible to move the mouse while shooting, so as to sweep a larger area.
-
-A moving legged shooter uses up half as much energy as a \l;wheeled shooter\u object\botfr;. A legged bot is also perfectly adapted to climb the steepest slopes.
-
-\t;Programming
-To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-To program the fireball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;LeggedShooter\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/botgc.txt b/help/object/botgc.txt
deleted file mode 100644
index 1d0349a9..00000000
--- a/help/object/botgc.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-\b;\button 138; Tracked Grabber
-\image botgc 8 8;
-Tracked bot equipped with an operating arm.
-
-\button 32; Grabs an object or lays it down again, at a position that is determined by one of the following options :
-\button 33; The object is lying in front of the bot, on the ground or on the back of a second bot.
-\button 35; The object is the bot's own power cell.
-\button 34; The object is lying behind the bot, on the ground.
-
-The following objects can be transported :
-o \l;Titanium ore\u object\titanore;.
-o \l;Uranium ore\u object\uranore;.
-o \l;Cube of titanium\u object\titan;.
-o \l;Regular power cell\u object\power;.
-o \l;Nuclear power cell\u object\atomic;.
-o \l;Black box\u object\bbox;.
-o \l;Keys A, B, C, and D\u object\key;.
-o \l;Organic matter\u object\bullet;.
-
-Tracked bots can ascend steep inclinations but they are quite slow and use much energy. On flat ground for short distances, a \l;wheeled grabber\u object\botgr; is a better option. When it is possible to build \l;winged bots\u object\botgj;, these represent the best solution for long distances.
-
-A grabber won't function underwater. What you'll need instead is a \l;subber\u object\botsub;.
-
-\t;Programming
-To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-To program the operating arm, use \c;\l;grab\u cbot\grab;\n; and \c;\l;drop\u cbot\drop;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;TrackedGrabber\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/botgj.txt b/help/object/botgj.txt
deleted file mode 100644
index b8db1584..00000000
--- a/help/object/botgj.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-\b;\button 139; Winged Grabber
-\image botgj 8 8;
-Jet propelled flying bot equipped with an operating arm.
-
-\button 32; Grabs an object or lays it down again, at a position that is determined by one of the following options :
-\button 33; The object is lying in front of the bot, on the ground or on the back of a second bot.
-\button 35; The object is the bot's own power cell.
-\button 34; The object is lying behind the bot, on the ground.
-
-The following objects can be transported :
-o \l;Titanium ore\u object\titanore;.
-o \l;Uranium ore\u object\uranore;.
-o \l;Cube of titanium\u object\titan;.
-o \l;Regular power cell\u object\power;.
-o \l;Nuclear power cell\u object\atomic;.
-o \l;Black box\u object\bbox;.
-o \l;Keys A, B, C, and D\u object\key;.
-o \l;Organic matter\u object\bullet;.
-
-The display at the bottom of your screen indicates the temperature of the reactor. Keep an eye on it. If the reactor overheats, the engine will stop and the bot will crash.
-
-Winged bots can fly across natural obstacles such as mountains or lakes but their energy supply is used up quickly. They're slow on the ground. To cover a short distance that will not call for flying, it is recommended to use a \l;wheeled grabber\u object\botgr; instead.
-
-A grabber won't function underwater. What you'll need instead is a \l;subber\u object\botsub;.
-
-\t;Programming
-To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-To program the operating arm, use \c;\l;grab\u cbot\grab;\n; and \c;\l;drop\u cbot\drop;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;WingedGrabber\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/botgr.txt b/help/object/botgr.txt
deleted file mode 100644
index 1d8e8ee8..00000000
--- a/help/object/botgr.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-\b;\button 137; Wheeled Grabber
-\image botgr 8 8;
-Wheeled bot equipped with an operating arm.
-
-\button 32; Grabs an object or lays it down again, at a position that is determined by one of the following options :
-\button 33; The object is lying in front of the bot, on the ground or on the back of a second bot.
-\button 35; The object is the bot's own power cell.
-\button 34; The object is lying behind the bot, on the ground.
-
-The following objects can be transported :
-o \l;Titanium ore\u object\titanore;.
-o \l;Uranium ore\u object\uranore;.
-o \l;Converted titanium\u object\titan;.
-o \l;Regular power cell\u object\power;.
-o \l;Nuclear power cell\u object\atomic;.
-o \l;Black box\u object\bbox;.
-o \l;Keys A, B, C, and D\u object\key;.
-o \l;Organic matter\u object\bullet;.
-
-Wheels constitute a standard, fast and energy-saving mode of propulsion, which is perfectly adapted for a relatively flat terrain. Whenever the terrain gets sloped, it is advised to use a \l;winged shooter\u object\botfj; instead, or, if this is impossible, a \l;tracked shooter\u object\botfc;.
-
-A grabber won't function underwater. What you'll need instead is a \l;subber\u object\botsub;.
-
-\t;Programming
-To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-To program the operating arm, use \c;\l;grab\u cbot\grab;\n; and \c;\l;drop\u cbot\drop;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;WheeledGrabber\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/botgs.txt b/help/object/botgs.txt
deleted file mode 100644
index 04faaa27..00000000
--- a/help/object/botgs.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-\b;\button 150; Legged Grabber
-\image botgs 8 8;
-Ant-legged creeping bot equipped with an operating arm.
-
-\button 32; Grabs an object or lays it down again, at a position that is determined by one of the following options :
-\button 33; The object is lying in front of the bot, on the ground or on the back of a second bot.
-\button 35; The object is the bot's own power cell.
-\button 34; The object is lying behind the bot, on the ground.
-
-The following objects can be transported :
-o \l;Titanium ore\u object\titanore;.
-o \l;Uranium ore\u object\uranore;.
-o \l;Converted titanium\u object\titan;.
-o \l;Regular power cell\u object\power;.
-o \l;Nuclear power cell\u object\atomic;.
-o \l;Black box\u object\bbox;.
-o \l;Keys A, B, C, and D\u object\key;.
-o \l;Organic matter\u object\bullet;.
-
-A moving legged grabber uses up half as much energy as a \l;wheeled grabber\u object\botgr;. A legged bot is also perfectly adapted to climb the steepest slopes.
-
-A grabber won't function underwater. What you'll need instead is a \l;subber\u object\botsub;.
-
-\t;Programming
-To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-To program the operating arm, use \c;\l;grab\u cbot\grab;\n; and \c;\l;drop\u cbot\drop;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;LeggedGrabber\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
-
diff --git a/help/object/botoc.txt b/help/object/botoc.txt
deleted file mode 100644
index 62fdeb54..00000000
--- a/help/object/botoc.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-\b;\button 154; Tracked Orga Shooter
-\image botoc 8 8;
-Tracked bot equipped with an orgaball cannon.
-
-The orgaball cannon is more effective than the \l;fireball cannon\u object\botfc;. It shoots small spheres of corrosive \l;organic matter\u object\bullet;. A \l;regular power cell\u object\power; will allow you to shoot 11 orgaball bursts.
-
-Tracked bots can ascend steep inclinations but they are quite slow and use a lot of energy. On flat ground for short distances, a \l;wheeled orga shooter\u object\botor; is a better option. When it is possible to build \l;winged bots\u object\botoj;, these represent the best solution for long distances.
-
-\t;Programming
-To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-To program the orgaball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;TrackedOrgaShooter\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/botoj.txt b/help/object/botoj.txt
deleted file mode 100644
index f4adf661..00000000
--- a/help/object/botoj.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;\button 155; Winged Orga Shooter
-\image botoj 8 8;
-Jet propelled flying bot equipped with an orgaball cannon.
-
-The orgaball cannon is more effective than the \l;fireball cannon\u object\botfj;. It shoots small spheres of corrosive \l;organic matter\u object\bullet;. A \l;regular power cell\u object\power; will allow you to shoot 11 orgaball bursts.
-
-The display at the bottom of your screen indicates the temperature of the reactor. Keep an eye on it. If the reactor overheats, the engine will stop and the bot will crash.
-
-Winged bots can fly across natural obstacles such as mountains or lakes but their energy supply is used up quickly. They're slow on the ground. To cover a short distance that will not call for flying, it is recommended to use a \l;wheeled orga shooter\u object\botor; instead.
-
-\t;Programming
-To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;jet\u cbot\jet;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-To program the orgaball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;WingedOrgaShooter\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/botor.txt b/help/object/botor.txt
deleted file mode 100644
index 1332edb0..00000000
--- a/help/object/botor.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-\b;\button 153; Wheeled Orga Shooter
-\image botor 8 8;
-Wheeled bot equipped with an orgaball cannon.
-
-The orgaball cannon is more effective than the \l;fireball cannon\u object\botfr;. It shoots small spheres of corrosive \l;organic matter\u object\bullet;. A \l;regular power cell\u object\power; will allow you to shoot 11 orgaball bursts.
-
-Wheels constitute a standard, fast and energy-saving mode of propulsion, which is perfectly adapted for a relatively flat terrain. Whenever the terrain gets sloped, it is advised to instead use a \l;winged orga shooter\u object\botoj;, or, if this is impossible, a \l;tracked orga shooter\u object\botoc;.
-
-\t;Programming
-To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-To program the orgaball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;WheeledOrgaShooter\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
-
diff --git a/help/object/botos.txt b/help/object/botos.txt
deleted file mode 100644
index cdee7fbb..00000000
--- a/help/object/botos.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-\b;\button 156; Legged Orga Shooter
-\image botos 8 8;
-Ant-legged creeping bot equipped with an orgaball cannon.
-
-The orgaball cannon is more effective than the \l;fireball cannon\u object\botfs;. It shoots small spheres of corrosive \l;organic matter\u object\bullet;. A \l;regular power cell\u object\power; will allow you to shoot 11 orgaball bursts.
-
-A moving legged orga shooter uses up half as much energy as a \l;wheeled orga shooter\u object\botor;. A legged bot is also perfectly adapted to climb the steepest slopes.
-
-\t;Programming
-To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-To program the orgaball cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;LeggedOrgaShooter\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/botphaz.txt b/help/object/botphaz.txt
deleted file mode 100644
index 742b44a3..00000000
--- a/help/object/botphaz.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-\b;\button 147; Phazer Shooter
-\image botphaz 8 8;
-Tracked bot equipped with a very powerful phazer cannon, efficient against most kinds of enemies. When you aim upward, it can shoot up to 60 meters. It is the only weapon that can kill the \l;Alien Queen\u object\mother;.
-
-\t;Programming
-To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-To program the phazer cannon, use \c;\l;fire\u cbot\fire;\n;. To raise or lower the aim, use \c;\l;aim\u cbot\aim;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;PhazerShooter\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/botrecy.txt b/help/object/botrecy.txt
deleted file mode 100644
index 62daabe5..00000000
--- a/help/object/botrecy.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-\b;\button 148; Recycler
-\image botrecy 8 8;
-Tracked bot designed to convert a \l;derelict bot\u object\wreck; back into a reusable \l;titanium cube\u object\titan;.
-
-\t;Programming
-To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-To program the recycling of a derelict bot, use \c;\l;recycle\u cbot\recycle;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;RecyclerBot\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/botsc.txt b/help/object/botsc.txt
deleted file mode 100644
index c89b7553..00000000
--- a/help/object/botsc.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;\button 141; Tracked Sniffer
-\image botsc 8 8;
-Tracked bot equipped to prospect the geological structure of the subsoil. Whenever it locates something of use, the sniffer lays down the following marks:
-
-- a \l;red cross\u object\stonspot; -> \l;titanium ore\u object\titanore;.
-- a \l;yellow circle\u object\uranspot; -> \l;uranium ore\u object\uranore;.
-- a \l;green cross\u object\enerspot; -> energy deposit, useful for a \l;power station\u object\station; or a \l;power plant\u object\energy;.
-
-Tracked bots can ascend steep inclinations but they are quite slow and use a lot of energy. On flat ground for short distances, a \l;wheeled sniffer\u object\botsr; is a better option. When it is possible to build \l;winged bots\u object\botsj;, these represent the best solution for long distances.
-
-\t;Programming
-To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-To program the sniffing arm, use \c;\l;sniff\u cbot\sniff;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;TrackedSniffer\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/botshld.txt b/help/object/botshld.txt
deleted file mode 100644
index 7dadce8b..00000000
--- a/help/object/botshld.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-\b;\button 157; Shielder
-\image botshld 8 8;
-Tracked bot designed to protect and defend against all \l;enemy\u object\mother; attacks within a perimeter of 10 to 25 meters. The individual shields of bots and buildings are re-energized through the shielder's defensive actions. This bot is the only way to get through narrow passages adorned with poisonous green mushrooms.
-
-A \l;regular power cell\u object\power; allows for a 20-second activity span with a radius of 25 meters, much too short in most cases. A \l;nuclear power cell\u object\atomic; is of course more suited to this bot.
-
-The energy consumption is proportional to the radius of the protective sphere. With a radius of 10 meters, the bot can work 2.5 times longer than with the maximum radius of 25 meters.
-
-\t;Programming
-To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-To program the deployment of the shield, use \c;\l;shield\u cbot\shield;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;Shielder\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/botsj.txt b/help/object/botsj.txt
deleted file mode 100644
index 1fd3690d..00000000
--- a/help/object/botsj.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-\b;\button 142; Winged Sniffer
-\image botsj 8 8;
-Jet propelled flying bot equipped to prospect the geological structure of the subsoil. Whenever it locates something of use, the sniffer lays down the following marks:
-
-- a \l;red cross\u object\stonspot; -> \l;titanium ore\u object\titanore;.
-- a \l;yellow circle\u object\uranspot; -> \l;uranium ore\u object\uranore;.
-- a \l;green cross\u object\enerspot; -> energy deposit, useful for a \l;power station\u object\station; or a \l;power plant\u object\energy;.
-
-The display at the bottom of your screen indicates the temperature of the reactor. Keep an eye on it. If the reactor overheats, the engine stops and the bot crashes.
-
-Winged bots can fly across natural obstacles such as mountains or lakes but their energy supply uses up quickly. They're slow on the ground. To cover a short distance that will not call for flying, it is recommended to use a \l;wheeled sniffer\u object\botsr; instead.
-
-\t;Programming
-To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;jet\u cbot\jet;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-To program the sniffing arm, use \c;\l;sniff\u cbot\sniff;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;WingedSniffer\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/botsr.txt b/help/object/botsr.txt
deleted file mode 100644
index 1af372aa..00000000
--- a/help/object/botsr.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;\button 140; Wheeled Sniffer
-\image botsr 8 8;
-Wheeled bot equipped to prospect the geological structure of the subsoil. Whenever it locates something of use, the sniffer lays down the following marks:
-
-- a \l;red cross\u object\stonspot; -> \l;titanium ore\u object\titanore;.
-- a \l;yellow circle\u object\uranspot; -> \l;uranium ore\u object\uranore;.
-- a \l;green cross\u object\enerspot; -> energy deposit, useful for a \l;power station\u object\station; or a \l;power plant\u object\energy;.
-
-Wheels constitute a standard, fast and energy-saving mode of propulsion, which is perfectly adapted for a relatively flat terrain. Whenever the terrain gets sloped, it is advised to use a \l;winged sniffer\u object\botsj; instead, or, if this is impossible, a \l;tracked sniffer\u object\botsc;.
-
-\t;Programming
-To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-To program the sniffing arm, use \c;\l;sniff\u cbot\sniff;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;WheeledSniffer\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/botss.txt b/help/object/botss.txt
deleted file mode 100644
index 10de94d9..00000000
--- a/help/object/botss.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-\b;\button 152; Legged Sniffer
-\image botss 8 8;
-Ant-legged creeping bot equipped to prospect the geological structure of the subsoil. Whenever it locates something of use, the sniffer lays down the following marks:
-
-- a \l;red cross\u object\stonspot; -> \l;titanium ore\u object\titanore;.
-- a \l;yellow circle\u object\uranspot; -> \l;uranium ore\u object\uranore;.
-- a \l;green cross\u object\enerspot; -> energy deposit, useful for a \l;power station\u object\station; or a \l;power plant\u object\energy;.
-
-A moving legged shooter uses up half as much energy as a \l;wheeled sniffer\u object\botsr;. A legged bot is also perfectly adapted to climb the steepest slopes.
-
-\t;Programming
-To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-To program the sniffing arm, use \c;\l;sniff\u cbot\sniff;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;LeggedSniffer\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/botsub.txt b/help/object/botsub.txt
deleted file mode 100644
index 55570319..00000000
--- a/help/object/botsub.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-\b;\button 149; Subber
-\image botsub 8 8;
-Amphibious tracked bot equipped with an operating claw. The subber is the only bot capable of moving and running operations underwater.
-
-It is best to check the \l;power cell\u object\power; readings prior to immersion since replacing or recharging it underwater is impossible. The subber can only pick up objects from the ground, as opposed to, for example, a battery from the back of another bot.
-
-\t;Programming
-To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-To program the operating claw, use \c;\l;grab\u cbot\grab;\n; and \c;\l;drop\u cbot\drop;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;Subber\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/bottarg.txt b/help/object/bottarg.txt
deleted file mode 100644
index 82d1cc85..00000000
--- a/help/object/bottarg.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;\button 173; Target Bot
-\image bottarg 8 8;
-Wheeled bot intended solely for target practice. It is autonomous and its trajectory is dependant upon the nature of the exercise.
-
-Note that target bots, loaded as they are with \l;TNT\u object\tnt;, are extremely sensitive to shocks.
-
-\t;Object \l;Category\u cbot\category;
-\c;TargetBot\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/bottr.txt b/help/object/bottr.txt
deleted file mode 100644
index 4522f5b3..00000000
--- a/help/object/bottr.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-\b;\button 158; Practice Bot
-\image bottr 8 8;
-Wheeled bot intended solely for training and practice. Its only purpose is to help you get accustomed to the programming of the bots' various ground movements.
-
-\t;Instructions
-To program the bot's movements, use the following commands: \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;PracticeBot\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/bottump.txt b/help/object/bottump.txt
deleted file mode 100644
index b014eca7..00000000
--- a/help/object/bottump.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-\b;\button 146; Thumper
-\image bottump 8 8;
-Tracked bot designed to hit the ground with enormous force. The purpose of the thumping is to turn \l;ants\u object\ant; and \l;spiders\u object\spider; belly up within a radius of 100 meters. An insect on its back is not dead but will struggle to get right side up again. After approximately 60 seconds of effort, it will usually succeed.
-
-To visualize the zone of impact, hit the button \button 41;. Little red dots outline the circular zone for 20 seconds.
-
-The bot uses up a large amount of power. A thump will drain 2/5ths of a \l;regular power cell\u object\power;.
-
-\t;Instructions
-To program the bot's movements, use the following commands : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
-
-To program the thumping, use \c;\l;thump\u cbot\thump;\n;.
-
-\t;Object \l;Category\u cbot\category;
-\c;Thumper\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/bullet.txt b/help/object/bullet.txt
deleted file mode 100644
index 3f7332cf..00000000
--- a/help/object/bullet.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-\b;Organic Matter
-\image bullet 4 4;
-The organic matter is the insects' secretion. \l;Wasps\u object\wasp; often use balls of organic matter to bombard you. You should perhaps try to get hold of some since it could allow you, given the necessary \l;analysis\u object\labo;, to discover new and strange technologies that will improve the efficiency of your bots.
-
-\t;Transport
-All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
-
-\t;Object \l;Category\u cbot\category;
-\c;OrgaMatter\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/captor.txt b/help/object/captor.txt
deleted file mode 100644
index 3dfdd068..00000000
--- a/help/object/captor.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-\b;\button 174; Power Captor
-\image captor 8 8;
-The power captor acts as both a lightning conductor and a power converter.
-It offers protection within a radius of 50 meters against the perilous lightning bolts of magnetic storms. Additionally, when the captor is hit by lightning, all bots and \l;power cells\u object\power; placed underneath, with the exception of the \l;nuclear power cells\u object\atomic;, are recharged.
-
-To visualize the zone shielded by a power captor, select it then hit the button \button 41;. Red dots outline the circular zone for 20 seconds.
-
-In the vastness of space, few planets suffer from magnetic storms. Among the ones you'll be visiting, only Orpheon is subject to this phenomenon.
-
-Note that your \l;spaceship\u object\base; can also act as a lightning conductor. However it will not recharge power cells.
-
-\t;Requirements for building
-Any flat surface of at least 10 meters wide.
-
-\t;Power source
-Lightning bolts.
-
-\t;Duration of operation
-1 second.
-
-\t;Object \l;Category\u cbot\category;
-\c;PowerCaptor\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/convert.txt b/help/object/convert.txt
deleted file mode 100644
index 79d5e25c..00000000
--- a/help/object/convert.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-\b;\button 162; Converter
-\image convert 8 8;
-This building was designed to convert chunks of \l;titanium ore\u object\titanore; into usable \l;titanium cubes\u object\titan;. All \l;you\u object\human; need to do is place a chunk at the center of the platform and step back. The converter takes care of the rest.
-
-\t;Requirements for building
-Any flat surface of at least 6 meters wide.
-
-\t;Input
-Titanium ore.
-
-\t;Output
-Titanium.
-
-\t;Power source
-None.
-
-\t;Duration of operation
-15 seconds.
-
-\t;Object \l;Category\u cbot\category;
-\c;Converter\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/derrick.txt b/help/object/derrick.txt
deleted file mode 100644
index f546ebfa..00000000
--- a/help/object/derrick.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-\b;\button 161; Derrick
-\image derrick 8 8;
-The derrick is intended for the extraction of raw materials.
-
-In order to determine the best site on which to erect a derrick, a \l;sniffer\u object\botsr; should be used to prospect the subsoil. The marks it lays down provide information about the specifics of what the derrick will be able to extract:
-
-- a \l;red cross\u object\stonspot; -> \l;titanium ore\u object\titanore;.
-- a \l;yellow circle\u object\uranspot; -> \l;uranium ore\u object\uranore;.
-
-\t;Requirements for building
-Any flat and geologically adequate surface of at least 2.5 meters wide.
-
-\t;Input
-Titanium or uranium ore in the subsoil.
-
-\t;Output
-Chunks of titanium or uranium ore.
-
-\t;Power source
-None.
-
-\t;Duration of operation
-10 seconds for titanium and 30 for uranium.
-
-\t;Object \l;Category\u cbot\category;
-\c;Derrick\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/egg.txt b/help/object/egg.txt
deleted file mode 100644
index 501d8ee0..00000000
--- a/help/object/egg.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-\b;Alien Egg
-The alien eggs are laid by the \l;Alien Queen\u object\mother;. After a short time, they will hatch and an \l;ant\u object\ant;, a \l;wasp\u object\wasp;, a \l;spider\u object\spider; or a \l;worm\u object\worm; will come out.
-
-\t;Object \l;Category\u cbot\category;
-\c;AlienEgg\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/energy.txt b/help/object/energy.txt
deleted file mode 100644
index 75cd214f..00000000
--- a/help/object/energy.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-\b;\button 167; Power Plant
-\image energy 8 8;
-The power plant is a \l;power cell\u object\power; factory. It transforms a \l;titanium cube\u object\titan; into a regular power cell fully charged and ready for use.
-
-A power plant requires some energy in the subsoil. If the satellite report says that energy is available only at some places, you will need a \l;sniffer bot\u object\botsr; to prospect the subsoil. The marks it lays down provide information about the specifics of its findings: a \l;green cross\u object\enerspot; means that there is an energy deposit at this location beneath the surface, which is indispensable for the construction of a power plant or a \l;power station\u object\station;.
-
-If the large power cell at the base of the plant remains red after the construction is completed, this means that the site is not geologically adequate.
-
-\t;Requirements for building
-Any flat and geologically adequate surface of at least 4 meters wide.
-
-\t;Input
-Titanium.
-
-\t;Output
-Regular power cell.
-
-\t;Power source
-Subsoil energy.
-
-\t;Duration of operation
-12 seconds.
-
-\t;Object \l;Category\u cbot\category;
-\c;PowerPlant\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/enerspot.txt b/help/object/enerspot.txt
deleted file mode 100644
index 954bf4ea..00000000
--- a/help/object/enerspot.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-\b;Underground Energy Deposit
-\image enerspot 4 4;
-Whenever a \l;sniffer\u object\botsr; uncovers a source of energy in the subsoil, it lays down a green cross. The following buildings can be erected nearby :
-
-o \l;Power station\u object\station;
-o \l;Power plant\u object\energy;
-
-In order to prospect the subsoil you need a \l;sniffer bot\u object\botsr;, which can also discover \l;titanium ore\u object\titanore; deposits (indicated by a \l;red cross\u object\stonspot;) or \l;uranium ore\u object\uranore; deposits (indicated by a \l;yellow circle\u object\uranspot;).
-
-\t;Transport
-Impossible.
-
-\t;Object \l;Category\u cbot\category;
-\c;EnergySite\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/exchange.txt b/help/object/exchange.txt
deleted file mode 100644
index 0a6b9b2a..00000000
--- a/help/object/exchange.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-\b;\button 172; Information Exchange Post
-\image info 8 8;
-This building stores digital information. A post can contain up to 10 pieces of information, each one referenced by a name.
-For example, a post can contain 3 informations¦:\c;
-\tab;"Position.x" 23.45
-\tab;"Position.y" -102.70
-\tab;"Quantity" 3.00
-\n;
-To put new information, you must execute the command \c;\l;send\u cbot\send;\n;.
-To read information from a post, you must execute the command \c;\l;receive\u cbot\receive;\n;.
-
-\t;Requirements for building
-Any flat surface of at least 2.5 meters wide.
-
-\t;Input
-None.
-
-\t;Output
-Digital information.
-
-\t;Power source
-None.
-
-\t;Duration of operation
-1 second.
-
-\t;Object \l;Category\u cbot\category;
-\c;ExchangePost\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/factory.txt b/help/object/factory.txt
deleted file mode 100644
index f2a3ed7c..00000000
--- a/help/object/factory.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-\b;\button 160; Bot Factory
-\image factory 8 8;
-This building is intended for the manufacturing of bots using \l;titanium\u object\titan;.
-
-1) Place the titanium cube inside the factory.
-2) Step back out.
-3) Select the factory.
-4) Click on the button showing the diagram of the bot you want the factory to assemble (e.g. \button 137; for a \l;wheeled grabber\u object\botgr;).
-
-The finished bot does not include an onboard \l;power cell\u object\power;. You'll need to supply it with one for it to be able to leave the factory.
-
-The list of feasible bots will depend upon the research your \l;research center\u object\research; has completed at this time.
-
-\t;Requirements for building
-Any flat surface of at least 7.5 meters wide.
-
-\t;Input
-Titanium.
-
-\t;Output
-Completed bot.
-
-\t;Power source
-None.
-
-\t;Duration of operation
-15 seconds.
-
-\t;Object \l;Category\u cbot\category;
-\c;BotFactory\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/flag.txt b/help/object/flag.txt
deleted file mode 100644
index f2af46e2..00000000
--- a/help/object/flag.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-\b;Colored Flag
-\image flag 4 4;
-The colored flags are helpful to mark strategic locations or positions that \l;you\u object\human; will need to find again. Flags appear on the mini-map in the shape of a cross of the same color as the flag.
-
-Use the buttons \button 118; and \button 119; to plant and remove flags, the colors of which you can choose with the buttons above.
-
-When your mini-map is out of order, the fact that flags follow the direction of the wind can help you to find your way and not to walk around in circles.
-
-When programming, you can use flags to give a bot a reference to a certain position: the instruction \c;\l;radar\u cbot\radar;\n; allows bots to know the exact position of a flag of a given color.
-
-\t;Transport
-Impossible.
-
-\t;Object \l;Category\u cbot\category;
-\c;BlueFlag\n;
-\c;RedFlag\n;
-\c;GreenFlag\n;
-\c;YellowFlag\n;
-\c;VioletFlag\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/goal.txt b/help/object/goal.txt
deleted file mode 100644
index d10f2ace..00000000
--- a/help/object/goal.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-\b;Finishing Pad
-The finishing pad is an objective to be reached in some exercises.
-
-\t;Object \l;Category\u cbot\category;
-\c;GoalArea\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/human.txt b/help/object/human.txt
deleted file mode 100644
index 96365176..00000000
--- a/help/object/human.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-\b;\button 136; Astronaut
-\image human 8 8;
-The astronaut is you within the game.
-
-If you die, the mission immediately fails.
-
-You can construct buildings with the help of the neutron gun holstered to your survival kit. The survival kit allows you, in most missions, to fly, thanks to the reactor placed underneath, or to swim with no time limit. You can carry most objects but the weight will slow down your movements considerably. Flying, swimming and walking underwater are also made impossible if you are carrying an object. The use of a \l;grabber\u object\botgr; or a \l;subber\u object\botsub; is advised for tasks such as these.
-
-You cannot carry \l;uranium ore\u object\uranore; because of the risks attached to radioactivity.
-
-A special button \button 111; allows you to ensure that the ground around you is flat. This is important since building is only possible on a flat surface. A flat surface is designated green while a sloping one is red.
-
-A button \button 118; allows you to mark a location with \l;flags\u object\flag; of various colors. This can help you not to get lost, to find important positions again, or to indicate a position to a bot. 5 flags of 5 different colors are at your disposal. You can remove a flag by using the next button \button 119; and store it for further use.
-
-\t;Object \l;Category\u cbot\category;
-\c;Me\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/huston.txt b/help/object/huston.txt
deleted file mode 100644
index 830dad8e..00000000
--- a/help/object/huston.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;\button 176; Mission Control
-\image huston 8 8;
-Earth control center for all \l;your\u object\human; space missions. Though still named after the well-known mission control of the old days, "Houston" is actually located in the middle of the Nevada Desert, the new center for space exploration activities.
-
-The Mission Control Center watches over you day and night, and a whole team of scientists and engineers are working hard trying to find a solution to all the problems that you encounter.
-
-\t;Object \l;Category\u cbot\category;
-\c;Houston\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/key.txt b/help/object/key.txt
deleted file mode 100644
index ddf1d1ca..00000000
--- a/help/object/key.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-\b;Keys A, B, C and D
-\image key 4 4;
-The keys give \l;you\u object\human; access to the \l;vault\u object\safe;. You'll need 4 of them.
-
-o Key A, blue and triangle-shaped
-o Key B, red and pentagon-shaped
-o Key C, green and shaped like a 6-pointed star
-o Key D, yellow and circular
-
-\t;Transport
-All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
-
-\t;Objects \l;Category\u cbot\category;
-\c;KeyA\n;, \c;KeyB\n;, \c;KeyC\n; and \c;KeyD\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/labo.txt b/help/object/labo.txt
deleted file mode 100644
index 9e203513..00000000
--- a/help/object/labo.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-\b;\button 166; Autolab
-\image labo 8 8;
-The lab is intended for the analysis of \l;organic matter\u object\bullet;. It will help \l;you\u object\human; become familiar with the insects' very own technology and perhaps even use it to your advantage. Place a chunk of \l;organic matter\u object\bullet; on the platform, select the lab, and click the button corresponding to the desired research program.
-
-\t;Requirements for building
-Any flat surface of at least 6 meters wide.
-
-\t;Input
-Organic matter.
-
-\t;Output
-New and improved technologies.
-
-\t;Power source
-None.
-
-\t;Duration of operation
-20 seconds.
-
-\t;Object \l;Category\u cbot\category;
-\c;AutoLab\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/lrv.txt b/help/object/lrv.txt
deleted file mode 100644
index 996d8695..00000000
--- a/help/object/lrv.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-\b;Apollo Lunar Roving Vehicle
-
-
-
-\c;< no archive picture available >\n;
-
-
-
-The Lunar Jeep (LRV) was brought to the moon on July 30th 1971 by the astronauts David Scott and Jim Irwin from Apollo mission 15. Its batteries are still partly charged, which allows you to remote control it. But this old-fashioned technology will be of no use to you.
diff --git a/help/object/mine.txt b/help/object/mine.txt
deleted file mode 100644
index d0c4b6fb..00000000
--- a/help/object/mine.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-\b;Mine
-\image mine 8 8;
-Mines were a defensive weapons system used by the first expedition. Because of the dangers this system causes for the mission itself, they are no longer used in your expedition. In some exercises mines are used to learn how to avoid obstacles. There is no way to remove them or to create new ones.
-
-With a \l;practice bot\u object\bottr;, don't get any closer than 2 meters to the position given by the instruction \l;radar\u cbot\radar;.
-
-\t;Transport
-Impossible.
-
-\t;Object \l;Category\u cbot\category;
-\c;Mine\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/mother.txt b/help/object/mother.txt
deleted file mode 100644
index 37630664..00000000
--- a/help/object/mother.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b;Alien Queen
-\image mother 8 8;
-This huge insect is the mother of them all. It lays \l;eggs\u object\egg; and from these eggs will hatch all the various kinds of insects \l;you\u object\human;'re likely to encounter. All of them are extremely hazardous to yourself and your mission. The queen's protective shell is particularly resistant to attack.
-
-It gives birth to the following insects :
-o \l;ants\u object\ant;
-o \l;spiders\u object\spider;
-o \l;wasps\u object\wasp;
-o \l;worms\u object\worm;
-
-\t;Object \l;Category\u cbot\category;
-\c;AlienQueen\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/nest.txt b/help/object/nest.txt
deleted file mode 100644
index 43520683..00000000
--- a/help/object/nest.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-\b;Nest
-The alien nest is an odd structure out of which \l;organic matter\u object\bullet; erupts on a regular basis. \l;Wasps\u object\wasp; visit nests regularly to collect ammunition that they will use to bombard your bots, buildings and yourself.
-
-\t;Object \l;Category\u cbot\category;
-\c;AlienNest\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/nuclear.txt b/help/object/nuclear.txt
deleted file mode 100644
index b41abc92..00000000
--- a/help/object/nuclear.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-\b;\button 170; Nuclear Plant
-\image nuclear 8 8;
-The nuclear plant is a \l;nuclear power cell\u object\atomic; factory. It transforms a chunk of \l;uranium ore\u object\uranore; into a \l;nuclear power cell\u object\atomic; fully charged and ready for use.
-
-\t;Requirements for building
-Any flat surface of at least 10 meters wide.
-
-\t;Input
-Uranium ore.
-
-\t;Output
-Nuclear power cell.
-
-\t;Power source
-None.
-
-\t;Duration of operation
-30 seconds.
-
-\t;Object \l;Category\u cbot\category;
-\c;NuclearPlant\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/power.txt b/help/object/power.txt
deleted file mode 100644
index fe31baf6..00000000
--- a/help/object/power.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-\b;Regular Power Cell
-\image power 4 4;
-A power cell supplies the bots and a few buildings with energy.
-
-An entirely red power cell is empty. The green section indicates the remaining capacity. A power cell can be recharged using a \l;power station\u object\station;. A \l;power plant\u object\energy; is needed to produce a new and fully charged power cell.
-
-The capacity of a regular power cell is 100 times smaller than that of a \l;nuclear power cell\u object\atomic; produced by a \l;nuclear plant\u object\nuclear; using \l;uranium ore\u object\uranore;.
-
-\t;Transport
-All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
-
-\t;Object \l;Category\u cbot\category;
-\c;PowerCell\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/radar.txt b/help/object/radar.txt
deleted file mode 100644
index dea59457..00000000
--- a/help/object/radar.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-\b;\button 168; Radar
-\image radar 8 8;
-The radar indicates the direction of the nearest \l;enemy\u object\mother;. Moreover, the information given by the radar allows the mini-map at the bottom right corner of your screen to show the position of all bots, buildings and enemies as small squares and triangles of different colors.
-
-Radar stations also act as relays for communication with the Earth from distant planets.
-
-\t;Requirements for building
-Any flat surface of at least 2.5 meters wide.
-
-\t;Input
-None.
-
-\t;Output
-Information for the mini-map.
-
-\t;Power source
-None.
-
-\t;Duration of operation
-Constant.
-
-\t;Object \l;Category\u cbot\category;
-\c;RadarStation\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/repair.txt b/help/object/repair.txt
deleted file mode 100644
index 4ad0e559..00000000
--- a/help/object/repair.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-\b;\button 169; Repair Center
-\image repair 8 8;
-The repair center regenerates the shield on damaged bots. A bot's shield will absorb a certain amount of \l;enemy\u object\mother; hits. If there is no shield left, this means that the bot itself, when hit next, will be destroyed.
-
-\t;Requirements for building
-Any flat surface of at least 6 meters wide.
-
-\t;Input
-Damaged bot.
-
-\t;Output
-Repaired bot with regenerated shield.
-
-\t;Power source
-None.
-
-\t;Duration of operation
-A few seconds depending on the repair job to be done.
-
-\t;Object \l;Category\u cbot\category;
-\c;RepairCenter\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/research.txt b/help/object/research.txt
deleted file mode 100644
index 52f8810c..00000000
--- a/help/object/research.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-\b;\button 163; Research Center
-\image research 8 8;
-The research center is an enormous computer. Its most useful feature is its ability to come up with new technologies as well as improvements on existing ones regarding buildings and bots in particular.
-
-The 65'536 processors it contains use up a large amount of energy.
-Each research program necessitates a brand new and fully charged \l;power cell\u object\power;
-
-\t;Requirements for building
-Any flat surface of at least 5 meters wide.
-
-\t;Input
-Request for research.
-
-\t;Output
-New and improved technologies.
-
-\t;Power source
-Regular or nuclear power cell.
-
-\t;Duration of operation
-Between 9 seconds and 1 minute depending on the research.
-
-\t;Object \l;Category\u cbot\category;
-\c;ResearchCenter\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/safe.txt b/help/object/safe.txt
deleted file mode 100644
index 5e7b4634..00000000
--- a/help/object/safe.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-\b;\button 175; Vault
-\image safe 8 8;
-This dome-shaped building was conceived by the first expedition. Its purpose was to offer protection to a new type of advanced bot. To protect it from insect attacks, the vault was locked by 4 \l;keys\u object\key;. Only after you find the 4 keys and place each one of them on their corresponding slots will you be given access to the bot.
-
-\t;Object \l;Category\u cbot\category;
-\c;Vault\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/spider.txt b/help/object/spider.txt
deleted file mode 100644
index 326e00d9..00000000
--- a/help/object/spider.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-\b;Spider
-\image spider 8 8;
-Spiders work like suicide commandoes: whenever a spider gets within a close enough range of its target, it inflates its abdomen and bursts into a multitude of tiny burning fragments. These fragments will set fire to everything they get in contact with. Luckily the spider won't survive.
-
-\t;Object \l;Category\u cbot\category;
-\c;AlienSpider\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/start.txt b/help/object/start.txt
deleted file mode 100644
index ef24cdb7..00000000
--- a/help/object/start.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-\b;Starting Pad
-The starting pad is a platform used in some exercises.
-
-\t;Object \l;Category\u cbot\category;
-\c;StartArea\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/station.txt b/help/object/station.txt
deleted file mode 100644
index 61cbdd24..00000000
--- a/help/object/station.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-\b;\button 164; Power Station
-\image station 8 8;
-The power station extracts energy from the underground and recharges \l;regular power cells\u object\power; through induction. To recharge a power cell loaded at the back of a bot, just move the bot to the center of the platform and wait a few seconds. A \l;power cell\u object\power; carried at arm's length can also be recharged. \l;Nuclear power cells\u object\atomic; are non-rechargeable.
-
-A power plant needs some energy in the subsoil. If the satellite report says that energy is available only at some places, you will need a \l;sniffer bot\u object\botsr; to prospect the subsoil. The marks it lays down provide information about the specifics of its findings: a \l;green cross\u object\enerspot; means that there is an energy deposit at this location beneath the surface, which is indispensable to the construction of a power station or a \l;power plant\u object\energy;.
-
-The large power cell at the top of the station remaining red after the construction is completed can only mean that the site is not geologically adequate.
-
-\t;Requirements for building
-Any flat and geologically adequate surface at least 6 meters wide.
-
-\t;Input
-Empty power cell.
-
-\t;Output
-Recharged power cell.
-
-\t;Power source
-Subsoil energy.
-
-\t;Duration of operation
-A few seconds, depending on the capacity to be recharged.
-
-\t;Object \l;Category\u cbot\category;
-\c;PowerStation\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/stonspot.txt b/help/object/stonspot.txt
deleted file mode 100644
index 8d0b01b7..00000000
--- a/help/object/stonspot.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-\b;Underground Titanium Deposit
-\image stonspot 4 4;
-A red cross reveals the presence of a stratum of \l;titanium ore\u object\titanore; in the subsoil. It will be possible to extract it using a \l;derrick\u object\derrick;.
-
-A \l;sniffer\u object\botsr; will lay down a red cross each time it uncovers a deposit. \l;Sniffer bots\u object\botsr; can also detect the presence of \l;uranium ore\u object\uranore; as indicated by a \l;yellow circle\u object\uranspot; and of energy as indicated by a \l;green cross\u object\enerspot;.
-
-\t;Transport
-Impossible.
-
-\t;Object \l;Category\u cbot\category;
-\c;TitaniumSite\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/titan.txt b/help/object/titan.txt
deleted file mode 100644
index 23af4472..00000000
--- a/help/object/titan.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-\b;Titanium
-\image titan 4 4;
-Titanium is indispensable for the construction of buildings, \l;bots\u object\factory; and \l;regular power cells\u object\energy;. There is usually some left on the \l;spaceship\u object\base; when you embark on a new mission.
-
-If more is needed, you'll have to \l;convert\u object\convert; chunks of \l;titanium ore\u object\titanore; into usable titanium cubes.
-
-\t;Transport
-All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
-
-\t;Object \l;Category\u cbot\category;
-\c;Titanium\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/titanore.txt b/help/object/titanore.txt
deleted file mode 100644
index 752f39fd..00000000
--- a/help/object/titanore.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-\b;Titanium Ore
-\image titanore 4 4;
-\l;Titanium\u object\titan; is indispensable for the construction of buildings, \l;bots\u object\factory; and \l;regular power cells\u object\energy;. The titanium \l;you\u object\human; see in its usable, cube shaped form has been \l;converted\u object\convert; from raw chunks of titanium ore.
-
-Titanium ore can be found either directly on the surface or in the subsoil. In the latter case, it needs to be first located and identified by a \l;sniffer\u object\botsr;, then extracted using a \l;derrick\u object\derrick;. If a sniffer identifies a titanium ore deposit, it lays down a \l;red cross\u object\stonspot;.
-
-\t;Transport
-All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
-
-\t;Object \l;Category\u cbot\category;
-\c;TitaniumOre\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/tnt.txt b/help/object/tnt.txt
deleted file mode 100644
index 9af47af1..00000000
--- a/help/object/tnt.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-\b; Explosive (TNT)
-\image tnt 4 4;
-A TNT charge is extremely sensitive. You should approach it with caution so as not to hit it or give it any kind of shock. The risk is minimized once the explosive is within a \l;grabber\u object\botgr;'s grasp.
-
-\t;Transport
-All \l;grabbers\u object\botgr; and the \l;astronaut\u object\human;.
-
-\t;Object \l;Category\u cbot\category;
-\c;TNT\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/tower.txt b/help/object/tower.txt
deleted file mode 100644
index 7bc32d62..00000000
--- a/help/object/tower.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-\b;\button 165; Defense Tower
-\image tower 8 8;
-The tower constitutes the best defense against \l;enemy\u object\mother; attacks, whether they originate on the ground or from the skies.
-
-The tower requires either a \l;regular\u object\power; or a \l;nuclear\u object\atomic; power cell. A regular power cell provides a capacity for 8 shots. A nuclear power cell is of course preferable. The tower starts blinking when it runs out of power.
-
-The range is 40 meters. To visualize it, select the tower then hit the button \button 41;. Red dots outline the circular zone for 20 seconds.
-
-\t;Requirements for building
-Any flat surface of at least 3.5 meters wide.
-
-\t;Power source
-Regular or nuclear power cell.
-
-\t;Duration of operation
-1 second.
-
-\t;Object \l;Category\u cbot\category;
-\c;DefenseTower\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/uranore.txt b/help/object/uranore.txt
deleted file mode 100644
index d2cbc5b6..00000000
--- a/help/object/uranore.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-\b;Uranium Ore
-\image uranore 4 4;
-Uranium ore is essential to the production of \l;nuclear power cells\u object\atomic;.
-
-It is to be found on the surface or in the subsoil. In the latter case, it needs to be first located and identified by a \l;sniffer\u object\botsr;, then extracted using a \l;derrick\u object\derrick;. If a sniffer identifies a deposit of uranium ore, it lays down a \l;yellow circle\u object\uranspot;.
-
-A \l;nuclear plant\u object\nuclear; will then take care of converting the chunk into a new and fully charged \l;nuclear power cell\u object\atomic;.
-
-\t;Transport
-All \l;grabbers\u object\botgr;. Due to its radioactivity, the \l;astronaut\u object\human; can not transport it.
-
-\t;Object \l;Category\u cbot\category;
-\c;UraniumOre\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/uranspot.txt b/help/object/uranspot.txt
deleted file mode 100644
index 8cd7e93c..00000000
--- a/help/object/uranspot.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-\b; Underground Uranium Deposit
-\image uranspot 4 4;
-A yellow circle reveals the presence of a stratum of \l;uranium ore\u object\uranore; in the subsoil. It will be possible to extract it using a \l;derrick\u object\derrick;.
-
-A \l;sniffer\u object\botsr; will lay down a yellow circle each time it uncovers a deposit. \l;Sniffer bots\u object\botsr; can also detect the presence of \l;titanium ore\u object\titanore; as indicated by a \l;red cross\u object\stonspot; and of energy as indicated by a \l;green cross\u object\enerspot;.
-
-
-\t;Transport
-Impossible.
-
-\t;Object \l;Category\u cbot\category;
-\c;UraniumSite\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/wasp.txt b/help/object/wasp.txt
deleted file mode 100644
index 054b1ce0..00000000
--- a/help/object/wasp.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;Wasp
-\image wasp 8 8;
-The wasp is a formidable enemy, very hard to shoot down since its flying is particularly swift. Wasps carry balls of \l;organic matter\u object\bullet; that they will hurl at your bots and buildings and at yourself from above.
-
-The \l;defense tower\u object\tower; is the easiest way to get rid of them.
-
-\t;Object \l;Category\u cbot\category;
-\c;AlienWasp\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/waypoint.txt b/help/object/waypoint.txt
deleted file mode 100644
index 41e1f33b..00000000
--- a/help/object/waypoint.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-\b;Checkpoint
-\image waypoint 4 4;
-In the exercises, blue crosses indicate positions that have to be crossed. They disappear as soon as a \l;practice bot\u object\bottr; crosses them.
-
-\t;Transport
-Impossible.
-
-\t;Object \l;Category\u cbot\category;
-\c;WayPoint\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/worm.txt b/help/object/worm.txt
deleted file mode 100644
index 1afb06c9..00000000
--- a/help/object/worm.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\b;Worm
-\image worm 8 8;
-Worms transmit viruses to programmed bots. The virus alters the programming to such an extent that the bot either functions in a very erratic way or stops functioning altogether.
-
-Worms live in the subsoil but sometimes emerge and crawl on the surface. When they are underground they are undetectable and indestructible.
-
-\t;Object \l;Category\u cbot\category;
-\c;AlienWorm\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/object/wreck.txt b/help/object/wreck.txt
deleted file mode 100644
index a72a312d..00000000
--- a/help/object/wreck.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-\b;Derelict bot
-A derelict bot is what's left of a bot after it has been disabled by a \l;spider\u object\spider; or by friendly fire.
-
-A \l;recycler\u object\botrecy; can convert a derelict bot back into a reusable \l;titanium cube\u object\titan;.
-
-\t;Object \l;Category\u cbot\category;
-\c;Wreck\n;
-
-\t;See also
-\l;CBOT Language\u cbot;, \l;Variables\u cbot\type; and \l;Categories\u cbot\category;.
diff --git a/help/tant1.txt b/help/tant1.txt
deleted file mode 100644
index 6bb3bf2f..00000000
--- a/help/tant1.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-\b;Objective
-As a defense against several giant ants attacking from the north, rotate the bot when shooting in order to perform barrage fire.
-
-\t;Program
-When you are radio-guiding a bot, you can rotate the cannon during the burst in order to sweep a whole zone. You can also do this when programming the bot, but you have to turn the whole bot with the instruction \c;\l;motor\u cbot\motor;( , )\n;. This instruction asks for two numbers: the speed of the left-hand motor, and the speed of the right-hand motor. These numbers must range between -1 and +1.\c; motor(1,1);\n; moves the bot forward with maximum speed (both motors at full power).\c; motor(-1,-1);\n; moves the bot backward with maximum speed.\c; motor(1,0.9);\n; moves the bot forward with a slight turn to the right: the left-hand motor turns a little faster than the right-hand motor. And \c;motor(1,-1);\n; will turn the bot clockwise on the spot: the left-hand motor moves forward, the right-hand motor moves backward.
-
-After a \l;motor\u cbot\motor; instruction the motors will keep this speed until the next \c;motor\n;, \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n; or \c;\l;goto\u cbot\goto;\n; instruction. For example, if you perform a rotation on the spot with \c;motor(1,-1);\n; and afterward you shoot with \c;fire(1);\n;, the bot will continue to turn during the burst, and will sweep a whole zone.
-
-The ants attack from the north. In order to sweep the whole zone north of the bot, first turn 90 degrees left with \c;turn(90);\n;, then repeat always with \c;\l;while\u cbot\while; (true)\n; the following instructions:
-o rotate clockwise with \c;motor(1,-1);\n;
-o a 2 seconds burst with \c;fire(2);\n;
-o rotate counter-clockwise with \c;motor(-1,1);\n;
-o a 2 seconds burst.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/tant2.txt b/help/tant2.txt
deleted file mode 100644
index ae7d8a64..00000000
--- a/help/tant2.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-\b;Objective
-As a defense against ants attacking from all sides, adapt the program \c;Spider2\n; in order to fly at a given altitude.
-
-\t;Program
-The program necessary for this task is somewhat similar to the program \c;Spider2\n; that looks for the closest ant, turns towards it and fires:
-\c;
-\s;extern void object::Spider2()
-\s;{
-\s; object item;
-\s;
-\s; while (true)
-\s; {
-\s; item = radar(AlienSpider);
-\s; turn(direction(item.position));
-\s; fire(1);
-\s; }
-\s;}
-\n;
-You can copy-paste it to the editor, and adapt it. Replace \c;radar(AlienSpider);\n; by \c;radar(AlienAnt);\n;, and write before the \c;while\n; loop another loop that activates the jet beneath the \l;winged shooter\u object\botfj; until the bot reaches an altitude of 20 meters.
-
-The instruction \c;\l;jet\u cbot\jet;()\n; controls the jet beneath winged bots. The number in brackets must range between \c;-1\n; and \c;1\n;.\c; jet(1);\n; moves the bot upward with maximum speed.\c; jet(-1);\n; moves the bot downward with maximum speed, and \c;jet(0);\n; stabilizes the altitude. As the bot must reach a precise altitude, move it upward slowly with \c;jet(0.2);\n;, wait until it has reached the desired height, then stabilize the altitude with \c;jet(0);\n;.
-
-In order to "wait until it has reached the desired height", we need a conditional loop: the instructions inside the loop will be repeated only as long as a certain condition is true. The altitude of the bot is given by \c;position.z\n;. We already saw that \c;position\n; gives the position of the bot. And a position is given by the three coordinates x, y and z: the x-axis is the axis west-east, the y-axis is the axis south-north, and the z-axis is the vertical axis. Therefore we must wait while \c;position.z\n; is smaller than 20:
-\c;
-\s; while (position.z < 20)
-\s; {
-\s; wait(0.2);
-\s; }
-\n;
-After waiting 0.2 seconds, the program will check if the altitude is still below 20 meters. If this is the case, it will wait a little more, if not, the program continues after the loop, i.e. after the closing brace \c;}\n;. Do not forget after the loop to stabilize the altitude with \c;jet(0);\n;.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/tant3.txt b/help/tant3.txt
deleted file mode 100644
index 5987a2ee..00000000
--- a/help/tant3.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-\b;Objective
-Adapt the program \c;Tower1\n; in order to avoid wasting energy when shooting at ants that are out of range.
-
-\t;Program
-The program \c;Tower1\n; shoots in the direction of the closest ant, even if it is still out of range:
-\c;
-\s;extern void object::Tour1()
-\s;{
-\s; object item;
-\s;
-\s; jet(0.2);
-\s; while(position.z < 20)
-\s; {
-\s; wait(0.2);
-\s; }
-\s; jet(0);
-\s;
-\s; while(true)
-\s; {
-\s; item = radar(AlienAnt);
-\s; turn(direction(item.position));
-\s; fire(1);
-\s; }
-\s;}
-\n;
-If the bot must perform the same task than before with only a \l;regular power cell\u object\power;, you can insert a loop that waits until the ant is close enough, i.e. until the ant is at less than 40 meters. Only one burst will be needed for every ant then.
-
-You can give the instruction \c;\l;radar\u cbot\radar();\n; more parameters (numbers) indicating where the radar should look for the ants. For example \c;radar(AlienAnt,0,360,0,40);\n; will only look for ants that are closer than 40 meters. The two first numbers tell the radar to search in all directions, the two last numbers tell the radar to detect only ants that are at a distance between 0 and 40 meters. If no ant is found that is closer than 40 meters, the instruction \c;\l;radar\u cbot\radar();\n; returns the value \c;null\n;. We can then write a conditional loop similar to the one written in the last exercise that waits as long as there is no ant closer than 40 meters:
-\c;
-\s; while (radar(AlienAnt, 0, 360, 0, 40) == null)
-\s; {
-\s; wait(0.2);
-\s; }
-\n;
-Notice that two equal signs "==" are needed to perform a comparison of equality.
-
-Just insert these lines before the instruction \c;fire(0);\n;, and the bot will wait before shooting until the ant is closer than 40 meters. Like this a regular power cell is enough to kill all ants.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/tant4.txt b/help/tant4.txt
deleted file mode 100644
index 4e83056c..00000000
--- a/help/tant4.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-\b;Objectif
-Program a \l;winged shooter\u object\botfj; to hunt all ants in the region.
-
-\t;Program
-In this swamp, a wheeled or tracked shooter is of little use. And ants, in opposition to spiders, keep moving: you can not just turn towards the closest ant, move forward and shoot.
-
-The easiest way to solve the problem consists in flying at a height of 10 meters, aiming downward with \c;aim(-20);\n;, and approaching the ant with a conditional loop as long as the \l;distance\u cbot\dist; is greater than 20m. In this conditional loop, you must look for the closest ant, turn towards it, set the motors at full speed with \c;motor(1,1);\n;, and wait a little, for example 0.2 seconds. All these instructions must be repeated until the ant is at less than 20 meters. Then just shoot it.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/tant5.txt b/help/tant5.txt
deleted file mode 100644
index 8f2b16e7..00000000
--- a/help/tant5.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-\b;Objective
-Adapt the flying height of the \l;winged shooter\u object\botfj; to the terrain.
-
-\t;Program
-Here is one more time the program of the previous exercise that hunts ants:
-\c;
-\s;extern void object::JetFighter1()
-\s;{
-\s; object item;
-\s;
-\s; aim(-20);
-\s; jet(0.2);
-\s; while (position.z < 10)
-\s; {
-\s; wait(0.2);
-\s; }
-\s; jet(0);
-\s;
-\s; while (true)
-\s; {
-\s; while (radar(AlienAnt, 0, 360, 0, 20) == null)
-\s; {
-\s; item = radar(AlienAnt);
-\s; turn(direction(item.position));
-\s; motor(1,1);
-\s; wait(0.2);
-\s; }
-\s; fire(1);
-\s; }
-\s;}
-\n;
-The bot always stays at an altitude of 10m above sea level. This is not adapted to the mountainous terrain of the present exercise, the bot has got to adapt to the terrain. The best way to do so is to insert just before the \c;wait(0.2);\n; a test to see if the height above ground is too low or too high, and to react accordingly.
-
-We already saw that \c;position.z\n; gives the altitude above sea level. \c;\l;topo\u cbot\topo;(position)\n; gives the altitude of the ground at the position of the bot. If we want the bot to stay at an altitude between 6 and 9m above ground, we must treat the following cases: if \c;position.z-topo(position)\n; is smaller than 6, the bot must climb with \c;jet(1);\n;. If \c;position.z-topo(position)\n; is greater than 9, the bot must go down with \c;jet(-1);\n;. In order to program these tests, use the instruction \c;\l;if\u cbot\if;\n;, that executes the instructions in braces only once if the condition is true:
-\c;
-\s; jet(0);
-\s; if (position.z-topo(position) < 6)
-\s; {
-\s; jet(1);
-\s; }
-\s;
-\s; if (position.z-topo(position) > 9)
-\s; {
-\s; jet(-1);
-\s; }
-\n;
-Before starting the testing, stabilize the altitude with \c;jet(0);\n;: in case the height above ground lies between 6 and 9m, the bot must neither climb nor go down. If afterwards either \c;jet(1);\n; or \c;jet(-1);\n; is executed, it will cancel the previous \c;jet(0);\n;.
-
-Just insert these lines before the \c;wait(0.2)\n;, and the bot will adapt to the terrain. You can then delete the first lines of the program that set the initial altitude at 10m.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/tcell1.txt b/help/tcell1.txt
deleted file mode 100644
index 3425084d..00000000
--- a/help/tcell1.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-\b;Objective
-Program the \l;grabber bot\u object\botgr; to change the \l;power cell\u object\power; of the \l;winged shooter\u object\botfj;. The winged shooter can then shoot the spiders.
-
-\t;Procedure
-1) Program the \l;grabber bot\u object\botgr;.
-2) Execute the program with the arrow button \button 21;.
-The \l;winged shooter\u object\botfj; is already programmed, it will do its job as soon as it has got a new power cell.
-
-\t;Program
-You will need the following instructions:
-\c;
-\s;grab();\n;
-\n;Takes whatever there is in front of the bot.
-\c;
-\s;drop();\n;
-\n;Drops whatever the bot is carrying in front.
-\c;
-\s;turn();\n;
-\n;We have seen this instruction already in the previous exercise: it performs a rotation of a certain angle, given in degrees.
-
-Let us see the beginning of the program:
-o pick up the empty power cell with \c;grab();\n;
-o turn left 90 degrees (quarter turn) with \c;turn(90)\n;
-o drop the empty cell with \c;drop();\n;
-o etc.
-
-It is up to you now to write the rest of the program!
-
-If you have got a problem, you can always look at the solution: select the \c;Solution\n; program, and click the braces button \button 22;.
-
-\t;Remarks
-Be careful to write the instructions precisely, respecting lower and upper case letters.
-
-Always write one instruction per line, finishing each line with a semicolon.
-
-In case your program does not do exactly what you wanted, you can put the bot back at the starting point with the button \button 59;. You can also start over again from the beginning (hit the key "Esc", the click "Restart"). The program you have written will not be lost.
-
-\key;\key help;\norm; allows you to review these instructions at all times.
diff --git a/help/tcell2.txt b/help/tcell2.txt
deleted file mode 100644
index e750bb32..00000000
--- a/help/tcell2.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-\b;Objective
-Power the \l;winged shooters\u object\botfj; with \l;power cells\u object\power;, so that they can kill the ants in the ant nest located in a hole north of your position.
-
-\t;Program
-The \l;wheeled grabber\u object\botgr; must go to a \l;power cell\u object\power;, grab it, go to a \l;winged shooter\u object\botfj;, and drop the cell. This task is very similar to the task performed in the previous exercise. Here is this program again:
-\c;
-\s;extern void object::Titanium2()
-\s;{
-\s; object item;
-\s;
-\s; item = radar(TitaniumOre);
-\s; goto(item.position);
-\s; grab();
-\s;
-\s; item = radar(Converter);
-\s; goto(item.position);
-\s; drop();
-\s;}
-\n;
-The best way to solve the present exercise is to copy \button 61; the program above into the clipboard (from \c;object\n; to \c;drop();\n;), and paste \button 62; it into the program editor. Then you just have to make the necessary changes in order to adapt it to the new task.
-
-Instead of looking for titanium ore (\c;TitaniumOre\n;), look for a power cell (\c;PowerCell\n;). Instead of going to a converter (\c;Converter\n;), go to a winged shooter (\c;WingedShooter\n;). As soon as the winged shooter has got a new power cell, it will get down to work.
-
-If you want to know more about the "names" of the different objects in the programming language, please refer to the \l;text about categories\u cbot\category;.
-
-\t;Further improvement: loops
-Once the program explained above works properly, you can improve it in order to repeat the task over and over again. Like this you will not have to execute the program several times in order to power several bots.
-
-All programs written until now execute all instructions only once, one after another, from the beginning to the end of the program. You can also tell the bot to repeat some instructions: just write \c;while (true)\n;, an open brace, the instructions to be repeated, and a closing brace. Repeating some instructions several times in this way is called a loop. Here is an example of a program that repeats over and over the instructions that look for a power cell, grab it, and drop it on a winged shooter:
-\c;
-\s; while (true)
-\s; {
-\s; item = radar(PowerCell);
-\s; goto(item.position);
-\s; grab();
-\s;
-\s; item = radar(WingedShooter);
-\s; goto(item.position);
-\s; drop();
-\s; }
-\n;
-Of course the variable declaration \c;object item;\n; must not be inside the loop, but just before: declare a variable only once.
-
-\t;Remark
-A bot can execute a program perfectly well on his own. Meantime you can for example select the astronaut and take a look at what is happening at the nest, the show is worth it. But be careful not to get shot by your own bots...
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/tchasse.txt b/help/tchasse.txt
deleted file mode 100644
index 0e459b80..00000000
--- a/help/tchasse.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-\b;Exercise
-You must find a way to destroy the four moving \l;target bots\u object\bottarg; without wasting one shot. Notice that after every move, the targets will stay motionless during one second.
-
-\b;General principle
-1) Detect a target with the instruction \c;\l;radar\u cbot\radar;(TargetBot);\n;.
-2) Turn towards the target with \c;\l;turn\u cbot\turn;(direction());\n;.
-3) After the rotation, check if the target did not move.
-4) If it did not, wait 0.2 seconds with \c;\l;wait\u cbot\wait;(0.2);\n;.
-5) Re-check if the target did not move.
-6) If it did not, shoot with \c;\l;fire\u cbot\fire;(2);\n; and wait 2 seconds for the target to be hit by the bullets and destroyed.
-
-There are of course other ways to achieve the goal.
-
-\b;Remark
-In order to increase the efficiency of your shots, aim a little downward with \c;\l;aim\u cbot\aim;(-3);\n;.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/tdragst.txt b/help/tdragst.txt
deleted file mode 100644
index 14be2b9a..00000000
--- a/help/tdragst.txt
+++ /dev/null
@@ -1,64 +0,0 @@
-\b;Exercise
-Reach the finishing pad (25m in front of you) as fast as possible, using the instruction \c;motor( , )\n;. You will have to slow down progressively at the end of the move, otherwise the bot will get blown up on the \l;mines\u object\mine;.
-
-You could very well write no more than \c;\l;move\u cbot\move;(25);\n;, this would work perfectly well. However, the aim of this exercise is to learn how to use the instruction \c;\l;motor\u cbot\motor;\n;.
-
-This instruction asks for two values:
-1) The speed of the left-hand motor.
-2) The speed of the right-hand motor.
-
-\s;\c; motor( left, right );
-\n;
-The values must range between -1 and 1:
--1 = full throttle backward
- 0 = stop
- 1 = full throttle forward
-
-For example, \c;motor(0.5, 0.5);\n; will move the motor forward with half-speed, until new instructions are given to the motors.
-
-With the instruction \c;motor(0.5, 0.6);\n;, the bot will move forward with half-speed, turning at the same time slightly to the left: the right-hand motor moves a little faster (\c;0.6\n;) than the left-hand motor (\c;0.5\n;).
-
-\b;General principle
-In order to move forward for exactly 25 meters and not more, you must move full speed during the first 23 meters, then reduce the speed of the motors progressively during the last two meters.
-The \l;variable\u cbot\var; \l;position\u cbot\object; gives you at any moment the current position of the bot, and the instruction \c;\l;distance\u cbot\dist;( , );\n; returns the distance between two points. The best way to know where you are consists in saving the current position before the start into a \l;variable\u cbot\var;, for example a variable called \c;start\n;. Then you can calculate the distance between the starting position and your current position with \c;distance(position, start)\n;.
-
-\b;The program
-1) declare the variables
-\s;\c; point start;
-\s; float len;
-\n;
-2) save the starting position
-\s;\c; start = position;
-\n;
-3) start full throttle :
-\s;\c; motor(1, 1);
-\n;
-4) Perform an infinite \c;\l;while\u cbot\while;\n; loop:
-\s;\c; while ( true )
-\s; {
-\s; len = distance(position, start);
-\s; if ( len > 25-2 )
-\s; {
-\s; motor( less than before ! );
-\s; }
-\s; }
-\n;
-As long as the distance between the start and the current position is smaller than 23m, the instruction in braces after the \c;\l;if\u cbot\if;\n; instruction will not be executed, so the motors keep their maximum speed as they were told by the \c;\l;motor\u cbot\motor;(1,1);\n; instruction.
-
-In order to slow down progressively, the speed of the motors must be proportional to the remaining distance:
-o \c;2.0\n; meters left -> speed = \c;1.00\n; (maximum)
-o \c;1.5\n; meters left -> speed = \c;0.75\n;
-o \c;1.0\n; meter left -> speed = \c;0.50\n;
-o \c;0.5\n; meter left -> speed = \c;0.25\n;
-o \c;0.0\n; meter left -> speed = \c;0.00\n; (stop)
-
-\image tdragst1 12 6;
-You can use the following \l;expression\u cbot\expr; \c;(25-len)/2\n; in order to calculate the value for the speed instruction that must be given to the motors.
-
-It is now up to you to put everything together and to test the program.
-
-\b;Remark
-You can use values greater than 1 for the instruction \c;\l;motor\u cbot\motor;();\n;, but the bot will not move any faster.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/texch1.txt b/help/texch1.txt
deleted file mode 100644
index f75060d4..00000000
--- a/help/texch1.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-\b;Exercise
-Several \l;information exchange posts\u object\exchange; stand in the middle of a \l;mine\u object\mine; field. When the bot is close enough to an exchange post, it can read the information that it contains. Every exchange post contains the angle of the rotation that must be performed in order to reach the next exchange post, without touching a \l;mine\u object\mine;.
-The exchange posts are distant 20m from each other.
-
-\b;General principe
-Repeat 5 times :
- o Move 20m forward.
- o Read the direction of the next \l;information exchange post\u object\exchange;.
- o Execute the necessary rotation.
-
-\image tinfo1 8 8;
-In order to repeat the steps above, use a \c;\l;for\u cbot\for;\n; loop, as we saw it before.
-\s;\c; for ( int i=0 ; i<5 ; i=i+1 )
-\n;
-Move forward with the instruction \c;move(20);\n;.
-
-Use the instruction \c;\l;receive\u cbot\receive;("Direction");\n; in order to read the information contained in the \l;exchange post\u object\exchange;. This is of course possible only when the bot is close enough to the exchange post.
-You will need a \l;variable\u cbot\var; to contain the value retrieved from the exchange post. Let us call it \c;dir\n;; you must declare it with the following line:
-\s;\c; float dir;
-\n;
-Then retrieve the rotation angle from the exchange post, and put it into the variable:
-\s;\c; dir = receive(...);
-\n;
-Then you can execute the rotation:
-\s;\c; turn(dir);
-\n;
-\b;Remark
-You can click on an \l;information exchange post\u object\exchange; in order to read what information it contains. In this exercise, every exchange post contains only one value called \c;"Direction"\n;, but it can contain up to 10 different values, as you will see in some of the following exercises.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/texch2.txt b/help/texch2.txt
deleted file mode 100644
index f75e2ddf..00000000
--- a/help/texch2.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-\b;Exercise
-In this exercise, the \l;information exchange posts\u object\exchange; along the way contain the direction of the next post and the distance. And you do not know how many exchange posts you must get in touch with before arriving at your goal.
-
-\b;General principle
- Repeat forever:
- o Retrieve the direction from the \l;exchange post\u object\exchange;.
- o Retrieve the distance from the \l;exchange post\u object\exchange;.
- o If no information could be retrieved, stop the program.
- o Execute the rotation.
- o Move forward to the next post.
-
-In order to repeat always, use a \c;\l;while\u cbot\while; (true)\n; loop. The instructions between the braces \c;{ }\n; will be repeated over and over, or until a \c;\l;break\u cbot\break;\n; instruction is executed.
-\s;\c; while ( true )
-\n;
-This time you need 2 \l;variables\u cbot\var;, one for the rotation angle, one for the distance, for example \c;dir\n; and \c;len\n; :
-\s;\c; float dir, len;
-\n;
-Then you can retrieve the information:
-\s;\c; dir = receive("Direction");
-\s;\c; len = receive("Length");
-\n;
-A variable of the \l;type\u cbot\type; \c;\l;float\u cbot\float;\n; can take a special value called \c;\l;nan\u cbot\nan;\n;. This value means that the variable contains no number (Not A Number).
-When there is no \l;exchange post\u object\exchange; nearby, either because the bot has reached the goal, or because it took the wrong way, the two variables \c;dir\n; and \c;len\n; contain this value. You can test this with the instruction \c;\l;if\u cbot\if;\n;, and stop the program if necessary with the instruction \c;\l;break\u cbot\break;\n;:
-\s;\c; if ( dir == nan ) break;
-\n;
-If the information retrieval from the \l;exchange post\u object\exchange; has been performed successfully, execute the rotation:
-\s;\c; turn(dir);
-\n;
-And move forward:
-\s;\c; move(len);
-\n;
-\b;Remark
-You can click on an \l;information exchange post\u object\exchange; in order to read what information it contains. In this exercise, every exchange post contains two values called \c;"Direction"\n; and \c;"Length"\n;.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/tfollow1.txt b/help/tfollow1.txt
deleted file mode 100644
index ee2cba5a..00000000
--- a/help/tfollow1.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-\b;Exercise
-You must follow the \l;target bot\u object\bottr; with the explosive device, but without touching it, otherwise it will blow up. Every time the target bot stops, you must be close to it (less than 10m). After you managed to stay close to the target bot at 10 successive stops, it will lead you to the finishing pad, and the exercise is over. At every stop, the target bot checks that you are there. If you are not there, you must start over again.
-
-\b;General principle
-Repeat forever :
-o Look for the target bot.
-o Calculate the distance to the bot.
-o if the distance to the target bot is less than 5m, move backward.
-o Otherwise, calculate the direction of the target bot, and move towards it.
-
-As many times before, use \c;\l;while\u cbot\while; (true)\n; in order to perform the infinite loop:
-\s;\c;while (true)
-\s;{
-\s; \n;instructions to be repeated ...\c;
-\s;}
-\n;
-Look for the target bot with the instruction \c;\l;radar\u cbot\radar;\n;:
-\s;\c; target = radar(TargetBot);
-\n;
-You do not have to test if the radar found a target bot: there must be one.
-
-Use the instruction \c;\l;distance\u cbot\dist;( , )\n; to calculate the distance between two points. The first point will be the position of your own bot, given by \c;position\n;. The second point is the position of the target bot, given by \c;target.position\n;.
-\s;\c;len = distance(position, target.position);
-\n;
-If the distance to the target bot is smaller than 5m, move backward with a speed inversely proportional to the distance: the closer you are to the bot, the faster you must move backward.
- Distance = 5.0 meters -> speed = 0.0
- Distance = 2.5 meters -> speed = -0.5
- Distance = 0.0 meters -> speed = -1.0
-You can use the \l;expression\u cbot\expr; \c;distance/5-1\n; in order to achieve this, together with the \c;\l;if\u cbot\if;\n; to test if the target is closer than 5m:
-\s;\c;if ( len < 5 ) // too close ?
-\s;{
-\s; motor(len/5-1, len/5-1); // moves backward
-\s;}
-\n;
-If the distance to the target is greater than 5m, move towards the target. First calculate the angle necessary to face the target with the instruction \c;\l;direction\u cbot\direct;\n;. You can then adjust the speed of the right-hand and left-hand motor in order to follow the target:
-\s;\c;else
-\s;{
-\s; dir = direction(target.position);
-\s; if ( dir >= 0 ) // target on the left side?
-\s; {
-\s; motor(1-dir/90, 1);
-\s; }
-\s; else // target on the right side?
-\s; {
-\s; \n;it is up to you to fill in\c;
-\s; }
-\s;}
-\n;
-When the target is on your left, \c;dir\n; takes a positive value, ranging between 0 and 180. The \l;expression\u cbot\expr; \c;1-dir/90\n; returns a speed ranging between 1 and -1, according to the direction:
- direction = 0 -> speed = 1.0
- direction = 45 -> speed = 0.5
- direction = 90 -> speed = 0.0
- direction = 135 -> speed = -0.5
- direction = 180 -> speed = -1.0
-
-\image radar2 14 10;
-When the target is on the right side, \c;dir\n; is negative, ranging between 0 and -180.
-
-The only task left for you now is to declare the \l;variables\u cbot\var; that you use in the program. \c;target\n; is of type \c;object\n;, whereas \c;dir\n; and \c;len\n; are of type \c;float\n;.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/tfor.txt b/help/tfor.txt
deleted file mode 100644
index e0857898..00000000
--- a/help/tfor.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-\b;Exercise
-Destroy the six \l;targets\u object\bottarg; with a program using a loop. The bot must move 5m forward to get from one target to the next.
-
-\b;General principle
-The program must execute the following scheme:
-Repeat 6 times :
- o move 5m forward
- o turn 90 degrees left
- o shoot
- o turn 90 degrees right
-
-\image tfor1 14 5;
-\b;Instruction \c;for ( )\n;
-The instruction \c;\l;for\u cbot\for;\n; asks for 3 expressions:
-1) Initialize the counting variable.
-2) The end \l;condition\u cbot\cond;.
-3) The counting \l;expression\u cbot\expr;.
-
-Here is the loop once it is integrated into the program frame:
-\s;\c;extern void object::Massacre( )
-\s;{
-\s; for ( int i=0 ; i<6 ; i=i+1 )
-\s; {
-\s; \n;instructions repeated 6 times ...\c;
-\s; }
-\s;}
-\n;
-ATTENTION: The line \c;for ( )\n; must not be followed by a \l;semicolon\u cbot\term; !
-
-\b;Explanation of the instruction \c;for ( )\n;
-1) \c;int i=0\n;
- The \l;variable\u cbot\var; i is set to zero before the beginning of the loop.
-
-2) \c;i<6\n;
- The loop will be executed as long as i is smaller than 6.
-
-3) \c;i=i+1\n;
- At the end of every loop, add 1 to the variable i.
-
-\b;Blocks
-Use braces \c;{ }\n; in order to create a \l;block\u cbot\bloc;. All the instructions that must be executed in the \c;for\n; loop are held together by a block. The whole program itself is made up of a block:
-\c;
-\s;extern void object::massacre( )
-\s;{
-\s; \n;fill in here ...\c;
-\s;}
-\n;
-Never change these characters. Just add the instructions of the program between the braces.
-You can fit several blocks one into the other. For example the \c;for\n; block is fitted into the block of the whole program. In order to improve readability, the editor lines up the braces belonging to the different blocks.
-
-\b;Remember
-The instruction used to move forward is \c;\l;move\u cbot\move;();\n;.
-The instruction used to turn the bot is \c;\l;turn\u cbot\turn;();\n;. A positive angle turns left.
-The instruction used to fire the cannon is \c;\l;fire\u cbot\fire;(1);\n;. A one-second burst allows to destroy all six \l;targets\u object\bottarg;.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/tlaby1.txt b/help/tlaby1.txt
deleted file mode 100644
index e291ae30..00000000
--- a/help/tlaby1.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-\b;Exercise
-Program the bot so that it will find its way without hitting the walls of the labyrinth. We suppose that you do not know the configuration of the labyrinth, but there are no bifurcations, and no dead-ends. The labyrinth is made of squares measuring 5m each.
-
-\b;The instruction \c;radar\n;
-The instruction \c;\l;radar\u cbot\radar;(Barrier, 0, 45, 0, 5);\n; will find any \l;barrier\u object\barrier; in front of the radar that is closer than 5m. Let us take a closer look at the five parameters used:
-
-\s;\c;Barrier\n;
-\l;Category\u cbot\category; of the object that the radar must look for, i.e. a barrier.
-
-\s;\c;0\n;
-Direction of the radar. \c;0\n; means that the radar must search straight forward.
-
-\s;\c;45\n;
-Opening angle in degrees. With an opening angle of 45 degrees, barriers situated between 22.5 degrees to the left and 22.5 degrees to the right will be detected.
-
-\s;\c;0\n;
-Minimum detection distance. \c;0\n; means that even object that are very close to the bot will be detected.
-
-\s;\c;5\n;
-Maximum detection range. Any barrier situated beyond \c;5\n; meters will not be detected.
-
-To take another example, \c;\l;radar\u cbot\radar;(Barrier, 90, 45, 0, 5);\n; will direct the radar 90 degrees to the left, in order to test if the way to the left is free.
-
-\image tlaby1 10 10;
-\b;General principle
-The program must only take care of one square portion of the labyrinth. You will have to execute it several times in order to arrive at the finishing pad.
-o If there is nothing in front, move forward.
-o If there is nothing on the left side, quarter turn left, move forward.
-o If there is nothing on the right side, quarter turn right, move forward.
-
-1) First of all declare three \l;variables\u cbot\var; of type \c;\l;object\u cbot\object;\n;, that we call \c;front\n;, \c;left\n; and \c;right\n;. Variables of this type can contain the description of any object, for example of a barrier found by the radar.
-\s;\c; object front, left, right;\n;
-
-2) Look for barriers in all three directions, and put the result of the \c;radar\n; instruction into the three variables defined at point 1). If the radar finds nothing, the variable will contain the value \c;\l;null\u cbot\null;\n;.
-\s;\c; front = radar(Barrier, 0, 45, 0, 5);
-\s; left = radar(Barrier, 90, 45, 0, 5);
-\s; right = radar(Barrier, -90, 45, 0, 5);
-\n;
-3) Test if the way is free in front of the bot with the instruction \c;\l;if\u cbot\if;\n;. If the test is true, the instructions in braces \c;{ }\n; will be executed, otherwise the execution will resume after the closing brace \c;}\n;.
-The instruction \c;return\n; leaves the program: the job is done.
-\s;\c;if ( front == null )
-\s;{
-\s; move(5);
-\s; return;
-\s;}
-\n;
-4) Test if it is possible to turn left; if so, turn left with the instruction \c;\l;turn\u cbot\turn;\n; and move 5m forward.
-\s;\c;if ( left == null )
-\s;{
-\s; turn(90);
-\s; move(5);
-\s; return;
-\s;}
-\n;
-5) Test if it is possible to turn right.
- ...
-
-\b;Attention
-The instruction \c;if ( )\n; must never be followed by a \l;semicolon\u cbot\term;.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/tlaby2.txt b/help/tlaby2.txt
deleted file mode 100644
index 405ef532..00000000
--- a/help/tlaby2.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-\b;Exercise
-This exercise is very similar to the previous one. This time the bot should find its way alone from the start to the goal; you will have to execute the program only once.
-
-\b;Remark
-The labyrinth is not exactly the same, but this should be of no importance, as the program adapts to what it "sees".
-
-\image tlaby1 10 10;
-\b;General principle
-Use an infinite \c;\l;while\u cbot\while;\n; loop in order to execute the previous program several times:
-\s;\c;while ( true )
-\s;{
-\s; \n;If there is nothing in front, move forward\c;
-\s; \n;If there is nothing on your left hand, turn left\c;
-\s; \n;If there is nothing on your right hand, turn right\c;
-\s;}
-\n;
-Inside this \c;while\n; loop, replace the \c;return\n; instructions by \c;\l;continue\u cbot\continue;\n; instructions. \c;return\n; would quit the program, which is not what we want here. \c;continue\n; will just resume the execution at the beginning of the \c;\l;while\u cbot\while;\n; loop:
-\s;\c;if ( front == null )
-\s;{
-\s; move(5);
-\s; continue;
-\s;}
-\n;
-\b;Remember
-Here is again the program of the previous exercise :
-\c;
-\s;object front, left, right;
-\s;
-\s;front = radar(Barrier, 0, 45, 0, 5);
-\s;left = radar(Barrier, 90, 45, 0, 5);
-\s;right = radar(Barrier, -90, 45, 0, 5);
-\s;
-\s;if ( front == null )
-\s;{
-\s; move(5);
-\s; return;
-\s;}
-\s;if ( left == null )
-\s;{
-\s; turn(90);
-\s; move(5);
-\s; return;
-\s;}
-\s;if ( right == null )
-\s;{
-\s; turn(-90);
-\s; move(5);
-\s; return;
-\s;}
-\n;
-\b;Help
-If you need some help, just click on the hyperlinks of the instructions \c;\l;radar\u cbot\radar;\n;, \c;\l;if\u cbot\if;\n;, \c;\l;move\u cbot\move;\n; or \c;\l;turn\u cbot\turn;\n;.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/tmove1.txt b/help/tmove1.txt
deleted file mode 100644
index 935d3eff..00000000
--- a/help/tmove1.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-\b;Exercise
-Program the robot in such a way that it arrives on the finishing pad, after having passed by the three blue crosses.
-
-\b;Procedure
-1) Take the power cell and put it on the rear of the bot.
-2) Walk around on reconnaissance to understand what the bot must do.
-3) Program the bot. To do so, you must select it, and then click on the braces button \button 22;; you will get into the program editor.
-4) Once you finished writing the program, click "OK", and execute the program with the arrow key \button 21;.
-
-\b;Program
-The pads are at a distance of 20 meters from each other.
-The instruction \c;move(20);\n; moves 20 meters forward.
-The instruction \c;turn(90);\n; turns left with an angle of 90 degrees.
-The instruction \c;turn(-90);\n; turns right with an angle of 90 degrees.
-
-The frame of the program consists in:
-\c;
-\s; extern void object::MoveBot( )
-\s; {
-\s; \n;\\write the necessary instructions here ...\c;
-\s; }
-\n;
-For now, you must not change the frame of the program. Just insert the instructions you need to move the bot around between the braces \c;{ }\n;.
-
-\b;Attention
-Be very careful about upper case and lower case letters!
-Every instruction must be terminated with a semicolon.
-
-\b;Helpful trick
-When you write the program, you can watch the scene by clicking on the button \button 51;, and by moving the mouse to the edges of the window to turn the camera.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/tmove2.txt b/help/tmove2.txt
deleted file mode 100644
index fc84d794..00000000
--- a/help/tmove2.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-\b;Exercise
-This exercise is very similar to the previous one. The bot must move exactly in the same way, but when writing the program, you must use a new concept that is extremely important in programming: \l;variables\u cbot\var;.
-We saw that all the pads are at a distance form each other of 20 meters. And all the rotations performed consist in 90 degree angles. Instead of rewriting the same values over and over again in the program, we can store them in a variable:
-
-Instead of:
-\c;\s; move(20);
-\s; turn(90);
-\s; move(20);
-\s; turn(-90);
-\s; ...
-\n;
-We write :
-\c;\s; dist = 20;
-\s; dir = 90;
-\s; move(dist);
-\s; turn(dir);
-\s; move(dist);
-\s; turn(-dir);
-\s; ...
-\n;
-\b;Variables
-A \l;variable\u cbot\var; is composed of three elements:
-1) The name
-2) The type of the content
-3) The content
-
-\t;The name
-Use the name to refer to a variable. For example, instead of writing \c;move(20);\n;, write \c;move(dist);\n;: "dist" is the name of the variable. You can choose almost any name for a variable, for example \c;dist\n;, \c;dir\n;, \c;p2\n;, \c;a\n;, \c;x\n;, \c;nothing_2_grab\n;, etc.
-
-\t;The type
-The type of a variable determines what kind of information the variable can contain. According to the type, a variable can contain a whole number, a real number, a character string, the coordinates of a point, etc. Here is a list with the most common variable types:
- o \c;\l;int\u cbot\int;\n; for a whole number (12, -500, etc.)
- o \c;\l;float\u cbot\float;\n; for a real number (3.14, 0.2, -99.98, etc.)
- o \c;\l;string\u cbot\string;\n; for a character string ("Hello!", "Nothing to grab", etc.)
- o \c;\l;point\u cbot\point;\n; for the x,y,z-coordinates of a point in space
- o \c;\l;object\u cbot\object;\n; for the information about an object (bot, building, etc.)
-
-\t;The content
-The content of a variable can be a number, a string, coordinates, etc., according to the type of the variable. The content of a variable can change many times during the execution of a program.
-
-Before you can use a variable, you have to declare it. For example, before you can use the two variables \c;dist\n; and \c;dir\n;, you must declare them with the following lines:
-\c;
-\s; float dist;
-\s; float dir;
-\n;
-Now you can use the two variables. To put the value 20 into \c;dist\n; and 90 into \c;dir\n;, write:
-\c;
-\s; dist = 20;
-\s; dir = 90;
-\n;
-Now you can move and turn the bot with the instructions \c;\l;move\u cbot\move;\n; and \c;\l;turn\n;\u cbot\turn;:
-\c;
-\s; move(dist);
-\s; turn(dir);
-\n;
-You can also use a whole \l;mathematical expression\u cbot\expr; instead of just the variable:
-\c;
-\s; move(dist+100);
-\s; turn(-dir);
-\n;
-The latter instruction will be needed to turn the bot right.
-
-Now, rewrite the program of the previous exercise, but use a variable for the distance and another variable for the angle of the rotation.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/tproc1.txt b/help/tproc1.txt
deleted file mode 100644
index 03b243a8..00000000
--- a/help/tproc1.txt
+++ /dev/null
@@ -1,59 +0,0 @@
-\b;Exercise
-The \l;bot\u object\bottr; must pass over all the \l;blue crosses\u object\waypoint; on the ground. The way that must be covered is made of two squares. The first one measures 15 meters, the second 25 meters.
-
-\image tproc1a 8 8;
-\b;General principle
-In order to solve this problem, the most efficient solution consists in creating a \l;function\u cbot\function; that instructs the bot to move on a square shape of a certain size. The main program becomes then very simple:\c;
-\s;extern void object::Function1( )
-\s;{
-\s; Square(15);
-\s; Square(25);
-\s;}
-\n;
-You still have to define the function called \c;Square\n;. In order to do this, you will have to write some instructions outside the \l;block\u cbot\bloc; that until now was the frame of each one of your programs. At the very end of the program, after the last closing brace, we will define the function \c;Square\n;. The program will take the following shape:
-\c;
-\s;extern void object::Function1( )
-\s;{
-\s; \n;main function ...\c;
-\s;}
-\s;
-\s;void object::Square(float length)
-\s;{
-\s; \n;new function ...\c;
-\s;}
-\n;
-Let us look in detail at the different elements of the declaration of the function \c;Square\n;:
-
-\c;\l;void\u cbot\void;\n;
-This means that this function will return no value.
-
-\c;\l;object\u cbot\object;::\n;
-When you write this in front of the function name, you can have access in the function to all the characteristics of the bot, such as \c;position\n;, \c;orientation\n;, etc. In this exercise, this element is not compulsory, as we will not need the characteristics of the bot in the function.
-
-\c;Square ( )\n;
-This is the name of the function. You can call it Square, or any other name.
-
-\c;\l;float\u cbot\float; length\n;
-Here you define the parameters that the function will get when it is called. The first time the function is actually called with \c;Square(15)\n;, the variable \c;length\n; will contain the value \c;15\n;. The second time, \c;length\n; will contain \c;25\n;.
-
-Here is in detail what will happen when the program is executed:
-- First the main function \c;Function\n; will be executed.
-- At the line \c;Square(15)\n;, the program will follow the red arrow and enter the function \c;Square\n; a first time, \c;length\n; containing \c;15\n;.
-- At the end of the function \c;Square\n;, the program follows the orange arrow and comes back to the main function.
-- At the line \c;Square(25)\n;, the program will follow the blue arrow and enter the function \c;Square\n; a second time.
-- At the end of the function \c;Square\n;, the program follows the light blue arrow and comes back to the main function.
-
-\image tproc1b 17 12;
-In the function \c;Square\n;, use the instructions \c;\l;move\u cbot\move;\n; and \c;\l;turn\u cbot\turn;\n;. In order to make it shorter, you can use a \c;\l;for\u cbot\for;\n; loop, that will repeat the instructions \c;\l;move\u cbot\move;\n; and \c;\l;turn\u cbot\turn;\n; 4 times; however, this is not compulsory.
-\c;
-\s;void object::Square(float length)
-\s;{
-\s; for ( int i=0 ; i<4 ; i=i+1 )
-\s; {
-\s; move(length);
-\s; turn(90);
-\s; }
-\s;}
-\n;
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/tproc2.txt b/help/tproc2.txt
deleted file mode 100644
index d92f0edb..00000000
--- a/help/tproc2.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-\b;Exercise
-Follow the way in form of a spiral. The bot must move 2 times 25m forward and turn, then move 2 times 20m forward and turn, and so on.
-\image tproc2 8 8;
-\b;Function
-You will have noticed that the way is made of "L"-shaped parts that are fit one into another. The first one (dark blue) measures two times 25 meters. The second one (light blue) measures 5 meters less. Let us start with writing the \l;function\u cbot\function; that will move the bot on a "L"-shaped part whose length will be given as a parameter:
-\c;
-\s;void object::Part(float length)
-\s;{
-\s; for ( int i=0 ; i<2 ; i=i+1 )
-\s; {
-\s; move(length);
-\s; turn(90);
-\s; }
-\s;}
-\n;
-Now you just need to write the main function, that will call the function \c;Part\n;. At the beginning the variable \c;rest\n; will be set to 25m. The \c;while\n; loop will then repeat the instructions inside the block as long as \c;rest\n; is greater than zero. Inside the loop, first call the function \c;Part\n; (see above), then subtract 5m to the length of the L.
-\c;
-\s;extern void object::Function2( )
-\s;{
-\s; float rest = 25;
-\s; while ( rest > 0 )
-\s; {
-\s; Part(rest);
-\s; rest = rest-5;
-\s; }
-\s;}
-\n;
-The function \c;Part\n; will be called a last time with the value \c;5\n;. Then the expression \c;rest-5\n; will set the value of the variable \c;rest\n; to zero, and the \c;while\n; loop will stop.
-
-\b;Remark
-You will have noticed that in the previous exercise, the main function was at the beginning of the program, whereas in this exercise, it is at the end of the program, after the function \c;Part\n;. The rank order of the functions in the program does not matter, you can write a program either way.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/tradar1.txt b/help/tradar1.txt
deleted file mode 100644
index 1ccd1141..00000000
--- a/help/tradar1.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-\b;Exercise
-Let the bot find all the \l;blue crosses\u object\waypoint; on the ground. As soon as the bot passed over one of the crosses, it will disappear. Here is the general principle that you will apply:
-
-Repeat forever:
- o Look for a cross
- o If there is none, stop the program.
- o Calculate the direction of the cross.
- o Set the speed of the motors in such a way that they will find their way to the cross.
-
-\b;The program
-Use a \c;\l;while\u cbot\while;\n; loop in order to repeat several instructions over and over:
-\s;\c;while ( true )
-\s;{
-\s; \n;instructions...\c;
-\s;}
-\n;
-The instruction \c;\l;radar\u cbot\radar;\n; will detect the blue crosses and put their description into a variable, for example \c;spot\n;. In this case, \c;\l;radar\u cbot\radar;()\n; needs only one parameter, i.e. the category of the object that it must look for:
-\s;\c;spot = radar(WayPoint);
-\n;
-Once all the crosses have been found, \c;radar\n; will return the value \c;\l;null\u cbot\null;\n;. You will have to test this case and react accordingly with the instruction \c;\l;if\u cbot\if;\n;:
-\s;\c;if ( spot == null ) // no more ?
-\s;{
-\s; motor(0, 0); // stops the motors
-\s; break; // stops the loop
-\s;}
-\n;The instruction \c;\l;break\u cbot\break;\n; will stop the infinite loop \c;while (true)\n;.
-
-Use the instruction \c;\l;direction\u cbot\direct;()\n; to calculate the angle of the rotation that the bot must perform in order to turn towards the blue cross. The coordinates of the object are given by \c;spot.position\n;. The following line will put the angle of the necessary rotation into the \l;variable\u cbot\var; \c;dir\n;:
-\s;\c;dir = direction(spot.position);
-\n;
-The value of the angle is positive if the blue cross is on your left hand, and negative if it is on your right hand. If the cross to be reached is on your left hand, you must set the right-hand motor to full speed, and set the left-hand motor to a lower speed, according to the angle:
-
- direction = \c; 0\n; -> speed = \c; 1.0\n;
- direction = \c; 45\n; -> speed = \c; 0.5\n;
- direction = \c; 90\n; -> speed = \c; 0.0\n;
- direction = \c;135\n; -> speed = \c;-0.5\n;
- direction = \c;180\n; -> speed = \c;-1.0\n;
-
-The graphic below shows the speed of the left-hand and right-hand motor as set by the instruction \c;\l;motor\u cbot\motor;\n;, according to the angle:
-
-\image radar2 14 10;
-If the cross is straight ahead, the angle is 0 degrees. The motors will get the speeds 1 and 1, which means full speed ahead. If the cross is behind, the right motor will be set to speed -1: it will turn around. You can use the \l;expression\u cbot\expr; \c;1+dir/90\n; in order to calculate the necessary speed of the motors:
-\s;\c;if ( dir < 0 ) // on the right side?
-\s;{
-\s; motor(1, 1+dir/90); // turns more or less
-\s;}
-\n;
-Use the same principle if the angle has got a positive value, ranging between 0 and 180 degrees. It is up to you to work out the exact instructions to be performed:
-\s;\c;else // on the left side?
-\s;{
-\s; \n;up to you to fill in here...\c;
-\s;}
-\n;
-At the beginning of the program, you must still declare all the variables. \c;spot\n; is of type \c;\l;object\u cbot\object;\n;, whereas \c;dir\n; is of type \c;\l;float\u cbot\float;\n;.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/tradar2.txt b/help/tradar2.txt
deleted file mode 100644
index 73d41b27..00000000
--- a/help/tradar2.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-\b;Exercise
-In this exercise, a "crazy bot" places many \l;blue crosses\u object\waypoint; on the ground. In order to find them, you can reuse the program written in the previous exercise. This can show you the flexibility of such a program: it adapts to whatever environment it encounters.
-
-\t;Remark
-Do not wait too long, because the crazy bot gets down to work immediately. Fortunately, as long as you are in the program editor, the game will pause.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/tremote1.txt b/help/tremote1.txt
deleted file mode 100644
index 614674d5..00000000
--- a/help/tremote1.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-\b;Exercise
-Remote control a robot using an \l;information exchange post\u object\exchange;, so it will transport \l;uranium ore\u object\uranore;.
-The main actors of this exercise are¦:
-
-1) A \l;sniffer\u object\botsr; (can't carry anything).
-2) An \l;information exchange post\u object\exchange; that receives information from a sender and then transmits it to a receiver.
-3) A \l;grabber\u object\botgr; which waits for orders from the exchange post. You have no way control this robot directly.
-
-\image tremot1a 16 8;
-An information exchange post stores "name/value" couples. To control the "slave" robot we use just one couple¦:
-
- name="order", valuer=order number
-
-The slace robot understands following orders¦:
-\c;
- 1 -> grab(); // take an object
- 2 -> drop(); // drop an object
- 3 -> move(10); // move 10 meters forward
- 4 -> move(-10); // move 10 meters backwards
-\n;
-To instruct the slave to move forward 10 meters all you have to do is¦:
-\c;\s; \l;send\u cbot\send;("order", 3, 100); // order 3 -> "move(10)"
-\n;
-After the send instruction we wait for 5 seconds to be sure the move is done.
-\c;\s; \l;wait\u cbot\wait;(5);
-\n;
-Remark: There is a better way for waiting the order has been executed, but we'll see this later in exercise "Remote Control #2".
-
-To finish the exercise you must¦:
-
-1) Take the uranium ore
-2) Move forward by 10 meters
-3) Drop the uranium ore
-4) Move backwards by 10 meters
-
-It's up to you to write the program.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/tremote2.txt b/help/tremote2.txt
deleted file mode 100644
index 6bddc59b..00000000
--- a/help/tremote2.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-\b;Exercise
-Remote control a robot using an \l;information exchange post\u object\exchange;, so it will pass over the 6 blue waypoints.
-The main actors of this exercise are¦:
-
-1) A \l;wheeled grabber\u object\botgr; robot without an energy cell. This is the master you have to program.
-2) An \l;information exchange post\u object\exchange; that receives information from the master and then transmits it to the slave.
-3) A \l;practice bot\u object\bottr; which waits for orders from the exchange post. This robot has already been programmed.
-
-\image tremot2a 16 8;
-An information exchange post stores "name/value" couples. To control the "slave" robot we use two couples¦:
-
-1) name="order", value=order number
-2) nom="param", valuer=parameter for the operation
-
-Order #1 means "move" and order #2 means "turn". The parameter is the distance to move or the turning angle. For example to make the slave move 20 meters write¦:
-\c;\s; \l;send\u cbot\send;("order", 1, 100); // order "move"
-\s; \l;send\u cbot\send;("param", 20, 100); // distance 20 meters
-\n;
-These two instruction send following 2 pieces of information to the exchange post¦:
-\c; order=1
- param=20
-\n;
-The slave robot waits for an order and executes it. Once the order has been executed by the slave, it removes the order from the exchange post. Once an order has been sent, the master must wait for the slave finishing the order before sending the next order. This is done by testing if the order is still inside the exchange post. Just write¦:
-\c;\s; while ( \l;testinfo\u cbot\testinfo;("order", 100) ) // wait for end of work
-\s; {
-\s; wait(1);
-\s; }
-\n;
-As we must give more than one order its most convenient to write a \l;function\u cbot\function; \c;SendToPost\n;, that sends the order and wait for its completion¦:
-\c;\s;void object::SendToPost(float order, float param)
-\s;{
-\s; send("param", param, 100); // send the parameter
-\s; send("order", order, 100); // send the order
-\s;
-\s; while ( testinfo("order", 100) ) // wait for end of work
-\s; {
-\s; wait(1);
-\s; }
-\s;}
-\n;
-To move forward by 20 meters, you must write in the main program¦:
-\c;\s; SendToPost(1, 20); // move(20);
-\n;
-This is the route the robot must travel through¦:
-
-\image tremot2b 8 8;
-It's up to you to finish the programming.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/tremote3.txt b/help/tremote3.txt
deleted file mode 100644
index 207342df..00000000
--- a/help/tremote3.txt
+++ /dev/null
@@ -1,103 +0,0 @@
-\b;Exercice
-Remote control a slave robot without using an \l;information exchange post\u object\exchange;. The robot should pass over the 6 blue crosses. You must use a \l;string\u cbot\string; to pass the orders to the slave bot. This string contains the order the slave shoud execute, for exemple \c;"move(20)"\n;. You can see that this is the same syntax as used in the CBOT language but we could have chosen any other syntax for exemple something like \c;"advance=20"\n;. The string will be a \c;\l;static\u cbot\static;\n; class member that will be used to communicate from the master to the slave.
-
-The two main actors of this exercise are:
-1) The \l;wheeled grabber\u object\botgr; without an energy pack and therefore immobile. This is the master you should program so it will transmit orders to the slave.
-2) The slave \l;practice bot\u object\bottr; which is already programmed and just waits for orders from the master.
-
-\b;The slave
-First of all we must understand how the program of the slave works. The \l;class\u cbot\class; \c;exchange\n; contains the mechanism for exchaning the orders. We declare a \c;\l;static\u cbot\static;\n; class member \c;m_order\n; which will contain the order to be executed. The word \c;static\n; insures that the member \c;m_order\n; is shared between all instances of the \l;class\u cbot\class; exchange.
-
-\c;\s;\l;public\u cbot\public; \l;class\u cbot\class; exchange
-\s;{
-\s; \l;static\u cbot\static; \l;private\u cbot\private; \l;string\u cbot\string; m_order = "";
-
-\n;The \c;put\n; method will be used by the master robot for transmitting an order. As long as the string \c;m_order\n; is not empty, the slave has not finished the order and the \c;put\n; method will return \c;false\n; and will do nothing.
-
-\c;\s; \l;synchronized\u cbot\synchro; \l;bool\u cbot\bool; put(string order)
-\s; {
-\s; if ( m_order == "" )
-\s; {
-\s; m_order = order;
-\s; return true;
-\s; }
-\s; else
-\s; {
-\s; return false;
-\s; }
-\s; }
-\n;
-Another method \c;get\n; will be used by the slave to retrieve the orders. This method returns the string contained in \c;m_order\n; and empties it, so a new order can be accepted:
-
-\c;\s; \l;synchronized\u cbot\synchro; string get()
-\s; {
-\s; string ret = m_order;
-\s; m_order = "";
-\s; return ret;
-\s; }
-\s;}
-\n;
-The main program of the slave contains an instance of the class \c;exchange\n; called \c;list\n;.
-
-\c;\s;\l;extern\u cbot\extern; void object::Slave3( )
-\s;{
-\s; exchange list();
-\s; string todo;
-\n;
-The outer \c;while\n; loop lasts for ever. The inner \c;while\n; loop waits for an order by using the \c;get\n; method of the \c;exchange\n; class. As soon as \c;get\n; returns a non empty string, the while loop stops.
-
-\c;\s; \l;while\u cbot\while; ( true )
-\s; {
-\s; \l;while\u cbot\while; ( true )
-\s; {
-\s; todo = list.get();
-\s; if ( todo != "" ) break;
-\s; wait(1);
-\s; }
-\n;
-Now we have received the order in the \c;todo\n; variable. All we have to do is execute it:
-
-\c;\s; if ( \l;strfind\u cbot\strfind;(todo, "move") == 0 )
-\s; {
-\s; move(\l;strval\u cbot\strval;(\l;strmid\u cbot\strmid;(todo,5)));
-\s; }
-\s; if ( strfind(todo, "turn") == 0 )
-\s; {
-\s; turn(strval(strmid(todo,5)));
-\s; }
-\s; }
-\s;}
-\n;
-\b;The master
-In the master we write an function called \c;SendOrder\n; which will send an order to the slave:
-
-\c;\s;void object::SendOrder(string order)
-\s;{
-\s; exchange list();
-\s;
-\s; while ( list.put(order) == false )
-\s; {
-\s; wait(1);
-\s; }
-\s;}
-\n;
-The \c;while\n; loop waits until a pending order has been terminated, that is the slaved has exited from the \c;get\n; method.
-Now the main program of the master is very simple:
-
-\c;\s;extern void object::Remote3( )
-\s;{
-\s; SendOrder("move(20)");
-\s; SendOrder("turn(90)");
-\s; SendOrder("move(20)");
-\s; SendOrder("turn(90)");
-\s; SendOrder("move(10)");
-\s; SendOrder("turn(90)");
-\s; SendOrder("move(10)");
-\s; SendOrder("turn(-90)");
-\s; SendOrder("move(10)");
-\s;}
-\n;
-\key;\key help;\norm; show these instruction at any time.
-
-\t;See also
-\l;Controls\u command; and \l;programming\u cbot;.
diff --git a/help/tremote4.txt b/help/tremote4.txt
deleted file mode 100644
index a8b1e4ec..00000000
--- a/help/tremote4.txt
+++ /dev/null
@@ -1,129 +0,0 @@
-\b;Exercise
-Remote control a slave robot without using an \l;information exchange post\u object\exchange;. The robot should pass over the 6 blue crosses. You must use a \c;\l;static\u cbot\static;\n; variable to pass the orders to the slave bot.
-
-The two main actors of this exercise are:
-1) The \l;wheeled grabber\u object\botgr; without an energy pack and therefore immobile. This is the master you should program so it will transmit orders to the slave.
-2) The slave \l;practice bot\u object\bottr; which is already programmed and just waits for orders from the master.
-
-\b;The slave
-First of all we must understand how the program of the slave works. The \l;class\u cbot\class; \c;order\n; contains two members: \c;m_type\n; is the order to execute (move or turn) and \c;m_param\n; is the distance to move or the rotation angle¦:
-
-\c;\s;\l;public\u cbot\public; \l;class\u cbot\class; order
-\s;{
-\s; \l;int\u cbot\int; m_type = \l;nan\u cbot\nan;;
-\s; \l;float\u cbot\float; m_param;
-\s;}
-\n;
-A second \l;class\u cbot\class; \c;exchange\n; contains the mechanism for exchanging the orders. We declare a \c;\l;static\u cbot\static;\n; class member \c;m_order\n; which will contain the order to be executed. The word \c;static\n; insures that the member \c;m_order\n; is shared between all instances of the \l;class\u cbot\class; exchange.
-
-\c;\s;\l;public\u cbot\public; \l;class\u cbot\class; exchange
-\s;{
-\s; \l;static\u cbot\static; \l;private\u cbot\private; order m_order = new order;
-\n;
-\n;The \c;put\n; method will be used by the master robot for transmitting an order. As long as \c;m_order\n; is different from \c;\l;nan\u cbot\nan;\n;, the slave has not finished the order and the \c;put\n; method will return \c;false\n; and will do nothing¦:
-
-\c;\s; \l;synchronized\u cbot\synchro; \l;bool\u cbot\bool; put(order a)
-\s; {
-\s; if ( m_order.m_type == nan )
-\s; {
-\s; m_order = a;
-\s; return true;
-\s; }
-\s; else
-\s; {
-\s; return false;
-\s; }
-\s; }
-\n;
-Another method \c;get\n; will be used by the slave to retrieve the orders. This method returns the order to be executed:
-
-\c;\s; \l;synchronized\u cbot\synchro; order get()
-\s; {
-\s; return m_order;
-\s; }
-\n;
-A third method \c;delete\n; will be used by the slave to indicate that the order has been executed:
-
-\c;\s; \l;synchronized\u cbot\synchro; void delete()
-\s; {
-\s; m_order.m_type = nan;
-\s; }
-\s;}
-\n;
-The main program of the slave contains an instance of the class \c;exchange\n; called \c;list\n;. We put () after the word \c;list\n; in order to create an instance of the class \c;exchange\n;.
-
-\c;\s;\l;extern\u cbot\extern; void object::Slave3( )
-\s;{
-\s; exchange list();
-\s; order todo;
-\n;
-The outer \c;while\n; loop lasts for ever. The inner \c;while\n; loop waits for an order by using the \c;get\n; method of the \c;exchange\n; class. As soon as \c;get\n; returns a value different from \c;nan\n;, the while loop stops.
-
-\c;\s; \l;while\u cbot\while; ( true )
-\s; {
-\s; \l;while\u cbot\while; ( true )
-\s; {
-\s; todo = list.get();
-\s; if ( todo.m_type != nan ) break;
-\s; wait(1);
-\s; }
-\n;
-Now we have received the order in the \c;todo\n; variable. All we have to do is execute it:
-
-\c;\s; if ( todo.m_type == 1 )
-\s; {
-\s; move(todo.m_param);
-\s; }
-\s; else if ( todo.m_type == 2 )
-\s; {
-\s; turn(todo.m_param);
-\s; }
-\s; else
-\s; {
-\s; message("Unknown order");
-\s; }
-\n;
-As soon as the execution of the order is finished, we must call the \c;delete\n; method so the master knows that another order can be sent¦:
-
-\c;\s; list.delete();
-\s; }
-\s;}
-\n;
-\b;The master
-In the master we write an function called \c;SendOrder\n; which will send an order to the slave:
-
-\c;\s;void object::SendOrder(float order, float param)
-\s;{
-\s; exchange list();
-\s; order todo();
-\s;
-\s; todo.m_type = order;
-\s; todo.m_param = param;
-\s;
-\s; while ( list.put(todo) == false )
-\s; {
-\s; wait(1);
-\s; }
-\s;}
-\n;
-The \c;while\n; loop waits until a pending order has been terminated, that is the slaved has exited from the \c;get\n; method and the \c;delete\n; method has been called.
-Now the main program of the master is very simple:
-
-\c;\s;extern void object::Remote4( )
-\s;{
-\s; SendOrder(1, 20); // move(20);
-\s; SendOrder(2, 90); // turn(90);
-\s; SendOrder(1, 20); // move(20);
-\s; SendOrder(2, 90); // turn(90);
-\s; SendOrder(1, 10); // move(10);
-\s; SendOrder(2, 90); // turn(90);
-\s; SendOrder(1, 10); // move(10);
-\s; SendOrder(2,-90); // turn(-90);
-\s; SendOrder(1, 10); // move(10);
-\s;}
-\n;
-\key;\key help;\norm; show these instruction at any time.
-
-
-\t;See also
-\l;Controls\u command; and \l;programming\u cbot;.
diff --git a/help/tremote5.txt b/help/tremote5.txt
deleted file mode 100644
index 33d367d7..00000000
--- a/help/tremote5.txt
+++ /dev/null
@@ -1,113 +0,0 @@
-\b;Exercise
-Remote control a slave robot without using an \l;information exchange post\u object\exchange;. The robot should pass over the 6 blue crosses.
-
-The two main actors of this exercise are:
-1) The \l;wheeled grabber\u object\botgr; without an energy pack and therefore immobile. This is the master you should program so it will transmit orders to the slave.
-2) The slave \l;practice bot\u object\bottr; which is already programmed and just waits for orders from the master.
-
-The orders shall be stored, so the master will be able to transmit several orders without waiting for each order being processed. We use an \l;array\u cbot\array; for this purpose.
-
-\b;The slave
-First of all we must understand how the program of the slave works. The \l;class\u cbot\class; \c;order\n; contains two members: \c;m_type\n; is the order to execute (move or turn) and \c;m_param\n; is the distance to move or the rotation angle¦:
-
-\c;\s;\l;public\u cbot\public; \l;class\u cbot\class; order
-\s;{
-\s; \l;int\u cbot\int; m_type;
-\s; \l;float\u cbot\float; m_param;
-\s;}
-\n;
-A second \l;class\u cbot\class; \c;exchange\n; contains the mechanism for exchanging the orders. We declare a \c;\l;static\u cbot\static;\n; class member \c;m_fifo\n; which will contain the list of orders to be executed. The word \c;static\n; insures that the member \c;m_fifo\n; is shared between all instances of the \l;class\u cbot\class; exchange.
-
-\c;\s;{
-\s; \l;static\u cbot\static; \l;private\u cbot\private; order m_fifo[] = null;
-\n;
-The \c;put\n; method will be used by the master robot for transmitting an order. The order will simply be added at the end of the \c;m_fifo\n; array:
-
-\c;\s; \l;synchronized\u cbot\synchro; void put(order a)
-\s; {
-\s; m_fifo[sizeof(m_fifo)] = a;
-\s; }
-\n;
-Another method \c;get\n; will be used by the slave to retrieve the orders. This method returns the order to be executed. If the list is empty, \c;null\n; will be returned and the robot must wait for more orders. Otherwise the first order in the list must be returned and the remaining orders must be "scrolled up". As an array can not be "shortened" we use a temporary array \c;copy\n;¦:
-
-\c;\s; \l;synchronized\u cbot\synchro; order get()
-\s; {
-\s; if ( sizeof(m_fifo) == 0 ) return null;
-\s;
-\s; order a = m_fifo[0];
-\s; order copy[] = null;
-\s; for ( int i=1 ; i 9)
-\s; {
-\s; \l;jet\u cbot\jet;(-1);
-\s; }
-\s; \l;wait\u cbot\wait;(0.2);
-\s; }
-\s; \l;fire\u cbot\fire;(1);
-\s; }
-\s;}
-\n;
-In order to adapt the program to shooting wasps, you need to make a few changes. Replace all \c;radar(AlienAnt)\n; with \c;radar(AlienWasp)\n;. The cannon must aim straight forward and not downward, replace \c;aim(-20);\n; with \c;aim(0);\n;. And the bot must fly at the same height as the wasp. For this, you must compare the altitude of the bot given by \c;position.z\n; with the altitude of the wasp given by \c;item.position.z\n;: if \c;position.z > item.position.z\n;, go down slowly with \c;jet(-0.3);\n;. If \c;position.z < item.position.z-1\n;, climb slowly with \c;jet(0.3);\n;. A winged shooter is higher than a wasp, therefore it is better if the altitude of the bot is a little lower than the altitude of the wasp. In this case, we admit that the altitude of the bot ranges between the altitude of the wasp and the altitude of the wasp minus 1.
-
-\t;Further improvement
-Wasps move very fast. In order to increase your chances to get them, better to repeat just before the \c;fire(1);\n; a \c;radar\n; and a \c;turn\n; in order to perform a last readjustment of the direction before the shot.
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/twasp2.txt b/help/twasp2.txt
deleted file mode 100644
index 10ae0f97..00000000
--- a/help/twasp2.txt
+++ /dev/null
@@ -1,84 +0,0 @@
-\b;Objective
-Bring down the flying wasps in a more efficient way than with the previous program.
-
-\b;Program
-Here is again the program of the previous exercise that shoots down all the wasps after many, many unsuccessful attempts:
-\c;
-\s;extern void object::Wasp1()
-\s;{
-\s; \l;object\u cbot\type; item;
-\s;
-\s; \l;aim\u cbot\aim;(0);
-\s;
-\s; \l;while\u cbot\while; (true)
-\s; {
-\s; \l;while\u cbot\while; (\l;radar\u cbot\radar;(AlienWasp, 0, 360, 0, 20) == null)
-\s; {
-\s; item = \l;radar\u cbot\radar;(AlienWasp);
-\s; \l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));
-\s; \l;motor\u cbot\motor;(1,1);
-\s;
-\s; \l;jet\u cbot\jet;(0);
-\s; \l;if\u cbot\if; (position.z > item.position.z)
-\s; {
-\s; \l;jet\u cbot\jet;(-0.3);
-\s; }
-\s;
-\s; \l;if\u cbot\if; (position.z < item.position.z - 1)
-\s; {
-\s; \l;jet\u cbot\jet;(0.3);
-\s; }
-\s;
-\s; \l;wait\u cbot\wait;(0.2);
-\s; }
-\s; item = \l;radar\u cbot\radar;(AlienWasp);
-\s; \l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));
-\s; \l;fire\u cbot\fire;(1);
-\s; }
-\s;}
-\n;
-The many failures are due to the fact that the wasp is already gone before the bullets can reach it. The only way to improve the program consists in setting the power of the two motors and of the jet in such a way that the bot follows the movement of the target during the burst.
-
-Just before the shot, the program adjusts a last time the direction with \c;turn(direction(item.position));\n;. In order to follow the wasp during the burst, you have to "remember" the angle of this last rotation: if the angle was positive (rotation to the left), the bot must continue to turn left during the burst; if the angle was negative, the bot must continue to turn right.
-
-In order to "remember" the angle of the last rotation, we need a variable that can contain just one number. If we choose to call it \c;angle\n;, we must define the variable with the following line at the beginning of the program:
-\c;
-\s; \l;float\u cbot\type; angle;
-\n;
-The variable type \l;float\u cbot\type; is the variable type that can contain any number, i.e. whole numbers or real numbers. Please refer to the \l;text about variable types\u cbot\type; if you want to know more about the different types of variables and what they can contain.
-
-Just before the instruction \c;fire(1);\n;, instead of writing \c;\l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));\n;, we will put the rotation angle into the variable \c;angle\n;:
-\c;
-\s; angle = direction(item.position);
-\n;
-Then we perform the rotation, and we set the power of the motors so that the bot continues the movement:
-\c;
-\s; turn(angle);
-\s; if (angle < 0)
-\s; {
-\s; motor(1,0.5);
-\s; }
-\s; else
-\s; {
-\s; motor(0.5,1);
-\s; }
-\n;
-The instruction \c;else\n; determines what instructions the program should execute if the condition stated in the \c;if\n; instruction is false.
-
-Then we must set the power of the jet so that the bot follows the wasp also in the vertical direction:
-\c;
-\s; jet(0);
-\s; if(position.z > item.position.z)
-\s; {
-\s; jet(-0.3);
-\s; }
-\s;
-\s; if(position.z < item.position.z - 1)
-\s; {
-\s; jet(0.3);
-\s; }
-\n;
-As you will see, this program is much more efficient than the previous one!
-
-\t;See also
-\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/win.txt b/help/win.txt
deleted file mode 100644
index ce54ac8e..00000000
--- a/help/win.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-
-Houston congratulates you in the name of mankind for the success of your missin.
-The Great Migration to Terra Nova will start very soon.
diff --git a/i18n/de/LC_MESSAGES/colobot.mo b/i18n/de/LC_MESSAGES/colobot.mo
deleted file mode 100644
index a4086d48..00000000
Binary files a/i18n/de/LC_MESSAGES/colobot.mo and /dev/null differ
diff --git a/i18n/fr/LC_MESSAGES/colobot.mo b/i18n/fr/LC_MESSAGES/colobot.mo
deleted file mode 100644
index 2e972115..00000000
Binary files a/i18n/fr/LC_MESSAGES/colobot.mo and /dev/null differ
diff --git a/i18n/pl/LC_MESSAGES/colobot.mo b/i18n/pl/LC_MESSAGES/colobot.mo
deleted file mode 100644
index 31da1c55..00000000
Binary files a/i18n/pl/LC_MESSAGES/colobot.mo and /dev/null differ
diff --git a/levels/.gitignore b/levels/.gitignore
new file mode 100644
index 00000000..bf093fc5
--- /dev/null
+++ b/levels/.gitignore
@@ -0,0 +1,4 @@
+*.xml
+*.xhtml
+*.po~
+*-po4a.cfg
diff --git a/levels/CMakeLists.txt b/levels/CMakeLists.txt
new file mode 100644
index 00000000..c3d95f94
--- /dev/null
+++ b/levels/CMakeLists.txt
@@ -0,0 +1,21 @@
+cmake_minimum_required(VERSION 2.8)
+
+# Translate translatable material
+find_program(PO4A po4a)
+
+if(PO4A)
+ set(_levels_i18n_target "levels_i18n")
+ add_custom_command(OUTPUT ${_levels_i18n_target}
+ COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/${_levels_i18n_target}
+ COMMAND ./gen_levels_xml.sh ${CMAKE_CURRENT_BINARY_DIR}/${_levels_i18n_target}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMENT "Inject level translations"
+ )
+ add_custom_target(translate_levels ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_levels_i18n_target})
+ install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${_levels_i18n_target}/ DESTINATION ${COLOBOT_INSTALL_DATA_DIR}/levels)
+else()
+ message(WARNING "po4a not found, levels will not get translated")
+ file(GLOB levelfiles "${CMAKE_CURRENT_SOURCE_DIR}/*.txt")
+ list(REMOVE_ITEM levelfiles "${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt")
+ install(FILES ${levelfiles} DESTINATION ${COLOBOT_INSTALL_DATA_DIR}/levels/)
+endif()
diff --git a/levels/defi-po/defi.pot b/levels/defi-po/defi.pot
new file mode 100644
index 00000000..35312206
--- /dev/null
+++ b/levels/defi-po/defi.pot
@@ -0,0 +1,395 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2012-12-30 22:19+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: Content of:
+#: defi100.xml:2 defi100.xml:3
+#, no-wrap
+msgid "defi100:Fundamentals"
+msgstr ""
+
+#. type: Content of:
+#: defi100.xml:4 defi100.xml:5 defi100.xml:6 defi100.xml:7
+#, no-wrap
+msgid "defi100:"
+msgstr ""
+
+#. type: Content of:
+#: defi101.xml:2
+#, no-wrap
+msgid "defi101:Follow a path"
+msgstr ""
+
+#. type: Content of:
+#: defi101.xml:3 defi101.xml:5 defi101.xml:7
+#, no-wrap
+msgid "defi101:"
+msgstr ""
+
+#. type: Content of:
+#: defi101.xml:4
+#, no-wrap
+msgid "defi101:Move the bot along a given path."
+msgstr ""
+
+#. type: Content of:
+#: defi101.xml:6
+#, no-wrap
+msgid "defi101:Move"
+msgstr ""
+
+#. type: Content of:
+#: defi102.xml:2
+#, no-wrap
+msgid "defi102:Massacre"
+msgstr ""
+
+#. type: Content of:
+#: defi102.xml:3 defi102.xml:5 defi102.xml:7
+#, no-wrap
+msgid "defi102:"
+msgstr ""
+
+#. type: Content of:
+#: defi102.xml:4
+#, no-wrap
+msgid "defi102:Use a loop in order to destroy four targets."
+msgstr ""
+
+#. type: Content of:
+#: defi102.xml:6
+#, no-wrap
+msgid "defi102:Go"
+msgstr ""
+
+#. type: Content of:
+#: defi103.xml:2
+#, no-wrap
+msgid "defi103:Exchange posts 3"
+msgstr ""
+
+#. type: Content of:
+#: defi103.xml:3 defi103.xml:5 defi103.xml:7
+#, no-wrap
+msgid "defi103:"
+msgstr ""
+
+#. type: Content of:
+#: defi103.xml:4
+#, no-wrap
+msgid ""
+"defi103:Collect lots of valuable information from information exchange "
+"posts."
+msgstr ""
+
+#. type: Content of:
+#: defi103.xml:6
+#, no-wrap
+msgid "defi103:Info"
+msgstr ""
+
+#. type: Content of:
+#: defi104.xml:2
+#, no-wrap
+msgid "defi104:Labyrinth 3"
+msgstr ""
+
+#. type: Content of:
+#: defi104.xml:3 defi104.xml:5 defi104.xml:7
+#, no-wrap
+msgid "defi104:"
+msgstr ""
+
+#. type: Content of:
+#: defi104.xml:4
+#, no-wrap
+msgid "defi104:Teach your bot how to find its way out of the labyrinth."
+msgstr ""
+
+#. type: Content of:
+#: defi104.xml:6
+#, no-wrap
+msgid "defi104:Labyrinth"
+msgstr ""
+
+#. type: Content of:
+#: defi200.xml:2
+#, no-wrap
+msgid "defi200:Motors"
+msgstr ""
+
+#. type: Content of:
+#: defi200.xml:3
+#, no-wrap
+msgid "defi200:Motor"
+msgstr ""
+
+#. type: Content of:
+#: defi200.xml:4 defi200.xml:5 defi200.xml:6 defi200.xml:7
+#, no-wrap
+msgid "defi200:"
+msgstr ""
+
+#. type: Content of:
+#: defi201.xml:2
+#, no-wrap
+msgid "defi201:Crazy bot 2"
+msgstr ""
+
+#. type: Content of:
+#: defi201.xml:3 defi201.xml:5 defi201.xml:7
+#, no-wrap
+msgid "defi201:"
+msgstr ""
+
+#. type: Content of:
+#: defi201.xml:4
+#, no-wrap
+msgid ""
+"defi201:Use the radar to put some order into a big mess left behind by a "
+"crazy bot."
+msgstr ""
+
+#. type: Content of:
+#: defi201.xml:6
+#, no-wrap
+msgid "defi201:Radar"
+msgstr ""
+
+#. type: Content of:
+#: defi202.xml:2
+#, no-wrap
+msgid "defi202:Shadow 2"
+msgstr ""
+
+#. type: Content of:
+#: defi202.xml:3 defi202.xml:5 defi202.xml:7
+#, no-wrap
+msgid "defi202:"
+msgstr ""
+
+#. type: Content of:
+#: defi202.xml:4
+#, no-wrap
+msgid "defi202:Follow a bot, as if you were its shadow."
+msgstr ""
+
+#. type: Content of:
+#: defi202.xml:6
+#, no-wrap
+msgid "defi202:Follow"
+msgstr ""
+
+#. type: Content of:
+#: defi203.xml:2
+#, no-wrap
+msgid "defi203:Help"
+msgstr ""
+
+#. type: Content of:
+#: defi203.xml:3 defi203.xml:5 defi203.xml:7
+#, no-wrap
+msgid "defi203:"
+msgstr ""
+
+#. type: Content of:
+#: defi203.xml:4
+#, no-wrap
+msgid "defi203:Defend yourself agains all alien attacks."
+msgstr ""
+
+#. type: Content of:
+#: defi203.xml:6
+#, no-wrap
+msgid "defi203:Defense"
+msgstr ""
+
+#. type: Content of:
+#: defi204.xml:2
+#, no-wrap
+msgid "defi204:Radar and traps 1"
+msgstr ""
+
+#. type: Content of:
+#: defi204.xml:3 defi204.xml:5 defi204.xml:7
+#, no-wrap
+msgid "defi204:"
+msgstr ""
+
+#. type: Content of:
+#: defi204.xml:4
+#, no-wrap
+msgid ""
+"defi204:Use your radar to look for various items, but watch out for the "
+"mines."
+msgstr ""
+
+#. type: Content of:
+#: defi204.xml:6
+#, no-wrap
+msgid "defi204:Traps"
+msgstr ""
+
+#. type: Content of:
+#: defi205.xml:2
+#, no-wrap
+msgid "defi205:Radar and traps 2"
+msgstr ""
+
+#. type: Content of:
+#: defi205.xml:3 defi205.xml:5 defi205.xml:7
+#, no-wrap
+msgid "defi205:"
+msgstr ""
+
+#. type: Content of:
+#: defi205.xml:4
+#, no-wrap
+msgid "defi205:Try to figure out how to survive in a hostile environment."
+msgstr ""
+
+#. type: Content of:
+#: defi205.xml:6
+#, no-wrap
+msgid "defi205:Traps"
+msgstr ""
+
+#. type: Content of:
+#: defi300.xml:2
+#, no-wrap
+msgid "defi300:Mover"
+msgstr ""
+
+#. type: Content of:
+#: defi300.xml:3
+#, no-wrap
+msgid "defi300:Move"
+msgstr ""
+
+#. type: Content of:
+#: defi300.xml:4 defi300.xml:5 defi300.xml:6 defi300.xml:7
+#, no-wrap
+msgid "defi300:"
+msgstr ""
+
+#. type: Content of:
+#: defi301.xml:2
+#, no-wrap
+msgid "defi301:Mover 1"
+msgstr ""
+
+#. type: Content of:
+#: defi301.xml:3 defi301.xml:5 defi301.xml:7
+#, no-wrap
+msgid "defi301:"
+msgstr ""
+
+#. type: Content of:
+#: defi301.xml:4
+#, no-wrap
+msgid "defi301:Retrieve some titanium ore in order to convert it to titanium cubes."
+msgstr ""
+
+#. type: Content of:
+#: defi301.xml:6
+#, no-wrap
+msgid "defi301:Mover"
+msgstr ""
+
+#. type: Content of:
+#: defi302.xml:2
+#, no-wrap
+msgid "defi302:Mover 2"
+msgstr ""
+
+#. type: Content of:
+#: defi302.xml:3 defi302.xml:5 defi302.xml:7
+#, no-wrap
+msgid "defi302:"
+msgstr ""
+
+#. type: Content of:
+#: defi302.xml:4
+#, no-wrap
+msgid "defi302:Try to figure out how to move the titanium cube across obstacles."
+msgstr ""
+
+#. type: Content of:
+#: defi302.xml:6
+#, no-wrap
+msgid "defi302:Mover"
+msgstr ""
+
+#. type: Content of:
+#: defi400.xml:2 defi400.xml:3
+#, no-wrap
+msgid "defi400:Functions"
+msgstr ""
+
+#. type: Content of:
+#: defi400.xml:4 defi400.xml:5 defi400.xml:6 defi400.xml:7
+#, no-wrap
+msgid "defi400:"
+msgstr ""
+
+#. type: Content of:
+#: defi401.xml:2
+#, no-wrap
+msgid "defi401:Function"
+msgstr ""
+
+#. type: Content of:
+#: defi401.xml:3 defi401.xml:5 defi401.xml:7
+#, no-wrap
+msgid "defi401:"
+msgstr ""
+
+#. type: Content of:
+#: defi401.xml:4
+#, no-wrap
+msgid "defi401:Create a function to move a bot."
+msgstr ""
+
+#. type: Content of:
+#: defi401.xml:6
+#, no-wrap
+msgid "defi401:Move"
+msgstr ""
+
+#. type: Content of:
+#: defi402.xml:2
+#, no-wrap
+msgid "defi402:Spiral 2"
+msgstr ""
+
+#. type: Content of:
+#: defi402.xml:3 defi402.xml:5 defi402.xml:7
+#, no-wrap
+msgid "defi402:"
+msgstr ""
+
+#. type: Content of:
+#: defi402.xml:4
+#, no-wrap
+msgid "defi402:Create a procedure in order to teach your bot to perform a spiral."
+msgstr ""
+
+#. type: Content of:
+#: defi402.xml:6
+#, no-wrap
+msgid "defi402:Move"
+msgstr ""
diff --git a/levels/defi-po/fr.po b/levels/defi-po/fr.po
new file mode 100644
index 00000000..5ef59b6d
--- /dev/null
+++ b/levels/defi-po/fr.po
@@ -0,0 +1,451 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2012-12-30 22:19+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#
+#. type: Content of:
+#: defi100.xml:2 defi100.xml:3
+#, no-wrap
+msgid "defi100:Fundamentals"
+msgstr "defi100:Base"
+
+#
+#. type: Content of:
+#: defi100.xml:4 defi100.xml:5 defi100.xml:6 defi100.xml:7
+#, no-wrap
+msgid "defi100:"
+msgstr "defi100:"
+
+#
+#. type: Content of:
+#: defi101.xml:2
+#, no-wrap
+msgid "defi101:Follow a path"
+msgstr "defi101:Suivre un chemin"
+
+#
+#. type: Content of:
+#: defi101.xml:3 defi101.xml:5 defi101.xml:7
+#, no-wrap
+msgid "defi101:"
+msgstr "defi101:"
+
+#
+#. type: Content of:
+#: defi101.xml:4
+#, no-wrap
+msgid "defi101:Move the bot along a given path."
+msgstr "defi101:Déplacer un robot le long d'une trajectoire donnée."
+
+#
+#. type: Content of:
+#: defi101.xml:6
+#, no-wrap
+msgid "defi101:Move"
+msgstr "defi101:Déplace"
+
+#
+#. type: Content of:
+#: defi102.xml:2
+#, no-wrap
+msgid "defi102:Massacre"
+msgstr "defi102:Massacre"
+
+#
+#. type: Content of: