diff --git a/planet/AUTHORS b/planet/AUTHORS new file mode 100644 index 000000000..138a53c3a --- /dev/null +++ b/planet/AUTHORS @@ -0,0 +1,7 @@ +Florian Graier +Tobias Zwick +Andrew McConnochie +Dustin Senos +Günther Brammer +Redwolf Design + diff --git a/planet/COPYING b/planet/COPYING new file mode 100644 index 000000000..c033c53d5 --- /dev/null +++ b/planet/COPYING @@ -0,0 +1,59 @@ +License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. + +1. Definitions + + a. "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License. + b. "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined above) for the purposes of this License. + c. "Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership. + d. "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License. + e. "Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast. + f. "Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work. + g. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. + h. "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images. + i. "Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium. + +2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: + + a. to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections; + b. to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified."; + c. to Distribute and Publicly Perform the Work including as incorporated in Collections; and, + d. to Distribute and Publicly Perform Adaptations. + e. For the avoidance of doubt: + i. Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; + ii. Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and, + iii. Voluntary License Schemes. The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License. + +The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved. + +4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: + + a. You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(b), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(b), as requested. + b. If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and (iv) , consistent with Section 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4 (b) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties. + c. Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise. + +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + + a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. + b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. + +8. Miscellaneous + + a. Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. + b. Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. + c. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. + d. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. + e. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. + f. The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law. + diff --git a/planet/Graphics.c4g/Arrow.png b/planet/Graphics.c4g/Arrow.png new file mode 100644 index 000000000..cd9e684cb Binary files /dev/null and b/planet/Graphics.c4g/Arrow.png differ diff --git a/planet/Graphics.c4g/Background.png b/planet/Graphics.c4g/Background.png new file mode 100644 index 000000000..2b01c0aa3 Binary files /dev/null and b/planet/Graphics.c4g/Background.png differ diff --git a/planet/Graphics.c4g/Build.png b/planet/Graphics.c4g/Build.png new file mode 100644 index 000000000..f1e8a1d2e Binary files /dev/null and b/planet/Graphics.c4g/Build.png differ diff --git a/planet/Graphics.c4g/C4.PAL b/planet/Graphics.c4g/C4.PAL new file mode 100644 index 000000000..06883260f Binary files /dev/null and b/planet/Graphics.c4g/C4.PAL differ diff --git a/planet/Graphics.c4g/Captain.png b/planet/Graphics.c4g/Captain.png new file mode 100644 index 000000000..363983f9e Binary files /dev/null and b/planet/Graphics.c4g/Captain.png differ diff --git a/planet/Graphics.c4g/Clouds1.jpg b/planet/Graphics.c4g/Clouds1.jpg new file mode 100644 index 000000000..0dfb3f934 Binary files /dev/null and b/planet/Graphics.c4g/Clouds1.jpg differ diff --git a/planet/Graphics.c4g/Clouds1.png b/planet/Graphics.c4g/Clouds1.png new file mode 100644 index 000000000..0dad94175 Binary files /dev/null and b/planet/Graphics.c4g/Clouds1.png differ diff --git a/planet/Graphics.c4g/Clouds2.jpg b/planet/Graphics.c4g/Clouds2.jpg new file mode 100644 index 000000000..77506ad3e Binary files /dev/null and b/planet/Graphics.c4g/Clouds2.jpg differ diff --git a/planet/Graphics.c4g/Construction.png b/planet/Graphics.c4g/Construction.png new file mode 100644 index 000000000..a8140dea7 Binary files /dev/null and b/planet/Graphics.c4g/Construction.png differ diff --git a/planet/Graphics.c4g/Control.png b/planet/Graphics.c4g/Control.png new file mode 100644 index 000000000..83ee667eb Binary files /dev/null and b/planet/Graphics.c4g/Control.png differ diff --git a/planet/Graphics.c4g/Crew.png b/planet/Graphics.c4g/Crew.png new file mode 100644 index 000000000..a5aa16f30 Binary files /dev/null and b/planet/Graphics.c4g/Crew.png differ diff --git a/planet/Graphics.c4g/CursorLarge.png b/planet/Graphics.c4g/CursorLarge.png new file mode 100644 index 000000000..22682d05e Binary files /dev/null and b/planet/Graphics.c4g/CursorLarge.png differ diff --git a/planet/Graphics.c4g/CursorMedium.png b/planet/Graphics.c4g/CursorMedium.png new file mode 100644 index 000000000..d17dde1e4 Binary files /dev/null and b/planet/Graphics.c4g/CursorMedium.png differ diff --git a/planet/Graphics.c4g/CursorSmall.png b/planet/Graphics.c4g/CursorSmall.png new file mode 100644 index 000000000..fa5a8377c Binary files /dev/null and b/planet/Graphics.c4g/CursorSmall.png differ diff --git a/planet/Graphics.c4g/Energy.png b/planet/Graphics.c4g/Energy.png new file mode 100644 index 000000000..990d57655 Binary files /dev/null and b/planet/Graphics.c4g/Energy.png differ diff --git a/planet/Graphics.c4g/EnergyBars.png b/planet/Graphics.c4g/EnergyBars.png new file mode 100644 index 000000000..3958455a8 Binary files /dev/null and b/planet/Graphics.c4g/EnergyBars.png differ diff --git a/planet/Graphics.c4g/Exit.png b/planet/Graphics.c4g/Exit.png new file mode 100644 index 000000000..2fdf3711c Binary files /dev/null and b/planet/Graphics.c4g/Exit.png differ diff --git a/planet/Graphics.c4g/Fire.png b/planet/Graphics.c4g/Fire.png new file mode 100644 index 000000000..9fda43445 Binary files /dev/null and b/planet/Graphics.c4g/Fire.png differ diff --git a/planet/Graphics.c4g/Flag.png b/planet/Graphics.c4g/Flag.png new file mode 100644 index 000000000..6a5853cc9 Binary files /dev/null and b/planet/Graphics.c4g/Flag.png differ diff --git a/planet/Graphics.c4g/Fog1.jpg b/planet/Graphics.c4g/Fog1.jpg new file mode 100644 index 000000000..e150d0f56 Binary files /dev/null and b/planet/Graphics.c4g/Fog1.jpg differ diff --git a/planet/Graphics.c4g/GUIBigArrows.png b/planet/Graphics.c4g/GUIBigArrows.png new file mode 100644 index 000000000..0dc1f0653 Binary files /dev/null and b/planet/Graphics.c4g/GUIBigArrows.png differ diff --git a/planet/Graphics.c4g/GUIButton.png b/planet/Graphics.c4g/GUIButton.png new file mode 100644 index 000000000..92bd841a1 Binary files /dev/null and b/planet/Graphics.c4g/GUIButton.png differ diff --git a/planet/Graphics.c4g/GUIButtonDown.png b/planet/Graphics.c4g/GUIButtonDown.png new file mode 100644 index 000000000..e2ca50758 Binary files /dev/null and b/planet/Graphics.c4g/GUIButtonDown.png differ diff --git a/planet/Graphics.c4g/GUIButtonHighlight.png b/planet/Graphics.c4g/GUIButtonHighlight.png new file mode 100644 index 000000000..3a7180f79 Binary files /dev/null and b/planet/Graphics.c4g/GUIButtonHighlight.png differ diff --git a/planet/Graphics.c4g/GUICaption.png b/planet/Graphics.c4g/GUICaption.png new file mode 100644 index 000000000..94160aad5 Binary files /dev/null and b/planet/Graphics.c4g/GUICaption.png differ diff --git a/planet/Graphics.c4g/GUICheckbox.png b/planet/Graphics.c4g/GUICheckbox.png new file mode 100644 index 000000000..154ce9488 Binary files /dev/null and b/planet/Graphics.c4g/GUICheckbox.png differ diff --git a/planet/Graphics.c4g/GUIContext.png b/planet/Graphics.c4g/GUIContext.png new file mode 100644 index 000000000..6fb1783ec Binary files /dev/null and b/planet/Graphics.c4g/GUIContext.png differ diff --git a/planet/Graphics.c4g/GUIIcons.png b/planet/Graphics.c4g/GUIIcons.png new file mode 100644 index 000000000..4ca692f07 Binary files /dev/null and b/planet/Graphics.c4g/GUIIcons.png differ diff --git a/planet/Graphics.c4g/GUIIcons2.png b/planet/Graphics.c4g/GUIIcons2.png new file mode 100644 index 000000000..f20d1b876 Binary files /dev/null and b/planet/Graphics.c4g/GUIIcons2.png differ diff --git a/planet/Graphics.c4g/GUIProgress.png b/planet/Graphics.c4g/GUIProgress.png new file mode 100644 index 000000000..2871cedb1 Binary files /dev/null and b/planet/Graphics.c4g/GUIProgress.png differ diff --git a/planet/Graphics.c4g/GUIScroll.png b/planet/Graphics.c4g/GUIScroll.png new file mode 100644 index 000000000..0f275d627 Binary files /dev/null and b/planet/Graphics.c4g/GUIScroll.png differ diff --git a/planet/Graphics.c4g/GUISubmenu.png b/planet/Graphics.c4g/GUISubmenu.png new file mode 100644 index 000000000..ab0659398 Binary files /dev/null and b/planet/Graphics.c4g/GUISubmenu.png differ diff --git a/planet/Graphics.c4g/Gamepad.png b/planet/Graphics.c4g/Gamepad.png new file mode 100644 index 000000000..6bc6e20b4 Binary files /dev/null and b/planet/Graphics.c4g/Gamepad.png differ diff --git a/planet/Graphics.c4g/Hand.png b/planet/Graphics.c4g/Hand.png new file mode 100644 index 000000000..96fe5bd41 Binary files /dev/null and b/planet/Graphics.c4g/Hand.png differ diff --git a/planet/Graphics.c4g/Liquid.png b/planet/Graphics.c4g/Liquid.png new file mode 100644 index 000000000..93da10cf9 Binary files /dev/null and b/planet/Graphics.c4g/Liquid.png differ diff --git a/planet/Graphics.c4g/Loader1.jpg b/planet/Graphics.c4g/Loader1.jpg new file mode 100644 index 000000000..2a9af434c Binary files /dev/null and b/planet/Graphics.c4g/Loader1.jpg differ diff --git a/planet/Graphics.c4g/Logo.png b/planet/Graphics.c4g/Logo.png new file mode 100644 index 000000000..b2e11007a Binary files /dev/null and b/planet/Graphics.c4g/Logo.png differ diff --git a/planet/Graphics.c4g/Magic.png b/planet/Graphics.c4g/Magic.png new file mode 100644 index 000000000..f8fc7b602 Binary files /dev/null and b/planet/Graphics.c4g/Magic.png differ diff --git a/planet/Graphics.c4g/Menu.png b/planet/Graphics.c4g/Menu.png new file mode 100644 index 000000000..89ba2e673 Binary files /dev/null and b/planet/Graphics.c4g/Menu.png differ diff --git a/planet/Graphics.c4g/Mountains.jpg b/planet/Graphics.c4g/Mountains.jpg new file mode 100644 index 000000000..47d49a839 Binary files /dev/null and b/planet/Graphics.c4g/Mountains.jpg differ diff --git a/planet/Graphics.c4g/Options.png b/planet/Graphics.c4g/Options.png new file mode 100644 index 000000000..20edac4b3 Binary files /dev/null and b/planet/Graphics.c4g/Options.png differ diff --git a/planet/Graphics.c4g/Player.png b/planet/Graphics.c4g/Player.png new file mode 100644 index 000000000..1f16dae66 Binary files /dev/null and b/planet/Graphics.c4g/Player.png differ diff --git a/planet/Graphics.c4g/Pollute1.jpg b/planet/Graphics.c4g/Pollute1.jpg new file mode 100644 index 000000000..a2e70f7e3 Binary files /dev/null and b/planet/Graphics.c4g/Pollute1.jpg differ diff --git a/planet/Graphics.c4g/Portrait1.png b/planet/Graphics.c4g/Portrait1.png new file mode 100644 index 000000000..74214d622 Binary files /dev/null and b/planet/Graphics.c4g/Portrait1.png differ diff --git a/planet/Graphics.c4g/Portrait2.png b/planet/Graphics.c4g/Portrait2.png new file mode 100644 index 000000000..7ad00a109 Binary files /dev/null and b/planet/Graphics.c4g/Portrait2.png differ diff --git a/planet/Graphics.c4g/Portrait3.png b/planet/Graphics.c4g/Portrait3.png new file mode 100644 index 000000000..b78f30b97 Binary files /dev/null and b/planet/Graphics.c4g/Portrait3.png differ diff --git a/planet/Graphics.c4g/Portrait4.png b/planet/Graphics.c4g/Portrait4.png new file mode 100644 index 000000000..64fca570c Binary files /dev/null and b/planet/Graphics.c4g/Portrait4.png differ diff --git a/planet/Graphics.c4g/Portrait5.png b/planet/Graphics.c4g/Portrait5.png new file mode 100644 index 000000000..9e04ce545 Binary files /dev/null and b/planet/Graphics.c4g/Portrait5.png differ diff --git a/planet/Graphics.c4g/PortraitBandit.png b/planet/Graphics.c4g/PortraitBandit.png new file mode 100644 index 000000000..9804d43ae Binary files /dev/null and b/planet/Graphics.c4g/PortraitBandit.png differ diff --git a/planet/Graphics.c4g/PortraitIndianChief.png b/planet/Graphics.c4g/PortraitIndianChief.png new file mode 100644 index 000000000..8ff278c0c Binary files /dev/null and b/planet/Graphics.c4g/PortraitIndianChief.png differ diff --git a/planet/Graphics.c4g/PortraitKing.png b/planet/Graphics.c4g/PortraitKing.png new file mode 100644 index 000000000..1284a2de3 Binary files /dev/null and b/planet/Graphics.c4g/PortraitKing.png differ diff --git a/planet/Graphics.c4g/PortraitKnight.png b/planet/Graphics.c4g/PortraitKnight.png new file mode 100644 index 000000000..7aebe6ce9 Binary files /dev/null and b/planet/Graphics.c4g/PortraitKnight.png differ diff --git a/planet/Graphics.c4g/PortraitMage.png b/planet/Graphics.c4g/PortraitMage.png new file mode 100644 index 000000000..b7cf51535 Binary files /dev/null and b/planet/Graphics.c4g/PortraitMage.png differ diff --git a/planet/Graphics.c4g/PortraitPiranha.png b/planet/Graphics.c4g/PortraitPiranha.png new file mode 100644 index 000000000..b4179f4d6 Binary files /dev/null and b/planet/Graphics.c4g/PortraitPiranha.png differ diff --git a/planet/Graphics.c4g/PortraitSheriff.png b/planet/Graphics.c4g/PortraitSheriff.png new file mode 100644 index 000000000..7b8c99ac2 Binary files /dev/null and b/planet/Graphics.c4g/PortraitSheriff.png differ diff --git a/planet/Graphics.c4g/PortraitWipf.png b/planet/Graphics.c4g/PortraitWipf.png new file mode 100644 index 000000000..02d4e2e6a Binary files /dev/null and b/planet/Graphics.c4g/PortraitWipf.png differ diff --git a/planet/Graphics.c4g/Pyroclastic1.jpg b/planet/Graphics.c4g/Pyroclastic1.jpg new file mode 100644 index 000000000..3dd9c89c0 Binary files /dev/null and b/planet/Graphics.c4g/Pyroclastic1.jpg differ diff --git a/planet/Graphics.c4g/Pyroclastic2.jpg b/planet/Graphics.c4g/Pyroclastic2.jpg new file mode 100644 index 000000000..2f8c5ca4e Binary files /dev/null and b/planet/Graphics.c4g/Pyroclastic2.jpg differ diff --git a/planet/Graphics.c4g/Rank.png b/planet/Graphics.c4g/Rank.png new file mode 100644 index 000000000..e5e2868ba Binary files /dev/null and b/planet/Graphics.c4g/Rank.png differ diff --git a/planet/Graphics.c4g/Score.png b/planet/Graphics.c4g/Score.png new file mode 100644 index 000000000..9c91762a2 Binary files /dev/null and b/planet/Graphics.c4g/Score.png differ diff --git a/planet/Graphics.c4g/SelectMark.png b/planet/Graphics.c4g/SelectMark.png new file mode 100644 index 000000000..def080fb3 Binary files /dev/null and b/planet/Graphics.c4g/SelectMark.png differ diff --git a/planet/Graphics.c4g/StartupAboutBG.png b/planet/Graphics.c4g/StartupAboutBG.png new file mode 100644 index 000000000..c23ff598f Binary files /dev/null and b/planet/Graphics.c4g/StartupAboutBG.png differ diff --git a/planet/Graphics.c4g/StartupBigButton.png b/planet/Graphics.c4g/StartupBigButton.png new file mode 100644 index 000000000..a7f694485 Binary files /dev/null and b/planet/Graphics.c4g/StartupBigButton.png differ diff --git a/planet/Graphics.c4g/StartupBigButtonDown.png b/planet/Graphics.c4g/StartupBigButtonDown.png new file mode 100644 index 000000000..12062dcc0 Binary files /dev/null and b/planet/Graphics.c4g/StartupBigButtonDown.png differ diff --git a/planet/Graphics.c4g/StartupBookScroll.png b/planet/Graphics.c4g/StartupBookScroll.png new file mode 100644 index 000000000..b24b73e50 Binary files /dev/null and b/planet/Graphics.c4g/StartupBookScroll.png differ diff --git a/planet/Graphics.c4g/StartupContext.png b/planet/Graphics.c4g/StartupContext.png new file mode 100644 index 000000000..d2b190ecb Binary files /dev/null and b/planet/Graphics.c4g/StartupContext.png differ diff --git a/planet/Graphics.c4g/StartupDlgPaper.png b/planet/Graphics.c4g/StartupDlgPaper.png new file mode 100644 index 000000000..722c3ecc0 Binary files /dev/null and b/planet/Graphics.c4g/StartupDlgPaper.png differ diff --git a/planet/Graphics.c4g/StartupMainMenuBG.png b/planet/Graphics.c4g/StartupMainMenuBG.png new file mode 100644 index 000000000..a72faffd1 Binary files /dev/null and b/planet/Graphics.c4g/StartupMainMenuBG.png differ diff --git a/planet/Graphics.c4g/StartupNetGetRef.png b/planet/Graphics.c4g/StartupNetGetRef.png new file mode 100644 index 000000000..645291e29 Binary files /dev/null and b/planet/Graphics.c4g/StartupNetGetRef.png differ diff --git a/planet/Graphics.c4g/StartupNetworkBG.png b/planet/Graphics.c4g/StartupNetworkBG.png new file mode 100644 index 000000000..39f0aba41 Binary files /dev/null and b/planet/Graphics.c4g/StartupNetworkBG.png differ diff --git a/planet/Graphics.c4g/StartupOptionIcons.png b/planet/Graphics.c4g/StartupOptionIcons.png new file mode 100644 index 000000000..c456c26fe Binary files /dev/null and b/planet/Graphics.c4g/StartupOptionIcons.png differ diff --git a/planet/Graphics.c4g/StartupPlrCtrlType.png b/planet/Graphics.c4g/StartupPlrCtrlType.png new file mode 100644 index 000000000..e9d31e212 Binary files /dev/null and b/planet/Graphics.c4g/StartupPlrCtrlType.png differ diff --git a/planet/Graphics.c4g/StartupPlrPropBG.png b/planet/Graphics.c4g/StartupPlrPropBG.png new file mode 100644 index 000000000..e29610f61 Binary files /dev/null and b/planet/Graphics.c4g/StartupPlrPropBG.png differ diff --git a/planet/Graphics.c4g/StartupPlrSelBG.png b/planet/Graphics.c4g/StartupPlrSelBG.png new file mode 100644 index 000000000..f7093d932 Binary files /dev/null and b/planet/Graphics.c4g/StartupPlrSelBG.png differ diff --git a/planet/Graphics.c4g/StartupScenSelBG.png b/planet/Graphics.c4g/StartupScenSelBG.png new file mode 100644 index 000000000..683b2d9bc Binary files /dev/null and b/planet/Graphics.c4g/StartupScenSelBG.png differ diff --git a/planet/Graphics.c4g/StartupScenSelIcons.png b/planet/Graphics.c4g/StartupScenSelIcons.png new file mode 100644 index 000000000..ccdfced42 Binary files /dev/null and b/planet/Graphics.c4g/StartupScenSelIcons.png differ diff --git a/planet/Graphics.c4g/StartupScenSelTitleOv.png b/planet/Graphics.c4g/StartupScenSelTitleOv.png new file mode 100644 index 000000000..916a9d80c Binary files /dev/null and b/planet/Graphics.c4g/StartupScenSelTitleOv.png differ diff --git a/planet/Graphics.c4g/StartupTabClip.png b/planet/Graphics.c4g/StartupTabClip.png new file mode 100644 index 000000000..c75365dac Binary files /dev/null and b/planet/Graphics.c4g/StartupTabClip.png differ diff --git a/planet/Graphics.c4g/UpperBoard.png b/planet/Graphics.c4g/UpperBoard.png new file mode 100644 index 000000000..43ef3653d Binary files /dev/null and b/planet/Graphics.c4g/UpperBoard.png differ diff --git a/planet/Graphics.c4g/Version.txt b/planet/Graphics.c4g/Version.txt new file mode 100644 index 000000000..1d0769df0 --- /dev/null +++ b/planet/Graphics.c4g/Version.txt @@ -0,0 +1 @@ +4.10.0.0 Beta \ No newline at end of file diff --git a/planet/Graphics.c4g/Wealth.png b/planet/Graphics.c4g/Wealth.png new file mode 100644 index 000000000..dbff79f7f Binary files /dev/null and b/planet/Graphics.c4g/Wealth.png differ diff --git a/planet/Material.c4g/Acid.c4m b/planet/Material.c4g/Acid.c4m new file mode 100644 index 000000000..7b8dc6faa --- /dev/null +++ b/planet/Material.c4g/Acid.c4m @@ -0,0 +1,12 @@ +[Material] +Name=Acid +Color=128,128,128,128,128,128,128,128,128 +ColorAnimation=1 +Density=25 +Instable=1 +MaxAirSpeed=25 +MaxSlide=10000 +WindDrift=30 +Corrosive=75 +Placement=10 +TextureOverlay=acid diff --git a/planet/Material.c4g/Coal.c4m b/planet/Material.c4g/Coal.c4m new file mode 100644 index 000000000..888137974 --- /dev/null +++ b/planet/Material.c4g/Coal.c4m @@ -0,0 +1,17 @@ +[Material] +Name=Coal +Color=128,128,128,128,128,128,128,128,128 +Shape=3 +Density=50 +Friction=75 +DigFree=1 +BlastFree=1 +Blast2Object=COAL +Dig2Object=COAL +Dig2ObjectRatio=300 +Blast2ObjectRatio=300 +MaxAirSpeed=100 +MaxSlide=1 +Placement=40 +TextureOverlay=coal +OverlayType=8 diff --git a/planet/Material.c4g/DuroLava.c4m b/planet/Material.c4g/DuroLava.c4m new file mode 100644 index 000000000..60db5ef6f --- /dev/null +++ b/planet/Material.c4g/DuroLava.c4m @@ -0,0 +1,15 @@ +[Material] +Name=DuroLava +Color=245,200,15,251,240,15,248,220,18 +ColorAnimation=1 +Density=25 +Instable=1 +MaxAirSpeed=50 +MaxSlide=10000 +WindDrift=40 +Incindiary=1 +Placement=10 +TextureOverlay=lava_red +PXSGfxSize=6 +PXSGfx=Lava +PXSGfxRt=0,0,32,32,-16,-16 diff --git a/planet/Material.c4g/Earth.c4m b/planet/Material.c4g/Earth.c4m new file mode 100644 index 000000000..2335e3b95 --- /dev/null +++ b/planet/Material.c4g/Earth.c4m @@ -0,0 +1,18 @@ +[Material] +Name=Earth +Color=128,128,128,128,128,128,128,128,128 +Shape=2 +Density=50 +Friction=80 +DigFree=1 +BlastFree=1 +Dig2Object=ERTH +Dig2ObjectRatio=200 +Dig2ObjectRequest=1 +Blast2PXSRatio=10 +MaxAirSpeed=100 +MaxSlide=1 +Corrode=75 +Soil=1 +Placement=30 +TextureOverlay=earth_rough diff --git a/planet/Material.c4g/Granite.c4m b/planet/Material.c4g/Granite.c4m new file mode 100644 index 000000000..78c5d0073 --- /dev/null +++ b/planet/Material.c4g/Granite.c4m @@ -0,0 +1,11 @@ +[Material] +Name=Granite +Color=66,66,66,80,80,80,90,90,90 +Shape=3 +Density=50 +Friction=100 +MaxAirSpeed=100 +MaxSlide=250 +BlastShiftTo=Rock +Placement=60 +TextureOverlay=granite diff --git a/planet/Material.c4g/Ice.c4m b/planet/Material.c4g/Ice.c4m new file mode 100644 index 000000000..5384ce8ae --- /dev/null +++ b/planet/Material.c4g/Ice.c4m @@ -0,0 +1,22 @@ +[Material] +Name=Ice +Color=96,96,160,96,96,160,96,96,160 +Shape=1 +Density=50 +Friction=15 +DigFree=1 +BlastFree=1 +Blast2Object=ICE1 +Dig2Object=ICE1 +Dig2ObjectRatio=400 +Dig2ObjectRequest=1 +Blast2ObjectRatio=120 +MaxAirSpeed=100 +MaxSlide=1 +Corrode=60 +TempConvStrength=3 +AboveTempConvert=10 +AboveTempConvertDir=1 +AboveTempConvertTo=Water +Placement=21 +TextureOverlay=ice diff --git a/planet/Material.c4g/Lava.c4m b/planet/Material.c4g/Lava.c4m new file mode 100644 index 000000000..9a19e22f4 --- /dev/null +++ b/planet/Material.c4g/Lava.c4m @@ -0,0 +1,18 @@ +[Material] +Name=Lava +Color=128,128,128,128,128,128,128,128,128 +ColorAnimation=1 +Density=25 +Instable=1 +MaxAirSpeed=50 +MaxSlide=10000 +WindDrift=40 +Incindiary=1 +TempConvStrength=12 +BelowTempConvert=100 +BelowTempConvertTo=Ashes +Placement=10 +TextureOverlay=lava_red +PXSGfxSize=6 +PXSGfx=Lava +PXSGfxRt=0,0,32,32,-16,-16 diff --git a/planet/Material.c4g/Lava.png b/planet/Material.c4g/Lava.png new file mode 100644 index 000000000..38ed02c65 Binary files /dev/null and b/planet/Material.c4g/Lava.png differ diff --git a/planet/Material.c4g/ORE.c4m b/planet/Material.c4g/ORE.c4m new file mode 100644 index 000000000..7d118c3fc --- /dev/null +++ b/planet/Material.c4g/ORE.c4m @@ -0,0 +1,13 @@ +[Material] +Name=Ore +Color=128,128,128,128,128,128,128,128,128 +Shape=3 +Density=50 +Friction=100 +BlastFree=1 +Blast2Object=ORE1 +Blast2ObjectRatio=100 +MaxAirSpeed=100 +MaxSlide=1 +Placement=50 +TextureOverlay=ore diff --git a/planet/Material.c4g/Rock.c4m b/planet/Material.c4g/Rock.c4m new file mode 100644 index 000000000..0b15679de --- /dev/null +++ b/planet/Material.c4g/Rock.c4m @@ -0,0 +1,13 @@ +[Material] +Name=Rock +Color=128,128,128,128,128,128,128,128,128 +Shape=3 +Density=50 +Friction=100 +BlastFree=1 +Blast2Object=ROCK +Blast2ObjectRatio=75 +MaxAirSpeed=100 +MaxSlide=250 +Placement=50 +TextureOverlay=rock diff --git a/planet/Material.c4g/Snow.c4m b/planet/Material.c4g/Snow.c4m new file mode 100644 index 000000000..de260afe6 --- /dev/null +++ b/planet/Material.c4g/Snow.c4m @@ -0,0 +1,33 @@ +[Material] +Name=Snow +Color=128,128,128,128,128,128,128,128,128 +Shape=2 +Density=50 +Friction=40 +DigFree=1 +BlastFree=1 +Blast2PXSRatio=10 +Instable=1 +MaxAirSpeed=15 +MaxSlide=1 +WindDrift=70 +Corrode=60 +TempConvStrength=3 +InMatConvert=Water +InMatConvertTo=Water +InMatConvertDepth=5 +AboveTempConvert=5 +AboveTempConvertTo=Water +Placement=20 +TextureOverlay=ice +PXSGfxSize=10 +PXSGfx=Snow +PXSGfxRt=0,0,16,16,-8,-8 +Dig2Object=SNWB +Dig2ObjectRatio=400 +Dig2ObjectRequest=1 + +[Reaction] +Type=Convert +TargetSpec=Incindiary +ConvertMat=Water diff --git a/planet/Material.c4g/Snow.png b/planet/Material.c4g/Snow.png new file mode 100644 index 000000000..ac11379b2 Binary files /dev/null and b/planet/Material.c4g/Snow.png differ diff --git a/planet/Material.c4g/Sulphur.c4m b/planet/Material.c4g/Sulphur.c4m new file mode 100644 index 000000000..b8fbfdd8f --- /dev/null +++ b/planet/Material.c4g/Sulphur.c4m @@ -0,0 +1,17 @@ +[Material] +Name=Sulphur +Color=128,128,128,128,128,128,128,128,128 +Shape=3 +Density=50 +Friction=75 +DigFree=1 +BlastFree=1 +Dig2Object=SPHR +Dig2ObjectRatio=200 +MaxAirSpeed=100 +MaxSlide=1 +Corrode=90 +Blast2Object=SPHR +Blast2ObjectRatio=80 +Placement=40 +TextureOverlay=sulphur diff --git a/planet/Material.c4g/TEXMAP.TXT b/planet/Material.c4g/TEXMAP.TXT new file mode 100644 index 000000000..f413924b3 --- /dev/null +++ b/planet/Material.c4g/TEXMAP.TXT @@ -0,0 +1,52 @@ +# Static Map Material/Texture Table +# Index +128 for underground materials + +10=Tunnel-tunnel +11=Tunnel-tunnel +19=DuroLava-lava_red +20=Water-water +#21=Oil-Liquid +22=Acid-acid +23=Lava-lava_red +24=DuroLava-lava_red +25=Water-water +#26=Oil-Smooth +27=Acid-acid +28=Lava-lava_red +29=Earth-earth_dry +30=Earth-earth_rough +31=Earth-earth +32=Earth-earth_rough +#33=Ashes-Smooth3 +#34=Ashes-Rough +#35=Ashes-Ridge +36=Ore-ore +37=Ore-ore +38=Ore-ore +40=Granite-granite +41=Granite-granite +42=Granite-rock +#45=Gold-Rough +50=Rock-rock +51=Rock-rock +52=Rock-rock +53=Sulphur-sulphur +54=Coal-coal +#55=Sand-Smooth +#56=Sand-Smooth2 +#57=Sand-Smooth3 +#58=FlySand-Smooth +#59=FlyAshes-Smooth +#60=Crystal-Flare +#61=Crystal-Structure +#62=Crystal-Structure2 +65=Ice-ice +66=Ice-ice +67=Ice-ice +68=Ice-ice +70=Snow-ice +71=Snow-ice +72=Snow-ice +#80=FlySand-Smooth2 +#81=FlySand-Smooth3 + diff --git a/planet/Material.c4g/Tunnel.c4m b/planet/Material.c4g/Tunnel.c4m new file mode 100644 index 000000000..9b6c46d47 --- /dev/null +++ b/planet/Material.c4g/Tunnel.c4m @@ -0,0 +1,6 @@ +[Material] +Name=Tunnel +Color=128,128,128,128,128,128,128,128,128 +Shape=2 +Placement=5 +TextureOverlay=tunnel diff --git a/planet/Material.c4g/Vehicle.c4m b/planet/Material.c4g/Vehicle.c4m new file mode 100644 index 000000000..a4cdac352 --- /dev/null +++ b/planet/Material.c4g/Vehicle.c4m @@ -0,0 +1,6 @@ +[Material] +Name=Vehicle +Color=120,100,70,120,100,70,120,100,70 +Density=100 +Friction=100 + \ No newline at end of file diff --git a/planet/Material.c4g/Version.txt b/planet/Material.c4g/Version.txt new file mode 100644 index 000000000..1d0769df0 --- /dev/null +++ b/planet/Material.c4g/Version.txt @@ -0,0 +1 @@ +4.10.0.0 Beta \ No newline at end of file diff --git a/planet/Material.c4g/Water.c4m b/planet/Material.c4g/Water.c4m new file mode 100644 index 000000000..f958482ca --- /dev/null +++ b/planet/Material.c4g/Water.c4m @@ -0,0 +1,17 @@ +[Material] +Name=Water +Color=128,128,128,128,128,128,128,128,128 +Alpha=0,0,0,0,0,0 +ColorAnimation=1 +Density=25 +Instable=1 +MaxAirSpeed=25 +MaxSlide=10000 +WindDrift=30 +Corrode=100 +Extinguisher=1 +TempConvStrength=3 +BelowTempConvert=-10 +BelowTempConvertTo=Ice +Placement=10 +TextureOverlay=water diff --git a/planet/Material.c4g/acid.png b/planet/Material.c4g/acid.png new file mode 100644 index 000000000..70408caad Binary files /dev/null and b/planet/Material.c4g/acid.png differ diff --git a/planet/Material.c4g/coal.jpg b/planet/Material.c4g/coal.jpg new file mode 100644 index 000000000..70c193dca Binary files /dev/null and b/planet/Material.c4g/coal.jpg differ diff --git a/planet/Material.c4g/earth.jpg b/planet/Material.c4g/earth.jpg new file mode 100644 index 000000000..83bcf14b0 Binary files /dev/null and b/planet/Material.c4g/earth.jpg differ diff --git a/planet/Material.c4g/earth_dry.jpg b/planet/Material.c4g/earth_dry.jpg new file mode 100644 index 000000000..5e395c34f Binary files /dev/null and b/planet/Material.c4g/earth_dry.jpg differ diff --git a/planet/Material.c4g/earth_rough.jpg b/planet/Material.c4g/earth_rough.jpg new file mode 100644 index 000000000..d2cd00706 Binary files /dev/null and b/planet/Material.c4g/earth_rough.jpg differ diff --git a/planet/Material.c4g/granite.jpg b/planet/Material.c4g/granite.jpg new file mode 100644 index 000000000..eb3ce19f0 Binary files /dev/null and b/planet/Material.c4g/granite.jpg differ diff --git a/planet/Material.c4g/lava_red.png b/planet/Material.c4g/lava_red.png new file mode 100644 index 000000000..a3b962196 Binary files /dev/null and b/planet/Material.c4g/lava_red.png differ diff --git a/planet/Material.c4g/ore.jpg b/planet/Material.c4g/ore.jpg new file mode 100644 index 000000000..06db8e344 Binary files /dev/null and b/planet/Material.c4g/ore.jpg differ diff --git a/planet/Material.c4g/rock.jpg b/planet/Material.c4g/rock.jpg new file mode 100644 index 000000000..154d5f821 Binary files /dev/null and b/planet/Material.c4g/rock.jpg differ diff --git a/planet/Material.c4g/sulphur.jpg b/planet/Material.c4g/sulphur.jpg new file mode 100644 index 000000000..4566c23d2 Binary files /dev/null and b/planet/Material.c4g/sulphur.jpg differ diff --git a/planet/Material.c4g/tunnel.jpg b/planet/Material.c4g/tunnel.jpg new file mode 100644 index 000000000..4cda8c2ec Binary files /dev/null and b/planet/Material.c4g/tunnel.jpg differ diff --git a/planet/Material.c4g/water.jpg b/planet/Material.c4g/water.jpg new file mode 100644 index 000000000..5abbf6b08 Binary files /dev/null and b/planet/Material.c4g/water.jpg differ diff --git a/planet/Music.c4g/Version.txt b/planet/Music.c4g/Version.txt new file mode 100644 index 000000000..1d0769df0 --- /dev/null +++ b/planet/Music.c4g/Version.txt @@ -0,0 +1 @@ +4.10.0.0 Beta \ No newline at end of file diff --git a/planet/Objects.c4d/Clonk.c4d/ActMap.txt b/planet/Objects.c4d/Clonk.c4d/ActMap.txt new file mode 100644 index 000000000..c6a3ee64e --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/ActMap.txt @@ -0,0 +1,347 @@ +[Action] +Name=Walk +Procedure=WALK +Directions=2 +FlipDir=1 +Length=16 +Delay=15 +Facet=0,0,16,20 +NextAction=Walk +StartCall=None +InLiquidAction=Swim + +[Action] +Name=StillTrans1 +Procedure=THROW +Directions=2 +FlipDir=1 +Length=4 +Delay=2 +Facet=0,280,16,20 +NextAction=Still +InLiquidAction=Swim + +[Action] +Name=Still +Procedure=THROW +Directions=2 +FlipDir=1 +Length=8 +Delay=10 +Facet=64,280,16,20 +NextAction=Still +InLiquidAction=Swim + +[Action] +Name=StillTrans2 +Procedure=THROW +Directions=2 +Reverse=1 +FlipDir=1 +Length=4 +Delay=2 +Facet=192,280,16,20 +NextAction=Still +InLiquidAction=Swim + +[Action] +Name=Scale +Procedure=SCALE +Directions=2 +FlipDir=1 +Length=16 +Delay=15 +Facet=0,20,16,20,2,0 +NextAction=Scale +StartCall=Scaling + +[Action] +Name=ScaleDown +Procedure=SCALE +Directions=2 +FlipDir=1 +Length=16 +Delay=15 +Facet=0,20,16,20,2,0 +Reverse=1 +NextAction=ScaleDown +StartCall=Scaling + +[Action] +Name=Tumble +Procedure=FLIGHT +Directions=2 +FlipDir=1 +Length=16 +Delay=1 +Facet=0,40,16,20 +NextAction=Tumble +ObjectDisabled=1 +InLiquidAction=Swim +EndCall=CheckStuck + +[Action] +Name=Dig +Procedure=DIG +Directions=2 +FlipDir=1 +Length=16 +Delay=15 +Facet=0,60,16,20 +NextAction=Dig +StartCall=Digging +DigFree=11 +InLiquidAction=Swim + +[Action] +Name=Bridge +Procedure=BRIDGE +Directions=2 +FlipDir=1 +Length=16 +Delay=1 +Facet=0,60,16,20 +NextAction=Bridge +StartCall=Digging +InLiquidAction=Swim + +[Action] +Name=Swim +Procedure=SWIM +Directions=2 +FlipDir=1 +Length=12 +Delay=15 +Facet=0,80,20,20,0,1 +NextAction=Swim +StartCall=Swimming + +[Action] +Name=Swim2 +Procedure=SWIM +Directions=2 +FlipDir=1 +Length=12 +Delay=15 +Facet=0,300,20,20,0,1 +NextAction=Swim2 +StartCall=Swimming2 + +[Action] +Name=Hangle +Procedure=HANGLE +Directions=2 +FlipDir=1 +Length=11 +Delay=16 +Facet=0,100,16,20,0,3 +NextAction=Hangle +InLiquidAction=Swim + +[Action] +Name=Jump +Procedure=FLIGHT +Directions=2 +FlipDir=1 +Length=8 +Delay=3 +Facet=0,120,16,20 +NextAction=Hold +InLiquidAction=Swim +PhaseCall=CheckStuck + +[Action] +Name=KneelDown +Procedure=KNEEL +Directions=2 +FlipDir=1 +Length=4 +Delay=1 +Facet=0,140,16,20 +NextAction=KneelUp +StartCall=None + +[Action] +Name=KneelUp +Procedure=KNEEL +Directions=2 +FlipDir=1 +Length=4 +Delay=1 +Facet=64,140,16,20 +NextAction=Walk +StartCall=None + +[Action] +Name=Dive +Procedure=FLIGHT +Directions=2 +FlipDir=1 +Length=8 +Delay=4 +Facet=0,160,16,20 +NextAction=Hold +StartCall=None +ObjectDisabled=1 +InLiquidAction=Swim +PhaseCall=CheckStuck + +[Action] +Name=FlatUp +Procedure=KNEEL +Directions=2 +FlipDir=1 +Length=8 +Delay=1 +Facet=0,180,16,20 +NextAction=KneelUp +ObjectDisabled=1 + +[Action] +Name=Throw +Procedure=THROW +Directions=2 +FlipDir=1 +Length=8 +Delay=1 +Facet=0,200,16,20 +NextAction=Walk +InLiquidAction=Swim + +[Action] +Name=Punch +Procedure=FIGHT +Directions=2 +FlipDir=1 +Length=8 +Delay=2 +Facet=0,220,16,20 +NextAction=Fight +EndCall=Punching +ObjectDisabled=1 + +[Action] +Name=Dead +Directions=2 +FlipDir=1 +Facet=0,240,16,20 +Length=6 +Delay=3 +NextAction=Hold +NoOtherAction=1 +ObjectDisabled=1 + +[Action] +Name=Ride +Procedure=ATTACH +Directions=2 +FlipDir=1 +Length=4 +Delay=3 +Facet=128,120,16,20 +NextAction=Ride +StartCall=Riding +InLiquidAction=Swim + +[Action] +Name=RideStill +Procedure=ATTACH +Directions=2 +FlipDir=1 +Length=1 +Delay=10 +Facet=128,120,16,20 +NextAction=RideStill +StartCall=Riding +InLiquidAction=Swim + +[Action] +Name=Push +Procedure=PUSH +Directions=2 +FlipDir=1 +Length=8 +Delay=15 +Facet=128,140,16,20 +NextAction=Push +InLiquidAction=Swim + +[Action] +Name=Chop +Procedure=CHOP +Directions=2 +FlipDir=1 +Length=8 +Delay=3 +Facet=128,160,16,20 +NextAction=Chop +StartCall=Chopping +InLiquidAction=Swim + +[Action] +Name=Fight +Procedure=FIGHT +Directions=2 +FlipDir=1 +Length=7 +Delay=4 +Facet=128,180,16,20 +NextAction=Fight +StartCall=Fighting +ObjectDisabled=1 + +[Action] +Name=GetPunched +Procedure=FIGHT +Directions=2 +FlipDir=1 +Length=8 +Delay=3 +Facet=128,200,16,20 +NextAction=Fight +ObjectDisabled=1 + +[Action] +Name=Build +Procedure=BUILD +Directions=2 +FlipDir=1 +Length=8 +Delay=2 +Facet=128,220,16,20 +NextAction=Build +StartCall=Building +InLiquidAction=Swim + +[Action] +Name=RideThrow +Procedure=ATTACH +Directions=2 +FlipDir=1 +Length=8 +Delay=1 +Facet=128,240,16,20 +NextAction=Ride +StartCall=Throwing +InLiquidAction=Swim + +[Action] +Name=Process +Procedure=THROW +Directions=2 +FlipDir=1 +Length=8 +Delay=3 +Facet=0,260,16,20 +NextAction=Process +EndCall=Processing + +[Action] +Name=Drink +Procedure=THROW +Directions=2 +FlipDir=1 +Length=8 +Delay=3 +Facet=128,260,16,20 +NextAction=Walk diff --git a/planet/Objects.c4d/Clonk.c4d/DefCore.txt b/planet/Objects.c4d/Clonk.c4d/DefCore.txt new file mode 100644 index 000000000..380401f1e --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/DefCore.txt @@ -0,0 +1,45 @@ +[DefCore] +id=CLNK +Version=4,9,8,8 +Name=Clonk +Category=C4D_Living|C4D_SelectHomebase +MaxUserSelect=10 +Width=16 +Height=20 +Offset=-8,-10 +Vertices=7 +VertexX=0,0,0,-2,2,-4,4 +VertexY=2,-7,9,-3,-3,3,3 +VertexCNAT=0,4,8,1,2,1,2 +VertexFriction=300,300,100,300,300,300,300 +Value=25 +Mass=50 +Components=CLNK=1 +Picture=192,100,32,40 +Collection=-8,-10,16,27 +ContactIncinerate=1 +Prey=1 +CrewMember=1 +Float=1 +ColorByOwner=1 +BorderBound=1 +StretchGrowth=1 +NoBurnDecay=1 +IncompleteActivity=1 +Oversize=1 + +[Physical] +Energy=50000 +Breath=50000 +Walk=70000 +Jump=40000 +Scale=30000 +Hangle=30000 +Dig=40000 +Swim=60000 +Throw=50000 +Push=40000 +Fight=50000 +CanDig=1 +CanConstruct=1 +CanChop=1 diff --git a/planet/Objects.c4d/Clonk.c4d/DescDE.txt b/planet/Objects.c4d/Clonk.c4d/DescDE.txt new file mode 100644 index 000000000..8c094cb12 --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/DescDE.txt @@ -0,0 +1 @@ +Ein kleines aber robustes humanoides Wesen, gewitzt und flink, wenn gekonnt gesteuert. diff --git a/planet/Objects.c4d/Clonk.c4d/DescUS.txt b/planet/Objects.c4d/Clonk.c4d/DescUS.txt new file mode 100644 index 000000000..1eb17a227 --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/DescUS.txt @@ -0,0 +1 @@ +A small but robust humanoid being. Witty and nimble, if skillfully controlled. diff --git a/planet/Objects.c4d/Clonk.c4d/Graphics.3.png b/planet/Objects.c4d/Clonk.c4d/Graphics.3.png new file mode 100644 index 000000000..d2b1cba67 Binary files /dev/null and b/planet/Objects.c4d/Clonk.c4d/Graphics.3.png differ diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Chop.c4d/DefCore.txt b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Chop.c4d/DefCore.txt new file mode 100644 index 000000000..c5a87991b --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Chop.c4d/DefCore.txt @@ -0,0 +1,8 @@ +[DefCore] +id=CXCP +Version=4,9,8,1 +Name=Symbol +Category=C4D_StaticBack +Width=1 +Height=1 +Picture=0,0,64,64 diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Chop.c4d/Graphics.png b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Chop.c4d/Graphics.png new file mode 100644 index 000000000..8516f2348 Binary files /dev/null and b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Chop.c4d/Graphics.png differ diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Construction.c4d/DefCore.txt b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Construction.c4d/DefCore.txt new file mode 100644 index 000000000..8c4acec3b --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Construction.c4d/DefCore.txt @@ -0,0 +1,8 @@ +[DefCore] +id=CXCN +Version=4,9,8 +Name=Symbol +Category=C4D_StaticBack +Width=1 +Height=1 +Picture=0,0,64,64 diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Construction.c4d/Graphics.png b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Construction.c4d/Graphics.png new file mode 100644 index 000000000..f1e8a1d2e Binary files /dev/null and b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Construction.c4d/Graphics.png differ diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/ConstructionMaterial.c4d/DefCore.txt b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/ConstructionMaterial.c4d/DefCore.txt new file mode 100644 index 000000000..bdc46b140 --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/ConstructionMaterial.c4d/DefCore.txt @@ -0,0 +1,8 @@ +[DefCore] +id=CXCM +Version=4,9,8 +Name=Symbol +Category=C4D_StaticBack +Width=1 +Height=1 +Picture=0,0,16,16 diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/ConstructionMaterial.c4d/Graphics.png b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/ConstructionMaterial.c4d/Graphics.png new file mode 100644 index 000000000..225e9063f Binary files /dev/null and b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/ConstructionMaterial.c4d/Graphics.png differ diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Context.c4d/DefCore.txt b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Context.c4d/DefCore.txt new file mode 100644 index 000000000..207d1bc1d --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Context.c4d/DefCore.txt @@ -0,0 +1,8 @@ +[DefCore] +id=CXTX +Version=4,9,8 +Name=Symbol +Category=C4D_StaticBack +Width=1 +Height=1 +Picture=0,0,64,64 diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Context.c4d/Graphics.png b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Context.c4d/Graphics.png new file mode 100644 index 000000000..31810dd59 Binary files /dev/null and b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Context.c4d/Graphics.png differ diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Descend.c4d/DefCore.txt b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Descend.c4d/DefCore.txt new file mode 100644 index 000000000..301f1f191 --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Descend.c4d/DefCore.txt @@ -0,0 +1,8 @@ +[DefCore] +id=DSCN +Version=4,9,8 +Name=Descend +Category=C4D_StaticBack +Width=1 +Height=1 +Picture=0,0,64,64 diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Descend.c4d/Graphics.png b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Descend.c4d/Graphics.png new file mode 100644 index 000000000..ac2313d4e Binary files /dev/null and b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Descend.c4d/Graphics.png differ diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Descend.c4d/Names.txt b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Descend.c4d/Names.txt new file mode 100644 index 000000000..8ccdda2de --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Descend.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Absteigen +US:Descend \ No newline at end of file diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Home.c4d/DefCore.txt b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Home.c4d/DefCore.txt new file mode 100644 index 000000000..a1a410c12 --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Home.c4d/DefCore.txt @@ -0,0 +1,8 @@ +[DefCore] +id=CXHM +Version=4,9,8 +Name=Symbol +Category=C4D_StaticBack +Width=1 +Height=1 +Picture=0,0,64,64 diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Home.c4d/Graphics.png b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Home.c4d/Graphics.png new file mode 100644 index 000000000..23711ea2c Binary files /dev/null and b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Home.c4d/Graphics.png differ diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Info.c4d/DefCore.txt b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Info.c4d/DefCore.txt new file mode 100644 index 000000000..cd3d9ccaa --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Info.c4d/DefCore.txt @@ -0,0 +1,8 @@ +[DefCore] +id=CXIN +Version=4,9,8 +Name=Symbol +Category=C4D_StaticBack +Width=1 +Height=1 +Picture=0,0,32,32 diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Info.c4d/Graphics.png b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Info.c4d/Graphics.png new file mode 100644 index 000000000..c656d1823 Binary files /dev/null and b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Info.c4d/Graphics.png differ diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Inventory.c4d/DefCore.txt b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Inventory.c4d/DefCore.txt new file mode 100644 index 000000000..176fc9914 --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Inventory.c4d/DefCore.txt @@ -0,0 +1,8 @@ +[DefCore] +id=CXIV +Version=4,9,8 +Name=InventorySymbol +Category=C4D_StaticBack +Width=1 +Height=1 +Picture=0,0,64,64 diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Inventory.c4d/DescDE.txt b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Inventory.c4d/DescDE.txt new file mode 100644 index 000000000..29f995cd9 --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Inventory.c4d/DescDE.txt @@ -0,0 +1 @@ +Inventar wechseln. diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Inventory.c4d/DescUS.txt b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Inventory.c4d/DescUS.txt new file mode 100644 index 000000000..8efeaf78d --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Inventory.c4d/DescUS.txt @@ -0,0 +1 @@ +Select active item. diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Inventory.c4d/Graphics.png b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Inventory.c4d/Graphics.png new file mode 100644 index 000000000..7a20c57d2 Binary files /dev/null and b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Inventory.c4d/Graphics.png differ diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Inventory.c4d/Names.txt b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Inventory.c4d/Names.txt new file mode 100644 index 000000000..39306d914 --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Inventory.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Inventar +US:Inventory diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Release.c4d/DefCore.txt b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Release.c4d/DefCore.txt new file mode 100644 index 000000000..734575fee --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Release.c4d/DefCore.txt @@ -0,0 +1,8 @@ +[DefCore] +id=CXRL +Version=4,9,8 +Name=Symbol +Category=C4D_StaticBack +Width=1 +Height=1 +Picture=0,0,64,64 diff --git a/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Release.c4d/Graphics.png b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Release.c4d/Graphics.png new file mode 100644 index 000000000..d112095fb Binary files /dev/null and b/planet/Objects.c4d/Clonk.c4d/Menu.c4d/Release.c4d/Graphics.png differ diff --git a/planet/Objects.c4d/Clonk.c4d/Overlay.3.png b/planet/Objects.c4d/Clonk.c4d/Overlay.3.png new file mode 100644 index 000000000..fd8eb87e6 Binary files /dev/null and b/planet/Objects.c4d/Clonk.c4d/Overlay.3.png differ diff --git a/planet/Objects.c4d/Clonk.c4d/Portrait1.png b/planet/Objects.c4d/Clonk.c4d/Portrait1.png new file mode 100644 index 000000000..74214d622 Binary files /dev/null and b/planet/Objects.c4d/Clonk.c4d/Portrait1.png differ diff --git a/planet/Objects.c4d/Clonk.c4d/Portrait2.png b/planet/Objects.c4d/Clonk.c4d/Portrait2.png new file mode 100644 index 000000000..7ad00a109 Binary files /dev/null and b/planet/Objects.c4d/Clonk.c4d/Portrait2.png differ diff --git a/planet/Objects.c4d/Clonk.c4d/Portrait3.png b/planet/Objects.c4d/Clonk.c4d/Portrait3.png new file mode 100644 index 000000000..b78f30b97 Binary files /dev/null and b/planet/Objects.c4d/Clonk.c4d/Portrait3.png differ diff --git a/planet/Objects.c4d/Clonk.c4d/Portrait4.png b/planet/Objects.c4d/Clonk.c4d/Portrait4.png new file mode 100644 index 000000000..64fca570c Binary files /dev/null and b/planet/Objects.c4d/Clonk.c4d/Portrait4.png differ diff --git a/planet/Objects.c4d/Clonk.c4d/Portrait5.png b/planet/Objects.c4d/Clonk.c4d/Portrait5.png new file mode 100644 index 000000000..9e04ce545 Binary files /dev/null and b/planet/Objects.c4d/Clonk.c4d/Portrait5.png differ diff --git a/planet/Objects.c4d/Clonk.c4d/Rank.png b/planet/Objects.c4d/Clonk.c4d/Rank.png new file mode 100644 index 000000000..547517116 Binary files /dev/null and b/planet/Objects.c4d/Clonk.c4d/Rank.png differ diff --git a/planet/Objects.c4d/Clonk.c4d/RankDE.txt b/planet/Objects.c4d/Clonk.c4d/RankDE.txt new file mode 100644 index 000000000..5c3115383 --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/RankDE.txt @@ -0,0 +1,29 @@ +Clonk +Fähnrich +Leutnant +Hauptmann +Major +Oberst +Brigadegeneral +Generalmajor +Generalleutnant +General +Feldmarschall +Kadett +Fregattenkapitän +Kapitän +Konteradmiral +Vizeadmiral +Admiral +Großadmiral +Staatsrat +Staatssekretär +Kanzler +Vizepräsident +Präsident +Ministerpräsident +*%s Erster Klasse +*%s Zweiten Grades +*%s ohne Gleichen +*Erhabener %s +*%s der Spitzenklasse diff --git a/planet/Objects.c4d/Clonk.c4d/RankUS.txt b/planet/Objects.c4d/Clonk.c4d/RankUS.txt new file mode 100644 index 000000000..69d995656 --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/RankUS.txt @@ -0,0 +1,29 @@ +Clonk +Ensign +Lieutenant +Captain +Major +Lieutenant Colonel +Colonel +Brigade General +Major General +Lieutenant General +General +Midshipman +Commander +Commodore +Rear-Admiral +Vice-Admiral +Admiral +Fleet Admiral +Counsellor of State +Secretary of State +Chancellor +Vice President +President +Premier +*%s First Class +*%s Second Degree +*%s Without Equal +*Sublime %s +*Exalted %s diff --git a/planet/Objects.c4d/Clonk.c4d/Script.c b/planet/Objects.c4d/Clonk.c4d/Script.c new file mode 100644 index 000000000..c6684b449 --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/Script.c @@ -0,0 +1,1142 @@ +/*-- Der Clonk --*/ + +#strict 2 + +// Zauberei - benötigt, wenn der Clonk Zielzauber z.B. aus dem Zauberturm zaubert +// Auch benötigt für den König +local pAimer; // Aktive Zielsteuerung; wird abgrbrochen, wenn der Zauberer gestört wird (Nur Fantasypack) +local pAimedSpell; // Zauber, der gezielt wird (Nur Fantasypack) +local pAimedSpellOrigin; // Objekt, das einen Zielzauber initiiert hat. An dieses werden SpellFailed/SpellSucceeded-Nachrichten weitergeleitet + + +/* Initialisierung */ + +protected func Initialize() +{ + // Clonks mit Magiephysikal aus fehlerhaften Szenarien korrigieren + if (GetID () == CLNK) + if (GetPhysical ("Magic", 1)) + SetPhysical ("Magic", 0, 1); + SetAction("Walk"); + SetDir(Random(2)); + // Broadcast für Spielregeln + GameCallEx("OnClonkCreation", this); + return 1; +} + +protected func Swimming() +{ + if(GBackSemiSolid(0, -4)) + SetAction("Swim2"); +} + +protected func Swimming2() +{ + if(!GBackSemiSolid(0, -4)) + SetAction("Swim"); +} + +/* Bei Hinzufügen zu der Crew eines Spielers */ + +protected func Recruitment(int iPlr) { + // Alchemieregel: Jeder Clonk kriegt einen angelegten Beutel spendiert + if(ObjectCount(ALCO)) CreateObject(ALC_,0,0,-1)->~BelongTo(this); + // Broadcast für Crew + GameCallEx("OnClonkRecruitment", this, iPlr); +} + +/* Kontext */ + +public func HasConstructMenu() { return HasKnowledge() && GetPhysical("CanConstruct"); } +public func HasKnowledge() { return GetPlrKnowledge(GetOwner(),0,0,C4D_Structure); } +public func HasBase() { return FindBase(GetOwner()) && GetBase(Contained()) != GetOwner(); } +public func ReleaseAllowed() { return ObjectCount(REAC); } +public func AtConstructionSite() { return !Contained() && FindConstructionSite() && ObjectCount(CNMT); } +public func AtEnergySite() { return !Contained() && FindEnergySite(); } +public func AtTreeToChop() { return !Contained() && FindTree() && GetPhysical("CanChop"); } + +public func FindConstructionSite() +{ + return FindObject2(Find_AtRect(-1,-16,2,32), Find_OCF(OCF_Construct), Find_Layer(GetObjectLayer())); +} + +public func FindEnergySite() +{ + return FindObject2(Find_AtPoint(), Find_OCF(OCF_PowerConsumer), Find_NoContainer(), Find_Layer(GetObjectLayer()), Find_Func("NeedsEnergy")); +} + +public func FindTree() +{ + return FindObject2(Find_AtPoint(), Find_OCF(OCF_Chop), Find_Layer(GetObjectLayer())); +} + +/* Steuerung */ + +protected func ControlLeft() +{ + // Steuerung an Effekt weitergeben + if (Control2Effect("ControlLeft")) return 1; + // Steuerung an Pferd weiterleiten + if (IsRiding()) return GetActionTarget()->~ControlLeft(this); + // Keine überladene Steuerung + return 0; +} + +protected func ControlLeftDouble() + { + // Steuerung an Effekt weitergeben + if (Control2Effect("ControlLeftDouble")) return true; + } + +protected func ControlRightDouble() + { + // Steuerung an Effekt weitergeben + if (Control2Effect("ControlRightDouble")) return true; + } + +protected func ControlLeftReleased() +{ + // Steuerung an Pferd weiterleiten + if (IsRiding()) return GetActionTarget()->~ControlLeftReleased(this); + // Keine überladene Steuerung + return 0; +} + +protected func ControlRight() +{ + // Steuerung an Effekt weitergeben + if (Control2Effect("ControlRight")) return 1; + // Steuerung an Pferd weiterleiten + if (IsRiding()) return GetActionTarget()->~ControlRight(this); + // Keine überladene Steuerung + return 0; +} + +protected func ControlRightReleased() +{ + // Steuerung an Pferd weiterleiten + if (IsRiding()) return GetActionTarget()->~ControlRightReleased(this); + // Keine überladene Steuerung + return 0; +} + +protected func ControlUp() +{ + // Steuerung an Effekt weitergeben + if (Control2Effect("ControlUp")) return 1; + // Steuerung an Pferd weiterleiten + if (IsRiding()) return GetActionTarget()->~ControlUp(this); + // Bei JnR Delfinsprung + if(GetPlrCoreJumpAndRunControl(GetController())) + DolphinJump(); + // Keine überladene Steuerung + return 0; +} + +protected func ControlUpReleased() +{ + // Steuerung an Pferd weiterleiten + if (IsRiding()) return GetActionTarget()->~ControlUpReleased(this); + // Keine überladene Steuerung + return 0; +} + +protected func ControlUpDouble() +{ + // Steuerung an Effekt weitergeben + if (Control2Effect("ControlUpDouble")) return 1; + DolphinJump(); +} + +private func DolphinJump() +{ + // nur wenn an Meeresoberfläche + if(!InLiquid()) return 0; + if(GBackSemiSolid(0,-1)) return 0; + // Nicht wenn deaktiviert (z.B. Ohnmacht) + if (GetActMapVal("ObjectDisabled", GetAction(), GetID())) return false; + // herausspringen + SetPosition(GetX(),GetY()-1); + SetAction("Jump"); + SetSpeed(GetXDir(),-BoundBy(GetPhysical("Swim")/2500,24,38)); + var iX=GetX(),iY=GetY(),iXDir=GetXDir(),iYDir=GetYDir(); + // Wenn Sprung im Wasser endet und das Wasser tief genug ist, Kopfsprung machen + if(SimFlight(iX,iY,iXDir,iYDir,25,50)) + if(GBackLiquid(iX-GetX(),iY-GetY()) && GBackLiquid(iX-GetX(),iY+9-GetY())) + SetAction("Dive"); +} + +protected func ControlDown() +{ + // Steuerung an Effekt weitergeben + if (Control2Effect("ControlDown")) return 1; + // Steuerung an Pferd weiterleiten + if (IsRiding()) return GetActionTarget()->~ControlDown(this); + // Keine überladene Steuerung + return 0; +} + +protected func ControlDownReleased() +{ + // Steuerung an Pferd weiterleiten + if (IsRiding()) return GetActionTarget()->~ControlDownReleased(this); + // Keine überladene Steuerung + return 0; +} + +protected func ControlDownSingle() +{ + // Steuerung an Effekt weitergeben + if (Control2Effect("ControlDownSingle")) return 1; + // Steuerung an Pferd weiterleiten + if (IsRiding()) return GetActionTarget()->~ControlDownSingle(this); + // Keine überladene Steuerung + return 0; +} + +protected func ControlDownDouble() +{ + // Steuerung an Effekt weitergeben + if (Control2Effect("ControlDownDouble")) return 1; + // Steuerung an Pferd weiterleiten + if (IsRiding()) return GetActionTarget()->~ControlDownDouble(this); + // Keine überladene Steuerung + return 0; +} + +protected func ControlDig() +{ + // Steuerung an Effekt weitergeben + if (Control2Effect("ControlDig")) return 1; + // Steuerung an Pferd weiterleiten + if (IsRiding()) return GetActionTarget()->~ControlDig(this); + // Keine überladene Steuerung + return 0; +} + +protected func ControlDigReleased() +{ + // Steuerung an Pferd weiterleiten + if (IsRiding()) return GetActionTarget()->~ControlDigReleased(this); + // Keine überladene Steuerung + return 0; +} + +protected func ControlDigSingle() +{ + // Steuerung an Pferd weiterleiten + if (IsRiding()) return GetActionTarget()->~ControlDigSingle(this); + // Keine überladene Steuerung + return 0; +} + +protected func ControlDigDouble() +{ + // Steuerung an Effekt weitergeben + if (Control2Effect("ControlDigDouble")) return 1; + // Steuerung an Pferd weiterleiten + if (IsRiding()) return GetActionTarget()->~ControlDigDouble(this); + // Keine überladene Steuerung + return 0; +} + +protected func ControlThrow() +{ + // Bei vorherigem Doppel-Stop nur Ablegen + if (GetPlrDownDouble(GetOwner())) return 0; + // Steuerung an Effekt weitergeben + if (Control2Effect("ControlThrow")) return 1; + // Reiten und Werfen + if (IsRiding()) + if (Contents(0)) + { + SetAction("RideThrow"); + return 1; + } + // Keine überladene Steuerung + return 0; +} + +protected func ControlUpdate(object self, int comdir, bool dig, bool throw) +{ + // Steuerung an Pferd weiterleiten + if(IsRiding()) return GetActionTarget()->~ControlUpdate(self, comdir, dig, throw); + // Keine überladene Steuerung + return 0; +} + +protected func ControlCommand(szCommand, pTarget, iTx, iTy, pTarget2, Data) +{ + // Kommando MoveTo an Pferd weiterleiten + if (szCommand == "MoveTo") + if (IsRiding()) + return GetActionTarget()->~ControlCommand(szCommand, pTarget, iTx, iTy); + // Anderes Kommando beim Reiten: absteigen (Ausnahme: Context) + if (IsRiding() && szCommand != "Context") + { + SetComDir(COMD_Stop,GetActionTarget()); + GetActionTarget()->~ControlDownDouble(this); + } + // RejectConstruction Callback beim Bauen durch Drag'n'Drop aus einem Gebaeude-Menu + if(szCommand == "Construct") + { + // Data ist eigentlich keine ID, sondern ein C4Value* - Damit ein DirectCall + // möglich ist, muss sie aber zu einer C4ID gecastet werden. + if(CastC4ID(Data)->~RejectConstruction(iTx - GetX(), iTy - GetY(), this) ) + { + return 1; + } + } + // Kein überladenes Kommando + return 0; +} + +/* Verwandlung */ + +private func RedefinePhysical(szPhys, idTo) +{ + // Physical-Werte ermitteln + var physDefFrom = GetPhysical(szPhys, 0, 0, GetID()), + physDefTo = GetPhysical(szPhys, 0, 0, idTo), + physCurr = GetPhysical(szPhys); + // Neuen Wert berechnen + var physNew; if (physDefTo) physNew=BoundBy(physDefTo-physDefFrom+physCurr, 0, 100000); + // Neuen Wert für den Reset immer temporär setzen, selbst wenn keine Änderung besteht, damit der Reset richtig funktioniert + SetPhysical(szPhys, physNew, PHYS_StackTemporary); + // Fertig + return 1; +} + +protected func FxIntRedefineStart(object trg, int num, int tmp, id idTo) + { + // Ziel-ID in Effektvariable + if (tmp) + idTo = EffectVar(0, trg, num); + else + { + EffectVar(0, trg, num) = idTo; + EffectVar(1, trg, num) = GetID(); + } + // Physicals anpassen + RedefinePhysical("Energy", idTo); + RedefinePhysical("Breath", idTo); + RedefinePhysical("Walk", idTo); + RedefinePhysical("Jump", idTo); + RedefinePhysical("Scale", idTo); + RedefinePhysical("Hangle", idTo); + RedefinePhysical("Dig", idTo); + RedefinePhysical("Swim", idTo); + RedefinePhysical("Throw", idTo); + RedefinePhysical("Push", idTo); + RedefinePhysical("Fight", idTo); + RedefinePhysical("Magic", idTo); + RedefinePhysical("Float", idTo); + /*if (GetRank()<4) RedefinePhysical("CanScale", idTo); + if (GetRank()<6) RedefinePhysical("CanHangle", idTo);*/ // z.Z. können es alle + RedefinePhysical("CanDig", idTo); + RedefinePhysical("CanConstruct", idTo); + RedefinePhysical("CanChop", idTo); + RedefinePhysical("CanSwimDig", idTo); + RedefinePhysical("CorrosionResist", idTo); + RedefinePhysical("BreatheWater", idTo); + // Damit Aufwertungen zu nicht-Magiern keine Zauberenergie übrig lassen + if (GetPhysical("Magic")/1000 < GetMagicEnergy()) DoMagicEnergy(GetPhysical("Magic")/1000-GetMagicEnergy()); + // Echtes Redefine nur bei echten Aufrufen (hat zu viele Nebenwirkungen) + if (tmp) return FX_OK; + Redefine(idTo); + // Fertig + return FX_OK; + } + +protected func FxIntRedefineStop(object trg, int num, int iReason, bool tmp) + { + // Physicals wiederherstellen + ResetPhysical(0, "BreatheWater"); + ResetPhysical(0, "CorrosionResist"); + ResetPhysical(0, "CanSwimDig"); + ResetPhysical(0, "CanChop"); + ResetPhysical(0, "CanConstruct"); + ResetPhysical(0, "CanDig"); + ResetPhysical(0, "Float"); + ResetPhysical(0, "Magic"); + ResetPhysical(0, "Fight"); + ResetPhysical(0, "Push"); + ResetPhysical(0, "Throw"); + ResetPhysical(0, "Swim"); + ResetPhysical(0, "Dig"); + ResetPhysical(0, "Hangle"); + ResetPhysical(0, "Scale"); + ResetPhysical(0, "Jump"); + ResetPhysical(0, "Walk"); + ResetPhysical(0, "Breath"); + ResetPhysical(0, "Energy"); + // Keine Rückänderung bei temporären Aufrufen oder beim Tod/Löschen + if (tmp || iReason) return; + // Damit Aufwertungen von nicht-Magiern keine Zauberenergie übrig lassen + if (GetPhysical("Magic")/1000 < GetMagicEnergy()) DoMagicEnergy(GetPhysical("Magic")/1000-GetMagicEnergy()); + // OK; alte Definition wiederherstellen + Redefine(EffectVar(1, trg, num)); + } + +public func Redefine2(idTo) +{ + if (GetID() == idTo) return true; + RemoveEffect("IntRedefine", this); + if (GetID() == idTo) return true; + return !!AddEffect("IntRedefine", this, 10, 0, this, 0, idTo); +} + +public func Redefine(idTo) +{ + // Aktivitätsdaten sichern + var phs=GetPhase(),act=GetAction(); + // Umwandeln + ChangeDef(idTo); + // Aktivität wiederherstellen + var chg=SetAction(act); + if (!chg) SetAction("Walk"); + if (chg) SetPhase(phs); + // Fertig + return 1; +} + +/* Essen */ + +public func Feed(iLevel) +{ + DoEnergy(iLevel); + Sound("ClonkMunch"); + return 1; +} + +/* Aktionen */ + +private func Riding() +{ + // Richtung an die des Pferdes anpassen + SetDir(GetDir(GetActionTarget())); + // Pferd steht still: Clonk soll auch still sitzen + if (GetActionTarget()->~IsStill()) + { + if (GetAction() != "RideStill") + SetAction("RideStill"); + } + // Pferd steht nicht still: Clonk soll auch nicht still sitzen + else + if (GetAction() != "Ride") + SetAction("Ride"); + return 1; +} + +private func Throwing() +{ + // Erstes Inhaltsobjekt werfen + var pObj = Contents(0); + // Wurfparameter berechnen + var iX, iY, iR, iXDir, iYDir, iRDir; + iX = 0; if (!GetDir()) iX = -iX; + iY = -10; + iR = Random(360); + iXDir = GetPhysical("Throw") / 25000; if(!GetDir()) iXDir = -iXDir; + iYDir = -GetPhysical("Throw") / 25000; + iRDir = Random(40) - 20; + // Reitet? Eigengeschwindigkeit addieren + if (GetActionTarget()) + { + iXDir += GetXDir(GetActionTarget()) / 10; + iYDir += GetYDir(GetActionTarget()) / 10; + } + // Werfen! + Exit(pObj, iX, iY, iR, iXDir, iYDir, iRDir); + // Fertig + return 1; +} + +private func Fighting() +{ + if (!Random(2)) SetAction("Punch"); + return 1; +} + +private func Punching() +{ + if (!Random(3)) Sound("Kime*"); + if (!Random(5)) Sound("Punch*"); + if (!Random(2)) return 1; + Punch(GetActionTarget()); + return 1; +} + +private func Chopping() +{ + if (!GetActTime()) return; // Erster Schlag kein Sound. Clonk holt noch aus. + Sound("Chop*"); + CastParticles("Dust",Random(3)+1,6,-8+16*GetDir(),1,10,12); + return 1; +} + +private func Building() +{ + if (!Random(2)) Sound("Build*"); + return 1; +} + +private func Processing() +{ + Sound("Build1"); + return 1; +} + +private func Digging() +{ + Sound("Dig*"); + return 1; +} + +protected func Scaling() +{ + var szDesiredAction; + if (GetYDir()>0) szDesiredAction = "ScaleDown"; else szDesiredAction = "Scale"; + if (GetAction() != szDesiredAction) SetAction(szDesiredAction); + return 1; +} + +/* Ereignisse */ + +protected func CatchBlow() +{ + if (GetAction() == "Dead") return 0; + if (!Random(5)) Hurt(); + return 1; +} + +protected func Hurt() +{ + Sound("Hurt*"); + return 1; +} + +protected func Grab(object pTarget, bool fGrab) +{ + Sound("Grab"); + return 1; +} + +protected func Get() +{ + Sound("Grab"); + return 1; +} + +protected func Put() +{ + Sound("Grab"); + return 1; +} + +protected func Death(int iKilledBy) +{ + // Info-Broadcasts für sterbende Clonks + GameCallEx("OnClonkDeath", this, iKilledBy); + + // Der Broadcast könnte seltsame Dinge gemacht haben: Clonk ist noch tot? + if (GetAlive()) return; + + // den Beutel fallenlassen + if(GetAlchemBag()) GetAlchemBag()->~Loose(); + + Sound("Die"); + DeathAnnounce(); + // Letztes Mannschaftsmitglied tot: Script benachrichtigen + if (!GetCrew(GetOwner())) + GameCallEx("RelaunchPlayer",GetOwner()); + return 1; +} + +protected func Destruction() +{ + // Clonk war noch nicht tot: Jetzt ist er es + if (GetAlive()) + GameCallEx("OnClonkDeath", this, GetKiller()); + // Dies ist das letztes Mannschaftsmitglied: Script benachrichtigen + if (GetCrew(GetOwner()) == this) + if (GetCrewCount(GetOwner()) == 1) + //Nur wenn der Spieler noch lebt und nicht gerade eleminiert wird + if (GetPlayerName(GetOwner())) + { + GameCallEx("RelaunchPlayer",GetOwner()); + } + return 1; +} + +protected func DeepBreath() +{ + Sound("Breath"); + return 1; +} + +protected func CheckStuck() +{ + // Verhindert Festhängen am Mittelvertex + if(!GetXDir()) if(Abs(GetYDir()) < 5) + if(GBackSolid(0, 3)) + SetPosition(GetX(), GetY() + 1); +} + +/* Status */ + +public func IsRiding() +{ + // Reitet der Clonk? + return (WildcardMatch(GetAction(), "Ride*")); +} + +public func IsClonk() { return 1; } + +/* Kontext */ + +public func ContextRelease(pCaller) +{ + [$CtxRelease$|Image=CXRL|Condition=ReleaseAllowed] + FindObject(REAC)->Activate(GetOwner()); + return 1; +} + +public func ContextEnergy(pCaller) +{ + [$TxtEnergysupply$|Image=CXEC|Condition=AtEnergySite] + var pSite; + if (pSite = FindEnergySite()) + SetCommand(this, "Energy", pSite); + return 1; +} + +public func ContextConstructionSite(pCaller) +{ + [$CtxConstructionMaterial$|Image=CXCM|Condition=AtConstructionSite] + var pSite; + if (pSite = FindConstructionSite()) + PlayerMessage(GetOwner(), pSite->GetNeededMatStr(), pSite); + return 1; +} + +public func ContextChop(pCaller) +{ + [$CtxChop$|Image=CXCP|Condition=AtTreeToChop] + var pTree; + if (pTree = FindTree()) + SetCommand(this, "Chop", pTree); + return 1; +} + +public func ContextConstruction(pCaller) +{ + [$CtxConstructionDesc$|Image=CXCN|Condition=HasConstructMenu] + SetCommand(this, "Construct"); + ExecuteCommand(); + return 1; +} + +public func ContextHome(pCaller) +{ + [$CtxHomeDesc$|Image=CXHM|Condition=HasBase] + SetCommand(this, "Home"); + return 1; +} + +/* Hilfsfunktion */ + +public func ContainedCall(string strFunction, object pTarget) +{ + // Erst das betreffende Gebäude betreten, dann die Zielfunktion aufrufen + SetCommand(this, "Call", pTarget, this, 0, 0, strFunction); + AddCommand(this, "Enter", pTarget); +} + +/* Steuerung */ + +protected func ControlSpecial2() +{ + [$CtrlMenuDesc$|Image=CXTX] + // In einem Gebäude oder Fahrzeug: das Kontextmenü des Gebäudes öffnen + if (Contained()) + if ((Contained()->GetCategory() & C4D_Structure) || (Contained()->GetCategory() & C4D_Vehicle)) + { + SetCommand(this,"Context",0,0,0,Contained()); + return ExecuteCommand(); + } + // Fasst ein Objekt an: Kontextmenü des angefassten Objekts öffnen + if (GetAction() == "Push") + { + SetCommand(this,"Context",0,0,0,GetActionTarget()); + return ExecuteCommand(); + } + // Trägt ein Objekt: Kontextmenü des ersten getragenen Objekts öffnen + if (Contents(0)) + { + SetCommand(this,"Context",0,0,0,Contents(0)); + return ExecuteCommand(); + } + // Ansonsten das Kontextmenü des Clonks öffnen + SetCommand(this,"Context",0,0,0,this); + return ExecuteCommand(); +} + +/* Callback beim Auswahl aus dem Construct-Kontextmenu */ + +public func ControlCommandConstruction(target, x, y, target2, def) +{ + // Keine Konstruktion erlaubt? + if(def->~RejectConstruction(x - GetX(), y - GetY(), this) ) + // Construct-Kommando beenden + return FinishCommand(this, false, 0) ; +} + +/* Automatische Produktion */ + +public func ControlCommandAcquire(target, x, y, target2, def) +{ + // Falls das Teil rumliegt nur aufsammeln + var obj = GetAvailableObject (def, target2); + if (obj) { + AddEffect("IntNotAvailable", obj, 1, 5, this); + AddCommand (this, "Get", obj, 0, 0, 0, 40); + return 1; + } + // Gebäude suchen worin man's herstellen kann + if (obj = GetProducerOf (def)) { + AddCommand (this (), "Call", this, 0, 0, 0, 0, "AutoProduction", 0, 1); + obj -> HowToProduce (this, def); + return 1; + } + AddCommand (this, "Buy", 0, 0, 0, 0, 100, def, 0, C4CMD_Sub); + return 1; +} + +public func AutoProduction() { return 1; } + +public func AutoProductionFailed() +{ + var def = GetCommand (this (), 5, 1); + if (!FindContents(def)) { + var obj = GetAvailableObject (def, GetCommand (this (), 4, 1)); + if (obj) { + AddEffect("IntNotAvailable", obj, 1, 5, this); + AddCommand (this, "Get", obj,0,0,0,40); + return 1; + } + AddCommand (this, "Buy", 0, 0, 0, 0, 100, GetCommand(this, 5, 1), 0, C4CMD_Sub); + } + return 1; +} + +public func FxIntNotAvailableStart(target, number) +{ + EffectVar(0, target, number) = this; +} + +public func FxIntNotAvailableTimer(target, number) +{ + var clonk = EffectVar(0, target, number); + // Check wether the clonk still wants to get the object + for (var i = 0; GetCommand(clonk,0,i); ++i) { + if (GetCommand(clonk, 0, i) == "Get" && GetCommand(clonk, 1, i) == target) + return; + } + return FX_Execute_Kill; +} + +public func GetProducerOf(def) +{ + return FindObject2(Find_InRect(-500,-250,1000,500), Find_Func("IsProducerOf", this, def), Sort_Distance()); +} + +/* Trinken */ + +public func Drink(object pDrink) +{ + // Trinkaktion setzen, wenn vorhanden + if (GetActMapVal("Name", "Drink")) + SetAction("Drink"); + // Vorsicht: erstmal nichts mit pDrink machen, + // die Potions löschen sich meist selber... +} + +/* Einsammeln */ + +public func RejectCollect(id idObject, object pObject) +{ + // Objekt kann gepackt werden + // automatisches Packen aber nur wenn die Paktteile nicht extra gezählt werden + if(!IsSpecialItem(pObject)) if(pObject->~JoinPack(this)) return 1; + + // Objektaufnahme mit Limit verhindern, wenn bereits genug getragen + if(pObject->~CarryLimit() && ContentsCount(idObject) >= pObject->~CarryLimit() ) return 1; + + // Spezialitem? + var i, iCount; + if(i = IsSpecialItem(pObject)) + { + // Noch genug Platz für das ganze Packet? + if(GetSpecialCount(GetMaxSpecialCount(i-1))+Max(pObject->~PackCount(),1)<=GetMaxSpecialCount(i-1, 1)) return 0; + iCount = GetMaxSpecialCount(i-1, 1)-GetSpecialCount(GetMaxSpecialCount(i-1)); + // Ansonten so viel wie geht rein + if(pObject->~SplitPack(pObject->~PackCount()-iCount)) return 0; + else return 1; + } + + return GetNonSpecialCount()>=MaxContentsCount(); +} + +/* Itemlimit */ +public func MaxContentsCount() { return 1; } + +public func GetMaxSpecialCount(iIndex, fAmount) +{ + // Hier könnten Spezialbehandlungen von Itemgruppen definiert werden + // wie z.B. zu dem Inventar noch 30 Pfeile aufnehmen (siehe auch Ritter) + // if(iIndex == 0) { if(fAmount) return(30); return("IsArrow"); } +} + +/* Liefert die Gesamtzahl eines Objekt(paket)typs */ +private func GetObjectCount(idObj) + { + var idUnpackedObj; + if (idUnpackedObj = idObj->~UnpackTo()) + // Auch verschachtelte Pakete mitzählen + return GetObjectCount(idUnpackedObj) * idObj->PackCount(); + // Ansonsten ist es nur ein Objekt + return 1; + } + +/* Spezialgegenstände im Inventar zählen */ +private func GetSpecialCount(szTest) + { + var iCnt, pObj; + // Einzelne Pfeile... + for(var i = 0; pObj = Contents(i); i++) + if(ObjectCall(pObj, szTest)) + iCnt++; + // Pakete... + for(var i = 0; pObj = Contents(i); i++) + if(pObj->~UnpackTo()) + if(DefinitionCall(pObj->~UnpackTo(), szTest)) + iCnt += GetObjectCount(pObj); + // Wert zurückgeben + return iCnt; + } + +/* Testen eines Objektes */ +private func IsSpecialItem(pObj) +{ + // Spezialitem? + var j=-1; + while(GetMaxSpecialCount(++j, 1)) + if(ObjectCall(pObj, GetMaxSpecialCount(j))) + return j+1; + // Spezialitempacket? + if(pObj->~UnpackTo()) + { + j=-1; + while(GetMaxSpecialCount(++j, 1)) + if(DefinitionCall(pObj->~UnpackTo(), GetMaxSpecialCount(j))) + return j+1; + } +} + +/* Anzahl an normalen Objekten */ +private func GetNonSpecialCount() + { + var iCnt, pObj; + // Inventar einzeln auf nicht-Spezial überprüfen + for(var i = 0; pObj = Contents(i); i++) + // Spezialitems nicht zählen + if(!IsSpecialItem(pObj)) + iCnt++; + + // Wert zurückgeben + return iCnt; + } + +/* Reiten */ + +public func ContextDescend(pCaller) +{ + [$TxtDescend$|Image=DSCN|Condition=IsRiding] + DescendVehicle(); +} + +public func DescendVehicle() +{ + var pOldVehicle = GetActionTarget(); + SetAction("Walk"); + // Feststecken nach Absteigen? Dann besser direkt beim Gefährt absteigen. + if (Stuck()) if (pOldVehicle) + { + var x=GetX(), y=GetY(); + SetPosition(GetX(pOldVehicle), GetY(pOldVehicle)); + if (Stuck()) + { + // Das Gefährt steckt auch? Dann hilft es alles nichts. Zurück zum Ursprungsort. + SetPosition(x,y); + } + } +} + + +/* Effektsteuerung */ + +private func Control2Effect(string szControl) + { + // Von Effektzahl abwärts zählen + var i = GetEffectCount(0, this), iEffect; + var res; + while (i--) + { + // Effekte mit Control im Namen benachrichtigen + iEffect = GetEffect("*Control*", this, i); + // Message("%s", this, GetEffect(0, this, iEffect, 1)); + if ( GetEffect(0, this, iEffect, 1) ) + res += EffectCall(this, iEffect, szControl); + } + return res; + } + + +/* Pfeile */ + +// Pfeilpaket aufteilen +public func SplitPack2Components(pPack) + { + // Aufteilen + if(!pPack->~Unpack(this) ) Split2Components(pPack); + // Fertig, Erfolg + return 1; + } + +/* Pfeil aus dem Inventar nehmen */ +public func GetArrow() + { + // Einzelne Pfeile suchen + var pObj, pArrow; + for(var i = 0; pObj = Contents(i); i++) + if(pObj->~IsArrow()) + return pObj; + // Bei Bedarf Pakete aufteilen + for(var i = 0; pObj = Contents(i); i++) + if(pObj->~IsArrowPack()) + { + // Pfeil aus Paket verwenden + if(pArrow = pObj->~GetItem()) return pArrow; + // oder bei alten Pfeilen Paket aufteilen + if (SplitPack2Components(pObj)) + return FindSingleArrow(); + } + // Keine Pfeile gefunden + return 0; + } + +public func FindSingleArrow() + { + // Einzelne Pfeile suchen + var pObj; + for(var i = 0; pObj = Contents(i); i++) + if(pObj->~IsArrow()) + return pObj; + // Keiner gefunden + return 0; + } + +public func GetComboArrow() + { + // Pfeile als Komboobjekt: Nur wenn das erste Inventarobjekt ein Pfeil ist + var pObj = Contents(0), pArrow; + if (!pObj) return; + if(pObj->~IsArrow()) return pObj; + // Bei Bedarf Pakete aufteilen + if(pObj->~IsArrowPack()) + { + // Pfeil aus Paket verwenden + if(pArrow = pObj->~GetItem()) return pArrow; + // oder bei alten Pfeilen Paket aufteilen + if (SplitPack2Components(pObj)) + return FindSingleArrow(); + } + // Keine Pfeile gefunden + return 0; + } + +/* Pfeile im Inventar zählen */ +private func GetArrowCount() + { + return GetSpecialCount("IsArrow"); + } + + +/* Zauberei - benötigt, wenn der Clonk Zielzauber z.B. aus dem Zauberturm zaubert */ + +public func SpellFailed(id idSpell, object pByCaller) +{ + // Umleiten an eigentliche Zauberquelle? (Buch, Zauberturm, etc.) + var pSpellOrigin = pAimedSpellOrigin; + pAimedSpellOrigin = 0; + if (pSpellOrigin && pSpellOrigin != this) + // Auch bei nicht erfolgreicher Umleitung abbrechen: Das zaubernde Objekt hat im Normalfall die Zutaten/Zauberenergie für den + // Zauber bereit gestellt, und diese sollten nicht an den Clonk zurück gegeben werden + return (pSpellOrigin->~SpellFailed(idSpell, this)); + // Magieenergie zurückgeben + DoMagicEnergy(Value(idSpell), 0, true); + // Alchemische Zutaten zurückgeben + if(ObjectCount(ALCO)) IncreaseAlchem(idSpell); +} + +public func SpellSucceeded(id idSpell, object pByCaller) +{ + // Umleiten an eigentliche Zauberquelle? (Buch, Zauberturm, etc.) + var pSpellOrigin = pAimedSpellOrigin; + pAimedSpellOrigin = 0; + if (pSpellOrigin && pSpellOrigin != this) + // Auch bei nicht erfolgreicher Umleitung abbrechen: Das zaubernde Objekt hat im Normalfall das Magietraining schon erledigt + return (pSpellOrigin->~SpellSucceeded(idSpell, this)); + // Globaler Aufruf für Zauber + OnClonkSucceededSpell(idSpell); +} + +// Der Clonk kann von sich aus nicht zaubern und hat keine Aktivitäten dafür +private func SetMagicAction(id idForSpell) {} +private func SetCastAction() {} +private func EndMagicAction() {} + + +/* Zielsteuerung - nur aktiv, wenn das Fantasypack die globalen Funktionen CreateAimer und CreateSelector überladen hat */ + +public func DoSpellAim(object pSpell, object pSpellOrigin) + { + pAimedSpell = pSpell; + pAimedSpellOrigin = pSpellOrigin; + pAimer = CreateAimer(this, this, GetDir()*180-90); + + if (!pAimer) return 0; + + // Callback an die Zauberquelle, dass noch gezielt wird + if (pSpellOrigin) pSpellOrigin->~SpellAiming(pSpell, this); + + // Zielvorgang für Zauber + SetComDir(COMD_Stop); + SetCastAction(); + return pAimer; + } + +public func OnAimerEnter(int iAngle) + { + // Zauber weg? + if (!pAimedSpell) return OnAimerAbort(iAngle); + var idSpell = GetID(pAimedSpell); + // Aktivität + SetMagicAction(); + // Zauber benachrichtigen + if (!pAimedSpell->~ActivateAngle(this, iAngle)) + { + SpellFailed(idSpell); + return 0; + } + // OK; Zauber erfolgreich + return SpellSucceeded(idSpell); + } + +public func AimingAngle(int iAngle) + { + // Zauber weg? + if (!pAimedSpell) return OnAimerAbort(iAngle); + // Zielaktion setzen, wenn im Laufen. Das ist etwas ungeschickt, weil damit + // die Magic-Aktion abgebrochen wird, die der Magier bereits bis zur Haelfte + // durchgefuehrt hat. Dummerweise laesst sich frueher nicht feststellen, ob + // der auszufuehrende Zauber einen Aimer brauchen wird... + if(GetActMapVal("Name", "AimMagic") ) + if(GetAction() == "Walk" || GetAction() == "Magic") + SetAction("AimMagic"); + + // Phase anpassen + if(GetAction() == "AimMagic") + { + // Auch richtigen Winkel verwenden wenn nach links gedreht + var iHalfAngle = iAngle; + if(iHalfAngle < 0) iHalfAngle = -iHalfAngle; + SetPhase(BoundBy((iHalfAngle + 9) / 18, 0, 9) ); + } + // Weitergabe an den Zauber + return pAimedSpell->~AimingAngle(this, iAngle); + } + +public func OnAimerAbort(int iAngle) + { + // Aktivität zurücksetzen + EndMagicAction(); + // Benachrichtigung + if (!pAimedSpell) return 1; + var idSpell = GetID(pAimedSpell); + if (!pAimedSpell->~AbortAiming(this)) + // Standardaktion: Zauber löschen + RemoveObject(pAimedSpell); + pAimedSpell = 0; + // OK; Zauber nicht erfolgreich + return SpellFailed(idSpell); + } + +public func DoSpellSelect(object pSpell, int iRadius, object pSpellOrigin) + { + // Zauber sichern + pAimedSpell = pSpell; + pAimedSpellOrigin = pSpellOrigin; + pAimer = CreateSelector(pSpell, this, iRadius); + if (!pAimer) return; + // Callback an die Zauberquelle, dass noch gezielt wird + if (pSpellOrigin) pSpellOrigin->~SpellAiming(pSpell, this); + // Zielvorgang für Zauber + SetComDir(COMD_Stop); + SetCastAction(); + return pAimer; + } + +public func OnSelectorEnter(object pTarget) + { + // Zauber weg? + if (!pAimedSpell) return OnAimerAbort(); + var idSpell = GetID(pAimedSpell); + // Aktivität + SetMagicAction(); + // Zauber benachrichtigen + if (!pAimedSpell->~ActivateTarget(this, pTarget)) + { + SpellFailed(idSpell); + return 0; + } + // OK; Zauber erfolgreich + return SpellSucceeded(idSpell); + } + +public func OnSelectorAbort() + { + // Aktivität zurücksetzen + EndMagicAction(); + // Benachrichtigung + if (!pAimedSpell) return 1; + var idSpell = GetID(pAimedSpell); + if (!pAimedSpell->~AbortSelecting(this)) + // Standardaktion: Zauber löschen + RemoveObject(pAimedSpell); + pAimedSpell = 0; + // OK; Zauber nicht erfolgreich + return SpellFailed(idSpell); + } + +public func SelectorTarget(object pTarget) { if(pAimedSpell) return pAimedSpell->~SelectorTarget(this,pTarget); } + +// Momentanen Zauber abbrechen +protected func AbortCasting() + { + if (pAimer) pAimer->Abort(); + return 1; + } + +public func Abort() {} // dummy call to instantiate function name diff --git a/planet/Objects.c4d/Clonk.c4d/StringTblDE.txt b/planet/Objects.c4d/Clonk.c4d/StringTblDE.txt new file mode 100644 index 000000000..3c50723de --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/StringTblDE.txt @@ -0,0 +1,8 @@ +CtxConstructionDesc=Bauauftrag +CtxConstructionMaterial=Baumaterial +CtxHomeDesc=Zurück zur Basis +CtxRelease=Entlassen +CtxChop=Fällen +CtrlMenuDesc=Menü +TxtDescend=Abspringen +TxtEnergysupply=Energieversorgung diff --git a/planet/Objects.c4d/Clonk.c4d/StringTblUS.txt b/planet/Objects.c4d/Clonk.c4d/StringTblUS.txt new file mode 100644 index 000000000..8c525419a --- /dev/null +++ b/planet/Objects.c4d/Clonk.c4d/StringTblUS.txt @@ -0,0 +1,8 @@ +CtxConstructionDesc=Construction +CtxConstructionMaterial=Construction material +CtxHomeDesc=Back to base +CtxRelease=Release +CtxChop=Chop +CtrlMenuDesc=Menu +TxtDescend=Jump off +TxtEnergysupply=Energy supply diff --git a/planet/Objects.c4d/Clonk.c4d/Title.png b/planet/Objects.c4d/Clonk.c4d/Title.png new file mode 100644 index 000000000..d33af5333 Binary files /dev/null and b/planet/Objects.c4d/Clonk.c4d/Title.png differ diff --git a/planet/Objects.c4d/Rock.c4d/DefCore.txt b/planet/Objects.c4d/Rock.c4d/DefCore.txt new file mode 100644 index 000000000..ebe84c73b --- /dev/null +++ b/planet/Objects.c4d/Rock.c4d/DefCore.txt @@ -0,0 +1,19 @@ +[DefCore] +id=ROCK +Version=4,10,0,0 +Name=Rock +Category=C4D_Object|C4D_SelectMaterial|C4D_SelectHomebase|C4D_SelectInEarth +MaxUserSelect=10 +Width=6 +Height=6 +Offset=-3,-3 +Vertices=1 +VertexY=1 +VertexFriction=20 +Value=1 +Mass=10 +Components=IROC=3 +Rebuy=1 +Collectible=1 +Projectile=1 + diff --git a/planet/Objects.c4d/Rock.c4d/DescDE.txt b/planet/Objects.c4d/Rock.c4d/DescDE.txt new file mode 100644 index 000000000..be35d6278 --- /dev/null +++ b/planet/Objects.c4d/Rock.c4d/DescDE.txt @@ -0,0 +1 @@ +Das ursprünglichste aller Elemente in Clonk und gleichzeitig die erste Angriffswaffe. Baumaterial für zahlreiche Gebäude. diff --git a/planet/Objects.c4d/Rock.c4d/DescUS.txt b/planet/Objects.c4d/Rock.c4d/DescUS.txt new file mode 100644 index 000000000..0e7d2a433 --- /dev/null +++ b/planet/Objects.c4d/Rock.c4d/DescUS.txt @@ -0,0 +1 @@ +The most natural of all elements in Clonk. diff --git a/planet/Objects.c4d/Rock.c4d/Graphics.10.png b/planet/Objects.c4d/Rock.c4d/Graphics.10.png new file mode 100644 index 000000000..a400f4bf8 Binary files /dev/null and b/planet/Objects.c4d/Rock.c4d/Graphics.10.png differ diff --git a/planet/Objects.c4d/Rock.c4d/Names.txt b/planet/Objects.c4d/Rock.c4d/Names.txt new file mode 100644 index 000000000..c95ef6f13 --- /dev/null +++ b/planet/Objects.c4d/Rock.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Stein +US:Rock diff --git a/planet/Objects.c4d/Rock.c4d/Script.c b/planet/Objects.c4d/Rock.c4d/Script.c new file mode 100644 index 000000000..7d9664c02 --- /dev/null +++ b/planet/Objects.c4d/Rock.c4d/Script.c @@ -0,0 +1,12 @@ +/*--- Der Stein ---*/ + +#strict 2 + +protected func Hit() +{ + Sound("RockHit*"); + return 1; +} + +func IsAlchemContainer() { return true; } +func AlchemProcessTime() { return 160; } \ No newline at end of file diff --git a/planet/Sound.c4g/Version.txt b/planet/Sound.c4g/Version.txt new file mode 100644 index 000000000..1d0769df0 --- /dev/null +++ b/planet/Sound.c4g/Version.txt @@ -0,0 +1 @@ +4.10.0.0 Beta \ No newline at end of file diff --git a/planet/System.c4g/C4.c b/planet/System.c4g/C4.c new file mode 100644 index 000000000..ee5f0bba2 --- /dev/null +++ b/planet/System.c4g/C4.c @@ -0,0 +1,126 @@ +/*-- Altes Zeug, das nicht mehr in die Engine muss --*/ + +#strict 2 + +// stuff for the proplist changes +static const DFA_NONE =-1; +static const DFA_WALK = 0; +static const DFA_FLIGHT = 1; +static const DFA_KNEEL = 2; +static const DFA_SCALE = 3; +static const DFA_HANGLE = 4; +static const DFA_DIG = 5; +static const DFA_SWIM = 6; +static const DFA_THROW = 7; +static const DFA_BRIDGE = 8; +static const DFA_BUILD = 9; +static const DFA_PUSH =10; +static const DFA_CHOP =11; +static const DFA_LIFT =12; +static const DFA_FLOAT =13; +static const DFA_ATTACH =14; +static const DFA_FIGHT =15; +static const DFA_CONNECT =16; +static const DFA_PULL =17; +static Action; + +global func GetActMapVal(string strEntry, string strAction, id idDef, int iEntryNr) { + if (!idDef) idDef = GetID(); + if (strEntry == "Facet") strEntry = ["X", "Y", "Wdt", "Hgt", "OffX", "OffY"][iEntryNr]; + return GetProperty(strEntry, GetProperty(strAction, idDef)); +} + +global func CastC4ID(x) { return x; } + +// Abgelöst durch SetPosition +global func ForcePosition(object obj, int x, int y) { return SetPosition(x, y, obj); } + +// Abgelöst durch RemoveObject +global func AssignRemoval(object obj) { return RemoveObject(obj); } + +// Für Szenarien ohne Objects.c4d... +global func EmptyBarrelID() { return BARL; } + +// Fügt das Material in ein Fass im Objekt ein +global func ObjectInsertMaterial(int imat, object pTarget) +{ + if (!pTarget || imat == -1) return; // Kein Zielobjekt / Material? + // Fasstyp ermitteln + var idBarl; + if (idBarl = GetBarrelType(imat)) + { + // Fass suchen + var pBarl = FindFillBarrel(pTarget, idBarl); + if (pBarl) + // Fass auffüllen + return pBarl->BarrelDoFill(1, imat+1); + } + // Kein Fass? Dann Objekt überlaufen lassen + return InsertMaterial(imat, GetX(pTarget)-GetX(), GetY(pTarget)-GetY()); +} + +// Auffüllbares Fass im Objekt suchen +global func FindFillBarrel(object pInObj, id type) +{ + // Alle Inhaltsobjekte durchlaufen + var pObj; + for(var i = 0; pObj = Contents(i, pInObj); i++) + // ID stimmt? + if(pObj->GetID() == type) + // Fass nicht voll? + if (!pObj->~BarrelIsFull()) + // Nehmen wir doch das + return pObj; + // Nix? Dann halt ein leeres Fass suchen und füllen + if (!(pObj=FindContents(EmptyBarrelID(), pInObj))) return; + ChangeDef(type, pObj); + return pObj; +} + +// Flüssigkeit aus Fässern im Objekt extrahieren +global func ObjectExtractLiquid(object pFrom) +{ + // Alle Inhaltsobjekte durchlaufen + var pObj; + for(var i = 0; pObj = Contents(i, pFrom); i++) + { + // Extrahieren + var iRet = pObj->~BarrelExtractLiquid(); + if(iRet != -1) return iRet; + } + // Extrahieren nicht möglich + return -1; +} + +global func ShowNeededMaterial(object pOfObject) +{ + MessageWindow(GetNeededMatStr(pOfObject), GetOwner(),CXCN,GetName(pOfObject)); + return 1; +} + +global func SetOnlyVisibleToOwner(bool fVisible, object pObj) +{ + var oldVal=GetOnlyVisibleToOwner(pObj); + if (fVisible) + SetVisibility(VIS_Owner | VIS_God, pObj); + else + SetVisibility(VIS_All, pObj); + return oldVal; +} + +global func GetOnlyVisibleToOwner(object pObj) +{ + return (GetVisibility(pObj) == VIS_Owner | VIS_God); +} + +global func MessageBoard(string msg, par0, par1, par2, par3, par4, par5, par6, par7, par8) +{ + return Log(msg, par0, par1, par2, par3, par4, par5, par6, par7, par8); +} + +// Fasskonfiguration +// Kann z.B. durch eine Spielregel überladen werden (Shamino) +// Bit 0 (1): Wasserfässer sind auch im Verkauf 8 Clunker wert +// Bit 1 (2): Fässer werden beim Verkaufen nicht entleert (sind wieder voll kaufbar) +// Bit 2 (4): Nur Wasserfässer werden beim Verkaufen nicht entleert (sind wieder voll kaufbar) +global func BarrelConfiguration() { return 5; } diff --git a/planet/System.c4g/Commits.c b/planet/System.c4g/Commits.c new file mode 100644 index 000000000..23e3277b3 --- /dev/null +++ b/planet/System.c4g/Commits.c @@ -0,0 +1,437 @@ +#strict 2 + +/*-- flgr --*/ + +// Liefert das Offset zur gewünschten Landscape-X-Position zurück +global func AbsX(int x) { + return x - GetX(); +} + +// Liefert das Offset zur gewünschten Landscape-Y-Position zurück +global func AbsY(int y) { + return y - GetY(); +} + +// Liefert 1 zurück wenn keine der angegeben Konditionen wahr ist +// sollte nicht mehr benutzt werden! +global func Nor(bool con1, bool con2, bool con3, bool con4, bool con5) { + return !(con1 || con2 || con3 || con4 || con5); +} + +// Erzeugt ein Objekt mit der angegeben ID in iMaterial. iRetries ist die Anzahl der Versuche. +global func PlaceInMaterial(id def, int material, int _retries) { // C4ID id, int iMaterial, [int iRetries] + // Gültiger Materialindex? (-1 ist Sky) + if (!Inside(material, 0, 127)) return 0; + + // Standardwert von 50000 + var retries = _retries; + if (!retries) retries = 50000; + + for (var retry_num = 0; retry_num < retries; retry_num++) { + var x = Random(LandscapeWidth()); + var y = Random(LandscapeHeight()); + if (GetMaterial(x, y) == material) + return CreateObject(def, x, y, -1); + } + return 0; +} + +// Unterstützt negative Werte und kann Zufallszahlen zwischen 2 Werten liefern + +global func RandomX(int iStart, int iEnd) { + var iSwap; + // Werte vertauscht: trotzdem richtig rechnen + if(iStart > iEnd) { iSwap=iStart; iStart=iEnd; iEnd=iSwap; } + // Zufälligen Faktor bestimmen (Differenz plus die null) und iStart aufrechnen + return Random(iEnd-iStart+1)+iStart; +} + +// Setzt die Fertigstellung von *pObj auf iNewCon +global func SetCon(int new_con, object obj) { // int iNewCon, [C4Object *pObj] + // Kein Objekt vorhanden? + if (!obj && !this) return 0; + + return DoCon(new_con - GetCon(obj), obj); +} + +// Setzt X- und Y-Dir eines Objektes +global func SetSpeed(int x_dir, int y_dir, object obj) { // int iXDir, int iYDir, [C4Object *pObj] + // Kein Objekt vorhanden? + if (!obj && !this) return 0; + + if (!SetXDir(x_dir, obj)) return 0; + if (!SetYDir(y_dir, obj)) return 0; + return 1; +} + +// Setzt X- und Y-Koordinate eines Vertices zugleich +global func SetVertexXY(int index, int x, int y, object obj) { // int iIndex, int iXPos, int iYPos, [C4Object *pObj] + // Kein Objekt vorhanden? + if (!obj && !this) return 0; + + // Vertices setzen + if (!SetVertex(index, 0, x, obj)) return 0; + if (!SetVertex(index, 1, y, obj)) return 0; + return 1; +} + +// Liefert die Anzahl aller feststeckenden Vertices von *pObj zurück +global func VerticesStuck(object obj) { // [C4Object *pObj] + // Kein Objekt vorhanden? + if (!obj && !this) return 0; + + var vertices; + var x_offset; + var y_offset; + + // Offset zum Objekt anpassen + if (obj) { + x_offset = AbsX(GetX(obj)); + y_offset = AbsY(GetY(obj)); + } + + // Vertices durchgehen + for (var i = -1; i < GetVertexNum(obj); i++) { + // solid? + if (GBackSolid(x_offset + GetVertex(i, 0, obj), + y_offset + GetVertex(i, 1, obj))) + // hochzählen + vertices++; + } + return vertices; +} + +// Verbindet zwei oder mehrere Strings miteinander und liefert den resultierenden String zurück +global func Concat() { + var string; + + // Parameter durchgehen + var par_num = 0; + var new_string; + while (new_string = Par(par_num++)) + string = Format("%s%s", string, new_string); + + return string; +} + +/*-- Joern --*/ + +//Objekt hüpft mit der angegebenen Kraft. +global func Bounce(int iPower) +{ + if(!GBackSolid(0,-2)) SetYDir(-Random(iPower)); + if(GBackSolid(0,-2)) SetYDir(Random(10)); + if(GBackSolid(-2,0)) SetXDir(-GetXDir()); + if(GBackSolid(2,0)) SetXDir(-GetXDir()); + return 1; +} + +//Fügt zum Konto des genannten Spielers iValue Gold hinzu +global func DoWealth(int iPlayer, int iValue) +{ + return SetWealth(iPlayer, iValue + GetWealth(iPlayer)); +} + +//Erstellt für iPlayer ein Crewmember mit der genannten ID zufällig an einer begehbaren Stelle (an Land, nicht im Wasser). +global func RndMakeCrewMember(int iPlayer, id ID) +{ + var anim=PlaceAnimal(WIPF),crw; + MakeCrewMember(crw=CreateObject( ID,GetX(anim),GetY(anim),iPlayer ), iPlayer); + RemoveObject(anim); + return crw; +} + +//Objekt Explodiert mehrmals. +global func SemiExplode(int iLevel, int incidence) +{ + for(var i = 0; i < incidence; i++) + Explode(iLevel,CreateObject(ROCK, 0, 0, GetOwner())); + RemoveObject(); + return 1; +} + +/*-- Tyron --*/ + +// Wandelt einen DWORD in RGB werte um +// select 0: a, select 1: R, select 2: G, select 3: B +global func GetRGBaValue(val,sel) { + return (val>>((3-sel)*8)&255); +} + +// Abwärtskompatibilität +global func GetRGBValue(val,sel) { + return (GetRGBaValue(val,sel)); +} + +// Hiermit lässt sich eine Farbe eines RGB Wertes setzen +// select 0: a, select 1: R, select 2: G, select 3: B +global func SetRGBaValue(int val, int newval, int sel) { + // Alte Farbe 'löschen' + val = val&~(255<<((3-sel)*8)); + // Neue hinzufügen + return (val|newval<<((3-sel)*8)); +} + +// Diese Funktion verändert die angegeben Farbe eines RGB Wertes +// select 0: a, select 1: R, select 2: G, select 3: B +global func DoRGBaValue(int val, int chng, int sel) { + return (val + (chng<<((3-sel)*8))); +} + +global func SplitRGBaValue(rgb, &red, &green, &blue, &alpha) { + red=GetRGBaValue(rgb,1); + green=GetRGBaValue(rgb,2); + blue=GetRGBaValue(rgb,3); + alpha=GetRGBaValue(rgb,0); +} + +global func HSL2RGB(hsl) { + var hue=GetRGBaValue(hsl,1), sat=GetRGBaValue(hsl,2),lightness=GetRGBaValue(hsl,3); + var red, green, blue; + var var1, var2; + + //Log("hue: %d sat: %d lightness: %d",hue,sat, lightness); + + if(sat==0) { + red = green = blue = lightness; + } else { + if(lightness<128) var2 = (lightness*(255 + sat))/255; + else var2 = lightness+sat-lightness*sat/255; + + var1 = 2*lightness-var2; + + red = Hue_2_RGB( var1, var2, hue+85); + green= Hue_2_RGB( var1, var2, hue ); + blue = Hue_2_RGB( var1, var2, hue-85); + } + + //Log("red: %d green: %d blue: %d",red, green, blue); + + return RGB(red, green, blue); +} + +global func Hue_2_RGB(var1, var2, hue) { + if(hue<0) hue+=255; + if(hue>255) hue-=255; + if(6*hue<255) return ( var1 + ((var2 - var1) * 6 * hue)/255); + if(2*hue<255) return ( var2 ); + if(3*hue<510) return ( var1 + ((var2 - var1)*( 510 / 3 - hue )*6)/255); + return (var1); +} + +global func RGB2HSL(rgb) { + var red=GetRGBaValue(rgb,1), green=GetRGBaValue(rgb,2),blue=GetRGBaValue(rgb,3); + var min_val = Min(red, Min(green, blue)), max_val = Max(red, Max(green, blue)); + var diff_val = max_val - min_val; + var lightness = (max_val + min_val)/2; + var hue, sat, diff_red, diff_green, diff_blue; + + //Log("red: %d green: %d blue: %d",red, green, blue); + //Log("max_val: %d, min_val: %d",max_val, min_val); + + if (diff_val==0) { + hue=0; + sat=0; + } else { + //Log("%d/%d",255*diff_val,510-(max_val+min_val)); + if(lightness<128) sat=(255*diff_val)/(max_val+min_val); + else sat=(255*diff_val)/(510-(max_val+min_val)); + + diff_red = ((255*(max_val-red ))/6 + (255*diff_val)/2)/diff_val; + diff_green= ((255*(max_val-green))/6 + (255*diff_val)/2)/diff_val; + diff_blue = ((255*(max_val-blue ))/6 + (255*diff_val)/2)/diff_val; + + if (red ==max_val) hue=diff_blue-diff_green; + else if (green==max_val) hue=255/3+diff_red-diff_blue; + else if (blue ==max_val) hue=510/3+diff_green-diff_red; + + if (hue<0) hue+=255; + if (hue>255) hue-=255; + } + + //Log("hue: %d",hue); + //Log("sat: %d",sat); + //Log("lightness: %d",lightness); + + return (RGB(hue,sat,lightness)); +} + +// Prüft ob die angegebene Definition vorhanden ist +global func FindDefinition(id idDef) { + if(GetDefCoreVal("id","DefCore",idDef)) return 1; +} + +// Erzeugt amount viele Objekte des Typs id im angegebenen Zielrechteck (optional) im angegeben Material. Gibt die Anzahl der Iterationen zurück, oder -1 wenn die Erzeugung fehlschlägt +global func PlaceObjects(id id,int amount,string strmat,int x,int y,int wdt,int hgt,bool onsf,bool nostuck) { + var i,j; + var rndx,rndy,obj; + var mtype, mat; + var func, objhgt=GetDefCoreVal("Height","DefCore",id); + + mat=Material(strmat); + // some failsavety + if(mat==-1) + if(strmat != "GBackSolid" && strmat != "GBackSemiSolid" && strmat != "GBackLiquid" && strmat != "GBackSky") + return -1; + + // optional parameters wdt and hgt + if(!wdt) wdt=LandscapeWidth()-x-GetX(); + if(!hgt) hgt=LandscapeHeight()-y-GetY(); + + // cycle-saving method + if(mat!=-1) + while(i20000) return -1; + // destinated rectangle + rndx=x+Random(wdt); + rndy=y+Random(hgt); + // positioning + if(GetMaterial(rndx,rndy)==mat) { + // on-surface Option + if(onsf) while(GBackSemiSolid(rndx, rndy) && rndy>=y) rndy--; + if(rndy20000) return -1; + // destinated rectangle + rndx=x+Random(wdt); + rndy=y+Random(hgt); + // positioning + if(eval(Format("%s(%d,%d)",strmat,rndx,rndy))) { + // on-surface Option + if(onsf) while(GBackSemiSolid(rndx, rndy) && rndy>=y) rndy--; + if(rndyActivate(mat,wdt,lev); + return obj; +} + +// Erzeugt einen Vulkan +global func LaunchVolcano(int x, int y, int strength, string mat) { + var obj=CreateObject(FXV1,x-GetX(),y-GetY()); + if(!obj) return 0; + // old 'LaunchVolcano (int iX);' Function + if(!y) y=LandscapeHeight()-1; + if(!strength) strength=BoundBy(15*LandscapeHeight()/500+Random(10),10,60); + if(!mat) mat="Lava"; + + obj->Activate(x,y,strength,Material(mat)); + return 1; +} + +// Gleich wie CastObjects nur dass man hier Schleuderwinkel verändern kann +global func CastObjectsX(iddef,am,lev,x,y,angs,angw,callback) { + var ang, obj, xdir; + for(var i=0;iDoExplosion(x, y, iLevel, container, cause_plr, idEffect, szEffect, layer); +} + +global func DoExplosion(int x, int y, int level, object inobj, int cause_plr, id effect_def, string effect_particle, object layer) + { + // Container nach ContainBlast + var container = inobj; + while (container) if (GetDefContainBlast(GetID(container))) break; else container = Contained(container); + // Explosion draußen: Explosionseffekte erzeugen + if (!container) + { + // Öl anzünden + if (!IncinerateLandscape(x,y)) + if (!IncinerateLandscape(x,y-10)) + if (!IncinerateLandscape(x-5,y-5)) + IncinerateLandscape(x+5,y-5); + // Grafikeffekt + var blast; + if (effect_particle) + effect_def = 0; + else + effect_particle = "Blast"; + if (effect_def) + { + if(blast = CreateConstruction(effect_def, x,y+level, cause_plr, level*5)) + blast->~Activate(); + } + else + { + CreateParticle(effect_particle, x,y, 0,0, level*10); + if (effect_particle == "Blast") + if (!CastParticles("FSpark", level/5+1, level, x,y, level*5+10,level*10+10, 0x00ef0000,0xffff1010)) + if(blast = CreateConstruction(FXB1, x,y+level, cause_plr, level*5)) + blast->~Activate(); + } + } + // Schaden in den Objekten bzw. draußen + BlastObjects(x+GetX(),y+GetY(), level, inobj, cause_plr+1, layer); + if (inobj != container) BlastObjects(x+GetX(),y+GetY(), level, container, cause_plr+1, layer); + // Landschaft zerstören. Nach BlastObjects, damit neu freigesprengte Materialien nicht betroffen sind + if (!container) + { + BlastFree(x,y, level, cause_plr+1); + } + // Fertig! + return true; + } + +// Objekte beschädigen und wegschleudern +global func BlastObjects(int x, int y, int level, object container, int cause_plr_plus_one, object layer) + { + var obj; + + // Koordinaten sind immer global angegeben. In lokale Koordinaten umrechnen + var l_x = x - GetX(), l_y = y - GetY(); + + // Im Container? + if (container) + { + if (GetObjectLayer(container) == layer) + { + BlastObject(level, container, cause_plr_plus_one); + if (!container) return true; // Container koennte inzwischen entfernt worden sein + for (obj in FindObjects(Find_Container(container), Find_Layer(layer))) + if (obj) BlastObject(level, obj, cause_plr_plus_one); + } + } + else + { + // Objekt ist draußen + // Objekte am Explosionspunkt beschädigen + for (var obj in FindObjects(Find_AtRect(l_x-5, l_y-5, 10,10), Find_NoContainer(), Find_Layer(layer))) + if (obj) BlastObject(level, obj, cause_plr_plus_one); + // Objekte im Explosionsradius schleudern + var shockwave_objs = FindObjects(Find_Distance(level, l_x,l_y), Find_NoContainer(), Find_Layer(layer), + Find_Or(Find_Category(C4D_Object|C4D_Living|C4D_Vehicle), Find_Func("CanBeHitByShockwaves")), Find_Func("BlastObjectsShockwaveCheck",x,y)); + var cnt = GetLength(shockwave_objs); + if (cnt) + { + // Die Schleuderenergie teilt sich bei vielen Objekten auf + //Log("Shockwave objs %v (%d)", shockwave_objs, cnt); + var shock_speed = Sqrt(2 * level * level / BoundBy(cnt, 2, 12)); + for (var obj in shockwave_objs) if (obj) // obj noch prüfen, weil OnShockwaveHit Objekte aus dem Array löschen könnte + { + // Objekt hat benutzerdefinierte Reaktion auf die Schockwelle? + if (obj->~OnShockwaveHit(level, x,y)) continue; + // Lebewesen leiden besonders + var cat = GetCategory(obj); + if (cat & C4D_Living) + { + DoEnergy(level/-2, obj, false, FX_Call_EngBlast, cause_plr_plus_one); + DoDamage(level/2, obj, FX_Call_DmgBlast, cause_plr_plus_one); + } + // Killverfolgung bei Projektilen + if (cat & C4D_Object) SetController(cause_plr_plus_one-1, obj); + // Schockwelle + var mass_fact = 20, mass_mul = 100; if (cat & C4D_Living) { mass_fact = 8; mass_mul = 80; } + mass_fact = BoundBy(GetMass(obj)*mass_mul/1000, 4, mass_fact); + var dx = 100*(GetX(obj)-x)+Random(51)-25; + var dy = 100*(GetY(obj)-y)+Random(51)-25; + var vx, vy; + if (dx) + { + vx = Abs(dx)/dx * (100*level-Abs(dx)) * shock_speed / level / mass_fact; + } + vy = (Abs(dy) - 100*level) * shock_speed / level / mass_fact; + if (cat & C4D_Object) + { + // Objekte nicht zu schnell werden lassen + var ovx = GetXDir(obj, 100), ovy = GetYDir(obj, 100); + if (ovx*vx > 0) vx = (Sqrt(vx*vx + ovx*ovx) - Abs(vx)) * Abs(vx)/vx; + if (ovy*vy > 0) vy = (Sqrt(vy*vy + ovy*ovy) - Abs(vy)) * Abs(vy)/vy; + } + //Log("%v v(%v %v) d(%v %v) m=%v l=%v s=%v", obj, vx,vy, dx,dy, mass_fact, level, shock_speed); + Fling(obj, vx,vy, 100, true); + } + } + } + // Fertig + return true; + } + +global func BlastObjectsShockwaveCheck(int x, int y) + { + var def; + // Einige Spezialfälle, die schwer in FindObjects passen + if (GetDefHorizontalFix(def = GetID())) return false; + if (GetDefGrab(def) != 1) + { + if (GetCategory() & C4D_Vehicle) return false; + if (GetProcedure() == "FLOAT") return false; + } + // Projektile nicht wenn sie nach unten fliegen oder exakt am Explosionsort liegen + // Dies fängt die meisten Fälle ab, in denen mehrere Clonks gleichzeitig Flints werfen + if (GetCategory() & C4D_Object) + { + if (GetX() == x && GetY() == y) return false; + if (GetYDir() > 5) return false; + } + // Und keine feststeckenden Objekte + if (Stuck()) return false; + return true; + } + +global func ShakeViewPort(int iLevel, object pObj, int iOffX, int iOffY) { + if(iLevel <= 0) return false; + var eff=GetEffect("ShakeEffect",pObj); + if(eff) { + EffectVar(0,pObj,eff)+=iLevel; + return true; + } + eff=AddEffect("ShakeEffect",pObj,200,1); + if (!eff) return false; + EffectVar(0,pObj,eff)=iLevel; + if(iOffX || iOffY) { + EffectVar(1,pObj,eff)=iOffX; + EffectVar(2,pObj,eff)=iOffY; + } else { + EffectVar(1,pObj,eff)=GetX(pObj); + EffectVar(2,pObj,eff)=GetY(pObj); + } + return (true); +} + +// Dauer des Effektes: sobald iStrength==0 +// Stärke des Effektes: iStrength=iLevel/(1.5*iTime+3)-iTime^2/400 +global func FxShakeEffectTimer(object pTarget, int iEffectNumber, int iTime) { + var iPlr, iLevel; + var iStrength; + for(var i=0; iDestruction does funny things + next = FindObject(idDef, 0,0,0,0, dwOCF, 0,0,0, obj); + if(RemoveObject(obj)) + ++Cnt; + obj = next; + } + return Cnt; + } + +global func CastlePanic() + { + return ResortObjects("CastlePanicResort", 1); + } + +global func CastlePanicResort(object pObj1, object pObj2) + { + return GetDefBottom(pObj1)-GetDefBottom(pObj2); + } + +global func SetBit(int iOldVal, int iBitNr, bool iBit) + { + if(GetBit(iOldVal, iBitNr) != (iBit != 0)) + return ToggleBit(iOldVal, iBitNr); + return iOldVal; + } + +global func GetBit(int iValue, int iBitNr) + { + return (iValue & (1 << iBitNr)) != 0; + } + +global func ToggleBit(int iOldVal, int iBitNr) + { + return iOldVal ^ (1 << iBitNr); + } + +global func RGB(int r, int g, int b) { return (r & 255)<<16 | (g & 255)<<8 | (b & 255); } +global func RGBa (int r, int g, int b, int a) { return (a & 255)<<24 | (r & 255)<<16 | (g & 255)<<8 | (b & 255); } + +global func DrawParticleLine (szKind, x0, y0, x1, y1, prtdist, a, b0, b1, ydir) + { + // Parameter gültig? + if (!prtdist) return 0; + // Anzahl der benötigten Partikel berechnen + var prtnum = Max(Distance(x0, y0, x1, y1) / prtdist, 2); + var i=prtnum; + // Partikel erzeugen! + while (i>-1) + { + var i1,i2,b; i2 = i*256/prtnum; i1 = 256-i2; + + b = ((b0&16711935)*i1 + (b1&16711935)*i2)>>8 & 16711935 + | ((b0>>8&16711935)*i1 + (b1>>8&16711935)*i2) & -16711936; + if (!b && (b0 | b1)) ++b; + CreateParticle(szKind, x0+(x1-x0)*i/prtnum, y0+(y1-y0)*i--/prtnum, 0,ydir, a, b); + } + // Erfolg; Anzahl erzeugter Partikel zurückgeben + return (prtnum); + } + +//Such nach einem Objekt, dass ein Acquire-Command holen könnte +global func GetAvailableObject (def, xobj) +{ + var crit = Find_And(Find_OCF(OCF_Available), + Find_InRect(-500,-250,1000,500), + Find_ID(def), + Find_OCF(OCF_Fullcon), + Find_Not(Find_OCF(OCF_OnFire)), + Find_Func("GetAvailableObjectCheck", GetOwner()), + Find_Not(Find_Container(xobj))); + if (!xobj) SetLength(crit, GetLength(crit) - 1); + return FindObject2(crit, Sort_Distance()); +} +global func GetAvailableObjectCheck(int plr) +{ + // Object is not connected to a pipe (for line construction kits) + if (FindObject2 (Find_ActionTarget(this), Find_Or(Find_ID(SPIP), Find_ID(DPIP)), Find_Action("Connect"))) return false; + // Not chosen by another friendly clonk + if (GetEffect("IntNotAvailable",this) && !Hostile(plr,GetOwner(EffectVar(0,this,GetEffect("IntNotAvailable",this))))) return false; + return true; +} + +// Einen Script zeitverzögert und ggf. wiederholt ausführen +global func Schedule(string strScript, int iInterval, int iRepeat, object pObj) +{ + + // Default + if(!iRepeat) iRepeat = 1; + if(!pObj) pObj = this; + // Effekt erzeugen + var iEffect = AddEffect("IntSchedule", pObj, 1, iInterval, pObj); + if(iEffect <= 0) return false; + // Variablen setzen + EffectVar(0, pObj, iEffect) = strScript; + EffectVar(1, pObj, iEffect) = iRepeat; + return true; +} + +global func FxIntScheduleTimer(object pObj, int iEffect) +{ + // Nur eine bestimmte Anzahl Ausführungen + var fDone = (--EffectVar(1, pObj, iEffect) <= 0); + // Ausführen + eval(EffectVar(0, pObj, iEffect)); + return -fDone; +} + +// Eine Funktion zeitverzögert und ggf. wiederholt aufrufen +global func ScheduleCall(object pObj, string strFunction, int iInterval, int iRepeat, par0, par1, par2, par3, par4) +{ + // Default + if(!iRepeat) iRepeat = 1; + if(!pObj) pObj = this; + // Effekt erzeugen + var iEffect = AddEffect("IntScheduleCall", pObj, 1, iInterval, pObj); + if(iEffect <= 0) return false; + // Variablen setzen + EffectVar(0, pObj, iEffect) = strFunction; + EffectVar(1, pObj, iEffect) = iRepeat; + // EffectVar(2): Nur zur Abwärtskompatibilität reserviert + EffectVar(2, pObj, iEffect) = pObj; + for(var i = 0; i < 5; i++) + EffectVar(i + 3, pObj, iEffect) = Par(i + 4); + return true; +} + +global func FxIntScheduleCallTimer(object pObj, int iEffect) +{ + // Nur eine bestimmte Anzahl Ausführungen + var fDone = (--EffectVar(1, pObj, iEffect) <= 0); + // Ausführen + Call(EffectVar(0, pObj, iEffect), EffectVar(3, pObj, iEffect), EffectVar(4, pObj, iEffect), EffectVar(5, pObj, iEffect), EffectVar(6, pObj, iEffect), EffectVar(7, pObj, iEffect)); + // Nur eine bestimmte Anzahl Ausführungen + return (-fDone); +} + +global func ClearScheduleCall(object pObj, string strFunction) +{ + var i, iEffect; + // Von Effektzahl abwärts zählen, da Effekte entfernt werden + i = GetEffectCount("IntScheduleCall", pObj); + while (i--) + // Alle ScheduleCall-Effekte prüfen + if (iEffect = GetEffect("IntScheduleCall", pObj, i)) + // Gesuchte Zielfunktion + if (EffectVar(0, pObj, iEffect) == strFunction) + // Effekt löschen + RemoveEffect(0, pObj, iEffect); +} diff --git a/planet/System.c4g/Info.txt b/planet/System.c4g/Info.txt new file mode 100644 index 000000000..86e39d97d --- /dev/null +++ b/planet/System.c4g/Info.txt @@ -0,0 +1 @@ +Dieser Ordner enthält Hilfsfunktionen aller Art. \ No newline at end of file diff --git a/planet/System.c4g/JumpAndRun.c b/planet/System.c4g/JumpAndRun.c new file mode 100644 index 000000000..809a31935 --- /dev/null +++ b/planet/System.c4g/JumpAndRun.c @@ -0,0 +1,120 @@ +/*-- Hilfsfunktionen für JumpAndRun-Steuerung --*/ + +#strict 2 + +/* ComDir */ + +global func ComDirTransform(int comdir, int tocomdir) +{ + if (comdir == tocomdir) return (comdir); + if (comdir == COMD_Stop) return (tocomdir); + if (comdir == (tocomdir + 3) % 8 + 1) return (COMD_Stop); + if (Inside(comdir, tocomdir + 1, tocomdir + 3)) return (comdir - 1); + if (Inside(comdir, tocomdir - 1, tocomdir - 3)) return (comdir + 1); + if (Inside(comdir, tocomdir - 7, tocomdir - 5)) return ((comdir + 6) % 8 + 1); + return (comdir % 8 + 1); +} + +global func ComDirLike(int comdir1, int comdir2) +{ + if (comdir1 == comdir2) return (true); + if (comdir1 == COMD_Stop || comdir2 == COMD_Stop) return false; + if (comdir1 % 8 + 1 == comdir2) return (true); + if (comdir1 == comdir2 % 8 + 1) return (true); + return (false); +} + +/* Zielen von Armbrust/Katapult/Bogen/Winchester/etc. */ + +global func AimStdConf(int conf) +{ + var old_phase = GetPhase(); + SetPhase(BoundBy(GetPhase()+conf, 0, GetActMapVal("Length", GetAction(), GetID())-1)); + return GetPhase() != old_phase; +} + +global func AimConf(string conffunc, int conf, object controller, id def) +{ + if(conffunc) + { + if(this) + return ProtectedCall(this, conffunc, conf, controller); + else if(def) + return DefinitionCall(def, conffunc, conf, controller); + else + // Global call via eval? + ; + } + + // Standard über SetPhase + return AimStdConf(); +} + +global func AimUpdate(object controller, int comdir, int interval, string conffunc, id def) +{ + // Globaler Effekt, wenn this 0 ist (DefinitionCall). + if(GetPlrCoreJumpAndRunControl(controller->GetController())) + { + AimCancel(controller); + + if(ComDirLike(comdir, COMD_Up)) + AddEffect("IntJnRAim", this, 1, interval, 0, 0, conffunc, -1, controller, def); + if(ComDirLike(comdir, COMD_Down)) + AddEffect("IntJnRAim", this, 1, interval, 0, 0, conffunc, 1, controller, def); + } +} + +global func AimUp(object controller, int interval, string conffunc, id def) +{ + if(!GetPlrCoreJumpAndRunControl(controller->GetController())) + return AimConf(conffunc, -1, controller, def); +} + +global func AimDown(object controller, int interval, string conffunc, id def) +{ + if(!GetPlrCoreJumpAndRunControl(controller->GetController())) + return AimConf(conffunc, 1, controller, def); +} + +global func AimCancel(object controller) +{ + var count = GetEffectCount("IntJnRAim", this); + while(count --) + { + var number = GetEffect("IntJnRAim", this); + if(EffectVar(2, this, number) != controller) continue; + RemoveEffect(0, this, number); + } +} + +global func FxIntJnRAimStart(object target, int number, int temp, string conffunc, int conf, object controller, id def) +{ + if(temp) return; + EffectVar(0, target, number) = conffunc; + EffectVar(1, target, number) = conf; + EffectVar(2, target, number) = controller; + EffectVar(3, target, number) = def; +// EffectVar(4, target, number) = (controller != 0); // Speichert, ob ueberhaupt ein Controller gegeben war +} + +global func FxIntJnRAimTimer(object target, int number, int time) +{ + // Controller weg? + var controller = EffectVar(2, target, number); + if(!controller) return -1; + + // Controller muss Fahrzeug anfassen + if(target) + // target und controller das selbe Objekt? Kann ja garnicht anfassen. + if(target->GetCategory() & C4D_Vehicle && target != controller) + if(controller->GetProcedure() != "PUSH" || controller->GetActionTarget() != target) + return -1; + + if(target) + target->AimConf(EffectVar(0, target, number), EffectVar(1, target, number), EffectVar(2, target, number)); + else if(EffectVar(3, target, number)) + AimConf(EffectVar(0, target, number), EffectVar(1, target, number), EffectVar(2, target, number), EffectVar(3, target, number)); + else + // Global call via eval()? + ; +} diff --git a/planet/System.c4g/LanguageDE.txt b/planet/System.c4g/LanguageDE.txt new file mode 100644 index 000000000..f267dc7a8 --- /dev/null +++ b/planet/System.c4g/LanguageDE.txt @@ -0,0 +1,1334 @@ +IDS_LANG_NAME=Deutsch +IDS_LANG_INFO=Original-Sprachpaket von RedWolf Design. +IDS_LANG_FALLBACK= +IDS_LANG_CHARSET=UTF-8 +IDS_BTN_ACCEPT=Annehmen +IDS_BTN_ACTIVATE=Aktivieren +IDS_BTN_BACK=Zurück +IDS_BTN_BROWSE=Durchsuchen... +IDS_BTN_CANCEL=Abbrechen +IDS_BTN_CHAT=&Chat +IDS_BTN_CHECKFORUPDATES=&Updates suchen +IDS_BTN_CONNECT=Verbinden +IDS_BTN_CONTINUEGAME=Diese Runde &weiterspielen +IDS_BTN_NEXTSCENARIO=&Nächstes Szenario +IDS_DESC_NEXTSCENARIO=Nächstes Szenario starten. +IDS_BTN_DEACTIVATE=Deaktivieren +IDS_BTN_DELETE=Löschen +IDS_BTN_DL=Herunterladen +IDS_BTN_DUPLICATE=Duplizieren +IDS_BTN_ENDROUND=Runde &beenden +IDS_BTN_EXPLODE=Zerlegen +IDS_BTN_EXTENDED=Erweitert -> +IDS_BTN_GAMES=&Spiele +IDS_BTN_JOIN=Beitreten +IDS_BTN_LOCALGAME=&Spiel starten +IDS_BTN_MESSAGE=Nachricht +IDS_BTN_NETWORKGAME=&Netzwerkspiel +IDS_BTN_NEW=Neu +IDS_BTN_NEXTMISSION=&Nächste Mission +IDS_BTN_NO=Nein +IDS_BTN_OBJECTS=Objekte +IDS_BTN_OK=OK +IDS_BTN_OPEN=Öffnen +IDS_BTN_PACK=Packen +IDS_BTN_PRESETS=Vorgaben +IDS_BTN_PROPERTIES=Eigenschaften +IDS_BTN_REGISTERNOW=Jetzt ®istrieren! +IDS_BTN_RELOAD=&Aktualisieren +IDS_BTN_RENAME=Umbenennen +IDS_BTN_RESETCONFIG=Konfiguration zurücksetzen +IDS_BTN_RESETKEYBOARD=Alle zurücksetzen +IDS_BTN_RETRY=Wiederholen +IDS_BTN_SIMPLE=<- Einfach +IDS_BTN_START=Starten +IDS_BTN_STARTGAME=&Start +IDS_BTN_UNPACK=Entpacken +IDS_BTN_USEACTIVATED=Aktuelle Auswahl als Vorgabe +IDS_BTN_VOLUME=Lautstärkeregelung +IDS_BTN_YES=Ja +IDS_CHAT_NOTCONNECTED=nicht verbunden +IDS_CHAT_SERVER=Server +IDS_CNS_ACTION=Aktivität: +IDS_CNS_CONSOLE=Konsole +IDS_CNS_CONTENTS=Inhalt: +IDS_CNS_DROPNODEF=Ungültiges oder nicht geladenes Objekt: %s +IDS_CNS_EFFECTS=Effekte: +IDS_CNS_EXACTTOSTATIC=Beim Wechsel von einer exakten zur statischen Landschaft gehen\nsämtliche in der exakten Karte gemachten Änderungen verloren. +IDS_CNS_FILLNOHALT=Das Füllwerkzeug kann nicht im Haltemodus eingesetzt werden. +IDS_CNS_GAMECLOSED=Spiel deinitialisiert. +IDS_CNS_GAMESAVED=Spiel gespeichert. +IDS_CNS_INFO=Info +IDS_CNS_LOCALS=Lokale Variablen: +IDS_CNS_MULTIPLEOBJECTS=%i Objekte ausgewählt. +IDS_CNS_NAMES=Namen +IDS_CNS_NEWPLRVIEWPORT=Neu für %s +IDS_CNS_NOCHILDSAVE=%s befindet sich in einem Rundenordner.\nSzenarien können nicht in geschlossenen Gruppendateien gespeichert werden. +IDS_CNS_NOFULLSCREENPLRS=Im Vollbildmodus kann nur gestartet werden, wenn Spieler am Spiel teilnehmen. +IDS_CNS_NOGAMEOVERSCEN=Ein Spiel sollte nicht über die Datei des ursprünglichen Szenarios gespeichert werden. +IDS_CNS_NOMATDEF=Zeichnen nicht möglich, da die angegebene\nMaterial-Textur-Kombination '%s-%s'\nnicht in der geladenen Texturtabelle definiert ist. +IDS_CNS_NONETEDIT=Bei Wiedergabe einer Aufnahme kann nicht editiert werden. +IDS_CNS_NOOBJECT=Kein Objekt ausgewählt. +IDS_CNS_NOTHING=Nichts +IDS_CNS_OWNER=Besitzer: %s +IDS_CNS_PLRQUIT=%s löschen +IDS_CNS_PLRQUITNET=%s (%s) löschen +IDS_CNS_PROPERTIES=Eigenschaften +IDS_CNS_REGONLY=Der Konsolenmodus kann nur in der registrierten Version gestartet werden. +IDS_CNS_SAVEASERROR=Fehler beim Speichern des Szenarios nach %s. +IDS_CNS_SAVERROR=Fehler beim Speichern des Szenarios. +IDS_CNS_SCENARIOSAVED=Szenario gespeichert. +IDS_CNS_SCRIPT=Script +IDS_CNS_SCRIPTCREATEDOBJECTS=Das Script dieses Szenarios hat beim Start der Runde Objekte erschaffen. +IDS_CNS_TITLE=Titel +IDS_CNS_TOOLS=Werkzeuge +IDS_CNS_TYPE=Typ: %s (%s) +IDS_CNS_VIEWPORT=Sichtfenster +IDS_CNS_WARNDOUBLE=Um Verdoppelungen der abgespeicherten Objekte beim nächsten Start zu vermeiden, sollte die Initialize-Funktion des Scripts entsprechend angepasst werden. +IDS_COMM_ACQUIRE=Beschaffung +IDS_COMM_ACTIVATE=Aktivieren +IDS_COMM_ATTACK=Angreifen +IDS_COMM_BUILD=Bauen +IDS_COMM_BUY=Kaufen +IDS_COMM_CALL=Objektaufruf +IDS_COMM_CHOP=Fällen +IDS_COMM_CONSTRUCT=Konstruktion +IDS_COMM_CONTEXT=Kontext +IDS_COMM_DIG=Graben +IDS_COMM_DROP=Ablegen +IDS_COMM_ENERGY=Energieversorgung +IDS_COMM_ENTER=Betreten +IDS_COMM_EXIT=Verlassen +IDS_COMM_FOLLOW=Folgen +IDS_COMM_GET=Holen +IDS_COMM_GRAB=Anfassen +IDS_COMM_JUMP=Springen +IDS_COMM_MOVETO=Bewegung +IDS_COMM_NONE=Kein Befehl +IDS_COMM_PUSHTO=Schieben +IDS_COMM_PUT=Ablegen +IDS_COMM_RETRY=Erneuter Versuch +IDS_COMM_SELL=Verkaufen +IDS_COMM_TAKE2=Herausnehmen +IDS_COMM_TAKE=Nehmen +IDS_COMM_THROW=Werfen +IDS_COMM_TRANSFER=Bewegung +IDS_COMM_UNGRAB=Loslassen +IDS_COMM_WAIT=Warten +IDS_CON_ACTIVATEFROM=Objekt in %s aktivieren +IDS_CON_ATTACK=%s angreifen. +IDS_CON_BUILD=%s bauen. +IDS_CON_BUILDINFO=Baumaterial +IDS_CON_BUILDMATNEED=%s|braucht noch +IDS_CON_BUILDMATNONE=%s braucht kein|weiteres Baumaterial. +IDS_CON_BUY=Kaufen +IDS_CON_CHOP=%s fällen. +IDS_CON_COLLECT=%s einsammeln. +IDS_CON_CONTENTS=Inhalt +IDS_CON_DIGOUT=%s ausgraben. +IDS_CON_DOUBLECLICK=(Doppelklick) +IDS_CON_ENTER=%s betreten. +IDS_CON_EXIT=Gebäude verlassen +IDS_CON_FAILURE=%s|nicht möglich! +IDS_CON_FAILUREOF=%s von %s|nicht möglich! +IDS_CON_GET=Objekt aus %s herausnehmen. +IDS_CON_GRAB=%s anfassen. +IDS_CON_HELP=Hilfe +IDS_CON_HOME=Zurück zur Basis +IDS_CON_INFO=Info +IDS_CON_ITEMS=Gegenstände +IDS_CON_JUMP=Springen. +IDS_CON_NAME=%s +IDS_CON_PLAYERMENU=Spielermenü +IDS_CON_PUT2=Ablegen +IDS_CON_PUT=%s in %s ablegen +IDS_CON_SELECT=%s auswählen. +IDS_CON_SELL=Verkaufen +IDS_CON_UNGRAB=%s loslassen. +IDS_CON_VEHICLEPUT=%s in %s schieben +IDS_CON_VEHICLES=Fahrzeuge +IDS_CTL_ACCESS=Zugang: +IDS_CTL_ACTIVE=Aktivieren +IDS_CTL_ALL=Alle +IDS_CTL_AMPLITUDE=Amplitude: +IDS_CTL_ANIMALS=Tiere +IDS_CTL_AUTHOR=Autor: %s +IDS_CTL_AUTOEDITSCAN=Bearbeitete Objekte im Hintergrund aktualisieren +IDS_CTL_AUTOMATICUPDATES=automatische Updates aktivieren +IDS_CTL_BITDEPTH=Farbtiefe +IDS_CTL_BITMAP=Grafik (BMP) +IDS_CTL_BITMAP_PNG=Grafik (PNG) +IDS_CTL_BUILDINGS=Gebäude: +IDS_CTL_CHANNEL=Chat-Raum (Kanal): +IDS_CTL_CHAT=Cha&t: +IDS_CTL_CLIMATE2=heiß +IDS_CTL_CLIMATE3=kalt +IDS_CTL_CLIMATE=Klima +IDS_CTL_COLOR=Farbe +IDS_CTL_COMMENT=Kommentar +IDS_CTL_CONTROL=Steuerung +IDS_CTL_CONTROLRATE=Kontrollrate +IDS_CTL_CONTROLRATE_DESC=Gibt in Frames an, wie oft Kontrolldaten im Netzwerk ausgetauscht werden +IDS_CTL_CREATEDMAP=Generierte Karte +IDS_CTL_CREW=Mannschaft: +IDS_CTL_CUID=User-Id: +IDS_CTL_DEBUGMODE=Debug-Modus +IDS_CTL_DEFBYCHOICE=lokale und aktivierte Objektdefinitionen +IDS_CTL_DESCRIPTION=Beschreibung +IDS_CTL_DETAILS=Details +IDS_CTL_DIG=Graben +IDS_CTL_DL_PROGRESS=Fortschritt: +IDS_CTL_DL_TITLE=Download +IDS_CTL_DOWNSTOP=Runter / Stop +IDS_CTL_DYNAMICMAP=Dynamische Karte +IDS_CTL_EARTHQUAKES2=keine +IDS_CTL_EARTHQUAKES3=viele +IDS_CTL_EARTHQUAKES=Erdbeben +IDS_CTL_ENABLEROUNDOPTIONS=Szenarioeigenschaften zulassen +IDS_CTL_ENGINE=Engine +IDS_CTL_ENTERCOMMENT=Bitte gewünschten Kommentar eingeben: +IDS_CTL_ENVIRONMENTOBJECTS=Umweltobjekte +IDS_CTL_EXACTMAP=Exakte Karte +IDS_CTL_FAIRCREWSTRENGTH=Stärke bei "Fairen Clonks" +IDS_CTL_FAIRCREWSTRONG=stark +IDS_CTL_FAIRCREWWEAK=schwach +IDS_CTL_FAIRCREW_DESC=Faire Clonks: alle Clonks sind gleich stark. +IDS_CTL_FONT=Schriftart +IDS_CTL_FRONTEND=Menüsystem +IDS_CTL_FULLNAME=Spielername: +IDS_CTL_GAME=Spiel +IDS_CTL_GAMEFUNCTIONS=Spielfunktionen +IDS_CTL_GAMEPADFORMENU=Gamepad zur Menüsteuerung verwenden. +IDS_CTL_GAMESPEEDUP=Spielgeschwindigkeit erhöhen +IDS_CTL_GAMESPEEDDOWN=Spielgeschwindigkeit verringern +IDS_CTL_GFXENGINE=Grafiktreiber +IDS_CTL_GOALS=Ziele: +IDS_CTL_GRAVITY2=schwach +IDS_CTL_GRAVITY3=stark +IDS_CTL_GRAVITY=Schwerkraft +IDS_CTL_HEIGHT=Höhe: +IDS_CTL_HOMEBASE=Kaufbare Objekte: +IDS_CTL_ICON=Icon: +IDS_CTL_IMPORTIMAGEAS=Bild importieren als: +IDS_CTL_INEARTHAMOUNTS=Objekte im Erdreich Menge +IDS_CTL_INEARTHTYPES=Objekte im Erdreich Anteile +IDS_CTL_INETSERVER=&Internet +IDS_CTL_IRCCHAT=IRC-Chat +IDS_CTL_KEYFILE=Registrierungsschlüssel: +IDS_CTL_KNOWLEDGE=Baupläne: +IDS_CTL_LANGUAGE=Sprache +IDS_CTL_LEAGUE_ACCOUNT=Liga-Benutzername: +IDS_CTL_LEAGUE_CHK_PLRPW=Liga-Passwort eingeben +IDS_CTL_LEAGUE_PLRPW2=Liga-Passwort (Wiederholung): +IDS_CTL_LEAGUE_PLRPW=Liga-Passwort: +IDS_CTL_LEFT=Links +IDS_CTL_LOCALMATS= mit lokalen Materialdefinitionen +IDS_CTL_LOCALONLY=nur lokale Objektdefinitionen +IDS_CTL_LOCATION=in %s +IDS_CTL_LOST=verloren +IDS_CTL_LOUD=laut +IDS_CTL_MAGIC2=Zauber: +IDS_CTL_MANUALCLIP=Manuelles Clipping +IDS_CTL_MAPPLAYEREXTEND=Breite nach Spielerzahl +IDS_CTL_MATERIAL=Material +IDS_CTL_MAXPLAYERS=Max. Spieler: +IDS_CTL_MENUSYSTEM=Menüsystem +IDS_CTL_MESSAGEBOARDBACK=Nachrichten zurück +IDS_CTL_MESSAGEBOARDFORWARD=Nachrichten vor +IDS_CTL_METEORITES2=keine +IDS_CTL_METEORITES3=viele +IDS_CTL_METEORITES=Meteoriten +IDS_CTL_MMTIMER=Multimedia-Timer abschalten +IDS_CTL_MUSIC=Musik +IDS_CTL_NAME2=Name: +IDS_CTL_NAME=Name +IDS_CTL_NESTS=Nester +IDS_CTL_NICK=Kurzname: +IDS_CTL_NOADDBLT=Kein additives Zeichnen +IDS_CTL_NOALPHAADD=Keine Alpha-Addition +IDS_CTL_NOCLRFADE=Keine Farbverläufe +IDS_CTL_NOGOAL=Kein Spielziel +IDS_CTL_NOLANGINFO=Sprachpaket nicht verfügbar. +IDS_CTL_NONE=keine +IDS_CTL_NORMALCREW_DESC=Trainierte Clonks: Clonks sind je nach Rang unterschiedlich stark. +IDS_CTL_OFF=aus +IDS_CTL_ON=an +IDS_CTL_OPENBOTTOM=Unten offen +IDS_CTL_OPENDIRECTORY=Offenes Verzeichnis +IDS_CTL_OPENTOP=Oben offen +IDS_CTL_PASSWORDOPTIONAL=Passwort (optional): +IDS_CTL_PERIOD=Periode: +IDS_CTL_PHASE=Phase: +IDS_CTL_PICTURE=Bild: +IDS_CTL_PLAYER1=Spieler 1 +IDS_CTL_PLAYER2=Spieler 2 +IDS_CTL_PLAYER3=Spieler 3 +IDS_CTL_PLAYER4=Spieler 4 +IDS_CTL_PLAYER=Spieler +IDS_CTL_PLAYERMENU=Spielermenü +IDS_CTL_PLAYERS1=1 Spieler +IDS_CTL_PLAYERS2=2 Spieler +IDS_CTL_PLAYERS3=3 Spieler +IDS_CTL_PLAYERS4=4 Spieler +IDS_CTL_PLEASEWAIT=Bitte warten... +IDS_CTL_POINTFILTERING=Nicht interpolieren +IDS_CTL_PREVIEWFOR=Vorschau für +IDS_CTL_PRODUCTION=Nachlieferung kaufbarer Objekte: +IDS_CTL_RAIN2=kein +IDS_CTL_RAIN3=viel +IDS_CTL_RAIN=Niederschlag +IDS_CTL_RANDOM=Zufall: +IDS_CTL_REALNAME=Realname: +IDS_CTL_RECORD=Au&fnehmen +IDS_CTL_REGISTERED=Vielen Dank für Ihre Registrierung! +IDS_CTL_REGISTEREDONLY=Nur in der registrierten Version möglich. +IDS_CTL_RESOLUTION=Auflösung +IDS_CTL_RICHTEXT=Beschreibungstext +IDS_CTL_RIGHT=Rechts +IDS_CTL_RULES=Regeln: +IDS_CTL_SCENARIOUSES=Szenario benutzt +IDS_CTL_SCOREBOARD=Scoreboard (wenn verfügbar) +IDS_CTL_SCREENSHOT=Screenshot +IDS_CTL_SCREENSHOTEX=Screenshot Gesamtspielfläche +IDS_CTL_SCRIPT=Script +IDS_CTL_SCRIPTPLAYERS=Script-Spieler +IDS_CTL_SEASON2=Frühling +IDS_CTL_SEASON3=Winter +IDS_CTL_SEASON=Jahreszeit zu Spielbeginn +IDS_CTL_SELECTLEFT=Auswahl links +IDS_CTL_SELECTRIGHT=Auswahl rechts +IDS_CTL_SELECTTOGGLE=Auswahl +IDS_CTL_SENDDEFRELOAD=Objektdefinitionsupdates bei laufender Engine +IDS_CTL_SENDMESSAGE=Nachricht senden +IDS_CTL_SHOW=Anzeigen +IDS_CTL_SHOWALLRESOLUTIONS=alle Auflösungen anzeigen +IDS_CTL_SHOWLAYERS=Erdreich +IDS_CTL_SHOWSCREEN=Bildschirmgröße +IDS_CTL_SILENT=leise +IDS_CTL_SKIPDEFS=Nicht zu ladende Definitionen: +IDS_CTL_SMOKE=Effekte +IDS_CTL_SMOKEHI=hoch +IDS_CTL_SMOKELOW=niedrig +IDS_CTL_SOUND=Sound +IDS_CTL_SOUNDFX=Soundeffekte +IDS_CTL_SPECIAL1=Spezial 1 +IDS_CTL_SPECIAL2=Spezial 2 +IDS_CTL_SPECIFIEDDEFS=lokale und vorgegebene Objektdefinitionen: +IDS_CTL_STATICMAP=Statische Karte +IDS_CTL_SYMBOLS=Symbole +IDS_CTL_TEXT=Text +IDS_CTL_TEXTURE=Textur +IDS_CTL_THROW=Werfen +IDS_CTL_THUNDERSTORMS2=keine +IDS_CTL_THUNDERSTORMS3=viele +IDS_CTL_THUNDERSTORMS=Gewitter +IDS_CTL_TIMEADVANCE2=langsam +IDS_CTL_TIMEADVANCE3=schnell +IDS_CTL_TIMEADVANCE=Zeitverlauf +IDS_CTL_TOTALPLAYINGTIME=Gesamtspielzeit: %02d:%02d:%02d +IDS_CTL_TROUBLE=Problembehebung +IDS_CTL_UNREGISTERED=NICHT REGISTRIERT +IDS_CTL_UPDATE=&Update +IDS_CTL_UPJUMP=Rauf / Springen +IDS_CTL_USEOTHERSERVER=anderen Internetserver verwenden +IDS_CTL_USESHELL=Windows-Shell zum Bearbeiten benutzen +IDS_CTL_VALUE=Wert +IDS_CTL_VALUESFOR=Werte für +IDS_CTL_VEGETATIONAMOUNTS=Vegetation Menge +IDS_CTL_VEGETATIONTYPES=Vegetation Anteile +IDS_CTL_VEHICLES=Fahrzeuge: +IDS_CTL_VERBOSEOBJECTS=Ãœberladene Objekte melden +IDS_CTL_VIEW=Ansicht: +IDS_CTL_VOLCANOES2=keine +IDS_CTL_VOLCANOES3=viele +IDS_CTL_VOLCANOES=Vulkane +IDS_CTL_VOLUME=Lautstärke +IDS_CTL_WATERLEVEL=Wasserstand: +IDS_CTL_WEALTH=Vermögen: +IDS_CTL_WEBCODE=WebCode: +IDS_CTL_WIDTH=Breite: +IDS_CTL_WIND2=links +IDS_CTL_WIND3=rechts +IDS_CTL_WIND=Wind +IDS_CTL_WON=gewonnen +IDS_CTL_ZIP=Zip +IDS_CTL_ZOOM=Vergrößerungsfaktor: +IDS_DESC_AUTOMATICUPDATES=Prüft beim Programmstart einmal pro Tag, ob Updates für die installierte Version verfügbar sind. +IDS_DESC_BREATH=Atem: +IDS_DESC_CHANGESTHEIMAGEYOUSEEINTH2=Bild, welches in der Netzwerk-Lobby und im Auswertungsdialog angezeigt wird. +IDS_DESC_CHANGESTHEIMAGEYOUSEEINTH=Bild, welches im Spielerauswahldialog angezeigt wird. +IDS_DESC_CHANGESTHEWAYCONTROLDATAI=Legt fest, wie Steuerungsdaten in Netzwerkspielen zwischen Client-Rechnern ausgetauscht werden. +IDS_DESC_CHECKONLINEFORNEWVERSIONS=Sucht online nach Updates für diese Version. +IDS_DESC_CLIENTS=Clients: +IDS_DESC_COMMENTDESCRIPTIONFORTHIS=Kommentar: Beschreibungstext für diese Runde, der für andere Spieler angezeigt wird. +IDS_DESC_CONNECTSTOANIRCCHATSERVER=Verbindet mit einem IRC-Chat-Server. +IDS_DESC_CONTINUETHEROUNDWITHNOFUR=Die Runde fortsetzen (ohne weitere Auswertung). +IDS_DESC_CONTROLWAITTIME=Lag +IDS_DESC_CREWRENAME=Ausgewählten Clonk umbenennen. +IDS_DESC_DATE=Spiel vom %i.%i.%i %02d:%02d Uhr. +IDS_DESC_DATENET=Netzwerkspiel vom %i.%i.%i %02d:%02d Uhr. +IDS_DESC_DATEREC=Aufnahme vom %i.%i.%i %02d:%02d Uhr. +IDS_DESC_DEFSPECS=Objektdefinitionen: +IDS_DESC_DIG=Graben: +IDS_DESC_DURATION=Spieldauer: %02d:%02d:%02d. +IDS_DESC_ENDTHEROUND=Die Runde beenden. +IDS_DESC_ENERGY=Energie: +IDS_DESC_ENGINE=Dieses Zusatzprogramm ist für die Ausführung von Spielrunden verantwortlich.\n\nBei Auswahl eines Szenarios zeigt die rote Markierung an, welche Engine für die Ausführung des jeweiligen Szenarios verwendet wird.\n\nDurch Aktivierung oder Deaktivierung einer Engine (Kästchen wird grün) kann bestimmt werden, welche Engine eingesetzt werden soll, falls mehrere gleichermaßen geeignete Engines vorhanden sind. +IDS_DESC_EXPECTING=Teilnehmer werden erwartet. +IDS_DESC_FAIRCREWSTRENGTH=Bestimmt die Stärke der Clonks in einem Spiel mit "Fairen Clonks". +IDS_DESC_FIGHT=Kämpfen: +IDS_DESC_FONTSIZE=Schriftgröße auswählen. Bei Wechsel der Bildschirmauflösung wird die Schriftgröße automatisch angepasst. +IDS_DESC_GAMEMUSIC=Steuert Hintergrundmusik im Spiel. +IDS_DESC_GAMEPADFORMENU=Mit dieser Option kann das Gamepad für die Steuerung des Menüsystems verwendet werden. +IDS_DESC_GAMEPAUSED=Spiel ist pausiert +IDS_DESC_GAMERUNNING=Spiel läuft +IDS_DESC_GAMESOUND=Steuert Geräuscheffekte im Spiel. +IDS_DESC_GOALFULFILLED=Spielziel %s erfüllt: %s +IDS_DESC_GOALNOTFULFILLED=Spielziel %s nicht erfüllt: %s +IDS_DESC_GOTOTHEONLINEREGISTRATION=Öffnet das Online-Bestellformular. +IDS_DESC_HANGLE=Hangeln: +IDS_DESC_JUMP=Springen: +IDS_DESC_LASTGAME=\nLetzte Runde: %s\nDatum: %s\nDauer: %s\nPunkte: %i\n +IDS_DESC_LEAGUECHECKPASSWORD=Aktivieren, um ein eigenes Passwort einzugeben. Wird kein eigenes Passwort eingegeben, wird stattdessen der persönliche WebCode verwendet, der bereits auf diesem System gespeichert ist. +IDS_DESC_LEAGUESCOREANDPROJECTEDGA=Ligapunkte und möglicher Gewinn, wenn das Team dieses Spielers die Runde gewinnt. +IDS_DESC_LISTOFPLAYERSWHOPARTICIPA=Liste der Spieler, die an der Runde teilgenommen haben. +IDS_DESC_MAGIC=Zaubern: +IDS_DESC_MENUMUSIC=Steuert Hintergrundmusik im Menüsystem. +IDS_DESC_MENUSOUND=Steuert Geräuscheffekte im Menüsystem. +IDS_DESC_NEXTMISSION=Mit der nächsten Runde forfahren. +IDS_DESC_NOPROMO=Wird nicht weiter befördert. +IDS_DESC_NOTINITED=Nicht initialisiert +IDS_DESC_OBJECT=Typ: %s\nErfahrung: %i\nRunden: %i\nGestorben: %i mal\n%s\nSpielzeit: %s\nGeburtstag: %s\n\n +IDS_DESC_OLDANDNEWSCORE=Alter und neuer Punktestand. +IDS_DESC_PLAYER=Punkte: %i\nRunden: %i (%i gew. %i verl.)\nSpielzeit: %s\nKommentar: %s\n +IDS_DESC_PLAYERSCONTROLLEDBYCOMPUT=Computergesteuerte Spieler. +IDS_DESC_PLRS=Spieler: +IDS_DESC_PROMO=Beförderung zum %s\nbei: %i +IDS_DESC_PUSH=Schieben: +IDS_DESC_RESETCONFIG=Alle Konfigurationswerte auf ihren Ursprungswert zurücksetzen. +IDS_DESC_RESOURCE=Die hier angezeigten Dateien werden in dieser Runde verwendet. Ressourcen, die dynamisch über das Netzwerk geladen wurden, können über das entsprechende Symbol dauerhaft auf diesem Computer gespeichert und später wieder verwendet werden. +IDS_DESC_SCALE=Klettern: +IDS_DESC_SELECTAPICTUREANDORLOBBYI=Spielerbild oder Lobby-Icon auswählen. +IDS_DESC_SELECTFONT=Schriftart auswählen. Manche Schriftarten enthalten nicht alle benötigten Zeichen für bestimmte Sprachen. In diesem Fall sollte eine andere Schriftart ausgewählt werden. +IDS_DESC_SHOWALLRESOLUTIONS=Erlaubt auch die Auswahl von sehr großen und sehr kleinen Auflösungen. +IDS_DESC_SHOWSAVAILABLENETWORKGAME=Zeigt laufende Netzwerkspiele. +IDS_DESC_STOREPORTRAITS=Speichert auch Standardportraits in jedem Clonk. +IDS_DESC_SWIM=Schwimmen: +IDS_DESC_TEAM=Team %s +IDS_DESC_THROW=Werfen: +IDS_DESC_UNASSOCIATEDSAVEGAMEPLAYE=Nicht zugewiesene Spielstand-Spieler. +IDS_DESC_UNKNOWNGAMESTATE=Spiel ist in einem unbekannten Zustand +IDS_DESC_VERSION=Engine-Version: %s +IDS_DESC_VOLUMEMUSIC=Lautstärke der Hintergrundmusik. +IDS_DESC_VOLUMESOUND=Lautstärke der Geräuscheffekte. +IDS_DESC_WAITFORHOST=Warte auf Host-Verbindung +IDS_DESC_WALK=Laufen: +IDS_DEV_LICENSE=Achtung: der Editor kann nur mit Zugang zur Entwicklermodus-Dokumentation gestartet werden. Die Entwicklermodus-Dokumentation ist auf http://www.clonk.de in der Sektion "Entwickler" erhältlich und enthält das Passwort, das zum Starten des Editors benötigt wird.\n\nDie Benutzung der erweiterten Funktionen von Clonk geschieht grundsätzlich auf eigene Gefahr. Rückfragen beim Hersteller (RedWolf Design) sind nicht gestattet. Es gibt keinerlei Support. Der Entwicklermodus ist nur registrierten Spielern zugänglich.\n\nDer Entwicklermodus ermöglicht vollen Zugriff auf die Spieldaten (Szenarien, Objektdefinitionen, Spielerdateien) von Clonk. Durch unsachgemäße Anwendung kann nicht nur der Spielspaß zunichte, sondern das komplette Spiel unspielbar gemacht werden.\n\nJeder, der die erweiterten Funktionen des Entwicklermodus nutzt, sollte verantwortungsvoll mit den gegebenen Möglichkeiten umgehen und eigenverantwortlich das Ziel anstreben, sinnvoll spielbare Erweiterungen zum Gesamtspiel zu erstellen, die der Gemeinschaft nützen. \n\nVon Spielern erstelltes Material für Clonk darf in keinem Fall kommerziell genutzt werden. Für Szenarien, Objekte oder andere Spieldaten darf kein Entgelt verlangt werden.\n\nDie Weitergabe von "gehackten" oder auf anderem Wege modifizierten ausführbaren Programmen oder anderen nicht zur Bearbeitung freigegebenen Daten der Clonk-Produkte ist illegal.\n\nIm Rahmen des Entwicklermodus zur Bearbeitung freigegebene Daten dürfen bei der Entwicklung neuer Spielerweiterungen für Clonk (und ausschließlich zu diesem Zweck) verwendet werden. Alle Rechte an den verwendeten Daten verbleiben jedoch beim Hersteller. +IDS_DLGTIP_ABOUT=Zeigt Programminformationen an. +IDS_DLGTIP_BACKMAIN=Zurück zum Hauptmenü. +IDS_DLGTIP_CANCEL=Aktion abbrechen. +IDS_DLGTIP_CHAT=Hier Chat-Nachrichten eintippen und mit Enter bestätigen +IDS_DLGTIP_CHATWIN=Nachrichten +IDS_DLGTIP_CLASSIC=Clonks laufen weiter, bis sie mit 'Stop' angehalten werden. +IDS_DLGTIP_CLEAR=Löscht die Auswahl +IDS_DLGTIP_COPY=Kopiert die Auswahl in die Zwischenablage +IDS_DLGTIP_CUT=Schneidet die Auswahl aus und kopiert sie in die Zwischenablage +IDS_DLGTIP_EXIT=Beendet das Programm. +IDS_DLGTIP_GAMEGO=Startet das Spiel. +IDS_DLGTIP_JUMPANDRUN=Clonks halten bei losgelassener Taste an. +IDS_DLGTIP_NETWORKGAME=Startet ein Netzwerkspiel oder tritt einem laufenden Netzwerkspiel bei. +IDS_DLGTIP_NEWPLAYER=Erzeugt eine neue Spielerdatei. +IDS_DLGTIP_OK2=Aktion bestätigen. +IDS_DLGTIP_OK=Dialog schließen +IDS_DLGTIP_OPTIONS=Ändert die Programmeinstellungen. +IDS_DLGTIP_PASTE=Fügt den Inhalt der Zwischenablage an der Einfügemarke ein +IDS_DLGTIP_PING=Ping +IDS_DLGTIP_PLAYERCOLORS=Wählt eine Standardfarbe aus. +IDS_DLGTIP_PLAYERCOLORSTGB=Mischt eine eigene Spielerfarbe aus Rot, Grün und Blau. +IDS_DLGTIP_PLAYERCONTROL=Wählt eine Steuerungsmethode aus. +IDS_DLGTIP_PLAYERCONTROLMOUSE=Schaltet zur ausgewählten Steuerungsmethode zusätzlich Maussteurung ein. +IDS_DLGTIP_PLAYERCREW=Zeigt die Stammcrew des Spielers an. +IDS_DLGTIP_PLAYERDELETE=Löscht den ausgewählten Spieler. +IDS_DLGTIP_PLAYERFILES=Liste aller Spielerdateien auf diesem Rechner +IDS_DLGTIP_PLAYERPROPERTIES=Ändert die Spielereigenschaften. +IDS_DLGTIP_PLAYERSELECTION=Legt die Spieler fest, die an der nächsten Runde teilnehmen sollen. +IDS_DLGTIP_PROGRESS=Fortschrittsanzeige +IDS_DLGTIP_RECORD=Runde aufnehmen: die Runde wird aufgezeichnet und kann später wiedergegeben werden. +IDS_DLGTIP_SCENSELNEXT=Öffnet den ausgewählten Ordner oder startet das ausgewählte Szenario. +IDS_DLGTIP_SEARCHINTERNETGAME=Internetspiele: neben lokalen Netzwerkspielen wird auch nach Internetspielen gesucht. +IDS_DLGTIP_SELALL=Markiert den gesamten Text +IDS_DLGTIP_SELECTEDPLAYERS=Diese Spieler nehmen an der nächsten Runde teil. +IDS_DLGTIP_SELECTSCENARIO=Hier gewünschten Rundenordner oder gewünschtes Szenario auswählen. +IDS_DLGTIP_STARTGAME=Startet ein lokales Spiel ohne Netzwerkunterstützung. +IDS_DLGTIP_STARTINTERNETGAME=Internetspiel: andere Spieler können diese Runde im Internet sehen. +IDS_DLGTIP_STARTLEAGUEGAME=Ligaspiel: die Runde soll in der Liga ausgewertet werden. +IDS_DLGTIP_UPDATE=Update verfügbar: hier klicken, um die neue Version des Spiels herunterzuladen und zu installieren. +IDS_DLG_ABORT=Abbruch +IDS_DLG_ABOUT=&Info +IDS_DLG_CANCEL=&Abbrechen +IDS_DLG_CHAT=Chat +IDS_DLG_CLASSIC=Klassisch +IDS_DLG_CLEAR=Löschen +IDS_DLG_CLOSE=&Schließen +IDS_DLG_COPY=Kopieren +IDS_DLG_CUT=Ausschneiden +IDS_DLG_DEFINITION=Objektdefinition +IDS_DLG_DEFINITIONS=Objektdefinitionen +IDS_DLG_DEVELOPER=Entwickler +IDS_DLG_DYNAMIC=Dynamische Landschaft +IDS_DLG_EDITOR=Extern +IDS_DLG_EDITORSWITCH=Taste F6 wechselt zum Spiel. +IDS_DLG_ENVIRONMENT=Umwelt +IDS_DLG_ERROR=Fehler +IDS_DLG_EXACT=Exakte Landschaft +IDS_DLG_EXIT=&Beenden +IDS_DLG_EXPLORER=Editor +IDS_DLG_GAME=Spiel +IDS_DLG_GAMEGO=&Starten +IDS_DLG_GAMEPAD=Gamepad +IDS_DLG_GRAPHICS=Grafik +IDS_DLG_IDSELECT=Objektauswahl +IDS_DLG_INVALIDENTRY=Ungültige Angaben +IDS_DLG_JUMPANDRUN=Jump'n'Run +IDS_DLG_KEYBOARD=Tastatur +IDS_DLG_LANDSCAPE=Landschaft +IDS_DLG_LEAGUESIGNUP=Liga-Anmeldung +IDS_DLG_LEAGUESIGNUPCONFIRM=Bestätigung der Liga-Anmeldung +IDS_DLG_LEAGUESIGNUPFAILED=Liga-Anmeldung fehlgeschlagen +IDS_DLG_LEAGUESIGNUPON=Liga-Anmeldung auf %s +IDS_DLG_LICENSE=Entwicklermodus Nutzungsbedingungen +IDS_DLG_LOBBY=Lobby +IDS_DLG_LOG=Fehlermeldungen +IDS_DLG_MISSIONACCESS=Missionszugang +IDS_DLG_MOVEMENT=Bewegung +IDS_DLG_NETSTART=Netzwerkspiel starten +IDS_DLG_NETWORK=Netzwerk +IDS_DLG_NEW=Neu +IDS_DLG_NO=&Nein +IDS_DLG_NOPLAYERSSELECTED=keine ausgewählt +IDS_DLG_OK=&OK +IDS_DLG_OPTIONS=&Optionen +IDS_DLG_PASSWORD=Passwort +IDS_DLG_PASTE=Einfügen +IDS_DLG_PLAYER2=Spielereigenschaften +IDS_DLG_PLAYERS=S&pieler +IDS_DLG_PLAYERSELECTION=S&pielerauswahl +IDS_DLG_PLAYERSTART=Ausrüstung +IDS_DLG_PROGRAM=Programm +IDS_DLG_PROPERTIES=Eigenschaften +IDS_DLG_REGISTRATION=Registrierung +IDS_DLG_RESOURCES=Ressourcen +IDS_DLG_SCENARIO=Szenario +IDS_DLG_SCENARIOPROPERTIES=Szenarioeigenschaften +IDS_DLG_SCENARIOS=Szenarien +IDS_DLG_SCENARIOTITLE=Geladenes Szenario +IDS_DLG_SELALL=Alles markieren +IDS_DLG_SOUND=Sound +IDS_DLG_STARTGAME=&Spiel starten +IDS_DLG_STATIC=Statische Landschaft +IDS_DLG_TOOLS=Landschaftswerkzeuge +IDS_DLG_VERSION=Version %s +IDS_DLG_VOTING=Abstimmung +IDS_DLG_WEATHER=Wetter +IDS_DLG_YES=&Ja +IDS_DL_ACTIVEDOWNLOADS=Aktive Downloads: +IDS_DL_CANCEL=Download abbrechen +IDS_DL_CAPTION=Downloads +IDS_DL_CLOSE=Schließen +IDS_DL_FILENAME=Dateiname +IDS_DL_FILEPROGRESS=Fortschritt +IDS_DL_FILESIZE=Größe +IDS_DL_STATUSCANCELLED=abgebrochen +IDS_DL_STATUSCONNECTING=verbinden... +IDS_DL_STATUSDONE=beendet +IDS_DL_STATUSERROR=Fehler +IDS_DL_STATUSWAITING=warten... +IDS_DL_TARGET=Ziel +IDS_EDITOR_WELCOME=Benutzung des Editors auf eigene Gefahr. +IDS_ERR_CLONKCOLLISION=Ein Clonk mit Dateinamen "%s" existiert bereits. +IDS_ERR_CONFIG=Konfigurationsfehler +IDS_ERR_CONFREAD=Einstellungen konnten nicht gelesen werden: %s +IDS_ERR_CONFSAVE=Einstellungen konnten nicht gespeichert werden: %s +IDS_ERR_DDRAW=Fehler bei DirectDraw. Bitte DirectX-Installation auf diesem System prüfen. Dazu im Windows-Startmenü unter Ausführen 'dxdiag.exe' eingeben. Es muss mindestens DirectX Version 8.1 installiert sein. +IDS_ERR_DELOLDTITLE=Fehler beim Löschen des alten Titels aus Datei "%s": %s +IDS_ERR_ERRORADDINGNEWTITLEFORFIL=Fehler beim Setzen des Titels in Datei \"%s\": %s +IDS_ERR_ERRORLOADINGROUNDRESULTS=Fehler beim Laden der Spielergebnisse. +IDS_ERR_ERRORSAVINGROUNDRESULTS=Fehler beim Speichern der Spielergebnisse. +IDS_ERR_ERRORSAVINGTEAMS=Fehler beim Speichern der Teams. +IDS_ERR_ERRORWHILECREATINGJOINDAT=Fehler beim Erstellen der Beitrittsdaten +IDS_ERR_FAILURE=...fehlgeschlagen. +IDS_ERR_FATAL=FATALER FEHLER: %s +IDS_ERR_FILEEXISTS=Datei mit Namen "%s" existiert bereits. +IDS_ERR_FONTDEFS=Fehler bei den Schriftdefinitionen +IDS_ERR_GAMELEFTVIAPLAYERMENU=Spiel per Spielermenü verlassen. +IDS_ERR_GBACK=Fehler beim Landschaftsgenerator. +IDS_ERR_GFX_REGISTERMAIN=Fehler beim Laden der Grafikdatei +IDS_ERR_INITFONTS=Fehler bei der Schriftinitialisierung +IDS_ERR_INSUFFICIENTPARAMETERS=/%s: fehlende Parameter +IDS_ERR_INVALIDCHANNELNAME=Kein gültiger Chat-Kanal. +IDS_ERR_INVALIDID= Definition %s nicht geladen: Ungültige ID +IDS_ERR_INVALIDNICKNAME2=/%s: unzulässiger Kurzname +IDS_ERR_INVALIDNICKNAME=Unzulässiger Kurzname. +IDS_ERR_INVALIDPASSWORDMAX31CHARA=Nicht zulässiges Passwort: maximal 31 Zeichen, keine Leerzeichen. +IDS_ERR_INVALIDREPLYFROMSERVER=Ungültige Antwort vom Server. +IDS_ERR_INVALIDSYSGRP=System.c4g nicht vorhanden oder ungültig. +IDS_ERR_IRCCONNECTIONFAILED=IRC-Verbindung fehlgeschlagen: %s +IDS_ERR_JOINPLR_NOFILE=Kann Spieler %s nicht beitreten lassen: Datei nicht gefunden! +IDS_ERR_JOINPLR_NOLOCALCLIENT=Kann Spieler %s nicht bei Client %d beitreten lassen: Fremdclient! +IDS_ERR_JOINQUEUEPLRS=C4PlayerInfoList::LocalJoinUnjoinedPlayersInQueue konnte Spieler %s nicht beitreten lassen! +IDS_ERR_LEAGUEERRORREPORTINGUNEXP=Liga: Fehler beim Melden des unerwarteten Verbindungsabbruchs: %s +IDS_ERR_LOAD_PLRINFO=Fehler beim Wiederherstellen der Spielinformationen für Spieler %s! +IDS_ERR_LOAD_RECR_NOEXTRACT=Fehler beim Wiederherstellen von Spieler %s aus %s: Entpacken fehlgeschlagen! +IDS_ERR_LOAD_RECR_NOFILE=Fehler beim Wiederherstellen von Spieler %s: Datei nicht gefunden! +IDS_ERR_LOAD_RECR_NOFILEFROMNET=C4PlayerInfoList::RecreatePlayers konnte Spieler %s nicht beitreten lassen: Datei nicht gefunden! +IDS_ERR_MOVER=Fehler beim Laden der MassMover. +IDS_ERR_NOFILE=Datei konnte nicht geladen werden +IDS_ERR_NOGFXSYS=Fehler beim Grafiksystem. +IDS_ERR_NOKEYBOARD=Fehler beim Initialisieren der Tastaturbelegung +IDS_ERR_NOPLRFILERECR=Die Spielerdateien des gespeicherten Spiels wurden nicht gefunden und konnten nicht wiederhergestellt werden. +IDS_ERR_NOPLRNETRECR=Fehler beim Wiederherstellen der Spieler beim Laufzeitbeitritt +IDS_ERR_NOPLRSAVEINFORECR=Fehler beim Wiederherstellen der Spielerinformationen des Spielstands +IDS_ERR_NOPLRSAVERECR=Fehler beim Wiederherstellen der Spieler des Spielstands +IDS_ERR_NORECORD=Aufnahme konnte nicht gestartet werden +IDS_ERR_NOTCONNECTEDTOSERVER=Nicht mit Server verbunden. +IDS_ERR_NOTONACHANNEL=Kein aktiver Kanal. +IDS_ERR_OPENFILE=Fehler beim Öffnen der Datei "%s": %s +IDS_ERR_PLAYERSTOOLONG=Spieler "%s" deaktiviert: Zu viele aktivierte Spieler oder Dateipfad zu lang! +IDS_ERR_PLEASESELECTAFILEFIRST=Bitte zuerst eine Datei wählen. +IDS_ERR_PLRNAME_EMPTY=Spielername muss angegeben werden! +IDS_ERR_PLRNAME_TAKEN=Spielername "%s" ist schon vergeben. +IDS_ERR_PLRNOCREW=Spieler "%s" hat noch keine Mannschaft! +IDS_ERR_PXS=Fehler beim Laden der PXS-Daten. +IDS_ERR_RENAMEFILE=Fehler beim Umbenennen der Datei "%s" in "%s". +IDS_ERR_REPLAYREAD=Aufnahmedaten konnten nicht gelesen werden! +IDS_ERR_SAVE_CORE=Spiel speichern: Fehler beim Speichern der Kerndaten des Szenarios +IDS_ERR_SAVE_DESC=Spiel speichern: Fehler beim Speichern der Beschreibung +IDS_ERR_SAVE_GAMETITLE=Spiel speichern: Fehler beim Speichern des Titelbilds +IDS_ERR_SAVE_INFO=Spiel speichern: Fehler beim Speichern der Info.txt +IDS_ERR_SAVE_LANDSCAPE=Spiel speichern: Fehler beim Speichern der Landkarte +IDS_ERR_SAVE_OBJECTS=Spiel speichern: Fehler beim Speichern der Objekte +IDS_ERR_SAVE_PLAYERS=Spiel speichern: Fehler beim Speichern der Spieler +IDS_ERR_SAVE_RESTOREPLAYERINFOS=Spiel speichern: Fehler beim Speichern von Spielerinfos zum Wiederherstellen +IDS_ERR_SAVE_RUNTIMEDATA=Spiel speichern: Fehler beim Speichern von Laufzeitspieldaten +IDS_ERR_SAVE_SCENSECTIONS=Spiel speichern: Fehler beim Speichern der Szenariensektionen +IDS_ERR_SAVE_SCRIPT=Spiel speichern: Fehler beim Speichern des Scripts +IDS_ERR_SAVE_SCRIPTSTRINGS=Spiel speichern: Fehler beim Speichern der Script-Zeichenketten +IDS_ERR_SAVE_TARGETGRP=Spiel speichern: Zielgruppe kann nicht als %s erzeugt werden. +IDS_ERR_SAVE_TITLE=Spiel speichern: Fehler beim Speichern des Titels +IDS_ERR_SCENSECTION=Fehler beim Laden des Szenarienteils "%s" +IDS_ERR_STRINGS=Fehler beim Laden der Stringtabelle +IDS_ERR_SWITCHRES=Fehler beim Ändern der Bildschirmauflösung: %s +IDS_ERR_TIMER=Fehler beim System-Timer +IDS_ERR_TITLE=Fehler +IDS_ERR_UNKNOWNCMD=Unbekannter Befehl: "%s" - Befehl /help für eine Liste gültiger Befehle +IDS_ERR_USERCANCEL=Benutzerabbruch +IDS_ERR_WARNINGYOUWERETRYINGTOSEN=ACHTUNG: Du hast versucht, Deinen persönlichen WebCode an eine unbekannte Person zu versenden. Dieser Code darf unter keinen Umständen an andere Personen weiter gegeben werden, da diese damit Deine persönliche Online-Konten stehlen könnten.||Clonk-Administratoren würden Dich nie nach Deinem WebCode oder anderen Passwörtern fragen. +IDS_ERR_WRITENEWTITLE=Fehler beim Speichern des neuen Titels in Datei "%s": %s +IDS_ERR_YOUHAVEBEENREMOVEDBYVOTIN=Du wurdest per Abstimmung aus dem Spiel entfernt. (%s) +IDS_ERR_YOUSURRENDEREDTHELEAGUEGA=Du hast das Ligaspiel aufgegeben. +IDS_FAIL_COPY=Fehler beim Kopieren. +IDS_FAIL_DELETE=Fehler beim Löschen. +IDS_FAIL_EDIT=Fehler beim Bearbeiten. +IDS_FAIL_EXTRACT=Fehler beim Extrahieren. +IDS_FAIL_LOAD=Fehler beim Laden. +IDS_FAIL_MODIFY=Fehler beim Bearbeiten der Datei. +IDS_FAIL_MOVE=Fehler beim Verschieben. +IDS_FAIL_PACK=Fehler beim Packen. +IDS_FAIL_RECURSIVE=Ein Objekt kann nicht in sich selbst kopiert werden. +IDS_FAIL_RENAME=Fehler beim Umbenennen. +IDS_FAIL_RENAMEDUPLICATE=Umbenennen nicht möglich.\n\nEine Datei gleichen Namens existiert bereits. +IDS_FAIL_RICHEDDLL=RichEdit-DLL nicht vorhanden. +IDS_FAIL_SAVE=Fehler beim Speichern. +IDS_FAIL_UNPACK=Fehler beim Entpacken. +IDS_FAIL_UPDATE=Fehler beim Aktualisieren. +IDS_FN_EXECUTABLES=Ausführbare Programme (.exe)|*.exe|| +IDS_FN_NEWDIR=Neues Verzeichnis +IDS_FN_ROOT=Arbeitsverzeichnis +IDS_GAME_DEFRANKS=Clonk|Fähnrich|Leutnant|Hauptmann|Major|Oberst|Brigadegeneral|Generalmajor|Generalleutnant|General|Feldmarschall +IDS_GAME_FAILSAVEGAME=Fehler beim Speichern des Spiels. +IDS_GAME_NOCLIENTSAVE=Netzwerkspiele können nur vom Host abgespeichert werden. +IDS_GAME_NOSAVEONCURR=Auf dem geladenen Spielstand|kann nicht gespeichert werden.|Bitte anderen Speicherplatz benutzen! +IDS_GAME_NOUNREGSAVE=Speichern des Spiels ist nur in der registrierten Version möglich. +IDS_GAME_RECORDSTITLE=Aufnahmen +IDS_GAME_SAVEGAMESTITLE=Spielstände +IDS_HOLD_ABORT=Runde abbrechen? +IDS_HOLD_SAVINGGAME=Spiel wird gespeichert... +IDS_LEAGUE_LEAGUEREPORTINGUNEXPECTED=Liga: unerwarteter Verbindungsabbruch wird gemeldet... (Grund %d) +IDS_LEAGUE_WAITINGFORLASTLEAGUESERVE=Warten auf letzte Meldung des Ligaservers... +IDS_LGA_INVALIDRESPONSE3=Ungültige Antwort des Ligaservers (kein CSID). +IDS_LGA_SERVERFAILURE=Ligaserver-Fehler: %s\n +IDS_LOG_COMMANDNOTALLOWEDINLEAGUE=Kommando in Ligaspielen nicht erlaubt! +IDS_MENU_ABORT=Runde abbrechen +IDS_MENU_ABORT_DESC=Die Runde ohne Auswertung abbrechen. +IDS_MENU_ABOUT=Info... +IDS_MENU_ACTIVATE=%s aktivieren +IDS_MENU_ATTACK=%s angreifen. +IDS_MENU_ATTACKFRIENDLY=freundlich +IDS_MENU_ATTACKHOSTILE=feindlich +IDS_MENU_ATTACKINFO=%s ist uns %sgesinnt und wird zur Zeit von uns %sangegriffen. +IDS_MENU_ATTACKNOT=nicht +IDS_MENU_ATTACKSELF=Wir greifen uns selbst nicht an. +IDS_MENU_BUY=%s kaufen +IDS_MENU_CLONKNAMES_DESC=Zeigt Clonk-Namen über gegnerischen Clonks an. +IDS_MENU_CONSTRUCT=Bauauftrag: %s +IDS_MENU_CONTEXTSUBCLONKDESC=Öffnet ein Untermenü mit Befehlen für diesen Clonk. +IDS_MENU_CPATTACK=Angriff +IDS_MENU_CPATTACKINFO=Festlegen, welche Spieler von den eigenen Clonks angegriffen werden sollen. +IDS_MENU_CPGOALS=Spielziele +IDS_MENU_CPGOALSINFO=Die Runde endet, wenn alle Spielziele erfüllt sind. +IDS_MENU_CPMAIN=Spielermenü +IDS_MENU_CPNEWPLAYER=Spielerbeitritt +IDS_MENU_CPNEWPLAYERINFO=Einen weiteren Spieler beitreten lassen. +IDS_MENU_CPRULES=Spielregeln +IDS_MENU_CPRULESINFO=Spielregeln bestimmen den Spielablauf. +IDS_MENU_CPSAVEGAME=Spielstand speichern +IDS_MENU_CPSAVEGAMEINFO=Das Spiel speichern, so dass es später fortgesetzt werden kann. +IDS_MENU_CPSURRENDER=Aufgeben +IDS_MENU_CPSURRENDERINFO=Aufgeben und das Spiel verlassen (mit Auswertung). +IDS_MENU_DELETE=Löschen +IDS_MENU_DISCONNECT=Verbindung trennen +IDS_MENU_DISCONNECTCLIENT=Client trennen +IDS_MENU_DISCONNECTFROMSERVER=Verbindung zum Host trennen? +IDS_MENU_DISPLAY=Anzeige +IDS_MENU_GET=%s holen +IDS_MENU_HELP=Hilfe +IDS_MENU_INSERT=Hinzufügen... +IDS_MENU_MULTIPLEITEMS=Objekte +IDS_MENU_NEWPLAYER=Spielerbeitritt: %s +IDS_MENU_NOATTACK=%s nicht angreifen. +IDS_MENU_NOPLRFILES=Keine weiteren Spielerdateien verfügbar. +IDS_MENU_OBSERVER=Zuschauermenü +IDS_MENU_ONLINEDOCS=Online-Dokumentation... +IDS_MENU_OPTION=Optionen +IDS_MENU_OPTIONS=Optionen... +IDS_MENU_PLAYERNAMES_DESC=Zeigt Spielernamen über gegnerischen Clonks an. +IDS_MENU_REGISTRATION=Registrierung... +IDS_MENU_SELL=%s verkaufen +IDS_MENU_SHOWCOMMANDKEYS=Tasten +IDS_MENU_SHOWCOMMANDS=Kommandos +IDS_MENU_SURRENDER=Wirklich aufgeben? +IDS_MENU_WEBSITE=Clonk im Internet... +IDS_MNU_CLOCK=Uhrzeit +IDS_MNU_CLONKNAMES=Clonk-Namen +IDS_MNU_CLOSE=Schließen +IDS_MNU_COMPONENTS=Komponenten +IDS_MNU_CONTENTS=Inhalt nehmen +IDS_MNU_DELETE=Löschen +IDS_MNU_DUPLICATE=Duplizieren +IDS_MNU_FILE=Datei +IDS_MNU_FPS=FPS-Anzeige +IDS_MNU_INFO=Info +IDS_MNU_JOIN=Beitritt +IDS_MNU_MOUSECONTROL=Maussteuerung +IDS_MNU_MUSIC=Musik +IDS_MNU_NET=Host +IDS_MNU_NETCLIENT=Client %s (%i) deaktivieren +IDS_MNU_NETCLIENTDE=Client %s (%i) deaktiviert +IDS_MNU_NETHOST=Host %s +IDS_MNU_NEW=Neu +IDS_MNU_OPEN=Öffnen... +IDS_MNU_OPENWPLRS=Öffnen mit Spielern... +IDS_MNU_OPTIONS=Optionen +IDS_MNU_OPTIONSINFO=Einstellungen ändern. +IDS_MNU_PLAYER=Spieler +IDS_MNU_PLAYERNAMES=Spielernamen +IDS_MNU_PORTRAITS=Portraits +IDS_MNU_QUIT=Beenden +IDS_MNU_RECORD=Aufnahme +IDS_MNU_SAVEGAME=Spiel speichern +IDS_MNU_SAVEGAMEAS=Spiel speichern unter... +IDS_MNU_SAVESCENARIO=Szenario speichern +IDS_MNU_SAVESCENARIOAS=Szenario speichern unter... +IDS_MNU_SCRIPT=Script +IDS_MNU_SWITCHRESOLUTION=Bildschirmauflösung ändern +IDS_MNU_SWITCHRESOLUTION_LIKEIT=Neue Auflösung gewählt. Zufrieden? +IDS_MNU_SWITCHRESOLUTION_UNDO=Alte Einstellung wird in %d Sekunden wiederhergestellt... +IDS_MNU_TITLE=Titel +IDS_MNU_UPPERBOARD=Titelleiste +IDS_MNU_VIEWPORT=Sichtfenster +IDS_MSG_ACTIVE=Aktiver +IDS_MSG_ADDPORTRAITS=Portraits für neue Clonks +IDS_MSG_ADDPORTRAITS_DESC=Gibt an, ob neu zur Mannschaft hinzugefügte Clonks ihr Portrait dauerhaft speichern. +IDS_MSG_ALLOWSYOUTOJOINADIFFERENT=Erlaubt die Auswahl eines anderen Teams. +IDS_MSG_ALLPLAYERDATA=Sollen die aktuellen Werte für alle Spieler übernommen werden? +IDS_MSG_ANUPDATETOVERSIONISAVAILA=Ein Update auf Version %s ist verfügbar. Soll das Update heruntergeladen und installiert werden? +IDS_MSG_BACKTOPLAYERDLG=Zurück zur Spielerauswahl. +IDS_MSG_BLITOFFSET=Blit offset +IDS_MSG_BLITOFFSET_DESC=Gibt das für jede Zeichenoperation benutze Offset zwecks hochgenauer Pixeloperationen an. Wert erhöhen, wenn schwarze Linien unter/rechts von Grafiken auftauchen. Verringern, wenn Linien über/links von Grafiken auftauchen. +IDS_MSG_CANNOTSTARTSCENARIO=Start nicht möglich. +IDS_MSG_CANTSENDTEAMMESSAGETEAMSN=Konnte Team-Nachricht nicht senden: unbekanntes Team. +IDS_MSG_CHANGESTHETOPICTO=%s ändert das Thema zu: %s +IDS_MSG_CHATDISCLAIMER=Chat - Nutzungsbedingungen +IDS_MSG_CLEARTHEMESSAGEBOARD=Alle Nachrichten löschen. +IDS_MSG_CLIENT=Client +IDS_MSG_CMD_ABORT_NOCOUNTDOWN=Countdown läuft nicht! +IDS_MSG_CMD_HOSTONLY=Kein Host? Versagt! +IDS_MSG_CMD_JOINPLR_NOFILE=Kann Spieler %s nicht beitreten lassen: Datei nicht gefunden! +IDS_MSG_CMD_NETGETSCEN_SAVED=Szenario geladen! Gespeichert als %s +IDS_MSG_CMD_NOCLIENT=Client %s nicht gefunden! +IDS_MSG_CMD_PLRCLR_NOACCESS=Kein Zugriff +IDS_MSG_CMD_PLRCLR_NOPLAYER=Spieler nicht gefunden! +IDS_MSG_CMD_PLRCLR_USAGE=Verwendung: /plrclr [Hansi] ff0000 +IDS_MSG_CMD_START_USAGE=Verwendung: /start [Countdown] +IDS_MSG_DEBUGMODENOTALLOWED=Debug-Modus: nicht erlaubt +IDS_MSG_DEFINEKEY=Taste belegen +IDS_MSG_DELETECLONK=Soll %s %s wirklich gelöscht werden? +IDS_MSG_DELETECLONK_DESC=Ausgewählten Clonk aus der Mannschaft entfernen. +IDS_MSG_DELETECLONK_PLAYTIME= - dieser Clonk hat eine Gesamtspielzeit von %s! +IDS_MSG_DELETEORIGINAL=%s ist eine Originaldatei. Wirklich löschen? +IDS_MSG_DELETEPLR=Soll Spieler %s wirklich gelöscht werden? +IDS_MSG_DELETEPLR_PLAYTIME= - dieser Spieler hat eine Gesamtspielzeit von %s! +IDS_MSG_DISABLED=Deaktiviert +IDS_MSG_DISCONNECTED=Verbindungsabbruch +IDS_MSG_DISCONNECTEDFROMSERVER=Verbindung beendet (%s). +IDS_MSG_DISCONNECTFROMSERVER=Verbindung beenden? +IDS_MSG_DONTSHOW=Diese Meldung in Zukunft &nicht mehr anzeigen. +IDS_MSG_EDITORREGONLY=Der Editor kann nur in der registrierten Version gestartet werden.\n\nWeitere Informationen finden sich in der Entwickler-Sektion der Clonk Website. +IDS_MSG_ENABLED=Aktiviert +IDS_MSG_ENTERNEWDEATHMESSAGE=Nachruf im Falle des Todes: +IDS_MSG_ENTERPASSWORD=Passwort eingeben: +IDS_MSG_FAIRCREW_ACTIVATED=Faire Crew aktiviert, Rang %s +IDS_MSG_FAIRCREW_DEACTIVATED=Faire Crew deaktiviert +IDS_MSG_FIREPARTICLES=Feuerpartikel +IDS_MSG_FIREPARTICLES_DESC=Zusätzliche Feuereffekte aktivieren. +IDS_MSG_FPS=FPS +IDS_MSG_FREELYSCROLLAROUNDTHEMAP=Freies Scrollen der Landkarte. +IDS_MSG_FREESAVEGAMEPLRS=Spielerzuweisung +IDS_MSG_FREEVIEW=Freie Sicht +IDS_MSG_FULLSCREEN=Vollbild +IDS_MSG_FULLSCREEN_DESC=Vollbildmodus aktivieren. +IDS_MSG_GFXENGINE_DESC=Gibt an, welcher Grafikmodus benutzt wird. Änderungen greifen erst beim nächsten Programmstart. +IDS_MSG_HASDISCONNECTED=%s hat die Verbindung beendet (%s). +IDS_MSG_HASJOINEDTHECHANNEL=%s ist dem Chat-Kanal beigetreten. +IDS_MSG_HASLEFTTHECHANNEL=%s hat den Chat-Kanal verlassen (%s) +IDS_MSG_HOST=Host +IDS_MSG_INACTIVE=Inaktiver +IDS_MSG_INTERNETGAMEEVALUATED=Internetspiel ausgewertet. +IDS_MSG_INVALIDKEY=Der eingegangene Registrierungsschlüssel ist ungültig.|Fehler: %s|Möglicherweise wurde die Schlüsseldatei beim Herunterladen oder beim Transfer per Email unmerklich verändert und dadurch ungültig gemacht. Falls dies der Fall sein sollte, bitte über die Clonk-Website mit RedWolf Design in Verbindung setzen. +IDS_MSG_ISNOWKNOWNAS=%s heißt jetzt %s +IDS_MSG_ITEMORIGINAL=%s ist Teil eines Originalpakets und kann an dieser Stelle nicht bearbeitet werden. Zum Bearbeiten kann eine Kopie des Objekts an anderer Stelle erzeugt werden. +IDS_MSG_ITEMSEDITED=Die folgenden Objekte werden noch bearbeitet:\n +IDS_MSG_ITEMSMODIFIED=Bearbeitete Objekte aktualisieren:\n +IDS_MSG_JOINTEAM=Team %s beitreten +IDS_MSG_KICKBYMENU=Rausgeworfen über das Hostmenü +IDS_MSG_KICKFROMCLIENTLIST=Rausgeworfen über die Clientliste +IDS_MSG_KICKFROMLOBBY=Rausgeworfen aus der Lobby +IDS_MSG_KICKFROMMSGBOARD=Rausgeworfen über die Konsole +IDS_MSG_KICKFROMSTARTUPDLG=Rausgeworfen aus dem Startwartedialog +IDS_MSG_LANGUAGEDISCLAIMER=Dies ist eine zusätzliche Sprache eines Drittanbieters. Es gibt keine Gewähr für Vollständigkeit oder Korrektheit. Benutzung auf eigene Gefahr. +IDS_MSG_LEAGUEEVALUATIONSUCCESSFU=Ligaspiel erfolgreich ausgewertet. +IDS_MSG_LEAGUEGAMESIGNUP=Spiel bei Ligaserver %s angemeldet:|%s +IDS_MSG_LEAGUEINVALIDUSERNAME=Der Benutzername enthält ungültige Zeichen. +IDS_MSG_LEAGUEJOINING=Prüfe Beitrittserlaubnis für Spieler %s... +IDS_MSG_LEAGUEJOINREFUSED=Ligaserver hat Beitritt von %s verweigert: %s +IDS_MSG_LEAGUEMISMATCHPASSWORD=Fehler bei der Passwort-Wiederholung! Bitte Passwort erneut eingeben. +IDS_MSG_LEAGUEMISSINGPASSWORD=Bitte ein Passwort eingeben! +IDS_MSG_LEAGUEMISSINGUSERNAME=Bitte einen Benutzernamen eingeben! +IDS_MSG_LEAGUEPLAYERSIGNUP=Spieler: %s|Server: %s +IDS_MSG_LEAGUEPLAYERSIGNUPAS=Spieler: %s|Liga-Name: %s|Server: %s +IDS_MSG_LEAGUESERVERMSG=Meldung vom Ligaserver: %s +IDS_MSG_LEAGUESERVERREPLYWITHOUTA=Antwort vom Ligaserver ohne Authentisierungs-Id! +IDS_MSG_LEAGUESIGNUPCANCELLED=Liga-Anmeldung für Spieler %s abgebrochen. Ohne Anmeldung kann dieser Spieler nicht an der Runde teilnehmen! +IDS_MSG_LEAGUESIGNUPERROR=Fehler bei Liga-Anmeldung: %s +IDS_MSG_LEAGUEUNEXPECTEDDISCONNEC=Liga: unerwarteter Verbindungsabbruch wurde gemeldet: %s +IDS_MSG_LEAGUEUSERNAMETOOSHORT=Der Benutzername ist zu kurz. +IDS_MSG_LEAGUE_REGISTRATION=Dies ist Deine erste Anmeldung bei der Liga. Du kannst hier Deinen gewünschten Liga-Benutzernamen und Dein gewünschtes Liga-Passwort eingeben. +IDS_MSG_LOCAL=lokaler +IDS_MSG_LOCKACTIVATION=Dieses Objekt muss immer aktiviert bleiben. +IDS_MSG_LOOKINGFORUPDATES=Suche nach Updates... +IDS_MSG_MANUALCLIP_DESC=Aktiviert manuelles Clipping. Kann gegen Grafikfehler wie lange, weit gestreckte Linien über den ganzen Bildschirm helfen. +IDS_MSG_MAP_DESC=Szenario auf der Karte wählen. +IDS_MSG_MAP_STARTSCEN=Szenario %s starten +IDS_MSG_MMTIMER_DESC=Kann bei Problemen mit der Spielgeschwindigkeit helfen. +IDS_MSG_MOVEKEY=Soll der Registrierungsschlüssel in das persönliche Benutzerverzeichnis verschoben werden, so dass er nur für den zur Zeit angemeldeten Benutzer gilt? +IDS_MSG_NEWPLRCOLOR=Neue &Farbe +IDS_MSG_NEWPLRCOLOR_DESC=Zufällige neue Farbe aussuchen +IDS_MSG_NOADDBLT_DESC=Deaktiviert additive Blits. Kann helfen, wenn Spezialeffekte wie Explosionen falsch dargestellt werden. +IDS_MSG_NOALPHAADD_DESC=Deaktiviert additive Transparenzwerte. Kann helfen, wenn im Spiel Rechtecke um Grafiken auftauchen. +IDS_MSG_NOCLRFADE_DESC=Deaktiviert Vertex-Farbverläufe. Kann helfen, wenn das Spiel in Szenarien mit Himmelsfarbverläufen oder eingeschränkter Sicht extrem langsam läuft. +IDS_MSG_NODEBUGMODE=Kein Debug-Modus! +IDS_MSG_NODEFS=Keine Objektdefinitionen verfügbar! +IDS_MSG_NOEDITNETREF=Netzwerkreferenzen können nicht bearbeitet werden. +IDS_MSG_NOENGINE=Zum Starten des gewählten Szenarios ist eine Engine der Version %i.%i%i.%i oder höher nötig. +IDS_MSG_NOMATS=Keine Materialdefinitionen verfügbar! +IDS_MSG_NOMODIFYFAIRCREW=Faire Crew kann nicht geändert werden: Durch Szenario vorgegeben! +IDS_MSG_NOMODIFYORIGINAL=%s kann nicht aktualisiert werden, da es Teil eines Originalpakets ist. +IDS_MSG_NOPARTICIPATE_DESC=%s von der nächsten Runde ausnehmen. +IDS_MSG_NOPLAYERSELECTED=Es sind keine Spieler ausgewählt. Bitte zuerst in der Spielerauswahl die Teilnehmer für diese Runde aktivieren. +IDS_MSG_NOPORTRAIT=Kein Portrait +IDS_MSG_NORUNTIMEJOIN=Der Laufzeitbeitritt ist bei diesem Spiel gesperrt. +IDS_MSG_NOTALLSAVEGAMEPLAYERSHAVE=Nicht alle Spielstand-Spieler wurden lokalen Spielern zugewiesen.|Mit der rechten Maustaste können Spielstand-Spieler aus der Liste lokalen Spielern zugewiesen werden.|Nicht zugewiesene Spielstand-Spieler werden aus dem Spiel entfernt. Nicht zugewiesene lokale Spieler treten als neue Spieler bei.|Jetzt starten? +IDS_MSG_NOTAVALIDFILE=%s ist keine ausführbare Datei. +IDS_MSG_NOTENOUGHPLAYERSFORTHISRO=Nicht genügend Teilnehmer für diese Runde. +IDS_MSG_NOUNREGEDIT=Objektverwaltung ist nur in der registrierten Version möglich. +IDS_MSG_NOUNREGISTERED=Dieses Szenario kann nur in der registrierten Version gestartet werden. +IDS_MSG_NOUNREGPROPSAVE=Veränderte Eigenschaften können nur in der registrierten Version gespeichert werden. +IDS_MSG_NOUPDATEAVAILABLEFORTHISV=Zur Zeit kein Update für diese Version verfügbar. +IDS_MSG_OBJCOUNT=Anzahl Objekte +IDS_MSG_PARTICIPATE_DESC=%s für den Einsatz in der nächsten Runde auswählen. +IDS_MSG_PARTICLES_DESC=Bestimmt die Stärke von Partikeleffekten wie Rauch und Feuer. +IDS_MSG_PASSWORDFORPLAYER=Liga-Anmeldung für Spieler %s. +IDS_MSG_PASSWORDINCORRECT=Passwort inkorrekt. +IDS_MSG_PLAYERASSIGNMENT=Teilnehmer %s übernimmt Spieler %s aus dem Spielstand. +IDS_MSG_PLRWEALTH=Spieler-Vermögen +IDS_MSG_POINTFILTERING_DESC=Deaktiviert lineares Filtering. Kann gegen verschwommene Grafiken helfen. +IDS_MSG_PRESETDEFSMISSING=Das ausgewählte Szenario benutzt vorgegebene Objektdefinitionen. Die folgenden benötigten Objektpakete sind auf diesem System nicht vorhanden: %s +IDS_MSG_PRESETUSEDDEFS=In den Szenarioeigenschaften wurden die derzeit aktivierten Objektdefinitionen verwendet. Sollen diese als Vorgabe im Szenario gespeichert werden, so dass das Szenario in Zukunft die ausgewählten Pakete automatisch nutzt? +IDS_MSG_PRESSBTN=Taste für "%s" auf Gamepad %d drücken. +IDS_MSG_PRESSKEY=Taste für "%s" auf Tastaturblock %d drücken. +IDS_MSG_PRESSORPUSHANYGAMEPADBUTT=Taste %s öffnet das Zuschauermenü. +IDS_MSG_PROMPTCOPY=%s nach %s kopieren? +IDS_MSG_PROMPTDELETE=%s löschen? +IDS_MSG_PROMPTIMPORT=%s nach %s importieren als %s? +IDS_MSG_PROMPTMOVE=%s nach %s verschieben? +IDS_MSG_PROMPTRESETCONFIG=Sollen alle Konfigurationswerte zurückgesetzt werden? +IDS_MSG_PROPORIGINALCOPY=%s ist Teil eines Originalpakets und kann nicht an der ursprünglichen Position gespeichert werden. Soll das veränderte Objekt im Arbeitsverzeichnis abgelegt werden? +IDS_MSG_RANK=[Rang +IDS_MSG_REMOTE=entfernter +IDS_MSG_REMOVEPLR=&Entfernen +IDS_MSG_REMOVEPLR_DESC=Nicht mit diesem Spieler beitreten +IDS_MSG_REPLAYPLRS=Schau-Spieler +IDS_MSG_REPLAYPLRS_DESC=In den Hauptrollen +IDS_MSG_RESETKEYSETS=Standardbelegung für alle Tastaturblöcke bzw. Gamepads wieder herstellen. +IDS_MSG_RESOLUTION_DESC=Bildschirmauflösung im Vollbildmodus. +IDS_MSG_RESTARTCHANGECFG=Änderungen werden erst übernommen, wenn das Spiel neu gestartet wurde. +IDS_MSG_RNDTEAM=Zufallsteam +IDS_MSG_SCENARIODESC=Szenariobeschreibung +IDS_MSG_SCENARIODESC_LOADING=Lade... (%d%%) +IDS_MSG_SELECT=%s auswählen +IDS_MSG_SELECTKEYSET=Wählt den Tastaturblock oder das Gamepad, das angepasst werden soll. +IDS_MSG_SELECTLANG=Sprachpaket auswählen. +IDS_MSG_SELECTPLR=Spieler auswählen... +IDS_MSG_SELTEAM=Team auswählen +IDS_MSG_SENDAPRIVATEMESSAGETOTHES=Private Nachricht an den angegebenen Spieler. +IDS_MSG_SENDAPRIVATEMESSAGETOYOUR=Private Nachricht ans eigene Team +IDS_MSG_SETDEATHMESSAGE=Nachruf festlegen +IDS_MSG_SETSMODE=%s setzt Modus %s %s +IDS_MSG_SETTHEMESSAGETHATAPPEARWH=Nachricht festlegen, die angezeigt wird, wenn dieser Clonk stirbt. +IDS_MSG_SHOWTEAMS=Teams +IDS_MSG_SHOWTEAMS_DESC=Teams anzeigen +IDS_MSG_SPEED=Geschwindigkeit: %dx +IDS_MSG_STARTDEVMODE=Dieses Szenario kann nur im Entwicklermodus gestartet werden. +IDS_MSG_STARTPLAYERMODE=Dieses Szenario kann nur im Spielermodus gestartet werden. +IDS_MSG_STARTSELECTSCENARIO=Zum Starten einer Runde muss noch das gewünschte Szenario ausgewählt werden. Dazu einen Rundenordner (Buch) mit einem Doppelklick öffnen und das gewünschte Szenario anklicken. Anschließend auf 'Starten' klicken. +IDS_MSG_STARTUPVIDEO=Video beim Spielstart anzeigen +IDS_MSG_STARTUPVIDEO_DESC=Zeigt eine Videoanimation, wenn das Spiel gestartet wird. Die Datei "Splash.c4v" kann von clonk.de heruntergeladen werden und muss im Spielverzeichnis abgelegt werden. +IDS_MSG_STOREPORTRAITS=Standardportraits duplizieren +IDS_MSG_TAKEOVERPLR=&Ãœbernehmen +IDS_MSG_TAKEOVERPLR_DESC=Spieler im Spiel steuern +IDS_MSG_TARGETNOGROUP=Nach %s kann nichts kopiert werden. +IDS_MSG_TEAM=Team %d +IDS_MSG_TEAMCOLORS=Teamfarben +IDS_MSG_TEAMCOLORS_DESC=Gibt an, ob alle Spieler eines Teams die selbe Farbe haben. +IDS_MSG_TEAMDIST=Teameinteilung +IDS_MSG_TEAMDIST_DESC=Gibt an, wie Spieler in Teams eingeteilt werden +IDS_MSG_TEAMDIST_FREE=Frei +IDS_MSG_TEAMDIST_HOST=Per Host +IDS_MSG_TEAMDIST_NONE=Keine +IDS_MSG_TEAMDIST_RND=Zufällig +IDS_MSG_TEAMDIST_RNDINV=Zufällig & Unsichtbar +IDS_MSG_TEXINDENT=Texindent +IDS_MSG_TEXINDENT_DESC=Gibt die für das Zeichnen von Texturen verwendete Einrückung an. Wert erhöhen, wenn im Spiel Rahmen um Grafiken auftauchen. Verringern, wenn Rahmen von Grafiken fehlen. +IDS_MSG_TOOFEWPLAYERS=Dieses Szenario ist auf mindestens %i Teilnehmer ausgelegt. Bitte in der Spielerauswahl die entsprechenden Teilnehmer auswählen und aktivieren. +IDS_MSG_TOOFEWPLAYERSNET=Der Spielmodus dieses Szenarios ist auf mehr Spieler ausgelegt, als auf diesem Rechner aktiviert sind. Beim Start der Runde muss auf weitere Teilnehmer aus dem Netzwerk gewartet werden. +IDS_MSG_TOOMANYDEFS=Auf diesem Rechner sind sehr viele einzelne Objektpakete aktiviert. Es wird dringend empfohlen, mehrere Pakete in sinnvoll sortierten Objektordnern zusammenzufassen. Hierzu über die Schaltfläche 'Neu' einen Objektordner erstellen und die einzelnen Objektdateien hineinschieben. +IDS_MSG_TOOMANYPLAYERS=Dieses Szenario ist auf maximal %i Teilnehmer ausgelegt. +IDS_MSG_TOPICIN=Thema in %s: %s +IDS_MSG_TRANSFERNOTYPE=Ein %s kann nicht in einem %s abgelegt werden. +IDS_MSG_TRYLEAGUESIGNUP=Liga-Anmeldung für Spieler %s... +IDS_MSG_UPDATEFAILED=Update fehlgeschlagen. +IDS_MSG_UPDATEINPROGRESS=Update-Vorgang läuft noch. Bitte warten. +IDS_MSG_UPDATENOTAVAILABLE=Das Update ist eventuell noch nicht für dieses Betriebssystem verfügbar. +IDS_MSG_USINGPLR=Mit %s spielen +IDS_MSG_USINGPLR_DESC=Diesen Spieler benutzen um das Spiel fortzusetzen +IDS_MSG_WASKICKEDFROMTHECHANNEL=%s wurde aus dem Chat-Kanal geworfen (%s). +IDS_MSG_YOUAREABOUTTOCONNECTTOAPU=Hiermit wird die Verbindung zu einem öffentlichen Chat-Server (%s) erstellt. RedWolf Design übernimmt keinerlei Verantwortung für etwaige Inhalte des Chats. Weitere Regeln können in den Server-Nachrichten im Server-Kanal nachgelesen werden. Fortfahren? +IDS_MSG_YOUHAVEJOINEDCHANNEL=Du bist Chat-Kanal %s beigetreten. +IDS_MSG_YOUHAVELEFTCHANNEL=Du hast Chat-Kanal %s verlassen (%s). +IDS_MSG_YOUWEREKICKEDFROMCHANNEL=Du wurdest aus dem Chat-Kanal %s geworfen (%s). +IDS_NET_ACTIVATECLIENT=&Aktivieren +IDS_NET_ACTIVATECLIENT_DESC=Spieler/Zuschauer-Status umschalten +IDS_NET_APM=APM +IDS_NET_CAPTION=Netzwerk +IDS_NET_CLIENT=Client +IDS_NET_CLIENTDISCONNECTED=Netzwerk: Client %s getrennt! +IDS_NET_CLIENTINFO=&Info +IDS_NET_CLIENTINFO_DESC=Umfangreiche Informationen anzeigen +IDS_NET_CLIENTONNET=%s auf %s +IDS_NET_CLIENT_ACTIVATED=%s %s aktiviert. +IDS_NET_CLIENT_DEACTIVATED=%s %s deaktiviert. +IDS_NET_CLIENT_INFO=Client-Informationen +IDS_NET_CLIENT_INFO_ADDRESSES=Adressen: +IDS_NET_CLIENT_INFO_CONNDATA= Daten: %s (%s:%d, %d ms) +IDS_NET_CLIENT_INFO_CONNECTIONS=Verbindungen: %s: %s (%s:%d, %d ms) +IDS_NET_CLIENT_INFO_FORMAT=%s %s %s %s (ID #%d):%s +IDS_NET_CLIENT_INFO_NOADDRESSES=Addressen: Keine +IDS_NET_CLIENT_INFO_NOCONNECTIONS=Verbindungen: Nicht verbunden +IDS_NET_CLIENT_INFO_UNKNOWNID=Unbekannte client ID #%d. +IDS_NET_CLIENT_JOIN=Client %s verbunden. +IDS_NET_CLIENT_OBSERVE=%s %s muss zuschauen. +IDS_NET_CLIENT_REMOVED=%s %s entfernt (%s). +IDS_NET_COMMENTCHANGED=Neuer Netzwerkspiel-Kommentar gesetzt. +IDS_NET_COMPUTERNAME=Computername: +IDS_NET_COMPUTERNAME_DESC=Computername, der benutzt wird, um diesen Computer in Netzwerkspielen zu identifizieren. +IDS_NET_CONNECTHOST=Verbinde mit Host auf %s... +IDS_NET_CONNECTING=Verbinde mit %s (%s) +IDS_NET_CONTROL=Steuerdaten +IDS_NET_CONTROLRATE=Kontrollrate: %i +IDS_NET_CONTROL_PING=Pingzeit +IDS_NET_CTRLMODE_CENTRAL=Zentraler Netzwerkmodus +IDS_NET_CTRLMODE_DECENTRAL=Dezentraler Netzwerkmodus +IDS_NET_CTRLMODE_NONE=Kein Netzwerkmodus +IDS_NET_DEACTIVATECLIENT=De&aktivieren +IDS_NET_ERR_COPYFILE=Fehler beim Dateikopieren +IDS_NET_ERR_COPYFILE_LOCAL=Datei ist schon lokal vorhanden +IDS_NET_ERR_INITRESLIST=Netzwerk: Ressourcenliste kann nicht initialisiert werden! +IDS_NET_ERR_LEAGUE=Ligafehler +IDS_NET_ERR_LEAGUEINIT=Liga konnte nicht initialisiert werden: %s +IDS_NET_ERR_LEAGUE_EMPTYREPLY=Leere Antwort +IDS_NET_ERR_LEAGUE_FINISHGAME=Spiel konnte nicht abgeschlossen werden: %s +IDS_NET_ERR_LEAGUE_REGGAME=Spiel konnte nicht registriert werden: %s +IDS_NET_ERR_LEAGUE_SENDRESULT=Spielergebnis konnte nicht übertragen werden: %s +IDS_NET_ERR_LEAGUE_STARTGAME=Spiel konnte nicht gestartet werden: %s +IDS_NET_ERR_LEAGUE_UPDATEGAME=Spiel konnte nicht aktualisiert werden: %s +IDS_NET_ERR_PORT_TCPREF=TCP- und Referenz-Port müssen ungleiche Werte zwischen 1 und 65535 sein! +IDS_NET_ERR_PORT_UDPDISC=UDP- und Discovery-Port müssen ungleiche Werte zwischen 1 und 65535 sein! +IDS_NET_ERR_REFINVALID=Ungültige Spielreferenz +IDS_NET_ERR_REFREQTIMEOUT=Zeitüberschreitung bei der Referenzabfrage +IDS_NET_ERR_RESTIMEOUT=Warte auf %s: Zeitüberschreitung! +IDS_NET_GAMELIST=Laufende Spiele +IDS_NET_GAMELIST_INFO=Liste der im Netzwerk gefundenen Spiele. +IDS_NET_GRAPH=Graph +IDS_NET_HOSTDISCONNECTED=Netzwerk: Host %s getrennt! +IDS_NET_INFOGAMES=%d Spiel(e) gefunden, %d Spieler online. +IDS_NET_INFOINPROGR=Spiel läuft +IDS_NET_INFONOGAME=Keine Spiele gefunden. +IDS_NET_INFOPASSWORD=Mit Passwortschutz +IDS_NET_INFOPLRSGOALDESC=%d/%d Spieler - %s - %s +IDS_NET_INFOQUERY=Abfrage der Spielinformationen... +IDS_NET_INPUT=Netzwerk Eingehend +IDS_NET_INVALIDREF=Ungültige Spielreferenz! +IDS_NET_IP=IP: +IDS_NET_IP_DESC=Spiel mit angegebener Adresse beitreten. Adresse eingeben um einem bekannten Spiel direkt beizutreten. +IDS_NET_JOINGAME=Netzwerkbeitritt +IDS_NET_JOINGAMEBY=Trete Spiel von %s bei... +IDS_NET_JOINGAME_BTN=&Beitreten +IDS_NET_JOINGAME_DESC=Tritt dem ausgewählten Netzwerkspiel bei. +IDS_NET_JOINREADY=Warten auf Start des Netzwerkspieles... +IDS_NET_KICKCLIENT=&Rauswerfen +IDS_NET_KICKCLIENT_DESC=Diesen Client aus dem Spiel werfen +IDS_NET_LEAGUE_REGGAME=Spiel wird auf %s angemeldet... +IDS_NET_LEAGUE_SENDRESULT=Spielergebnis wird an %s gesendet... +IDS_NET_LEAGUE_STARTGAME=Spiel wird gestartet... +IDS_NET_LOBBYWAITING=Teilnehmer werden erwartet... +IDS_NET_LOCAL_CLIENT=Lokaler Client +IDS_NET_MASTERSRV_DESC=Hier kann eine abweichende Internetserver-Adresse eingegeben werden. Ist diese Option abgeschaltet, wird der offizielle Internetserver auf clonk.de genutzt. +IDS_NET_NEWGAME=&Neues Spiel +IDS_NET_NEWGAME_DESC=Startet ein neues Netzwerk- oder Internetspiel. +IDS_NET_NODIRECTSTART=Netzwerkspieldaten können nicht direkt gestartet werden. +IDS_NET_NODISCOVERY=Fehler bei der Suche nach Spielen +IDS_NET_NODISCOVERY_DESC=Suche nach Spielen fehlgeschlagen: %s +IDS_NET_NOFILEPUBLISH=Datei %s kann nicht ans Netzwerk übertragen werden! +IDS_NET_NOHOSTCON=Konnte nicht mit Host %s verbinden. +IDS_NET_NOJOIN=Beitritt nicht möglich +IDS_NET_NOJOIN_BADREF=Beitritt in ausgewähltes Spiel gescheitert: %s! +IDS_NET_NOJOIN_BADVER=Falsche Engine-Version: Spiel nutzt %s - vorhanden ist %s. +IDS_NET_NOJOIN_NOREF=Keine Spielreferenz ausgewählt. Aus der Liste wählen oder Adresse für Direktbeitritt unten angeben! +IDS_NET_NOJOIN_NORUNTIME=Das Spiel läuft schon und Laufzeitbeitritt ist deaktiviert. Soll trotzdem versucht werden beizutreten? +IDS_NET_NONET=Netzwerk nicht aktiv +IDS_NET_NONETGAME=Ãœbertragenes Szenario enthält keine Netzwerkspieldaten. +IDS_NET_NOOFFICIALLEAGUE=Achtung: bei der Verwendung eines inoffiziellen Internetservers sollte auf gar keinen Fall der persönliche WebCode oder irgendein anderes wichtiges Passwort, welches auch auf offiziellen Servern verwendet wird, eingegeben werden! +IDS_NET_NOSAMEANDTOOLARGE=Datei %s weicht vom Host ab! +IDS_NET_NOSAMESYSTEM=Systemdatei %s weicht vom Host ab! +IDS_NET_NOVALIDCORE=Kerndaten der Datei %s sind ungültig! +IDS_NET_OFFICIALSERVER=Offizieller Server +IDS_NET_OUTPUT=Netzwerk Ausgehend +IDS_NET_PASSWORD_DESC=Passwortschutz: andere Spieler können nur mit Passwort beitreten. +IDS_NET_PORT_DISCOVERY=Discovery-Port +IDS_NET_PORT_DISCOVERY_DESC=Port für automatische Suche nach Spielen im lokalen Netzwerk einstellen. +IDS_NET_PORT_REFERENCE=Referenz-Port +IDS_NET_PORT_REFERENCE_DESC=Port für Spielreferenzserver einstellen. +IDS_NET_PORT_TCP=TCP-Port +IDS_NET_PORT_TCP_DESC=Port für Netzwerkverbindungen zwischen Clients einstellen. +IDS_NET_PORT_UDP=UDP-Port +IDS_NET_PORT_UDP_DESC=Port für Netzwerkverbindungen zum Austausch von Steuerdaten zwischen Clients einstellen. +IDS_NET_QUERY_DIRECTJOIN=Direktbeitritt +IDS_NET_QUERY_LOCALNET=Lokales Netzwerk +IDS_NET_QUERY_MASTERSRV=Internetserver +IDS_NET_RECEIVED=Empfangen: %s (%s) +IDS_NET_REFONCLIENT=%s auf %s +IDS_NET_REFQUERY_FAILED=Spielreferenz konnte nicht abgefragt werden: %s +IDS_NET_REFQUERY_NOREF=Keine Spielreferenz gefunden! +IDS_NET_REFQUERY_QUERYMSG=Spiele werden auf %s gesucht... +IDS_NET_REFQUERY_QUERYTITLE=Suche Spiele... +IDS_NET_REGJOINONLY=Beitritt zu diesem Spiel ist nur in der registrierten Version möglich. +IDS_NET_RELOAD_DESC=Sucht erneut nach Netzwerk- oder Internetspielen. +IDS_NET_RESPROGRESS_DESC=Fortschritt beim Laden der Ressourcen +IDS_NET_RES_DYNAMIC=Laufzeitdaten +IDS_NET_RES_PLRFILE=Spielerdatei von %s +IDS_NET_RES_SAVE=Ressource speichern +IDS_NET_RES_SAVED=Ressource gespeichert +IDS_NET_RES_SAVED_DESC=Ressource erfolgreich als %s gespeichert. +IDS_NET_RES_SAVE_OVERWRITE=Datei %s existiert schon. Ãœberschreiben? +IDS_NET_RES_SCENARIO=Szenario +IDS_NET_RUNTIMEJOIN=Laufzeitbeitritt +IDS_NET_RUNTIMEJOINBARRED=Laufzeitbeitritt gesperrt +IDS_NET_RUNTIMEJOINFREE=Laufzeitbeitritt freigegeben +IDS_NET_RUNTIMEJOIN_DESC=Gibt an, ob weitere Clients nach dem Spielstart beitreten können. +IDS_NET_SAVE_ERR_ADDDYNDATARES=Netzwerk: Laufzeitdaten konnten nicht zur Ressourcenliste hinzugefügt werden! +IDS_NET_SAVE_ERR_CREATEDYNFILE=Netzwerk: Datei für Laufzeitdaten konnte nicht erstellt werden! +IDS_NET_SAVING=Netzwerk: Spiel wird gespeichert... +IDS_NET_START=Start! +IDS_NET_STATISTICS=Statistiken +IDS_NET_USERNAME=Chat-Name: +IDS_NET_USERNAME_DESC=Name, der für Chat-Nachrichten in Netzwerkspielen verwendet wird, die von diesem Computer gesendet werden. +IDS_NET_WAITFORRES=Warte auf %s... +IDS_NET_WAITFORSTART=Warte auf Spielstart +IDS_OBJ_BIRTHDAY=%s wird %d!|Herzlichen Glückwunsch! +IDS_OBJ_BURNS={{FLAM}} Das Objekt brennt. +IDS_OBJ_CONNECT=%s an|%s angeschlossen +IDS_OBJ_DEATH1=%s ist tot. +IDS_OBJ_DEATH2=%s ist|von uns gegangen. +IDS_OBJ_DEATH3=%s|ruht in Frieden. +IDS_OBJ_DEATH4=%s war einmal... +IDS_OBJ_DEATH5=%s|hat's erwischt. +IDS_OBJ_DEATH6=%s|ist verstorben. +IDS_OBJ_DEATH7=%s|hat uns verlassen. +IDS_OBJ_DISCONNECT=%s von|%s getrennt. +IDS_OBJ_EMPTY=%s ist leer. +IDS_OBJ_HOSTILENOENTRANCE=%s verfeindet.|Eingang versperrt! +IDS_OBJ_LINEREMOVAL=%s abgenommen. +IDS_OBJ_NEWLINE=Konstruktion|%s. +IDS_OBJ_NOCHOP=%s kann|keine Bäume fällen. +IDS_OBJ_NOCON=%s kann nicht|gebaut werden! +IDS_OBJ_NOCONACTIV=%s ist noch nicht fertig|und kann noch nicht|aktiviert werden. +IDS_OBJ_NOCONNECT=Verbindung hier|nicht möglich. +IDS_OBJ_NOCONNECTTYPE=%s kann nicht an|%s angeschlossen werden. +IDS_OBJ_NODIG=%s kann|nicht graben. +IDS_OBJ_NODOUBLEKIT=%s wird bereits|am anderen Ende verlegt. +IDS_OBJ_NOLEVEL=Untergrund|zu uneben! +IDS_OBJ_NOLINECONSTRUCT=%s kann|keine Leitungen verlegen. +IDS_OBJ_NONEWLINE=Neue Leitung hier|nicht möglich. +IDS_OBJ_NOOTHER=%s ist im Weg! +IDS_OBJ_NOROOM=Nicht genug Platz! +IDS_OBJ_PROMOTION=%s wird zum|%s befördert! +IDS_OBJ_STUCK=%s|hängt fest! +IDS_OBJ_UNDEF=Gebäude %s|gibt's hier nicht! +IDS_OBJ_UNKNOWN=unbekannt +IDS_PLR_ELIMINATED=Spieler %s|eliminiert! +IDS_PLR_HOSTILE=Spieler %s|verfeindet! +IDS_PLR_HOSTILITY=%s greift %s an. +IDS_PLR_NEWCOMMENT=Ich bin neu hier. +IDS_PLR_NEWPLAYER=Neuer Spieler +IDS_PLR_NOBKNOW=Spieler %s|hat keine Baupläne. +IDS_PLR_NOBUY=Es gibt nichts zu kaufen. +IDS_PLR_NOHOSTILITY=%s greift %s nicht an. +IDS_PLR_NOTAVAIL=%s nicht verfügbar! +IDS_PLR_NOWEALTH=Nicht genug Geld! +IDS_PLR_SURRENDERED=Spieler %s|hat aufgegeben. +IDS_PRC_CONNECTED=Verbunden. +IDS_PRC_COUNTDOWN=Das Spiel beginnt in %d Sekunden! +IDS_PRC_DEFNOTFOUND=Vorgegebene Objektdatei %s nicht vorhanden. +IDS_PRC_DEFOVERLOAD= %s (%s) überladen. +IDS_PRC_DEFSINVC4X=%d der Objekte benötigen eine höhere Engine-Version. +IDS_PRC_DEFSLOADED= %d Definitionen geladen. +IDS_PRC_DEINIT=Engine heruntergefahren. +IDS_PRC_DOWNLOADCOMPLETE=Datei %s erfolgreich heruntergeladen. +IDS_PRC_DOWNLOADERROR=Fehler beim Herunterladen der Datei %s.|%s. +IDS_PRC_DOWNLOADINGFILE=Datei %s wird heruntergeladen... +IDS_PRC_ENVIRONMENT=Umweltobjekte werden platziert... +IDS_PRC_ERREXTRA=Fehlende oder ungültige Extra.c4g. +IDS_PRC_ERRLOADER=Fehler beim Initialisieren des Wartebildschirms. +IDS_PRC_ERRORLOADINGTEAMS=Fehler beim Laden der Teams. +IDS_PRC_EVALUATED=Spiel ausgewertet. +IDS_PRC_FAIL=Programm abgebrochen. +IDS_PRC_FILEINVALID=Datei ungültig oder falsche Version. +IDS_PRC_FILENOTFOUND=Datei nicht gefunden oder ungültig. +IDS_PRC_GAMEGO=Los geht's! +IDS_PRC_GAMEOVER=Runde beendet. +IDS_PRC_GFXRES=Grafik wird geladen... +IDS_PRC_INITDEFS=Objektdefinitionen werden geladen: +IDS_PRC_INITEXTRA=Extras werden geladen... +IDS_PRC_INITFONTS=Schriften werden initialisiert... +IDS_PRC_INITIALIZE=Laden... +IDS_PRC_INITLOADER=Initialisierung des Loaders... +IDS_PRC_JOIN=Spiel beigetreten. +IDS_PRC_JOINFAIL=Fehler bei Spielerdatei. +IDS_PRC_JOINPLR=Spielerbeitritt: %s +IDS_PRC_LANDSCAPE=Erstellung der Landschaft... +IDS_PRC_LAUNCHINGUPDATE=Update wird angewendet... +IDS_PRC_LEAGUE=Ligaspiel: %s +IDS_PRC_LOADC4S=Szenario: %s +IDS_PRC_LOADEDKEYCONF=Eigene Tastaturbelegung aus %s geladen. +IDS_PRC_LOADEXTRA=Importiere Skinpaket aus %s\%s... +IDS_PRC_LOCALMUSIC=Lokale Musikdatei: %s +IDS_PRC_LOCALONLY=Szenario benutzt nur lokale Objektdefinitionen. +IDS_PRC_MATERIALS=%d Materialien geladen. +IDS_PRC_MATERROR=Fehler beim Laden der Materialien. +IDS_PRC_NETPACKING=Datei %s wird gepackt für Netzwerk... +IDS_PRC_NETPREPARING=Datei %s wird vorbereitet für Netzwerk... +IDS_PRC_NEWTEAM=Neues Team +IDS_PRC_NOC4S=Keine Szenariodatei angegeben. +IDS_PRC_NODEFS=Keine gültigen Definitionen vorhanden. +IDS_PRC_NOEXACTC4X=Zum Starten des gewählten Szenarios wird die Engine der Version %i.%i%i.%i benötigt. +IDS_PRC_NOGFXFILE=Fehler bei Grafikdatei %s: %s +IDS_PRC_NOMATENUM=Fehler bei Materialanordnung. +IDS_PRC_NOMISSIONACCESS=Noch kein Zugang zu dieser Mission. +IDS_PRC_NOMUSIC=Musik nicht verfügbar. +IDS_PRC_NONETREPLAY=Aufnahmen können nicht im Netzwerkmodus wiedergegeben werden. +IDS_PRC_NOREPLPLRCLR=Keine passende Ersatzfarbe für Spieler %s gefunden. Benutze Standardfarbe. +IDS_PRC_NOREQC4X=Dieses Szenario benötigt die Clonk Engine Version %d.%d%d.%d oder höher. +IDS_PRC_NOSND=Fehler bei Sound-Datei. +IDS_PRC_NOSWSCENARIO=Nicht registriert. Kein Shareware-Szenario. +IDS_PRC_NOSYSMATS=System-Materialien nicht vorhanden. +IDS_PRC_OBJECTSLOADED=%d Objekte platziert. +IDS_PRC_PLAYMUSIC=Musik: %s +IDS_PRC_PLRELIMINATED=Spieler %s eliminiert. +IDS_PRC_PLRFILEINUSE=Spielerdatei wird bereits benutzt. +IDS_PRC_PLRSURRENDERED=Spieler %s hat aufgegeben. +IDS_PRC_PRELOADVIDEOS=Lade Videos aus %s voraus... +IDS_PRC_RECORDINGTO=Aufnahme nach %s... +IDS_PRC_RECREATE=Wiederherstellung: %s +IDS_PRC_REG=Registriert für: %s +IDS_PRC_REMOVEPLR=Spieler %s gelöscht. +IDS_PRC_RESUME=Spiel wiederaufgenommen. +IDS_PRC_RESUMENOCLIENT=Unidentifizierbare Spielerbeitrittsinformationen für Client %d (%d Spieler) ignoriert. +IDS_PRC_RESUMENOPLRASSOCIATION=Teilnehmer %s wurde keinem Spieler aus dem Spielstand zugewiesen. Beitritt als neuer Spieler. +IDS_PRC_RESUMEREMOVEPLRS=%d Spieler aus dem Spielstand wurden nicht zugewiesen und werden gelöscht. +IDS_PRC_SAVEPLR=Spielerdatei %s wird gespeichert... +IDS_PRC_SCEOWNDEFS=Szenario benutzt vorgegebene Objektdefinitionen. +IDS_PRC_SCREENSHOT=Screenshot %s gespeichert. +IDS_PRC_SCREENSHOTERROR=Fehler beim Erstellen des Screenshots %s. +IDS_PRC_START=Spiel gestartet. +IDS_PRC_STARTABORTED=Spielstart abgebrochen. +IDS_PRC_SYNCPLRS=Lokale Spielerdateien werden synchronisiert... +IDS_PRC_TEXMAPENTRIES=Texturtabelle mit %d Einträgen geladen. +IDS_PRC_TEXTURES=%d Texturen geladen. +IDS_PRC_TOOMANYMATS=Zu viele Materialien. +IDS_PRC_TOOMANYPLRS=Dieses Szenario ist auf maximal %d Spieler ausgelegt. +IDS_PRC_UNDEFINEDOBJECT=Objekt vom Typ %s nicht platziert. +IDS_PRC_UNKOWNERROR=Unbekannter Fehler +IDS_PRC_UNREGUSER=Nicht registrierter Nutzer +IDS_PRC_UPDATEFONT=Schrift %s(%d,%d) wird aktualisiert... +IDS_RANKS_CLONK=Clonk|Fähnrich|Leutnant|Hauptmann|Major|Oberst|Brigadegeneral|Generalmajor|Generalleutnant|General|Feldmarschall +IDS_RANKS_PLAYER=Neuling|Anfänger|Tunichtgut|Geselle|Meister|Haudegen|Held|Junker|Ritter|Baron|Graf|Herzog|König|Kaiser +IDS_SEC_UNREGUSER=Nicht registrierter Nutzer +IDS_SELECT_ANIMALS=Tiere +IDS_SELECT_CREW=Mannschaft +IDS_SELECT_ENVIRONMENT=Umweltobjekte +IDS_SELECT_GOALS=Spielziele +IDS_SELECT_HOMEBASE=Heimatbasismaterial +IDS_SELECT_INEARTH=Erdreich +IDS_SELECT_KNOWLEDGE=Baupläne +IDS_SELECT_MAGIC=Zauber +IDS_SELECT_MATERIAL=Material +IDS_SELECT_NESTS=Nester +IDS_SELECT_PRODUCTION=Heimatbasisproduktion +IDS_SELECT_RULES=Spielregeln +IDS_SELECT_SKIPDEFS=Nicht zu ladende Definitionen +IDS_SELECT_STRUCTURES=Gebäude +IDS_SELECT_VEGETATION=Vegetation +IDS_SELECT_VEHICLES=Fahrzeuge +IDS_STATUS_COPYING=%s kopieren nach %s... +IDS_STATUS_DELETING=%s löschen... +IDS_STATUS_INITEDIT=Bearbeitung wird vorbereitet... +IDS_STATUS_LOADING=%s laden... +IDS_STATUS_LOADINGDEFS=Objektdefinitionen werden geladen... +IDS_STATUS_LOADINGMAP=Landkarte wird geladen... +IDS_STATUS_MOVING=%s verschieben nach %s... +IDS_STATUS_PACK=%s packen... +IDS_STATUS_RELOADING=Arbeitsverzeichnis laden... +IDS_STATUS_RENAMING=%s umbenennen... +IDS_STATUS_UNPACK=%s entpacken... +IDS_STATUS_UPDATESCENARIO=Szenario wird aktualisiert... +IDS_STATUS_UPDATINGITEMS=Bearbeitete Objekte werden aktualisiert... +IDS_TEXT_ABORTSTARTCOUNTDOWN=Rundenstart abbrechen. +IDS_TEXT_ALERTTHEHOSTIFTHEHOSTISAW=Den Host aufwecken (wenn er nicht da ist). +IDS_TEXT_CANTBUILD=%s kann nicht bauen. +IDS_TEXT_CHANGETHECOLOROFTHESPECIF=Farbe des angegebenen Spielers ändern. +IDS_TEXT_CHANGEYOUROWNPLAYERCOLOR=Eigene Farbe ändern. +IDS_TEXT_COMMANDSAVAILABLEDURINGLO=Verfügbare Befehle in der Lobby: +IDS_TEXT_COMMANDSAVAILABLEDURINGGA=Verfügbare Befehle während des Spiels: +IDS_TEXT_COMPUTER=Computer +IDS_TEXT_CONTROLMODE=Netzwerkmodus +IDS_TEXT_DESKTOP=Desktop +IDS_TEXT_DETERMINEPLAYERVIEWTOFOLL=Sichtmodus wählen. +IDS_TEXT_DISCONNECTTHEGAMEFROMTHES=Verbindung zum Host trennen und alleine weiterspielen. +IDS_TEXT_DISPLAYNETWORKSTATISTICS=Netzwerk-Statistiken anzeigen. +IDS_TEXT_ENABLEORDISABLEFAIRCREW=Faire Crew an- oder abschalten. +IDS_TEXT_ENTERMISSIONPASSWORD=Neues Missionspasswort eingeben: +IDS_TEXT_EVALUATION=Auswertung +IDS_TEXT_EXECUTEASCRIPTCOMMAND=Einen Scriptbefehl ausführen. +IDS_TEXT_FOLLOWVIEWOFPLAYER=Sicht von Spieler %s verfolgen. +IDS_TEXT_HOME=Privat +IDS_TEXT_HOMEFOLDER=Persönlicher Ordner +IDS_TEXT_ITWASDECIDEDNOTTO=Entscheidung: nicht %s. +IDS_TEXT_ITWASDECIDEDTO=Entscheidung: %s. +IDS_TEXT_JOINALOCALPLAYERFROMTHESP=Lokaler Spielerbeitritt aus angegebener Spielerdatei. +IDS_TEXT_JOININCONSOLEMODENOTALLOW=Beitritt im Konsolenmodus nicht erlaubt! +IDS_TEXT_KICKCERTAINCLIENTSFROMTHE=Bestimmte Clients aus dem Spiel entfernen. +IDS_TEXT_KICKTHESPECIFIEDCLIENT=Den entsprechenden Client entfernen. +IDS_TEXT_LEAGUEWAITINGFOREVALUATIO=Warte auf Liga-Auswertung... +IDS_TEXT_LOBBYICON=Lobby-Icon +IDS_TEXT_LOCATION=Suchen in: +IDS_TEXT_MYDOCUMENTS=Eigene Dateien +IDS_TEXT_MYPICTURES=Eigene Bilder +IDS_TEXT_PAUSETHEGAME=anhalten +IDS_TEXT_PERFORMANACTIONINYOURNAME=Aktion im eigenen Namen ausführen. +IDS_TEXT_PLAYASOUNDFROMTHEGLOBALSO=Geräusch aus der globalen Sound-Gruppe abspielen. +IDS_TEXT_PLAYERIMAGE=Spielerbild +IDS_TEXT_PREVENTDEBUGMODEINTHISROU=Debug-Modus in dieser Runde unterbinden. +IDS_TEXT_PROGRAMDIRECTORY=Programmverzeichnis +IDS_TEXT_SCORE=Punkte +IDS_TEXT_SETANEWMAXIMUMNUMBEROFPLA=Maximale Spielerzahl für diese Runde festlegen. +IDS_TEXT_SETANEWNETWORKCOMMENT=Neuen Netzwerk-Kommentar setzen. +IDS_TEXT_SETANEWNETWORKPASSWORD=Neues Netzwerk-Passwort setzen. +IDS_TEXT_SETTHESPECIFIEDCLIENTTOOB=Den entsprechenden Client in den Zuschauermodus setzen. +IDS_TEXT_SETTOFASTMODESKIPPINGXFRA=Schneller Modus, es werden x Frames übersprungen. +IDS_TEXT_SETTONORMALSPEEDMODE=Normale Geschwindigkeit. +IDS_TEXT_STARTTHEROUNDWITHSPECIFIE=Die Runde starten (mit Zeitverzögerung). +IDS_TEXT_UNPAUSETHEGAME=fortsetzen +IDS_TEXT_USERPATH=Benutzerpfad +IDS_TEXT_VIEW=Sicht +IDS_TEXT_WARNINGIFTHEGAMEISCANCELL=Hinweis: wenn das Spiel abgebrochen wird, werden keine Ligapunkte vergeben. +IDS_TEXT_WARNINGNOLEAGUEPOINTSWILL=Hinweis: der Spieler gilt dadurch nicht als besiegt und seine Gegner erhalten für einen Sieg weniger Ligapunkte. +IDS_TEXT_YOUCANONLYSTARTONEVOTINGE=Voting-Timeout: eine neue Vote-Anfrage ist nur alle zwei Minuten möglich. +IDS_TYPE_ANIMATION=Animation +IDS_TYPE_BACKUP=Backup +IDS_TYPE_BINARY=Binärelement +IDS_TYPE_BITMAP=Grafikelement +IDS_TYPE_DEFFOLDER=Objektordner +IDS_TYPE_DEFINITION=Objekt +IDS_TYPE_DIRECTORY=Verzeichnis +IDS_TYPE_ENGINE=Engine +IDS_TYPE_EXECUTABLE=ausführbares Programm +IDS_TYPE_FOLDER=Rundenordner +IDS_TYPE_GROUP=Gruppendatei +IDS_TYPE_HELP=Hilfedatei +IDS_TYPE_HTML=Hypertext +IDS_TYPE_KEYFILE=Registrierungsschlüssel +IDS_TYPE_LINK=Internetlink +IDS_TYPE_LOG=Log +IDS_TYPE_MATERIAL=Material +IDS_TYPE_MUSIC=Musikstück +IDS_TYPE_NONE=Unbekanntes Objekt +IDS_TYPE_OBJECTINFO=Mannschaftsmitglied +IDS_TYPE_PLAYER=Spieler +IDS_TYPE_PORTRAIT=Portrait +IDS_TYPE_RICHTEXT=Beschreibungstext +IDS_TYPE_SCENARIO=Szenario +IDS_TYPE_SCRIPT=Script +IDS_TYPE_SOUND=Sound +IDS_TYPE_TEXT=Text +IDS_TYPE_UPDATE=Update +IDS_TYPE_VIDEO=Video +IDS_TYPE_ZIP=Zip-Archiv +IDS_VOTE_CANCELTHEROUND=die Runde abbrechen +IDS_VOTE_DOESNOTWANTTO=%s will nicht %s +IDS_VOTE_KICKCLIENT=Client %s entfernen +IDS_VOTE_LEAVETHEGAME=das Spiel verlassen +IDS_VOTE_SURRENDERWARNING=Es wurde entschieden, dass du das Spiel nicht verlassen darfst. Du kannst jedoch das Spiel aufgeben.||Willst Du das Ligaspiel aufgeben? +IDS_VOTE_VOTEDOUT=rausgeworfen +IDS_VOTE_WANTSTO=%s möchte %s +IDS_VOTE_WANTSTOALLOW=%s möchte %s. Zulassen? + diff --git a/planet/System.c4g/LanguageUS.txt b/planet/System.c4g/LanguageUS.txt new file mode 100644 index 000000000..2316f5731 --- /dev/null +++ b/planet/System.c4g/LanguageUS.txt @@ -0,0 +1,1333 @@ +IDS_LANG_NAME=English +IDS_LANG_INFO=Original language pack by RedWolf Design. +IDS_LANG_FALLBACK= +IDS_LANG_CHARSET=UTF-8 +IDS_BTN_ACCEPT=Accept +IDS_BTN_ACTIVATE=Activate +IDS_BTN_BACK=Back +IDS_BTN_BROWSE=Browse... +IDS_BTN_CANCEL=Cancel +IDS_BTN_CHAT=&Chat +IDS_BTN_CHECKFORUPDATES=Check for &updates +IDS_BTN_CONNECT=Connect +IDS_BTN_CONTINUEGAME=&Continue this round +IDS_BTN_NEXTSCENARIO=&Next scenario +IDS_DESC_NEXTSCENARIO=Continue with the next scenario. +IDS_BTN_DEACTIVATE=Deactivate +IDS_BTN_DELETE=Delete +IDS_BTN_DL=Download +IDS_BTN_DUPLICATE=Duplicate +IDS_BTN_ENDROUND=&End game +IDS_BTN_EXPLODE=Explode +IDS_BTN_EXTENDED=Extended -> +IDS_BTN_GAMES=&Games +IDS_BTN_JOIN=Join +IDS_BTN_LOCALGAME=&Start Game +IDS_BTN_MESSAGE=Message +IDS_BTN_NETWORKGAME=Start &Network Game +IDS_BTN_NEW=New +IDS_BTN_NEXTMISSION=&Next mission +IDS_BTN_NO=No +IDS_BTN_OBJECTS=Objects +IDS_BTN_OK=OK +IDS_BTN_OPEN=Open +IDS_BTN_PACK=Pack +IDS_BTN_PRESETS=Presets +IDS_BTN_PROPERTIES=Properties +IDS_BTN_REGISTERNOW=&Register now! +IDS_BTN_RELOAD=Reloa&d +IDS_BTN_RENAME=Rename +IDS_BTN_RESETCONFIG=Reset configuration +IDS_BTN_RESETKEYBOARD=Reset all +IDS_BTN_RETRY=Retry +IDS_BTN_SIMPLE=<- Basic +IDS_BTN_START=Start +IDS_BTN_STARTGAME=&Start +IDS_BTN_UNPACK=Unpack +IDS_BTN_USEACTIVATED=Use current selection as preset +IDS_BTN_VOLUME=Volume control +IDS_BTN_YES=Yes +IDS_CHAT_NOTCONNECTED=not connected +IDS_CHAT_SERVER=Server +IDS_CNS_ACTION=Action: +IDS_CNS_CONSOLE=Console +IDS_CNS_CONTENTS=Contents: +IDS_CNS_DROPNODEF=Object invalid or not loaded: %s +IDS_CNS_EFFECTS=Effects: +IDS_CNS_EXACTTOSTATIC=When switching from exact to dynamic mode\nall changes made in dynamic mode will be lost. +IDS_CNS_FILLNOHALT=The fill tool cannot be used in halt mode. +IDS_CNS_GAMECLOSED=Game cleared. +IDS_CNS_GAMESAVED=Game saved. +IDS_CNS_INFO=Info +IDS_CNS_LOCALS=Local variables: +IDS_CNS_MULTIPLEOBJECTS=%i selected objects. +IDS_CNS_NAMES=Names +IDS_CNS_NEWPLRVIEWPORT=New for %s +IDS_CNS_NOCHILDSAVE=%s is located in a group folder.\nScenarios cannot be saved in closed group folders. +IDS_CNS_NOFULLSCREENPLRS=Fullscreen mode requires at least one participating player. +IDS_CNS_NOGAMEOVERSCEN=You should not overwrite the original scenario file with a save game. +IDS_CNS_NOMATDEF=Cannot draw because selected\nmaterial-texture combination '%s-%s'\nis not defined in the texture table. +IDS_CNS_NONETEDIT=No editing while replaying. +IDS_CNS_NOOBJECT=No selected objects. +IDS_CNS_NOTHING=Nothing +IDS_CNS_OWNER=Owner: %s +IDS_CNS_PLRQUIT=Remove %s +IDS_CNS_PLRQUITNET=Remove %s (%s) +IDS_CNS_PROPERTIES=Properties +IDS_CNS_REGONLY=Console mode is available in the registered version only. +IDS_CNS_SAVEASERROR=Error while saving the scenario to %s. +IDS_CNS_SAVERROR=Error while saving the scenario. +IDS_CNS_SCENARIOSAVED=Scenario saved. +IDS_CNS_SCRIPT=Script +IDS_CNS_SCRIPTCREATEDOBJECTS=This scenario's script has created objects on initialization. +IDS_CNS_TITLE=Title +IDS_CNS_TOOLS=Tools +IDS_CNS_TYPE=Type: %s (%s) +IDS_CNS_VIEWPORT=Viewport +IDS_CNS_WARNDOUBLE=In order to avoid double creation, the script's 'Initialize' function should be modified. +IDS_COMM_ACQUIRE=Acquisition +IDS_COMM_ACTIVATE=Activation +IDS_COMM_ATTACK=Attack +IDS_COMM_BUILD=Build +IDS_COMM_BUY=Buy +IDS_COMM_CALL=Object call +IDS_COMM_CHOP=Chop +IDS_COMM_CONSTRUCT=Construction +IDS_COMM_CONTEXT=Context +IDS_COMM_DIG=Digging +IDS_COMM_DROP=Drop +IDS_COMM_ENERGY=Power supply +IDS_COMM_ENTER=Enter +IDS_COMM_EXIT=Exit +IDS_COMM_FOLLOW=Follow +IDS_COMM_GET=Get +IDS_COMM_GRAB=Grab +IDS_COMM_JUMP=Jump +IDS_COMM_MOVETO=Movement +IDS_COMM_NONE=No order +IDS_COMM_PUSHTO=Push +IDS_COMM_PUT=Put +IDS_COMM_RETRY=Retry +IDS_COMM_SELL=Sell +IDS_COMM_TAKE2=Take out +IDS_COMM_TAKE=Take +IDS_COMM_THROW=Throw +IDS_COMM_TRANSFER=Movement +IDS_COMM_UNGRAB=Let go +IDS_COMM_WAIT=Wait +IDS_CON_ACTIVATEFROM=Activate object in %s +IDS_CON_ATTACK=Attack %s. +IDS_CON_BUILD=Build %s. +IDS_CON_BUILDINFO=Construction material +IDS_CON_BUILDMATNEED=%s|needs +IDS_CON_BUILDMATNONE=%s needs|no more material. +IDS_CON_BUY=Buy +IDS_CON_CHOP=Chop %s. +IDS_CON_COLLECT=Collect %s. +IDS_CON_CONTENTS=Contents +IDS_CON_DIGOUT=Dig out %s. +IDS_CON_DOUBLECLICK=(Double click) +IDS_CON_ENTER=Enter %s. +IDS_CON_EXIT=Exit building +IDS_CON_FAILURE=%s failed! +IDS_CON_FAILUREOF=%s of %s failed! +IDS_CON_GET=Take object from %s. +IDS_CON_GRAB=Grab %s. +IDS_CON_HELP=Help +IDS_CON_HOME=Back to base +IDS_CON_INFO=Info +IDS_CON_ITEMS=items +IDS_CON_JUMP=Jump. +IDS_CON_NAME=%s +IDS_CON_PLAYERMENU=Player menu +IDS_CON_PUT2=Drop +IDS_CON_PUT=Drop %s in %s +IDS_CON_SELECT=Select %s. +IDS_CON_SELL=Sell +IDS_CON_UNGRAB=Let go of %s. +IDS_CON_VEHICLEPUT=Push %s into %s. +IDS_CON_VEHICLES=Vehicles +IDS_CTL_ACCESS=Access: +IDS_CTL_ACTIVE=Active +IDS_CTL_ALL=All +IDS_CTL_AMPLITUDE=Amplitude: +IDS_CTL_ANIMALS=Animals +IDS_CTL_AUTHOR=Author: %s +IDS_CTL_AUTOEDITSCAN=Background update edited objects +IDS_CTL_AUTOMATICUPDATES=Enable automatic updates +IDS_CTL_BITDEPTH=Color Depth +IDS_CTL_BITMAP=Bitmap (BMP) +IDS_CTL_BITMAP_PNG=Bitmap (PNG) +IDS_CTL_BUILDINGS=Startup buildings: +IDS_CTL_CHANNEL=Channel: +IDS_CTL_CHAT=Cha&t: +IDS_CTL_CLIMATE2=hot +IDS_CTL_CLIMATE3=cold +IDS_CTL_CLIMATE=Climate +IDS_CTL_COLOR=Color +IDS_CTL_COMMENT=Comment +IDS_CTL_CONTROL=Control +IDS_CTL_CONTROLRATE=Control rate +IDS_CTL_CONTROLRATE_DESC=Specifies the time interval in frames, at which control data is being exchanged via network +IDS_CTL_CREATEDMAP=Generated map +IDS_CTL_CREW=Crew: +IDS_CTL_CUID=User-Id: +IDS_CTL_DEBUGMODE=Debug mode +IDS_CTL_DEFBYCHOICE=local and activated object definitions +IDS_CTL_DESCRIPTION=Description +IDS_CTL_DETAILS=Details +IDS_CTL_DIG=Dig +IDS_CTL_DL_PROGRESS=Progress: +IDS_CTL_DL_TITLE=Download +IDS_CTL_DOWNSTOP=Down / Stop +IDS_CTL_DYNAMICMAP=Dynamic map +IDS_CTL_EARTHQUAKES2=none +IDS_CTL_EARTHQUAKES3=plenty +IDS_CTL_EARTHQUAKES=Earthquakes +IDS_CTL_ENABLEROUNDOPTIONS=Allow scenario properties +IDS_CTL_ENGINE=Engine +IDS_CTL_ENTERCOMMENT=Please enter the desired comment for this game: +IDS_CTL_ENVIRONMENTOBJECTS=Environment objects +IDS_CTL_EXACTMAP=Exact map +IDS_CTL_FAIRCREWSTRENGTH=Strength of "Fair Crew" +IDS_CTL_FAIRCREWSTRONG=strong +IDS_CTL_FAIRCREWWEAK=weak +IDS_CTL_FAIRCREW_DESC=Fair clonks: All Clonks have the same strength. +IDS_CTL_FONT=Font +IDS_CTL_FRONTEND=Frontend +IDS_CTL_FULLNAME=Player name: +IDS_CTL_GAME=Game +IDS_CTL_GAMEFUNCTIONS=Game Functions +IDS_CTL_GAMEPADFORMENU=Use gamepad for menu control. +IDS_CTL_GAMESPEEDUP=Increase game speed +IDS_CTL_GAMESPEEDDOWN=Decrease game speed +IDS_CTL_GFXENGINE=Renderer +IDS_CTL_GOALS=Goals: +IDS_CTL_GRAVITY2=weak +IDS_CTL_GRAVITY3=strong +IDS_CTL_GRAVITY=Gravity +IDS_CTL_HEIGHT=Height: +IDS_CTL_HOMEBASE=Objects available at home base: +IDS_CTL_ICON=Icon: +IDS_CTL_IMPORTIMAGEAS=Import image as: +IDS_CTL_INEARTHAMOUNTS=Objects in earth amount +IDS_CTL_INEARTHTYPES=Objects in earth types +IDS_CTL_INETSERVER=&Internet +IDS_CTL_IRCCHAT=IRC-Chat +IDS_CTL_KEYFILE=Registration key: +IDS_CTL_KNOWLEDGE=Constructable objects: +IDS_CTL_LANGUAGE=Language +IDS_CTL_LEAGUE_ACCOUNT=League user name: +IDS_CTL_LEAGUE_CHK_PLRPW=Specify league password +IDS_CTL_LEAGUE_PLRPW2=League password (repeat): +IDS_CTL_LEAGUE_PLRPW=League password: +IDS_CTL_LEFT=Left +IDS_CTL_LOCALMATS= with local material definitions +IDS_CTL_LOCALONLY=local objects definitions only +IDS_CTL_LOCATION=in %s +IDS_CTL_LOST=lost +IDS_CTL_LOUD=loud +IDS_CTL_MAGIC2=Magic: +IDS_CTL_MANUALCLIP=Manual clipping +IDS_CTL_MAPPLAYEREXTEND=Width according to player number +IDS_CTL_MATERIAL=Material +IDS_CTL_MAXPLAYERS=Max. players: +IDS_CTL_MENUSYSTEM=Frontend +IDS_CTL_MESSAGEBOARDBACK=Scroll messages back +IDS_CTL_MESSAGEBOARDFORWARD=Scroll messages forward +IDS_CTL_METEORITES2=none +IDS_CTL_METEORITES3=plenty +IDS_CTL_METEORITES=Meteorites +IDS_CTL_MMTIMER=Disable multimedia timer +IDS_CTL_MUSIC=Music +IDS_CTL_NAME2=Name: +IDS_CTL_NAME=Name +IDS_CTL_NESTS=Nests +IDS_CTL_NICK=Nickname: +IDS_CTL_NOADDBLT=Disable additive blits +IDS_CTL_NOALPHAADD=Disable additive alpha +IDS_CTL_NOCLRFADE=Disable color fades +IDS_CTL_NOGOAL=No game goal +IDS_CTL_NOLANGINFO=Language pack not available. +IDS_CTL_NONE=none +IDS_CTL_NORMALCREW_DESC=Trained Clonks: Clonks have different strength according to their rank. +IDS_CTL_OFF=off +IDS_CTL_ON=on +IDS_CTL_OPENBOTTOM=Bottom open +IDS_CTL_OPENDIRECTORY=Open directory +IDS_CTL_OPENTOP=Top open +IDS_CTL_PASSWORDOPTIONAL=Password (optional): +IDS_CTL_PERIOD=Period: +IDS_CTL_PHASE=Phase: +IDS_CTL_PICTURE=Picture: +IDS_CTL_PLAYER1=Player 1 +IDS_CTL_PLAYER2=Player 2 +IDS_CTL_PLAYER3=Player 3 +IDS_CTL_PLAYER4=Player 4 +IDS_CTL_PLAYER=Player +IDS_CTL_PLAYERMENU=Player menu +IDS_CTL_PLAYERS1=1 player +IDS_CTL_PLAYERS2=2 players +IDS_CTL_PLAYERS3=3 players +IDS_CTL_PLAYERS4=4 players +IDS_CTL_PLEASEWAIT=Please wait... +IDS_CTL_POINTFILTERING=Disable interpolation +IDS_CTL_PREVIEWFOR=Preview for +IDS_CTL_PRODUCTION=Resupply of objects available at home base: +IDS_CTL_RAIN2=none +IDS_CTL_RAIN3=plenty +IDS_CTL_RAIN=Rain +IDS_CTL_RANDOM=Random: +IDS_CTL_REALNAME=Real name: +IDS_CTL_RECORD=&Record +IDS_CTL_REGISTERED=Thank you for your registration! +IDS_CTL_REGISTEREDONLY=Available in the registered version only. +IDS_CTL_RESOLUTION=Resolution +IDS_CTL_RICHTEXT=Description +IDS_CTL_RIGHT=Right +IDS_CTL_RULES=Rules: +IDS_CTL_SCENARIOUSES=Scenario uses +IDS_CTL_SCOREBOARD=Scoreboard (if available) +IDS_CTL_SCREENSHOT=Screenshot +IDS_CTL_SCREENSHOTEX=Screenshot (full game area) +IDS_CTL_SCRIPT=Script +IDS_CTL_SCRIPTPLAYERS=Script players +IDS_CTL_SEASON2=spring +IDS_CTL_SEASON3=winter +IDS_CTL_SEASON=Season +IDS_CTL_SELECTLEFT=Select left +IDS_CTL_SELECTRIGHT=Select right +IDS_CTL_SELECTTOGGLE=Select toggle +IDS_CTL_SENDDEFRELOAD=Send runtime object updates to engine +IDS_CTL_SENDMESSAGE=Send message +IDS_CTL_SHOW=Display +IDS_CTL_SHOWALLRESOLUTIONS=Show all resolutions +IDS_CTL_SHOWLAYERS=Layers +IDS_CTL_SHOWSCREEN=Screen size +IDS_CTL_SILENT=quiet +IDS_CTL_SKIPDEFS=Definitions *not* to load: +IDS_CTL_SMOKE=Effects Level +IDS_CTL_SMOKEHI=High +IDS_CTL_SMOKELOW=Low +IDS_CTL_SOUND=Sound +IDS_CTL_SOUNDFX=Sound effects +IDS_CTL_SPECIAL1=Special 1 +IDS_CTL_SPECIAL2=Special 2 +IDS_CTL_SPECIFIEDDEFS=local and preset object definitions: +IDS_CTL_STATICMAP=Static map +IDS_CTL_SYMBOLS=Symbols +IDS_CTL_TEXT=Text +IDS_CTL_TEXTURE=Texture +IDS_CTL_THROW=Throw +IDS_CTL_THUNDERSTORMS2=none +IDS_CTL_THUNDERSTORMS3=plenty +IDS_CTL_THUNDERSTORMS=Thunderstorms +IDS_CTL_TIMEADVANCE2=slow +IDS_CTL_TIMEADVANCE3=fast +IDS_CTL_TIMEADVANCE=Time advance +IDS_CTL_TOTALPLAYINGTIME=Total playing time: %02d:%02d:%02d +IDS_CTL_TROUBLE=Troubleshooting +IDS_CTL_UNREGISTERED=NOT REGISTERED +IDS_CTL_UPDATE=&Update +IDS_CTL_UPJUMP=Up / Jump +IDS_CTL_USEOTHERSERVER=Use alternate internet server +IDS_CTL_USESHELL=Use Windows Shell to edit files +IDS_CTL_VALUE=Value +IDS_CTL_VALUESFOR=Values for +IDS_CTL_VEGETATIONAMOUNTS=Vegetation amount +IDS_CTL_VEGETATIONTYPES=Vegetation types +IDS_CTL_VEHICLES=Startup vehicles: +IDS_CTL_VERBOSEOBJECTS=Show object definition overload +IDS_CTL_VIEW=View: +IDS_CTL_VOLCANOES2=none +IDS_CTL_VOLCANOES3=plenty +IDS_CTL_VOLCANOES=Volcanoes +IDS_CTL_VOLUME=Volume +IDS_CTL_WATERLEVEL=Water level: +IDS_CTL_WEALTH=Wealth: +IDS_CTL_WEBCODE=WebCode: +IDS_CTL_WIDTH=Width: +IDS_CTL_WIND2=left +IDS_CTL_WIND3=right +IDS_CTL_WIND=Wind +IDS_CTL_WON=won +IDS_CTL_ZIP=Zip +IDS_CTL_ZOOM=Zoom factor: +IDS_DESC_AUTOMATICUPDATES=With this option enabled, the program will automatically check for updates once a day at program start. +IDS_DESC_BREATH=Breath: +IDS_DESC_CHANGESTHEIMAGEYOUSEEINTH2=Changes the image you see in the multiplayer lobby and in the game evaluation dialog. +IDS_DESC_CHANGESTHEIMAGEYOUSEEINTH=Changes the image you see in the player selection dialog. +IDS_DESC_CHANGESTHEWAYCONTROLDATAI=Changes the way control data is exchanged between network clients. +IDS_DESC_CHECKONLINEFORNEWVERSIONS=Check online for new versions. +IDS_DESC_CLIENTS=Clients: +IDS_DESC_COMMENTDESCRIPTIONFORTHIS=Comment: description for this round which can be seen by other players. +IDS_DESC_CONNECTSTOANIRCCHATSERVER=Connects to an IRC chat server. +IDS_DESC_CONTINUETHEROUNDWITHNOFUR=Continue playing this round (with no further evaluation). +IDS_DESC_CONTROLWAITTIME=Lag +IDS_DESC_CREWRENAME=Rename the selected crew member. +IDS_DESC_DATE=Game saved %i.%i.%i %02d:%02d. +IDS_DESC_DATENET=Network game from %i.%i.%i %02d:%02d. +IDS_DESC_DATEREC=Recording from %i.%i.%i %02d:%02d. +IDS_DESC_DEFSPECS=Object definitions: +IDS_DESC_DIG=Dig: +IDS_DESC_DURATION=Playing time: %02d:%02d:%02d. +IDS_DESC_ENDTHEROUND=End the round. +IDS_DESC_ENERGY=Energy: +IDS_DESC_ENGINE=Engine modules are used to run the game.\n\nWhen selecting a scenario, the red check mark will indicate which engine is going to be used to run that scenario.\n\nBy activating or deactivating an engine (check box will turn green) you can determine which engine will be used if there are multiple, equally well suited engines present. +IDS_DESC_EXPECTING=Awaiting participants. +IDS_DESC_FAIRCREWSTRENGTH=Controls the strength of Clonks in a game with "Fair Crew". +IDS_DESC_FIGHT=Fight: +IDS_DESC_FONTSIZE=Select font size. When you change the screen resolution, the font size will be automatically adjusted. +IDS_DESC_GAMEMUSIC=Enable background music in the game. +IDS_DESC_GAMEPADFORMENU=If enabled, you can control the startup menu system with your gamepad. +IDS_DESC_GAMEPAUSED=Game is paused +IDS_DESC_GAMERUNNING=Game is running +IDS_DESC_GAMESOUND=Enable sound effects in the game. +IDS_DESC_GOALFULFILLED=Goal %s fulfilled: %s +IDS_DESC_GOALNOTFULFILLED=Goal %s not fulfilled: %s +IDS_DESC_GOTOTHEONLINEREGISTRATION=Go to the online registration form. +IDS_DESC_HANGLE=Hangle: +IDS_DESC_JUMP=Jump: +IDS_DESC_LASTGAME=\nLast round: %s\nDate: %s\nDuration: %s\nScore: %i\n +IDS_DESC_LEAGUECHECKPASSWORD=Enable to enter your own password. If you do not enter a password of your own, the personal WebCode will be used which is already stored on this system. +IDS_DESC_LEAGUESCOREANDPROJECTEDGA=League score and projected gain if this player's team wins the round. +IDS_DESC_LISTOFPLAYERSWHOPARTICIPA=List of players who participated in the game. +IDS_DESC_MAGIC=Magic: +IDS_DESC_MENUMUSIC=Enable background music in the startup menu. +IDS_DESC_MENUSOUND=Enable sound effects in the startup menu (such as buttons clicking). +IDS_DESC_NEXTMISSION=Go on to the next mission. +IDS_DESC_NOPROMO=No further promotions. +IDS_DESC_NOTINITED=Not initialised +IDS_DESC_OBJECT=Type: %s\nExperience: %i\nRounds: %i\nDied: %i x\n%s\nPlaying time: %s\nBirthday: %s\n\n +IDS_DESC_OLDANDNEWSCORE=Old and new score. +IDS_DESC_PLAYER=Score: %i\nRounds: %i (%i won %i lost)\nPlaying time: %s\nComment: %s\n +IDS_DESC_PLAYERSCONTROLLEDBYCOMPUT=Players controlled by computer. +IDS_DESC_PLRS=Players: +IDS_DESC_PROMO=Promotion to %s\nat: %i +IDS_DESC_PUSH=Push: +IDS_DESC_RESETCONFIG=Reset all configuration values to factory default. +IDS_DESC_RESOURCE=The files shown here are used during this round. Resources which were dynamically loaded via the network can be permanently stored on this computer for later use by clicking the save symbol. +IDS_DESC_SCALE=Scale: +IDS_DESC_SELECTAPICTUREANDORLOBBYI=Select a picture and/or lobby icon for your player. +IDS_DESC_SELECTFONT=Select text font. Some fonts may not contain all characters necessary to display some languages. In this case, select a different font. +IDS_DESC_SHOWALLRESOLUTIONS=Allow selection of very large and very small resolutions. +IDS_DESC_SHOWSAVAILABLENETWORKGAME=Shows running network games. +IDS_DESC_STOREPORTRAITS=Store a copy of the standard portrait in each crew file. +IDS_DESC_SWIM=Swim: +IDS_DESC_TEAM=Team %s +IDS_DESC_THROW=Throw: +IDS_DESC_UNASSOCIATEDSAVEGAMEPLAYE=Unassociated savegame players. +IDS_DESC_UNKNOWNGAMESTATE=Game is in an unknown state +IDS_DESC_VERSION=Engine version: %s +IDS_DESC_VOLUMEMUSIC=Volume of background music. +IDS_DESC_VOLUMESOUND=Volume of sound effects. +IDS_DESC_WAITFORHOST=Waiting for host connection +IDS_DESC_WALK=Run: +IDS_DEV_LICENSE=Warning: the editor can only be used in conjunction with the developer mode documentation. The documentation is available online at http://www.clonk.de/ in the "developers" section and contains the password which is required to start this program.\n\nThe editor and all other editing features of Clonk are used at your own risk. No support will be given by the author (RedWolf Design). The developer mode is available to registered players only.\n\nThe developer mode gives you full access to all game data (scenarios, object definitions, player files). Through improper use you can not only destroy all the fun in the game, but also make the whole game unplayable.\n\nAnybody using the advanced editing features should do so with great care and responsibility and try to produce useful extensions to the game, thus serving the whole community.\n\nGame content of the shareware package may be modified and used to create free game extensions and for this purpose only. Game content created by players using the developer mode may not be used commercially.\n\nDistributing "hacked" executable files of the shareware package is illegal. All rights of the original game content remain with RedWolf Design. +IDS_DLGTIP_ABOUT=Display program info and credits. +IDS_DLGTIP_BACKMAIN=Back to main menu. +IDS_DLGTIP_CANCEL=Cancel. +IDS_DLGTIP_CHAT=Enter chat messages here and send them with enter. +IDS_DLGTIP_CHATWIN=Messages +IDS_DLGTIP_CLASSIC=Clonks run until they are stopped using the 'stop' key. +IDS_DLGTIP_CLEAR=Clears the selection. +IDS_DLGTIP_COPY=Copies the selection to the clipboard. +IDS_DLGTIP_CUT=Moves the selection to the clipboard. +IDS_DLGTIP_EXIT=End the program. +IDS_DLGTIP_GAMEGO=Starts the game. +IDS_DLGTIP_JUMPANDRUN=Clonks will stop as soon as the movement key is released. +IDS_DLGTIP_NETWORKGAME=Start a network game or join an existing one. +IDS_DLGTIP_NEWPLAYER=Create a new player file. +IDS_DLGTIP_OK2=Confirm. +IDS_DLGTIP_OK=Close dialog. +IDS_DLGTIP_OPTIONS=Change program options. +IDS_DLGTIP_PASTE=Inserts the contents of the clipboard. +IDS_DLGTIP_PING=Ping +IDS_DLGTIP_PLAYERCOLORS=Selects a standard color. +IDS_DLGTIP_PLAYERCOLORSTGB=Composes a custom player color from red, green, and blue. +IDS_DLGTIP_PLAYERCONTROL=Selects a control method. +IDS_DLGTIP_PLAYERCONTROLMOUSE=Activates mouse control in addition to the selected control method. +IDS_DLGTIP_PLAYERCREW=Display the permanent crew of the selected player. +IDS_DLGTIP_PLAYERDELETE=Delete the selected player file. +IDS_DLGTIP_PLAYERFILES=List of all player files stored on this computer. +IDS_DLGTIP_PLAYERPROPERTIES=Change player color and preferred controls. +IDS_DLGTIP_PLAYERSELECTION=Select the players who are to take part in the next round. +IDS_DLGTIP_PROGRESS=Progress bar +IDS_DLGTIP_RECORD=Record game: the round is recorded for later playback. +IDS_DLGTIP_SCENSELNEXT=Open the selected folder or start the selected scenario. +IDS_DLGTIP_SEARCHINTERNETGAME=Internet games: besides local network games also search for internet games. +IDS_DLGTIP_SELALL=Selects the complete text +IDS_DLGTIP_SELECTEDPLAYERS=These players will take part in the next round. +IDS_DLGTIP_SELECTSCENARIO=Select the desired folder or scenario here. +IDS_DLGTIP_STARTGAME=Start a local game without network support. +IDS_DLGTIP_STARTINTERNETGAME=Internet game: other players can see this round on the internet. +IDS_DLGTIP_STARTLEAGUEGAME=League game: this round will be evaluated in the league. +IDS_DLGTIP_UPDATE=Update available: click here to download and install the new version of the game. +IDS_DLG_ABORT=Abort +IDS_DLG_ABOUT=&About +IDS_DLG_CANCEL=Cancel +IDS_DLG_CHAT=Chat +IDS_DLG_CLASSIC=Classic +IDS_DLG_CLEAR=Clear +IDS_DLG_CLOSE=&Close +IDS_DLG_COPY=Copy +IDS_DLG_CUT=Cut +IDS_DLG_DEFINITION=Object Definition +IDS_DLG_DEFINITIONS=Object Definitions +IDS_DLG_DEVELOPER=Developer +IDS_DLG_DYNAMIC=Dynamic landscape +IDS_DLG_EDITOR=Extern +IDS_DLG_EDITORSWITCH=Press F6 to switch to the game. +IDS_DLG_ENVIRONMENT=Environment +IDS_DLG_ERROR=Error +IDS_DLG_EXACT=Exact landscape +IDS_DLG_EXIT=E&xit +IDS_DLG_EXPLORER=Editor +IDS_DLG_GAME=Game +IDS_DLG_GAMEGO=&Start +IDS_DLG_GAMEPAD=Gamepad +IDS_DLG_GRAPHICS=Graphics +IDS_DLG_IDSELECT=Object selection +IDS_DLG_INVALIDENTRY=Invalid Entry +IDS_DLG_JUMPANDRUN=Jump'n'Run +IDS_DLG_KEYBOARD=Keyboard +IDS_DLG_LANDSCAPE=Landscape +IDS_DLG_LEAGUESIGNUP=League Login +IDS_DLG_LEAGUESIGNUPCONFIRM=Confirm League Login +IDS_DLG_LEAGUESIGNUPFAILED=League Login Failed +IDS_DLG_LEAGUESIGNUPON=League Login on %s +IDS_DLG_LICENSE=Developer Mode License Agreement +IDS_DLG_LOBBY=Lobby +IDS_DLG_LOG=Error Log +IDS_DLG_MISSIONACCESS=Mission Access +IDS_DLG_MOVEMENT=Movement +IDS_DLG_NETSTART=Start Network Game +IDS_DLG_NETWORK=Network +IDS_DLG_NEW=New +IDS_DLG_NO=&No +IDS_DLG_NOPLAYERSSELECTED=none selected +IDS_DLG_OK=&OK +IDS_DLG_OPTIONS=&Options +IDS_DLG_PASSWORD=Password +IDS_DLG_PASTE=Paste +IDS_DLG_PLAYER2=Player Properties +IDS_DLG_PLAYERS=&Players +IDS_DLG_PLAYERSELECTION=&Player Selection +IDS_DLG_PLAYERSTART=Equipment +IDS_DLG_PROGRAM=Program +IDS_DLG_PROPERTIES=Properties +IDS_DLG_REGISTRATION=Registration +IDS_DLG_RESOURCES=Resources +IDS_DLG_SCENARIO=Scenario +IDS_DLG_SCENARIOPROPERTIES=Scenario Properties +IDS_DLG_SCENARIOS=Scenarios +IDS_DLG_SCENARIOTITLE=Loaded scenario +IDS_DLG_SELALL=Select all +IDS_DLG_SOUND=Sound +IDS_DLG_STARTGAME=&Start Game +IDS_DLG_STATIC=Static landscape +IDS_DLG_TOOLS=Landscape tools +IDS_DLG_VERSION=Version %s +IDS_DLG_VOTING=Voting +IDS_DLG_WEATHER=Weather +IDS_DLG_YES=&Yes +IDS_DL_ACTIVEDOWNLOADS=Active downloads: +IDS_DL_CANCEL=Cancel download +IDS_DL_CAPTION=Downloads +IDS_DL_CLOSE=Close +IDS_DL_FILENAME=Filename +IDS_DL_FILEPROGRESS=Progress +IDS_DL_FILESIZE=Size +IDS_DL_STATUSCANCELLED=cancelled +IDS_DL_STATUSCONNECTING=connecting... +IDS_DL_STATUSDONE=done +IDS_DL_STATUSERROR=failed +IDS_DL_STATUSWAITING=waiting... +IDS_DL_TARGET=Target +IDS_EDITOR_WELCOME=Use at your own risk. +IDS_ERR_CLONKCOLLISION=A Clonk with the file name "%s" exists already. +IDS_ERR_CONFIG=Configuration error +IDS_ERR_CONFREAD=Could not read configuration: %s +IDS_ERR_CONFSAVE=Could not save configuration: %s +IDS_ERR_DDRAW=DirectDraw failure. Please check the DirectX setup on this computer. To do this, run 'dxdiag.exe' from the Windows start menu. You need DirectX Version 8.1 or higher to run the game. +IDS_ERR_DELOLDTITLE=Error deleting old title from file "%s": %s +IDS_ERR_ERRORADDINGNEWTITLEFORFIL=Error adding new title for file \"%s\": %s +IDS_ERR_ERRORLOADINGROUNDRESULTS=Error loading round results. +IDS_ERR_ERRORSAVINGROUNDRESULTS=Error saving round results. +IDS_ERR_ERRORSAVINGTEAMS=Error saving teams. +IDS_ERR_ERRORWHILECREATINGJOINDAT=Error while creating join data +IDS_ERR_FAILURE=...failed. +IDS_ERR_FATAL=FATAL ERROR: %s +IDS_ERR_FILEEXISTS=A file with the name "%s" exists already. +IDS_ERR_FONTDEFS=Error loading font definitions +IDS_ERR_GAMELEFTVIAPLAYERMENU=Game left via player menu. +IDS_ERR_GBACK=Landscape error. +IDS_ERR_GFX_REGISTERMAIN=Could not register main graphic groups +IDS_ERR_INITFONTS=Error initializing fonts +IDS_ERR_INSUFFICIENTPARAMETERS=/%s: insufficient parameters +IDS_ERR_INVALIDCHANNELNAME=Invalid channel name. +IDS_ERR_INVALIDID= Definition %s not loaded: Invalid ID +IDS_ERR_INVALIDNICKNAME2=/%s: invalid nick name +IDS_ERR_INVALIDNICKNAME=Invalid nickname. +IDS_ERR_INVALIDPASSWORDMAX31CHARA=Invalid password. Maximum 31 characters. No spaces allowed. +IDS_ERR_INVALIDREPLYFROMSERVER=Invalid reply from server. +IDS_ERR_INVALIDSYSGRP=System.c4g not found or invalid. +IDS_ERR_IRCCONNECTIONFAILED=IRC connection failed: %s +IDS_ERR_JOINPLR_NOFILE=Cannot join player %s: File not found! +IDS_ERR_JOINPLR_NOLOCALCLIENT=Cannot join player %s to client %d: Client not local! +IDS_ERR_JOINQUEUEPLRS=C4PlayerInfoList::LocalJoinUnjoinedPlayersInQueue failed to join player %s! +IDS_ERR_LEAGUEERRORREPORTINGUNEXP=League: Error reporting unexpected disconnect: %s +IDS_ERR_LOAD_PLRINFO=Error restoring savegame information for player %s! +IDS_ERR_LOAD_RECR_NOEXTRACT=Error recreating player %s from %s: Extract failed! +IDS_ERR_LOAD_RECR_NOFILE=Error recreating player %s: No file! +IDS_ERR_LOAD_RECR_NOFILEFROMNET=C4PlayerInfoList::RecreatePlayers couldn't join player %s: No file. +IDS_ERR_MOVER=MassMover data error. +IDS_ERR_NOFILE=Could not load file +IDS_ERR_NOGFXSYS=Graphics system error. +IDS_ERR_NOKEYBOARD=Error initializing keyboard bindings +IDS_ERR_NOPLRFILERECR=The saved game's player files were not found and could not be reconstructed. +IDS_ERR_NOPLRNETRECR=Error restoring network runtime join players +IDS_ERR_NOPLRSAVEINFORECR=Error restoring savegame player infos +IDS_ERR_NOPLRSAVERECR=Error restoring savegame players +IDS_ERR_NORECORD=Could not start record +IDS_ERR_NOTCONNECTEDTOSERVER=Not connected to server. +IDS_ERR_NOTONACHANNEL=Not on a channel. +IDS_ERR_OPENFILE=Error opening file "%s": %s +IDS_ERR_PLAYERSTOOLONG=Player "%s" has been deactivated: Too many activated players or path too long! +IDS_ERR_PLEASESELECTAFILEFIRST=Please select a file first! +IDS_ERR_PLRNAME_EMPTY=You must specify a player name! +IDS_ERR_PLRNAME_TAKEN=%s is already taken +IDS_ERR_PLRNOCREW=%s does not have a crew yet! +IDS_ERR_PXS=PXS data error. +IDS_ERR_RENAMEFILE=Error renaming file "%s" to "%s". +IDS_ERR_REPLAYREAD=Could not read playback data! +IDS_ERR_SAVE_CORE=SaveGame: Error saving core +IDS_ERR_SAVE_DESC=SaveGame: Error saving desc +IDS_ERR_SAVE_GAMETITLE=SaveGame: Error saving game title +IDS_ERR_SAVE_INFO=SaveGame: Error saving info +IDS_ERR_SAVE_LANDSCAPE=SaveGame: Error saving landscape +IDS_ERR_SAVE_OBJECTS=SaveGame: Error saving objects +IDS_ERR_SAVE_PLAYERS=SaveGame: Error saving players +IDS_ERR_SAVE_RESTOREPLAYERINFOS=SaveGame: Error saving restore player infos +IDS_ERR_SAVE_RUNTIMEDATA=SaveGame: Error saving game data +IDS_ERR_SAVE_SCENSECTIONS=SaveGame: Error saving scenario sections +IDS_ERR_SAVE_SCRIPT=SaveGame: Error saving script +IDS_ERR_SAVE_SCRIPTSTRINGS=SaveGame: Error saving strings +IDS_ERR_SAVE_TARGETGRP=SaveGame: Unable to create target group at %s. +IDS_ERR_SAVE_TITLE=SaveGame: Error saving title +IDS_ERR_SCENSECTION=Error loading scenario section "%s" +IDS_ERR_STRINGS=String table error +IDS_ERR_SWITCHRES=Error switching resolution: %s +IDS_ERR_TIMER=System timer error. +IDS_ERR_TITLE=Error +IDS_ERR_UNKNOWNCMD=Unknown command: "%s" - type /help to get a list of valid commands +IDS_ERR_USERCANCEL=User abort +IDS_ERR_WARNINGYOUWERETRYINGTOSEN=WARNING: you were trying to send your secret WebCode to a stranger on the internet. You should NEVER give your WebCode to anyone, because they could use it to steal your online accounts!||Clonk administrators will never ask you for any passwords or your WebCode. +IDS_ERR_WRITENEWTITLE=Error writing new title for file "%s": %s +IDS_ERR_YOUHAVEBEENREMOVEDBYVOTIN=You have been removed by vote. (%s) +IDS_ERR_YOUSURRENDEREDTHELEAGUEGA=You have surrendered the league game. +IDS_FAIL_COPY=Copy failure. +IDS_FAIL_DELETE=Delete failure. +IDS_FAIL_EDIT=Edit failure. +IDS_FAIL_EXTRACT=Extract failure. +IDS_FAIL_LOAD=Load failure. +IDS_FAIL_MODIFY=File modification failure. +IDS_FAIL_MOVE=Move failure. +IDS_FAIL_PACK=Pack failure. +IDS_FAIL_RECURSIVE=An object cannot be copied onto itself. +IDS_FAIL_RENAME=Rename failure. +IDS_FAIL_RENAMEDUPLICATE=Cannot rename.\n\nA file of that name already exists. +IDS_FAIL_RICHEDDLL=RichEdit DLL missing. +IDS_FAIL_SAVE=Save failure. +IDS_FAIL_UNPACK=Unpack failure. +IDS_FAIL_UPDATE=Update failure. +IDS_FN_EXECUTABLES=Executable programs (.exe)|*.exe|| +IDS_FN_NEWDIR=New directory +IDS_FN_ROOT=Working directory +IDS_GAME_DEFRANKS=Clonk|Ensign|Lieutenant|Captain|Major|Lieutenant Colonel|Colonel|Brigade General|Major General|Lieutenant General|General +IDS_GAME_FAILSAVEGAME=Error while saving the game. +IDS_GAME_NOCLIENTSAVE=Network games may be saved by the host only. +IDS_GAME_NOSAVEONCURR=Can't overwrite loaded game.|Please save on another slot! +IDS_GAME_NOUNREGSAVE=Saving games is available in the registered version only. +IDS_GAME_RECORDSTITLE=Records +IDS_GAME_SAVEGAMESTITLE=Savegames +IDS_HOLD_ABORT=Abort round? +IDS_HOLD_SAVINGGAME=Saving game... +IDS_LEAGUE_LEAGUEREPORTINGUNEXPECTED=League: Reporting unexpected disconnect (reason %d)... +IDS_LEAGUE_WAITINGFORLASTLEAGUESERVE=Waiting for last league server reply... +IDS_LGA_INVALIDRESPONSE3=Invalid reply from internet server (no CSID). +IDS_LGA_SERVERFAILURE=internet server error: %s\n +IDS_LOG_COMMANDNOTALLOWEDINLEAGUE=Command not allowed in league games! +IDS_MENU_ABORT=Abort round +IDS_MENU_ABORT_DESC=Abort the round without evaluation. +IDS_MENU_ABOUT=About... +IDS_MENU_ACTIVATE=Activate %s +IDS_MENU_ATTACK=Attack %s +IDS_MENU_ATTACKFRIENDLY=friendly +IDS_MENU_ATTACKHOSTILE=hostile +IDS_MENU_ATTACKINFO=%s is currently %sand will %sbe attacked. +IDS_MENU_ATTACKNOT=not +IDS_MENU_ATTACKSELF=We don't attack ourselves. +IDS_MENU_BUY=Buy %s +IDS_MENU_CLONKNAMES_DESC=Displays clonk names above enemy clonks. +IDS_MENU_CONSTRUCT=Construction: %s +IDS_MENU_CONTEXTSUBCLONKDESC=Opens a sub menu with command options for this clonk. +IDS_MENU_CPATTACK=Attack +IDS_MENU_CPATTACKINFO=Order your clonks to attack other players. +IDS_MENU_CPGOALS=Goals +IDS_MENU_CPGOALSINFO=The round ends when all goals are fulfilled. +IDS_MENU_CPMAIN=Player Menu +IDS_MENU_CPNEWPLAYER=Join player +IDS_MENU_CPNEWPLAYERINFO=Have another player join the game (player files from the working directory). +IDS_MENU_CPRULES=Rules +IDS_MENU_CPRULESINFO=Rules for this round. +IDS_MENU_CPSAVEGAME=Save game +IDS_MENU_CPSAVEGAMEINFO=Save this game so it can be resumed later. +IDS_MENU_CPSURRENDER=Surrender +IDS_MENU_CPSURRENDERINFO=Leave the game with evaluation. +IDS_MENU_DELETE=Delete +IDS_MENU_DISCONNECT=Disconnect +IDS_MENU_DISCONNECTCLIENT=Disconnect client +IDS_MENU_DISCONNECTFROMSERVER=Disconnect from host? +IDS_MENU_DISPLAY=Display +IDS_MENU_GET=Get %s +IDS_MENU_HELP=Help +IDS_MENU_INSERT=Add... +IDS_MENU_MULTIPLEITEMS=Objects +IDS_MENU_NEWPLAYER=Join player: %s +IDS_MENU_NOATTACK=Don't attack %s +IDS_MENU_NOPLRFILES=No additional player files available. +IDS_MENU_OBSERVER=Observer Menu +IDS_MENU_ONLINEDOCS=Online documentation... +IDS_MENU_OPTION=Options +IDS_MENU_OPTIONS=Options... +IDS_MENU_PLAYERNAMES_DESC=Displays player names above enemy clonks. +IDS_MENU_REGISTRATION=Registration... +IDS_MENU_SELL=Sell %s +IDS_MENU_SHOWCOMMANDKEYS=Keys +IDS_MENU_SHOWCOMMANDS=Commands +IDS_MENU_SURRENDER=Are you sure? +IDS_MENU_WEBSITE=Clonk on the web... +IDS_MNU_CLOCK=Clock +IDS_MNU_CLONKNAMES=Clonk names +IDS_MNU_CLOSE=Close +IDS_MNU_COMPONENTS=Components +IDS_MNU_CONTENTS=Grab contents +IDS_MNU_DELETE=Delete +IDS_MNU_DUPLICATE=Duplicate +IDS_MNU_FILE=File +IDS_MNU_FPS=FPS Display +IDS_MNU_INFO=Info +IDS_MNU_JOIN=Join +IDS_MNU_MOUSECONTROL=Mouse control +IDS_MNU_MUSIC=Music +IDS_MNU_NET=Host +IDS_MNU_NETCLIENT=Client %s (%i) +IDS_MNU_NETCLIENTDE=Client %s (%i) deactivated +IDS_MNU_NETHOST=Host %s +IDS_MNU_NEW=New +IDS_MNU_OPEN=Open... +IDS_MNU_OPENWPLRS=Open with players... +IDS_MNU_OPTIONS=Options +IDS_MNU_OPTIONSINFO=Change program options. +IDS_MNU_PLAYER=Player +IDS_MNU_PLAYERNAMES=Player names +IDS_MNU_PORTRAITS=Portraits +IDS_MNU_QUIT=Quit +IDS_MNU_RECORD=Record +IDS_MNU_SAVEGAME=Save game +IDS_MNU_SAVEGAMEAS=Save game as... +IDS_MNU_SAVESCENARIO=Save scenario +IDS_MNU_SAVESCENARIOAS=Save scenario as... +IDS_MNU_SCRIPT=Script +IDS_MNU_SWITCHRESOLUTION=Switch resolution +IDS_MNU_SWITCHRESOLUTION_LIKEIT=This is your new resolution. Do you like it? +IDS_MNU_SWITCHRESOLUTION_UNDO=Original resolution will be restored in %d seconds... +IDS_MNU_TITLE=Title +IDS_MNU_UPPERBOARD=Title board +IDS_MNU_VIEWPORT=Viewport +IDS_MSG_ACTIVE=Active +IDS_MSG_ADDPORTRAITS=Add new portraits +IDS_MSG_ADDPORTRAITS_DESC=New crew members store their portrait permanently. +IDS_MSG_ALLOWSYOUTOJOINADIFFERENT=Allows you to join a different team. +IDS_MSG_ALLPLAYERDATA=Use current values for all players? +IDS_MSG_ANUPDATETOVERSIONISAVAILA=An update to version %s is available. Do you want to download and install this update? +IDS_MSG_BACKTOPLAYERDLG=Back to player selection. +IDS_MSG_BLITOFFSET=Blit offset +IDS_MSG_BLITOFFSET_DESC=Determines the offset used for every drawing operation to ensure exact pixels are drawn. Increase this value if you see black borders below/to the right of some graphics. Deacrease it if you see borders above/to the left of some graphics. +IDS_MSG_CANNOTSTARTSCENARIO=Cannot start scenario. +IDS_MSG_CANTSENDTEAMMESSAGETEAMSN=Can't send team message: Teams not known. +IDS_MSG_CHANGESTHETOPICTO=%s changes the topic to: %s +IDS_MSG_CHATDISCLAIMER=Chat - Disclaimer +IDS_MSG_CLEARTHEMESSAGEBOARD=Clear the message board. +IDS_MSG_CLIENT=client +IDS_MSG_CMD_ABORT_NOCOUNTDOWN=Not in countdown! +IDS_MSG_CMD_HOSTONLY=Host only! +IDS_MSG_CMD_JOINPLR_NOFILE=Cannot join player %s: File not found! +IDS_MSG_CMD_NETGETSCEN_SAVED=Got it! Saved to %s +IDS_MSG_CMD_NOCLIENT=Client %s not found! +IDS_MSG_CMD_PLRCLR_NOACCESS=Access denied +IDS_MSG_CMD_PLRCLR_NOPLAYER=Player not found! +IDS_MSG_CMD_PLRCLR_USAGE=Usage: /plrclr [Johnny] ff0000 +IDS_MSG_CMD_START_USAGE=Usage: /start [timer] +IDS_MSG_DEBUGMODENOTALLOWED=Debug mode: not allowed +IDS_MSG_DEFINEKEY=Assign key +IDS_MSG_DELETECLONK=Do you really want to delete %s %s? +IDS_MSG_DELETECLONK_DESC=Delete the selected crew member. +IDS_MSG_DELETECLONK_PLAYTIME= - this Clonk has a total playing time of %s! +IDS_MSG_DELETEORIGINAL=%s is an original file. Are your sure you want to delete it? +IDS_MSG_DELETEPLR=Do you really want to delete player %s? +IDS_MSG_DELETEPLR_PLAYTIME= - this player has a total playing time of %s! +IDS_MSG_DISABLED=disabled +IDS_MSG_DISCONNECTED=disconnected +IDS_MSG_DISCONNECTEDFROMSERVER=Disconnected from server (%s). +IDS_MSG_DISCONNECTFROMSERVER=Disconnect from server? +IDS_MSG_DONTSHOW=&Don't display this message in the future. +IDS_MSG_EDITORREGONLY=The editor can only be started in the registered version.\n\nPlease see the Developers section of the Clonk website for more information. +IDS_MSG_ENABLED=enabled +IDS_MSG_ENTERNEWDEATHMESSAGE=Enter new death message: +IDS_MSG_ENTERPASSWORD=Enter password: +IDS_MSG_FAIRCREW_ACTIVATED=Activated Fair Crew, rank %s +IDS_MSG_FAIRCREW_DEACTIVATED=Deactivated Fair Crew +IDS_MSG_FIREPARTICLES=Fire particles +IDS_MSG_FIREPARTICLES_DESC=Enable additional fire effects. +IDS_MSG_FPS=FPS +IDS_MSG_FREELYSCROLLAROUNDTHEMAP=Freely scroll around the map. +IDS_MSG_FREESAVEGAMEPLRS=Player assignment +IDS_MSG_FREEVIEW=free view +IDS_MSG_FULLSCREEN=Fullscreen +IDS_MSG_FULLSCREEN_DESC=Use fullscreen mode. +IDS_MSG_GFXENGINE_DESC=Determines the rendering engine. Changes take effect when the game is restarted. +IDS_MSG_HASDISCONNECTED=%s has disconnected (%s). +IDS_MSG_HASJOINEDTHECHANNEL=%s has joined the channel. +IDS_MSG_HASLEFTTHECHANNEL=%s has left the channel (%s) +IDS_MSG_HOST=host +IDS_MSG_INACTIVE=Inactive +IDS_MSG_INTERNETGAMEEVALUATED=Internet game evaluated. +IDS_MSG_INVALIDKEY=The incoming registration key is invalid.|Error: %s||Possibly the key file was accidentally modified during download or email transfer and thus made invalid. If this might be the case, please contact RedWolf Design via the Clonk website. +IDS_MSG_ISNOWKNOWNAS=%s is now known as %s +IDS_MSG_ITEMORIGINAL=%s is part of an original packet and my not be modified at this location. To modify, create a copy of this object at a different location. +IDS_MSG_ITEMSEDITED=The following objects are still being edited:\n +IDS_MSG_ITEMSMODIFIED=Update edited objects:\n +IDS_MSG_JOINTEAM=Join team %s +IDS_MSG_KICKBYMENU=kicked from host menu +IDS_MSG_KICKFROMCLIENTLIST=kicked from client list +IDS_MSG_KICKFROMLOBBY=kicked from lobby +IDS_MSG_KICKFROMMSGBOARD=kicked from messageboard +IDS_MSG_KICKFROMSTARTUPDLG=kicked from startup waiting dialog +IDS_MSG_LANGUAGEDISCLAIMER=This is a third party language. There is no warranty for completeness or accuracy. Use at your own risk. +IDS_MSG_LEAGUEEVALUATIONSUCCESSFU=League: evaluation successful. +IDS_MSG_LEAGUEGAMESIGNUP=Game signed up at league server %s:|%s +IDS_MSG_LEAGUEINVALIDUSERNAME=The user name contains invalid characters. +IDS_MSG_LEAGUEJOINING=Requesting join for player %s... +IDS_MSG_LEAGUEJOINREFUSED=League server has refused the join of player %s: %s +IDS_MSG_LEAGUEMISMATCHPASSWORD=Repeated password mismatch. Please re-enter password! +IDS_MSG_LEAGUEMISSINGPASSWORD=Please enter a password! +IDS_MSG_LEAGUEMISSINGUSERNAME=Please enter a user name! +IDS_MSG_LEAGUEPLAYERSIGNUP=Player: %s|Server: %s +IDS_MSG_LEAGUEPLAYERSIGNUPAS=Player: %s|League user name: %s|Server: %s +IDS_MSG_LEAGUESERVERMSG=League server reply: %s +IDS_MSG_LEAGUESERVERREPLYWITHOUTA=League server reply without authentication-id! +IDS_MSG_LEAGUESIGNUPCANCELLED=League login for player %s cancelled. Without login this player can not take part in this round! +IDS_MSG_LEAGUESIGNUPERROR=Error during league login: %s +IDS_MSG_LEAGUEUNEXPECTEDDISCONNEC=League: Unexpected disconnect reported: %s +IDS_MSG_LEAGUEUSERNAMETOOSHORT=The user name is too short. +IDS_MSG_LEAGUE_REGISTRATION=This is your first login at the league. Your can specify your desired league user name and league password below. +IDS_MSG_LOCAL=local +IDS_MSG_LOCKACTIVATION=This object must be activated at all times. +IDS_MSG_LOOKINGFORUPDATES=Looking for updates... +IDS_MSG_MANUALCLIP_DESC=Enable manual clipping. Try this if you encounter graphics errors like long, stretched lines across your screen. +IDS_MSG_MAP_DESC=Select scenario from the map. +IDS_MSG_MAP_STARTSCEN=Start scenario %s +IDS_MSG_MMTIMER_DESC=Try this option if you experience timing problems during the game, e.g. very slow game even in small scenarios on decent hardware. +IDS_MSG_MOVEKEY=Shall the registration key be moved to the personal user directory so it will only be available to the currently logged on user on this computer? +IDS_MSG_NEWPLRCOLOR=New &color +IDS_MSG_NEWPLRCOLOR_DESC=Generate a new random player color +IDS_MSG_NOADDBLT_DESC=Disable additive blittings. Try this if some special effects like explosions are screwed up. +IDS_MSG_NOALPHAADD_DESC=Disable additive transparency values. Try this if you see boxes around some graphics. +IDS_MSG_NOCLRFADE_DESC=Disable vertex color fading. Try this if you encounter serious slowdowns in scenarios with a faded sky or enabled fog of war. +IDS_MSG_NODEBUGMODE=No debug mode! +IDS_MSG_NODEFS=No object definitions available! +IDS_MSG_NOEDITNETREF=Network reference items may not be edited. +IDS_MSG_NOENGINE=The selected scenario requires an engine version %i.%i%i.%i or higher. +IDS_MSG_NOMATS=No material definitions available! +IDS_MSG_NOMODIFYFAIRCREW=Unable to change fair crew setting: Fixed by scenario! +IDS_MSG_NOMODIFYORIGINAL=%s cannot be updated because it is part of an original packet. +IDS_MSG_NOPARTICIPATE_DESC=Exclude %s from participation in the next round. +IDS_MSG_NOPLAYERSELECTED=No players are selected. Please go to player selection and activate the participants for this round. +IDS_MSG_NOPORTRAIT=No Portrait +IDS_MSG_NORUNTIMEJOIN=Runtime join for this game denied. +IDS_MSG_NOTALLSAVEGAMEPLAYERSHAVE=Not all savegame players have been associated with a local player! To associate, right-click the savegame player in the player list and then select a local player to take over this player.|Any unassociated savegame players will be removed from the game. Unassociated local players will join as new players.|Start anyway? +IDS_MSG_NOTAVALIDFILE=%s is not an executable file. +IDS_MSG_NOTENOUGHPLAYERSFORTHISRO=Not enough players for this round. +IDS_MSG_NOUNREGEDIT=Object organization is available in the registered version only. +IDS_MSG_NOUNREGISTERED=This scenario can only be started in the registered version. +IDS_MSG_NOUNREGPROPSAVE=Saving scenario properties is available in the registered version only. +IDS_MSG_NOUPDATEAVAILABLEFORTHISV=No update available for this version. +IDS_MSG_OBJCOUNT=Object count +IDS_MSG_PARTICIPATE_DESC=Enable %s for participation in the next round. +IDS_MSG_PARTICLES_DESC=Controls the amount of particles emitted by effects like smoke and fire. +IDS_MSG_PASSWORDFORPLAYER=League login for player %s: +IDS_MSG_PASSWORDINCORRECT=Password incorrect. +IDS_MSG_PLAYERASSIGNMENT=Participant %s will continue for player %s from the savegame. +IDS_MSG_PLRWEALTH=Player Wealth +IDS_MSG_POINTFILTERING_DESC=Disable linear filtering. Try this if you encounter blurry graphics. +IDS_MSG_PRESETDEFSMISSING=The selected scenario requires specified object definitions. The following required object packs were not found on this computer: %s +IDS_MSG_PRESETUSEDDEFS=You have used the currently activated object definitions in the scenario properties. Do you want these to be set in the scenario's presets so the scenario will automatically make use of these packs in the future? +IDS_MSG_PRESSBTN=Press the button for "%s" on gamepad %d. +IDS_MSG_PRESSKEY=Press the key for "%s" on keyboard block %d. +IDS_MSG_PRESSORPUSHANYGAMEPADBUTT=Press %s or any gamepad button to open observer menu. +IDS_MSG_PROMPTCOPY=Copy %s to %s? +IDS_MSG_PROMPTDELETE=Delete %s? +IDS_MSG_PROMPTIMPORT=Import %s to %s as %s? +IDS_MSG_PROMPTMOVE=Move %s to %s? +IDS_MSG_PROMPTRESETCONFIG=Are you sure you want to reset all configuration values? +IDS_MSG_PROPORIGINALCOPY=%s is part of an original packet and may not be saved at its former location. Save modification to working directory? +IDS_MSG_RANK=Rank +IDS_MSG_REMOTE=remote +IDS_MSG_REMOVEPLR=&Remove +IDS_MSG_REMOVEPLR_DESC=Do not join with this player +IDS_MSG_REPLAYPLRS=Replay players +IDS_MSG_REPLAYPLRS_DESC=Starring +IDS_MSG_RESETKEYSETS=Reset all keyboard blocks (or gamepads respectively). +IDS_MSG_RESOLUTION_DESC=Select screen resolution in fullscreen mode. +IDS_MSG_RESTARTCHANGECFG=For changes to take effect the program has to be restarted. +IDS_MSG_RNDTEAM=Random team +IDS_MSG_SCENARIODESC=Scenario description +IDS_MSG_SCENARIODESC_LOADING=Loading... (%d%%) +IDS_MSG_SELECT=Select %s +IDS_MSG_SELECTKEYSET=Select keyboard block or gamepad to be modified. +IDS_MSG_SELECTLANG=Select program language. +IDS_MSG_SELECTPLR=Select player... +IDS_MSG_SELTEAM=Select team +IDS_MSG_SENDAPRIVATEMESSAGETOTHES=Send a private message to the specified player. +IDS_MSG_SENDAPRIVATEMESSAGETOYOUR=Send a private message to your team. +IDS_MSG_SETDEATHMESSAGE=Set death message +IDS_MSG_SETSMODE=%s sets mode %s %s +IDS_MSG_SETTHEMESSAGETHATAPPEARWH=Set the message that appear when this clonk dies. +IDS_MSG_SHOWTEAMS=Teams +IDS_MSG_SHOWTEAMS_DESC=Show teams +IDS_MSG_SPEED=Speed: %dx +IDS_MSG_STARTDEVMODE=This scenario can only be started in developer mode. +IDS_MSG_STARTPLAYERMODE=This scenario can only be started in player mode. +IDS_MSG_STARTSELECTSCENARIO=To start a round you need to select a scenario first. To do this, open a scenario folder (book) by double clicking on it and select the desired scenario. Then click 'start'. +IDS_MSG_STARTUPVIDEO=Show startup video +IDS_MSG_STARTUPVIDEO_DESC=Shows a startup video when you start the game. The file called "Splash.c4v" can be downloaded from clonk.de and should be placed in the program directory. +IDS_MSG_STOREPORTRAITS=Store portraits +IDS_MSG_TAKEOVERPLR=&Take over +IDS_MSG_TAKEOVERPLR_DESC=Control the player in the game +IDS_MSG_TARGETNOGROUP=Cannot copy any item to %s. +IDS_MSG_TEAM=Team %d +IDS_MSG_TEAMCOLORS=Team colors +IDS_MSG_TEAMCOLORS_DESC=Specifies whether all players of a team have the same color, or individual colors are assigned for each team-member. +IDS_MSG_TEAMDIST=Team distribution +IDS_MSG_TEAMDIST_DESC=Specifies how players are distributed among teams +IDS_MSG_TEAMDIST_FREE=Free +IDS_MSG_TEAMDIST_HOST=by Host +IDS_MSG_TEAMDIST_NONE=none +IDS_MSG_TEAMDIST_RND=random +IDS_MSG_TEAMDIST_RNDINV=surprise random! +IDS_MSG_TEXINDENT=Texindent +IDS_MSG_TEXINDENT_DESC=Determines the indent used when blitting from textures. Increase this value if you experience borders around some graphics; decrease it if borders of graphics are missing. +IDS_MSG_TOOFEWPLAYERS=This scenario is designed for a minimum of %i players. Please go to the Player Selection dialog and activate the participants for this round. +IDS_MSG_TOOFEWPLAYERSNET=This scenario is set for more participants than are activated on this computer. On start, you will have to wait for additional players to join from the network. +IDS_MSG_TOOMANYDEFS=You have activated a large number of separate object packs. It is strongly reommended that you combine several of those packs into object folders. To do this, create a new object folder using the 'new' button and move the object files into that folder. +IDS_MSG_TOOMANYPLAYERS=This scenario is designed for a maximum of %i players. +IDS_MSG_TOPICIN=Topic in %s: %s +IDS_MSG_TRANSFERNOTYPE=Cannot drop a %s into %s. +IDS_MSG_TRYLEAGUESIGNUP=League login for player %s... +IDS_MSG_UPDATEFAILED=Update failed. +IDS_MSG_UPDATEINPROGRESS=Update still in progress. Please wait. +IDS_MSG_UPDATENOTAVAILABLE=The update is possibly not yet available for this operating system. +IDS_MSG_USINGPLR=Using %s +IDS_MSG_USINGPLR_DESC=Use this player to continue the savegame +IDS_MSG_WASKICKEDFROMTHECHANNEL=%s was kicked from the channel (%s). +IDS_MSG_YOUAREABOUTTOCONNECTTOAPU=You are about to connect to a public chat server (%s). RedWolf Design cannot assume liability for the contents of any public chat. Additional rules can be found as part of the server messages in the server channel. Proceed? +IDS_MSG_YOUHAVEJOINEDCHANNEL=You have joined channel %s. +IDS_MSG_YOUHAVELEFTCHANNEL=You have left channel %s (%s). +IDS_MSG_YOUWEREKICKEDFROMCHANNEL=You were kicked from channel %s (%s). +IDS_NET_ACTIVATECLIENT=&Activate +IDS_NET_ACTIVATECLIENT_DESC=Toggle player/observer-status +IDS_NET_APM=APM +IDS_NET_CAPTION=Network +IDS_NET_CLIENT=Client +IDS_NET_CLIENTDISCONNECTED=Network: client %s disconnected! +IDS_NET_CLIENTINFO=&Info +IDS_NET_CLIENTINFO_DESC=Show extended info +IDS_NET_CLIENTONNET=%s on %s +IDS_NET_CLIENT_ACTIVATED=%s %s activated. +IDS_NET_CLIENT_DEACTIVATED=%s %s deactivated. +IDS_NET_CLIENT_INFO=Client info +IDS_NET_CLIENT_INFO_ADDRESSES=Addresses: +IDS_NET_CLIENT_INFO_CONNDATA= Data: %s (%s:%d, %d ms) +IDS_NET_CLIENT_INFO_CONNECTIONS=Connections: %s: %s (%s:%d, %d ms) +IDS_NET_CLIENT_INFO_FORMAT=%s %s %s %s (ID #%d):%s +IDS_NET_CLIENT_INFO_NOADDRESSES=Addresses: none +IDS_NET_CLIENT_INFO_NOCONNECTIONS=Connections: Not connected +IDS_NET_CLIENT_INFO_UNKNOWNID=Unknown client ID #%d. +IDS_NET_CLIENT_JOIN=Client %s connected. +IDS_NET_CLIENT_OBSERVE=%s %s forced to observe. +IDS_NET_CLIENT_REMOVED=%s %s removed (%s). +IDS_NET_COMMENTCHANGED=Network game comment adjusted. +IDS_NET_COMPUTERNAME=Computer name: +IDS_NET_COMPUTERNAME_DESC=Name used to identify this computer in network games. +IDS_NET_CONNECTHOST=Connecting to host on %s... +IDS_NET_CONNECTING=Connecting to %s at %s +IDS_NET_CONTROL=Control +IDS_NET_CONTROLRATE=Control rate: %i +IDS_NET_CONTROL_PING=Control ping +IDS_NET_CTRLMODE_CENTRAL=Central control +IDS_NET_CTRLMODE_DECENTRAL=Decentral control +IDS_NET_CTRLMODE_NONE=No control mode +IDS_NET_DEACTIVATECLIENT=De&activate +IDS_NET_ERR_COPYFILE=Error copying file +IDS_NET_ERR_COPYFILE_LOCAL=The file is local already +IDS_NET_ERR_INITRESLIST=Network: failed to initialize resource list! +IDS_NET_ERR_LEAGUE=League error +IDS_NET_ERR_LEAGUEINIT=Could not initialize league: %s +IDS_NET_ERR_LEAGUE_EMPTYREPLY=Empty reply +IDS_NET_ERR_LEAGUE_FINISHGAME=Could not finish game: %s +IDS_NET_ERR_LEAGUE_REGGAME=Could not register game: %s +IDS_NET_ERR_LEAGUE_SENDRESULT=Could not send game result: %s +IDS_NET_ERR_LEAGUE_STARTGAME=Could not start game: %s +IDS_NET_ERR_LEAGUE_UPDATEGAME=Could not update game: %s +IDS_NET_ERR_PORT_TCPREF=TCP port and reference port must be set to different values between 1 and 65535! +IDS_NET_ERR_PORT_UDPDISC=UDP port and discovery port must be set to different values between 1 and 65535! +IDS_NET_ERR_REFINVALID=Invalid reference +IDS_NET_ERR_REFREQTIMEOUT=Reference request timed out +IDS_NET_ERR_RESTIMEOUT=Waiting for %s: Timeout! +IDS_NET_GAMELIST=Running Games +IDS_NET_GAMELIST_INFO=List of running games found in network +IDS_NET_GRAPH=Graph +IDS_NET_HOSTDISCONNECTED=Network: host %s disconnected! +IDS_NET_INFOGAMES=%d game(s) found. +IDS_NET_INFOINPROGR=game in progress +IDS_NET_INFONOGAME=No games found. +IDS_NET_INFOPASSWORD=password protected +IDS_NET_INFOPLRSGOALDESC=%d/%d players - %s - %s +IDS_NET_INFOQUERY=Querying game infos... +IDS_NET_INPUT=Network Input +IDS_NET_INVALIDREF=Invalid reference! +IDS_NET_IP=IP: +IDS_NET_IP_DESC=Join address of selected game. Enter an address here to join a game directly. +IDS_NET_JOINGAME=Joining network game +IDS_NET_JOINGAMEBY=Joining game by %s... +IDS_NET_JOINGAME_BTN=&Join game +IDS_NET_JOINGAME_DESC=Join the selected network or internet game, or entered IP address. +IDS_NET_JOINREADY=Waiting for network game start... +IDS_NET_KICKCLIENT=&Kick +IDS_NET_KICKCLIENT_DESC=Disconnect this client +IDS_NET_LEAGUE_REGGAME=Registering game at %s... +IDS_NET_LEAGUE_SENDRESULT=Sending game result to %s... +IDS_NET_LEAGUE_STARTGAME=Starting game... +IDS_NET_LOBBYWAITING=Awaiting participants... +IDS_NET_LOCAL_CLIENT=Local client +IDS_NET_MASTERSRV_DESC=Here you can enter the address of an alternate internet server you wish to use. If this option is disabled, the official server on clonk.de is used. +IDS_NET_NEWGAME=&New game +IDS_NET_NEWGAME_DESC=Create a new network or internet game. +IDS_NET_NODIRECTSTART=Cannot start network game data directly. +IDS_NET_NODISCOVERY=Search Error +IDS_NET_NODISCOVERY_DESC=Search failed: %s +IDS_NET_NOFILEPUBLISH=File %s cannot be published on network! +IDS_NET_NOHOSTCON=Could not connect to host %s. +IDS_NET_NOJOIN=Cannot join game +IDS_NET_NOJOIN_BADREF=Cannot join selected game: %s +IDS_NET_NOJOIN_BADVER=Engine version mismatch: the game runs with %s - you have %s. +IDS_NET_NOJOIN_NOREF=No reference selected. Select a game from the list or enter a direct join address below! +IDS_NET_NOJOIN_NORUNTIME=The game has started already and runtime join is not allowed! Try joining anyway? +IDS_NET_NONET=Network not active +IDS_NET_NONETGAME=Transferred scenario does not contain network game data. +IDS_NET_NOOFFICIALLEAGUE=Warning: when connecting to an unofficial internet server, you should NEVER use your original WebCode or any other important password which you might use on official servers! +IDS_NET_NOSAMEANDTOOLARGE=File %s differs from that used by the host! +IDS_NET_NOSAMESYSTEM=System file %s differs from that used by the host! +IDS_NET_NOVALIDCORE=Network: Resource core for file %s is invalid! +IDS_NET_OFFICIALSERVER=Official Server +IDS_NET_OUTPUT=Network Output +IDS_NET_PASSWORD_DESC=Password protection: other players can only join with a password. +IDS_NET_PORT_DISCOVERY=Discovery port +IDS_NET_PORT_DISCOVERY_DESC=Configure port used for automatic game discovery in LAN. +IDS_NET_PORT_REFERENCE=Reference port +IDS_NET_PORT_REFERENCE_DESC=Configure port used for reference server. +IDS_NET_PORT_TCP=TCP port +IDS_NET_PORT_TCP_DESC=Configure port used for network connections between clients. +IDS_NET_PORT_UDP=UDP port +IDS_NET_PORT_UDP_DESC=Configure port used for network control data connections between clients. +IDS_NET_QUERY_DIRECTJOIN=Direct join +IDS_NET_QUERY_LOCALNET=Local network +IDS_NET_QUERY_MASTERSRV=Internet server +IDS_NET_RECEIVED=Received %s (%s) +IDS_NET_REFONCLIENT=%s on %s +IDS_NET_REFQUERY_FAILED=Could not query reference: %s +IDS_NET_REFQUERY_NOREF=No reference found! +IDS_NET_REFQUERY_QUERYMSG=Searching for games at %s... +IDS_NET_REFQUERY_QUERYTITLE=Searching... +IDS_NET_REGJOINONLY=This game can be joined in the registered version only. +IDS_NET_RELOAD_DESC=Repeat the search for running games. +IDS_NET_RESPROGRESS_DESC=Resource loading progress +IDS_NET_RES_DYNAMIC=Dynamic +IDS_NET_RES_PLRFILE=player file for %s +IDS_NET_RES_SAVE=Save resource +IDS_NET_RES_SAVED=Resource saved +IDS_NET_RES_SAVED_DESC=Resource successfully saved to %s +IDS_NET_RES_SAVE_OVERWRITE=File %s exists. Overwrite? +IDS_NET_RES_SCENARIO=Scenario +IDS_NET_RUNTIMEJOIN=Runtime join +IDS_NET_RUNTIMEJOINBARRED=Runtime join prohibited +IDS_NET_RUNTIMEJOINFREE=Runtime join allowed +IDS_NET_RUNTIMEJOIN_DESC=Specifies whether additional computers may connect to the game after start. +IDS_NET_SAVE_ERR_ADDDYNDATARES=Network: could not add dynamic data file to resource list! +IDS_NET_SAVE_ERR_CREATEDYNFILE=Network: could not create dynamic data file! +IDS_NET_SAVING=Network: Creating savegame... +IDS_NET_START=Start! +IDS_NET_STATISTICS=Statistics +IDS_NET_USERNAME=Chat name: +IDS_NET_USERNAME_DESC=Name used when sending chat messages from this computer in network games. +IDS_NET_WAITFORRES=Waiting for %s... +IDS_NET_WAITFORSTART=Waiting for start... +IDS_OBJ_BIRTHDAY=%s becomes %d!|Happy birthday! +IDS_OBJ_BURNS={{FLAM}} The object burns. +IDS_OBJ_CONNECT=%s conntected|to %s +IDS_OBJ_DEATH1=%s is dead. +IDS_OBJ_DEATH2=%s has|deceased. +IDS_OBJ_DEATH3=%s|rests in peace. +IDS_OBJ_DEATH4=%s is dead. +IDS_OBJ_DEATH5=%s has|deceased. +IDS_OBJ_DEATH6=%s|rests in peace. +IDS_OBJ_DEATH7=%s is dead. +IDS_OBJ_DISCONNECT=%s disconnected|from %s. +IDS_OBJ_EMPTY=%s is empty. +IDS_OBJ_HOSTILENOENTRANCE=%s hostile.|No entrance! +IDS_OBJ_LINEREMOVAL=%s disconnected. +IDS_OBJ_NEWLINE=New|%s. +IDS_OBJ_NOCHOP=%s cannot|chop trees. +IDS_OBJ_NOCON=%s cannot|be built. +IDS_OBJ_NOCONACTIV=%s not completed.|Activation denied. +IDS_OBJ_NOCONNECT=Connection not possible. +IDS_OBJ_NOCONNECTTYPE=%s cannot be connected|to %s. +IDS_OBJ_NODIG=%s cannot dig. +IDS_OBJ_NODOUBLEKIT=%s is not fixed at the other end. +IDS_OBJ_NOLEVEL=No level ground! +IDS_OBJ_NOLINECONSTRUCT=%s cannot create lines. +IDS_OBJ_NONEWLINE=Cannot create a new line here. +IDS_OBJ_NOOTHER=%s is in the way. +IDS_OBJ_NOROOM=Not enough room! +IDS_OBJ_PROMOTION=%s is promoted|to %s! +IDS_OBJ_STUCK=%s is stuck! +IDS_OBJ_UNDEF=Structure %s undefined. +IDS_OBJ_UNKNOWN=unknown +IDS_PLR_ELIMINATED=Player %s|eliminated. +IDS_PLR_HOSTILE=Player %s|hostile! +IDS_PLR_HOSTILITY=%s attacks %s. +IDS_PLR_NEWCOMMENT=I'm new. +IDS_PLR_NEWPLAYER=New player +IDS_PLR_NOBKNOW=Player %s|has no construction plans. +IDS_PLR_NOBUY=There is nothing to buy. +IDS_PLR_NOHOSTILITY=%s does not attack %s. +IDS_PLR_NOTAVAIL=%s not available. +IDS_PLR_NOWEALTH=Not enough money! +IDS_PLR_SURRENDERED=Player %s|has surrendered. +IDS_PRC_CONNECTED=Connected. +IDS_PRC_COUNTDOWN=The game will start in %d seconds. +IDS_PRC_DEFNOTFOUND=Required object file %s not available. +IDS_PRC_DEFOVERLOAD= %s (%s) overloaded. +IDS_PRC_DEFSINVC4X=%d objects require a higher engine version. +IDS_PRC_DEFSLOADED= %d definitions loaded. +IDS_PRC_DEINIT=Engine shut down. +IDS_PRC_DOWNLOADCOMPLETE=Successfully downloaded %s. +IDS_PRC_DOWNLOADERROR=Error downloading the file %s.|%s. +IDS_PRC_DOWNLOADINGFILE=Downloading %s... +IDS_PRC_ENVIRONMENT=Placing environment objects... +IDS_PRC_ERREXTRA=Missing or invalid Extra.c4d. +IDS_PRC_ERRLOADER=Error initializing loader screen. +IDS_PRC_ERRORLOADINGTEAMS=Error loading teams. +IDS_PRC_EVALUATED=Game evaluated. +IDS_PRC_FAIL=Program terminated. +IDS_PRC_FILEINVALID=File invalid. +IDS_PRC_FILENOTFOUND=File not found or invalid +IDS_PRC_GAMEGO=Action go! +IDS_PRC_GAMEOVER=Game over. +IDS_PRC_GFXRES=Loading graphics... +IDS_PRC_INITDEFS=Loading object definitions: +IDS_PRC_INITEXTRA=Loading extras... +IDS_PRC_INITFONTS=Initializing fonts... +IDS_PRC_INITIALIZE=Loading... +IDS_PRC_INITLOADER=Init loader... +IDS_PRC_JOIN=Game joined. +IDS_PRC_JOINFAIL=Error at player file. +IDS_PRC_JOINPLR=Player join: %s +IDS_PRC_LANDSCAPE=Creating landscape... +IDS_PRC_LAUNCHINGUPDATE=Launching update... +IDS_PRC_LEAGUE=Using league '%s' +IDS_PRC_LOADC4S=Scenario: %s +IDS_PRC_LOADEDKEYCONF=Custom keyboard config loaded from %s. +IDS_PRC_LOADEXTRA=Importing skinpacket from %s\%s... +IDS_PRC_LOCALMUSIC=Local music file: %s +IDS_PRC_LOCALONLY=Scenario uses local object definitions only. +IDS_PRC_MATERIALS=%d materials loaded. +IDS_PRC_MATERROR=Error loading materials. +IDS_PRC_NETPACKING=Packing file %s for network... +IDS_PRC_NETPREPARING=Preparing file %s for network... +IDS_PRC_NEWTEAM=New Team +IDS_PRC_NOC4S=No scenario file specified. +IDS_PRC_NODEFS=No valid object definitions found. +IDS_PRC_NOEXACTC4X=This scenario can only be played with engine version %i.%i%i.%i. +IDS_PRC_NOGFXFILE=Error at graphics file %s: %s +IDS_PRC_NOMATENUM=Error at material enumeration. +IDS_PRC_NOMISSIONACCESS=Access to this mission not yet granted. +IDS_PRC_NOMUSIC=Music not available. +IDS_PRC_NONETREPLAY=Cannot play back records while in network mode. +IDS_PRC_NOREPLPLRCLR=Couldn't find a suitable replacement player color for player %s. Using default. +IDS_PRC_NOREQC4X=This scenario can only be played with engine version %d.%d%d.%d or higher. +IDS_PRC_NOSND=Error at sound file. +IDS_PRC_NOSWSCENARIO=Not registered. No shareware scenario. +IDS_PRC_NOSYSMATS=System materials missing. +IDS_PRC_OBJECTSLOADED=%d objects positioned. +IDS_PRC_PLAYMUSIC=Music: %s +IDS_PRC_PLRELIMINATED=Player %s eliminated. +IDS_PRC_PLRFILEINUSE=Player file already in use. +IDS_PRC_PLRSURRENDERED=Player %s surrendered. +IDS_PRC_PRELOADVIDEOS=Preloading videos from %s... +IDS_PRC_RECORDINGTO=Recording %s... +IDS_PRC_RECREATE=Recreating: %s +IDS_PRC_REG=Registered for: %s +IDS_PRC_REMOVEPLR=Player %s removed. +IDS_PRC_RESUME=Game resumed. +IDS_PRC_RESUMENOCLIENT=Found unidentifiable join info for client %d (%d players) - discarded. +IDS_PRC_RESUMENOPLRASSOCIATION=Participant %s was not assigned to any savegame player. Joining as new player. +IDS_PRC_RESUMEREMOVEPLRS=%d savegame players were not assigned and are being removed. +IDS_PRC_SAVEPLR=Saving player file %s... +IDS_PRC_SCEOWNDEFS=Scenario uses specified object definitions. +IDS_PRC_SCREENSHOT=Saved screenshot %s. +IDS_PRC_SCREENSHOTERROR=Failure creating screenshot %s. +IDS_PRC_START=Game started. +IDS_PRC_STARTABORTED=Game start aborted. +IDS_PRC_SYNCPLRS=Synchronizing local player files... +IDS_PRC_TEXMAPENTRIES=Texture table holds %d entries. +IDS_PRC_TEXTURES=%d textures loaded. +IDS_PRC_TOOMANYMATS=Too many materials. +IDS_PRC_TOOMANYPLRS=This scenario is designed for a maximum of %d players. +IDS_PRC_UNDEFINEDOBJECT=Object type %s not placed. +IDS_PRC_UNKOWNERROR=Unknown error +IDS_PRC_UNREGUSER=Unregistered user +IDS_PRC_UPDATEFONT=Updating font %s(%d,%d)... +IDS_RANKS_CLONK=Clonk|Ensign|Lieutenant|Captain|Major|Lieutenant Colonel|Colonel|Brigade General|Major General|Lieutenant General|General +IDS_RANKS_PLAYER=Novice|Beginner|Adept|Ensign|Lieutenant|Captain|Major|Lieutenant Colonel|Colonel|Brigade General|Major General|Lieutenant General|General +IDS_SEC_UNREGUSER=Unregistered user +IDS_SELECT_ANIMALS=Animals +IDS_SELECT_CREW=Crew +IDS_SELECT_ENVIRONMENT=Environment +IDS_SELECT_GOALS=Goals +IDS_SELECT_HOMEBASE=Home base material +IDS_SELECT_INEARTH=In earth +IDS_SELECT_KNOWLEDGE=Construction plans +IDS_SELECT_MAGIC=Magic +IDS_SELECT_MATERIAL=Material +IDS_SELECT_NESTS=Nests +IDS_SELECT_PRODUCTION=Home base production +IDS_SELECT_RULES=Rules +IDS_SELECT_SKIPDEFS=Definitions not to load +IDS_SELECT_STRUCTURES=Buildings +IDS_SELECT_VEGETATION=Vegetation +IDS_SELECT_VEHICLES=Vehicles +IDS_STATUS_COPYING=Copying %s to %s... +IDS_STATUS_DELETING=Deleting %s... +IDS_STATUS_INITEDIT=Preparing edit... +IDS_STATUS_LOADING=Loading %s... +IDS_STATUS_LOADINGDEFS=Loading objects definitions... +IDS_STATUS_LOADINGMAP=Loading map... +IDS_STATUS_MOVING=Moving %s to %s... +IDS_STATUS_PACK=Packing %s... +IDS_STATUS_RELOADING=Loading working directory... +IDS_STATUS_RENAMING=Renaming %s... +IDS_STATUS_UNPACK=Unpacking %s... +IDS_STATUS_UPDATESCENARIO=Updating scenario... +IDS_STATUS_UPDATINGITEMS=Updating edited objects... +IDS_TEXT_ABORTSTARTCOUNTDOWN=Abort start countdown. +IDS_TEXT_ALERTTHEHOSTIFTHEHOSTISAW=Alert the host (if the host is away). +IDS_TEXT_CANTBUILD=%s can't build. +IDS_TEXT_CHANGETHECOLOROFTHESPECIF=Change the color of the specified player. +IDS_TEXT_CHANGEYOUROWNPLAYERCOLOR=Change your own player color. +IDS_TEXT_COMMANDSAVAILABLEDURINGLO=Commands available during lobby: +IDS_TEXT_COMMANDSAVAILABLEDURINGGA=Commands available during game: +IDS_TEXT_COMPUTER=Computer +IDS_TEXT_CONTROLMODE=Control mode +IDS_TEXT_DESKTOP=Desktop +IDS_TEXT_DETERMINEPLAYERVIEWTOFOLL=Select view mode. +IDS_TEXT_DISCONNECTTHEGAMEFROMTHES=Disconnect the game from the host. +IDS_TEXT_DISPLAYNETWORKSTATISTICS=Display network statistics. +IDS_TEXT_ENABLEORDISABLEFAIRCREW=Enable or disable fair crew. +IDS_TEXT_ENTERMISSIONPASSWORD=Enter mission password: +IDS_TEXT_EVALUATION=Evaluation +IDS_TEXT_EXECUTEASCRIPTCOMMAND=Execute a script command. +IDS_TEXT_FOLLOWVIEWOFPLAYER=Follow view of player %s. +IDS_TEXT_HOME=Home +IDS_TEXT_HOMEFOLDER=Home Folder +IDS_TEXT_ITWASDECIDEDNOTTO=It was decided not to %s. +IDS_TEXT_ITWASDECIDEDTO=It was decided to %s. +IDS_TEXT_JOINALOCALPLAYERFROMTHESP=Join a local player from the specified player file. +IDS_TEXT_JOININCONSOLEMODENOTALLOW=Join in console mode not allowed! +IDS_TEXT_KICKCERTAINCLIENTSFROMTHE=Kick certain clients from the game. +IDS_TEXT_KICKTHESPECIFIEDCLIENT=Kick the specified client. +IDS_TEXT_LEAGUEWAITINGFOREVALUATIO=League: waiting for evaluation... +IDS_TEXT_LOBBYICON=Lobby-Icon +IDS_TEXT_LOCATION=Location: +IDS_TEXT_MYDOCUMENTS=My Documents +IDS_TEXT_MYPICTURES=My Pictures +IDS_TEXT_PAUSETHEGAME=pause the game +IDS_TEXT_PERFORMANACTIONINYOURNAME=Perform an action in your name. +IDS_TEXT_PLAYASOUNDFROMTHEGLOBALSO=Play a sound from the global sound group. +IDS_TEXT_PLAYERIMAGE=Player image +IDS_TEXT_PREVENTDEBUGMODEINTHISROU=Prevent debug mode in this round. +IDS_TEXT_PROGRAMDIRECTORY=Program Directory +IDS_TEXT_SCORE=Score +IDS_TEXT_SETANEWMAXIMUMNUMBEROFPLA=Set a new maximum number of players for this round. +IDS_TEXT_SETANEWNETWORKCOMMENT=Set a new network comment. +IDS_TEXT_SETANEWNETWORKPASSWORD=Set a new network password. +IDS_TEXT_SETTHESPECIFIEDCLIENTTOOB=Set the specified client to observer mode. +IDS_TEXT_SETTOFASTMODESKIPPINGXFRA=Set to fast mode, skipping x frames. +IDS_TEXT_SETTONORMALSPEEDMODE=Set to normal speed mode. +IDS_TEXT_STARTTHEROUNDWITHSPECIFIE=Start the round (with specified countdown time). +IDS_TEXT_UNPAUSETHEGAME=continue the game +IDS_TEXT_USERPATH=User Path +IDS_TEXT_VIEW=View +IDS_TEXT_WARNINGIFTHEGAMEISCANCELL=Notice: if the game is cancelled, no league score will be awarded. +IDS_TEXT_WARNINGNOLEAGUEPOINTSWILL=Notice: if a player leaves without being defeated, the opposing players will gain less league score in case of a win. +IDS_TEXT_YOUCANONLYSTARTONEVOTINGE=Voting-Timeout: you have to wait two minutes until you can request a new vote. +IDS_TYPE_ANIMATION=Animation +IDS_TYPE_BACKUP=Backup +IDS_TYPE_BINARY=Binary component +IDS_TYPE_BITMAP=Bitmap +IDS_TYPE_DEFFOLDER=Object folder +IDS_TYPE_DEFINITION=Object definition +IDS_TYPE_DIRECTORY=Directory +IDS_TYPE_ENGINE=Engine +IDS_TYPE_EXECUTABLE=Executable +IDS_TYPE_FOLDER=Scenario folder +IDS_TYPE_GROUP=Group file +IDS_TYPE_HELP=Help file +IDS_TYPE_HTML=Hypertext +IDS_TYPE_KEYFILE=Registration Key +IDS_TYPE_LINK=internet link +IDS_TYPE_LOG=Log file +IDS_TYPE_MATERIAL=Material definition +IDS_TYPE_MUSIC=Music file +IDS_TYPE_NONE=Unknown +IDS_TYPE_OBJECTINFO=Crew member +IDS_TYPE_PLAYER=Player +IDS_TYPE_PORTRAIT=Portrait +IDS_TYPE_RICHTEXT=Description +IDS_TYPE_SCENARIO=Scenario +IDS_TYPE_SCRIPT=Script +IDS_TYPE_SOUND=Sound +IDS_TYPE_TEXT=Text +IDS_TYPE_UPDATE=Update +IDS_TYPE_VIDEO=Video +IDS_TYPE_ZIP=Zip archive +IDS_VOTE_CANCELTHEROUND=abort the round +IDS_VOTE_DOESNOTWANTTO=%s does not want to %s +IDS_VOTE_KICKCLIENT=kick client %s +IDS_VOTE_LEAVETHEGAME=leave the game +IDS_VOTE_SURRENDERWARNING=It was decided that you cannot leave the game. However, you can forfeit the game instead.||Do you want to surrender? +IDS_VOTE_VOTEDOUT=voted out +IDS_VOTE_WANTSTO=%s wants to %s +IDS_VOTE_WANTSTOALLOW=%s wants to %s. Allow? diff --git a/planet/System.c4g/Magic.c b/planet/System.c4g/Magic.c new file mode 100644 index 000000000..07d0d0c93 --- /dev/null +++ b/planet/System.c4g/Magic.c @@ -0,0 +1,317 @@ +#strict 2 + +/* Checkt ab ob genug magische Energie für den Zauber vorhanden ist */ + +static const MCLK_ManaTrainRate = 10; // Zauber geben Wert/x Magiephysicaltraining +static const MCLK_UnlimitedCast = 100; // Endloszauberei + +global func CheckMana(idMagic,pCaster) + { + var iMagicReq = Value(idMagic); + // Keine Zauberenergie benötigt: Kann immer zaubern + if (!iMagicReq || ObjectCount(NMGE)) return MCLK_UnlimitedCast; + // Ansonsten zurückgeben, wie oft gezaubert werden kann + return (GetMagicEnergy(pCaster) / iMagicReq); + } + +// Globaler Aufruf, wenn ein Zauber erfolgreich war: Magie trainieren +global func OnClonkSucceededSpell(id idSpell, object pClonk) + { + if (!pClonk) if (!(pClonk = this)) return _inherited(idSpell); + // Zauberkraft trainieren (plus 1/10 des Zauberwerts) + if (!ObjectCount(NMGE)) + { + var iMaxTrain, idInfo; + // Maximales Training bei Infoobjekten: Nach Ursprungsdefinition richten + if (idInfo = GetObjectInfoCoreVal("id", "ObjectInfo", pClonk)) iMaxTrain = idInfo->~MaxMagicPhysical(); + // Infodefinition hat kein MaxMagicPhysical (d.h., kein Zauberclonk) oder kein Infoobjekt vorhanden: + // Training wird eh nicht permanent gesichert; nach aktueller Definition richten + if (!iMaxTrain) iMaxTrain = pClonk->~MaxMagicPhysical(); + // Trainieren + TrainPhysical("Magic", Value(idSpell)/MCLK_ManaTrainRate, iMaxTrain, pClonk); + } + // Gegebenenfalls weitere Hooks erlauben + return (_inherited(idSpell, pClonk)); + } + + +/* Zaubermenü erzeugen und mit verfügbaren Zaubern eines Spielers füllen */ + +global func OpenSpellMenu(object clonk, object command_target, string itemtext, string cbfunc, int player, object magic_source, string emptytext, id select_spell) + { + OpenEmptySpellMenu(MCMS, clonk, command_target, magic_source, emptytext); + var idMagic, i = 0; + while (idMagic = GetPlrMagic(player, 0, i++)) + { + AddMenuItem(itemtext, cbfunc, idMagic, clonk,0,clonk); + if(select_spell == idMagic) SelectMenuItem(i-1); + } + return true; + } + +/* Leeres Zaubermenü erstellen */ + +global func OpenEmptySpellMenu(id symbol, object clonk, object command_target, object magic_source, string emptytext) + { + var extra; + if(ObjectCount(ALCO)) { if(ObjectCount(NMGE)) extra=C4MN_Extra_Components; else extra=C4MN_Extra_ComponentsLiveMagic; } + else { if(ObjectCount(NMGE)) extra=C4MN_Extra_None; else extra=C4MN_Extra_LiveMagicValue; } + return CreateMenu(symbol, clonk, command_target, extra, emptytext, ObjectNumber(magic_source)); + } + + +/* Checkt ob genug Zutaten für dne Zauber da sind; wenn ja, wird zurückgegeben wie oft er gezaubert werden kann */ + +global func CheckAlchem(id idMagic) { // Par(1)-Par(x): Zaubernde, [Zauberturm], [weitere...] + + // Regel aktiviert? + if(!ObjectCount(ALCO)) return MCLK_UnlimitedCast; + + // Par(1) = this wenn =0 + if(!Par(1)) Par(1)=this; + + var idAlchem,iDesire,iHave, iMin=MCLK_UnlimitedCast, i, m; + + // Components in der Defcore einmal durchgehen... + for(i=0;GetComponent(0,i,0,idMagic);++i) { + + // Von jedem Eintrag ID und Anzahl merken + idAlchem = GetComponent(0,i,0,idMagic); + iDesire = GetComponent(idAlchem,0,0,idMagic); + if (!iDesire) continue; + iHave = 0; + + // Alle Objekte der Parameterliste nach der gesuchten Zutat durchsuchen... + for(m=1;Par(m);++m) { + iHave += GetAlchem(idAlchem,0,Par(m)); + } + + // Es kann nur so oft gezaubert werden, wie es die wenigstvorhandene Zutat vorgibt + iMin = Min(iMin, iHave / iDesire); + } + return iMin; +} + +/* Gibt einen String zurück, was zum Zaubern eines Zaubers noch fehlt */ + +global func GetNeededAlcStr(id idMagic) { // Par(1)-Par(x): Zaubernde, [Zauberturm], [weitere...] + + // Par(1) = this wenn =0 + if(!Par(1)) Par(1)=this; + + var idAlchem,iDesire, i, m, szString, szSplit; + szString = ""; + + // Components in der Defcore einmal durchgehen... + for(i=0; GetComponent(0,i,0,idMagic); ++i) { + + // Von jedem Eintrag ID und Anzahl merken + idAlchem = GetComponent(0,i,0,idMagic); + iDesire = GetComponent(idAlchem,0,0,idMagic); + + // Alle Objekte der Parameterliste nach der gesuchten Zutat durchsuchen... + for(m=1;Par(m);++m) { + iDesire -= GetAlchem(idAlchem,0,Par(m)); + if(iDesire <= 0) break; + } + // Alle Objekte durchsucht aber nicht genug da? String anhängen + if(iDesire > 0) { + // erstes Mal keinen Seperator + if(szString != "") szSplit = ",|"; + else szSplit = ""; + szString = Format("%s%s%dx{{%i}}%s",szString,szSplit,iDesire,idAlchem,GetName(0,idAlchem)); + } + + } + return szString; +} + + +/* Löscht die Zutaten aus den Objekten benötigt für den Zauber: Checkt nicht ob genug da sind! */ + +global func ReduceAlchem(id idMagic) { // Par(1)-Par(x): Zaubernde, [Zauberturm], [weitere...] + + // Regel aktiviert? + if(!ObjectCount(ALCO)) return true; + + // Par(1) = this wenn =0 + if(!Par(1)) Par(1)=this; + + var idAlchem,iDesire, i, j, m, iAlchemCount; + + // Components in der Defcore einmal durchgehen... + for(i=0;GetComponent(0,i,0,idMagic);++i) { + + // Von jedem Eintrag ID und Anzahl merken + idAlchem = GetComponent(0,i,0,idMagic); + iDesire = GetComponent(idAlchem,0,0,idMagic); + + // Alle Objekte der Parameterliste nach der gesuchten Zutat durchsuchen... + for(m=1;Par(m);++m) { + + iAlchemCount = GetAlchem(idAlchem,0,Par(m)); + DoAlchem(idAlchem,-iDesire,Par(m)); + iDesire -= iAlchemCount; + + if(iDesire <= 0) break; + } + // Alle Objekte durchsucht aber nicht genug da? Entwickler sollte das doch prüfen! + if(iDesire > 0) + { + Log("Warning: Some required alchemic components could not be found!"); + return false; + } + } + return true; +} + + +/* Übergibt die Zutaten für den Zauber an das Objekt */ + +global func IncreaseAlchem(id idMagic, object pTarget) { + + // Regel aktiviert? + if(!ObjectCount(ALCO)) return true; + + // Local call/safety + if (!pTarget) if (!(pTarget = this)) return; + + // Components in der Defcore einmal durchgehen... + for(var i=0,idAlchem;idAlchem=GetComponent(0,i,0,idMagic);++i) + // ...und als Alchemieobjekte dem Target übergeben + DoAlchem(GetComponent(0,i,0,idMagic), GetComponent(idAlchem,0,0,idMagic), pTarget); + return true; +} + +/* ++++ Alchemiebehälter ++++ */ + +global func AlchemContainerCount(object pContainer) { // Anzahl der Alchemiebehälter im Objekt + + var pAlchem,j; + for(var i;pAlchem=Contents(i,pContainer);++i) + if(pAlchem->~IsAlchemContainer()) + ++j; + return j; +} + + +global func AlchemContainer(int iIndex, object pContainer) { // iIndex'ter Alchemiebehälter im Objekt + + // für dumme Entwickler + iIndex = Max(iIndex,0); + var pAlchem; + for(var i;pAlchem=Contents(i,pContainer);++i) + if(pAlchem->~IsAlchemContainer()) { + if(!iIndex) return pAlchem; + --iIndex; + } + return false; +} + +global func TransferAlchem(object pStart, object pEnd) { // transferiert alles alchemische aus Start nach End + + if(!AlchemBag(pStart)) return false; + if(!AlchemBag(pEnd,true)) return false; + + var idAlchem, iAlchem; + // alle Komponenten, deren Index höher 0 ist, übergeben + while(idAlchem=GetAlchem(0,0,pStart)) { + iAlchem = GetAlchem(idAlchem,0,pStart); + + // tatsächlich gar keine Zutat sondern ein weiterer Behälter? + if(idAlchem->~IsAlchemContainer()) { + for(var i=0; i0 und iIndex erreicht, fertig + if(!iIndex) break; + // ansonsten an den gewünschten Index ranrücken + --iIndex; + ++iIndexAfter; + } + + return GetComponent(idType,iIndexAfter,pContainer); +} + +global func DoAlchem(id idType, int iNumber, object pContainer) { // Ändert die Anzahl von idType um iNumber + + if(!AlchemBag(pContainer,true)) return false; + SetComponent(idType,Max(0,GetComponent(idType,0,pContainer)+iNumber),pContainer); + // wenn Beutel und leer: löschen + if(!AlchemCount(pContainer)) { + if(!(pContainer->~Exhaustion())) + RemoveObject(pContainer); + return false; + } + return true; +} + +global func AlchemCount(object pContainer) { // zählt alle Zutaten + + if(!AlchemBag(pContainer)) return 0; + var idAlchem, iCount; + for(var i;idAlchem=GetAlchem(0,i,pContainer);++i) + iCount += GetAlchem(idAlchem,0,pContainer); + return iCount; +} + +/* ++++ Alchemiebeutel ++++ */ + +global func AlchemBag(&pObject, bool fCreate) { // Alchemiebeutel, fCreate=true für Erstellen wenn nötig + + if(!pObject) pObject=this; + // brauch keinen + if(pObject->~IsAlchemContainer()) return true; + + pObject = GetAlchemBag(pObject); + // nicht gefunden + if(!pObject) { + // abbrechen + if(!fCreate) return false; + // neu erzeugen + pObject = CreateAlchemBag(pObject); + if(!(pObject->~IsAlchemContainer())) return false; + } + return true; +} + +global func GetAlchemBag(object pObject) { // Alchemiebeutel + var pBag; + if(!pObject) pObject = this; + if(pBag=FindObject(ALC_,0,0,0,0,0,0,pObject)) return pBag; + // FindObject findet nicht das Kontextobjekt + if(GetID()==ALC_) if(GetActionTarget()==pObject) return this; + return false; +} + +global func CreateAlchemBag(object pObject) { // Alchemiebeutel erzeugen + if(!pObject) pObject = this; + var pBag; + pBag = CreateObject(ALC_,AbsX(GetX(pObject)),AbsY(GetY(pObject)),-1); + if(!pBag) return pObject; + pBag->~BelongTo(pObject); + return pBag; +} \ No newline at end of file diff --git a/planet/System.c4g/Names.txt b/planet/System.c4g/Names.txt new file mode 100644 index 000000000..9241b9076 --- /dev/null +++ b/planet/System.c4g/Names.txt @@ -0,0 +1,162 @@ +Alfons +Allan +Ambras +Amtranik +Ansi +Anson +Armond +Arthur +Arwaker +Ascari +Asgard +Balder +Balton +Bardioc +Barkon +Baya +Ben +Bert +Bill +Bragi +Bran +Brether +Brundo +Callibso +Carlo +Cascal +Catomen +Clifton +Conrad +Covar +Davey +Dinkel +Dodo +Duddel +Durin +Dwalin +Eawy +Edward +Egbert +Eisenhart +Eismer +Eric +Erik +Ernie +Ernst +Erwin +Falkner +Falo +Fellmer +Ferret +Foremon +Forman +Frerk +Gaumarol +Gecko +Gelf +Genhered +Gerd +Gernot +Gerold +Gesil +Gondor +Gonzo +Gorsty +Grukel +Harden +Harno +Heimdall +Heinz +Helmi +Heltamosch +Homunk +Hondro +Horex +Horst +Howard +Howatzer +Hubert +Hugo +Iltu +Iratio +Iwan +Jacho +Jalo +James +Joe +Joscan +Jumpy +Kalle +Karfesch +Karl +Kasimir +Kemoauc +Kitai +Knack +Korom +Kowalski +Krempel +Kummerog +Laati +Lemy +Loki +Lotho +Luzi +Maurenzi +Melbar +Mentro +Metem +Michael +Mory +Myles +Nathan +Nelson +Newton +Odin +Omar +Pedrass +Peter +Poldi +Ponzel +Poulton +Preso +Purzel +Ribald +Rico +Ringo +Rocki +Ruben +Sancho +Sarga +Sato +Schmunzel +Sepp +Shalmon +Skadi +Spadel +Spencer +Stendal +Sven +Tautmo +Tolkien +Tolly +Torti +Trabzon +Tricky +Tsualar +Tuyula +Twonky +Vaccer +Velito +Volker +Voltago +Wacker +Wali +Wello +Winkel +Winni +Wocket +Wurzel +Yart +Zurbel +Zwirbel diff --git a/planet/System.c4g/Version.txt b/planet/System.c4g/Version.txt new file mode 100644 index 000000000..1d0769df0 --- /dev/null +++ b/planet/System.c4g/Version.txt @@ -0,0 +1 @@ +4.10.0.0 Beta \ No newline at end of file diff --git a/planet/Worlds.c4f/Outset.c4s/DescDE.rtf b/planet/Worlds.c4f/Outset.c4s/DescDE.rtf new file mode 100755 index 000000000..051240c54 Binary files /dev/null and b/planet/Worlds.c4f/Outset.c4s/DescDE.rtf differ diff --git a/planet/Worlds.c4f/Outset.c4s/DescUS.rtf b/planet/Worlds.c4f/Outset.c4s/DescUS.rtf new file mode 100755 index 000000000..49fe0de8f Binary files /dev/null and b/planet/Worlds.c4f/Outset.c4s/DescUS.rtf differ diff --git a/planet/Worlds.c4f/Outset.c4s/Scenario.txt b/planet/Worlds.c4f/Outset.c4s/Scenario.txt new file mode 100755 index 000000000..c448eab34 --- /dev/null +++ b/planet/Worlds.c4f/Outset.c4s/Scenario.txt @@ -0,0 +1,83 @@ +[Head] +Icon=26 +Title=Outset +Loader=LoaderGoldmine* +Version=4,9,8,2 +Difficulty=10 +Access=1 +MaxPlayer=8 +Origin=Worlds.c4f\Outset.c4s + +[Definitions] +Definition1=Objects.c4d + +[Game] +StructNeedEnergy=0 +Goals=VALG=4 +Rules=CNMT=1 + +[Player1] +Wealth=50,0,0,250 +Crew=CLNK=1 +Buildings=HUT2=1 +Material=FLAG=1 +Knowledge=HUT2=0;HUT3=0;ELEV=0;SAWM=0;CST1=0 +HomeBaseMaterial=CNKT=5;LOAM=5;WOOD=10;METL=5;FLNT=5;TFLN=5;LORY=1;CATA=1;BALN=1;CLNK=2 +HomeBaseProduction=CNKT=5;LOAM=5;WOOD=10;METL=5;FLNT=5;TFLN=5;LORY=1;CATA=1 +Magic=MWND=0;MWP2=0;MGWP=0;MVLC=0;RVLT=0;RMMG=0;MMTR=0;MLGT=0;MGHL=0;MGUP=0;MGDW=0;MFFW=0;MFFS=0;MFFA=0;FRFS=0;EXTG=0;ETFL=0;MQKE=0;CMFG=0;MBRG=0 + +[Player2] +Wealth=50,0,0,250 +Crew=CLNK=1 +Buildings=HUT2=1 +Material=FLAG=1 +Knowledge=HUT2=0;HUT3=0;ELEV=0;SAWM=0;CST1=0 +HomeBaseMaterial=CNKT=5;LOAM=5;WOOD=10;METL=5;FLNT=5;TFLN=5;LORY=1;CATA=1;BALN=1;CLNK=2 +HomeBaseProduction=CNKT=5;LOAM=5;WOOD=10;METL=5;FLNT=5;TFLN=5;LORY=1;CATA=1 +Magic=MWND=0;MWP2=0;MGWP=0;MVLC=0;RVLT=0;RMMG=0;MMTR=0;MLGT=0;MGHL=0;MGUP=0;MGDW=0;MFFW=0;MFFS=0;MFFA=0;FRFS=0;EXTG=0;ETFL=0;MQKE=0;CMFG=0;MBRG=0 + +[Player3] +Wealth=50,0,0,250 +Crew=CLNK=1 +Buildings=HUT2=1 +Material=FLAG=1 +Knowledge=HUT2=0;HUT3=0;ELEV=0;SAWM=0;CST1=0 +HomeBaseMaterial=CNKT=5;LOAM=5;WOOD=10;METL=5;FLNT=5;TFLN=5;LORY=1;CATA=1;BALN=1;CLNK=2 +HomeBaseProduction=CNKT=5;LOAM=5;WOOD=10;METL=5;FLNT=5;TFLN=5;LORY=1;CATA=1 +Magic=MWND=0;MWP2=0;MGWP=0;MVLC=0;RVLT=0;RMMG=0;MMTR=0;MLGT=0;MGHL=0;MGUP=0;MGDW=0;MFFW=0;MFFS=0;MFFA=0;FRFS=0;EXTG=0;ETFL=0;MQKE=0;CMFG=0;MBRG=0 + +[Player4] +Wealth=50,0,0,250 +Crew=CLNK=1 +Buildings=HUT2=1 +Material=FLAG=1 +Knowledge=HUT2=0;HUT3=0;ELEV=0;SAWM=0;CST1=0 +HomeBaseMaterial=CNKT=5;LOAM=5;WOOD=10;METL=5;FLNT=5;TFLN=5;LORY=1;CATA=1;BALN=1;CLNK=2 +HomeBaseProduction=CNKT=5;LOAM=5;WOOD=10;METL=5;FLNT=5;TFLN=5;LORY=1;CATA=1 +Magic=MWND=0;MWP2=0;MGWP=0;MVLC=0;RVLT=0;RMMG=0;MMTR=0;MLGT=0;MGHL=0;MGUP=0;MGDW=0;MFFW=0;MFFS=0;MFFA=0;FRFS=0;EXTG=0;ETFL=0;MQKE=0;CMFG=0;MBRG=0 + +[Landscape] +Vegetation=TRE1=1;TRE2=2;TRE3=1;TRE4=1 +VegetationLevel=100,0,0,100 +InEarth=ROCK=1;GOLD=1;FLNT=1;LOAM=1 +InEarthLevel=65,0,0,100 +Sky=Clouds2 +MapWidth=80,0,64,250 +MapHeight=60,0,40,250 +Amplitude=10,10,0,100 +Phase=50,50,0,100 +Period=10,10,0,100 +Random=20,20,0,100 +Liquid=Water-Smooth +LiquidLevel=20,30,0,100 +Layers=Rock=7;Rock=7;Gold=7;Granite=4;Water=5;Earth-earth=50;Earth-earth_dry=50 +SkyScrollMode=2 + +[Weather] +Climate=40,10,0,100 +YearSpeed=20,10,0,100 +Wind=1,100,-100,100 + +[Environment] +Objects=EGLN=1;EGRS=1 + diff --git a/planet/Worlds.c4f/Outset.c4s/Title.txt b/planet/Worlds.c4f/Outset.c4s/Title.txt new file mode 100755 index 000000000..350eeacd6 --- /dev/null +++ b/planet/Worlds.c4f/Outset.c4s/Title.txt @@ -0,0 +1,2 @@ +DE:Aufbruch +US:Outset \ No newline at end of file